diff --git a/Makefile b/Makefile index fc38b562..3b29df8a 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ NAME="github.com/goto/siren" LAST_COMMIT := $(shell git rev-parse --short HEAD) LAST_TAG := "$(shell git rev-list --tags --max-count=1)" APP_VERSION := "$(shell git describe --tags ${LAST_TAG})-next" -PROTON_COMMIT := "ebb3a512fc98f28b3b2933da022d04c093673106" +PROTON_COMMIT := "d7e0d46f46320edb5501ffa51d97ca4f982c9997" .PHONY: all build test clean dist vet proto install diff --git a/cli/deps.go b/cli/deps.go index ebb9e9eb..b5b7add5 100644 --- a/cli/deps.go +++ b/cli/deps.go @@ -201,14 +201,15 @@ func InitDeps( ) return &api.Deps{ - TemplateService: templateService, - RuleService: ruleService, - AlertService: alertService, - ProviderService: providerService, - NamespaceService: namespaceService, - ReceiverService: receiverService, - SubscriptionService: subscriptionService, - NotificationService: notificationService, - SilenceService: silenceService, + TemplateService: templateService, + RuleService: ruleService, + AlertService: alertService, + ProviderService: providerService, + NamespaceService: namespaceService, + ReceiverService: receiverService, + SubscriptionService: subscriptionService, + SubscriptionReceiverService: subscriptionReceiverService, + NotificationService: notificationService, + SilenceService: silenceService, }, pgClient, notifierRegistry, providersPluginManager, nil } diff --git a/cli/job.go b/cli/job.go index f799e865..5fe9c590 100644 --- a/cli/job.go +++ b/cli/job.go @@ -43,7 +43,7 @@ func jobCmd(cmdxConfig *cmdx.Config) *cobra.Command { return cmd } -func jobRunCommand(cmdxConfig *cmdx.Config) *cobra.Command { +func jobRunCommand(_ *cmdx.Config) *cobra.Command { cmd := &cobra.Command{ Use: "run", Short: "Trigger a job", diff --git a/cli/subscription.go b/cli/subscription.go index ca159778..aa9ebc68 100644 --- a/cli/subscription.go +++ b/cli/subscription.go @@ -38,6 +38,7 @@ func subscriptionsCmd(cmdxConfig *cmdx.Config) *cobra.Command { createSubscriptionCmd(cmdxConfig), updateSubscriptionCmd(cmdxConfig), deleteSubscriptionCmd(cmdxConfig), + subscriptionsReceiversCmd(cmdxConfig), ) return cmd diff --git a/cli/subscriptionreceiver.go b/cli/subscriptionreceiver.go new file mode 100644 index 00000000..be8f6fee --- /dev/null +++ b/cli/subscriptionreceiver.go @@ -0,0 +1,214 @@ +package cli + +import ( + "github.com/MakeNowJust/heredoc" + "github.com/goto/salt/cmdx" + "github.com/goto/salt/printer" + "github.com/goto/siren/core/subscriptionreceiver" + sirenv1beta1 "github.com/goto/siren/proto/gotocompany/siren/v1beta1" + "github.com/spf13/cobra" +) + +func subscriptionsReceiversCmd(cmdxConfig *cmdx.Config) *cobra.Command { + cmd := &cobra.Command{ + Use: "receiver", + Aliases: []string{"subscription_receiver"}, + Short: "Manage subscriptions receiver", + Long: heredoc.Doc(` + Work with subscriptions receiver. + + Add receiver to a subscription. + `), + Annotations: map[string]string{ + "group": "core", + "client": "true", + }, + } + + cmd.AddCommand( + addSubscriptionReceiverCmd(cmdxConfig), + editSubscriptionReceiverCmd(cmdxConfig), + removeSubscriptionReceiverCmd(cmdxConfig), + ) + + return cmd +} + +func addSubscriptionReceiverCmd(cmdxConfig *cmdx.Config) *cobra.Command { + var filePath string + cmd := &cobra.Command{ + Use: "add", + Short: "Add a receiver to a subscription", + Long: heredoc.Doc(` + Add a receiver to a subscription. + `), + Annotations: map[string]string{ + "group": "core", + }, + RunE: func(cmd *cobra.Command, args []string) error { + spinner := printer.Spin("") + defer spinner.Stop() + + ctx := cmd.Context() + + c, err := loadClientConfig(cmd, cmdxConfig) + if err != nil { + return err + } + + var srRelation subscriptionreceiver.Relation + if err := parseFile(filePath, &srRelation); err != nil { + return err + } + + client, cancel, err := createClient(ctx, c.Host) + if err != nil { + return err + } + defer cancel() + + res, err := client.AddSubscriptionReceiver(ctx, &sirenv1beta1.AddSubscriptionReceiverRequest{ + SubscriptionId: srRelation.SubscriptionID, + ReceiverId: srRelation.ReceiverID, + Labels: srRelation.Labels, + }) + + if err != nil { + return err + } + + spinner.Stop() + printer.Successf("Receiver id %d is added to subscription id %d", res.GetReceiverId(), res.GetSubscriptionId()) + printer.Space() + printer.SuccessIcon() + + return nil + }, + } + + cmd.Flags().StringVarP(&filePath, "file", "f", "", "path to the subscription config") + cmd.MarkFlagRequired("file") + + return cmd +} + +func editSubscriptionReceiverCmd(cmdxConfig *cmdx.Config) *cobra.Command { + var ( + subscriptionID uint64 + receiverID uint64 + filePath string + ) + + cmd := &cobra.Command{ + Use: "edit", + Short: "Edit a subscription receiver", + Long: heredoc.Doc(` + Edit an existing subscription receiver relation detail. + `), + Annotations: map[string]string{ + "group": "core", + }, + RunE: func(cmd *cobra.Command, args []string) error { + spinner := printer.Spin("") + defer spinner.Stop() + + ctx := cmd.Context() + + c, err := loadClientConfig(cmd, cmdxConfig) + if err != nil { + return err + } + + var srRelation subscriptionreceiver.Relation + if err := parseFile(filePath, &srRelation); err != nil { + return err + } + + client, cancel, err := createClient(ctx, c.Host) + if err != nil { + return err + } + defer cancel() + + res, err := client.UpdateSubscriptionReceiver(ctx, &sirenv1beta1.UpdateSubscriptionReceiverRequest{ + SubscriptionId: srRelation.SubscriptionID, + ReceiverId: srRelation.ReceiverID, + Labels: srRelation.Labels, + }) + if err != nil { + return err + } + + spinner.Stop() + printer.Successf("Successfully updated receiver id %d detail of asubscription with id %d", res.GetReceiverId(), res.GetSubscriptionId()) + printer.Space() + printer.SuccessIcon() + + return nil + }, + } + + cmd.Flags().Uint64VarP(&subscriptionID, "subscription_id", "s", 0, "subscription id") + cmd.MarkFlagRequired("subscription_id") + cmd.Flags().Uint64VarP(&receiverID, "receiver_id", "r", 0, "receiver id") + cmd.MarkFlagRequired("receiver_id") + cmd.Flags().StringVarP(&filePath, "file", "f", "", "Path to the subscription config") + cmd.MarkFlagRequired("file") + + return cmd +} + +func removeSubscriptionReceiverCmd(cmdxConfig *cmdx.Config) *cobra.Command { + var ( + subscriptionID uint64 + receiverID uint64 + ) + cmd := &cobra.Command{ + Use: "remove", + Short: "Remove receiver of a subscription", + Example: heredoc.Doc(` + $ siren subscription receiver remove --subscription_id 1 --receiver_id 2 + `), + Annotations: map[string]string{ + "group": "core", + }, + RunE: func(cmd *cobra.Command, args []string) error { + spinner := printer.Spin("") + defer spinner.Stop() + + ctx := cmd.Context() + + c, err := loadClientConfig(cmd, cmdxConfig) + if err != nil { + return err + } + + client, cancel, err := createClient(ctx, c.Host) + if err != nil { + return err + } + defer cancel() + + _, err = client.DeleteSubscriptionReceiver(ctx, &sirenv1beta1.DeleteSubscriptionReceiverRequest{ + SubscriptionId: subscriptionID, + ReceiverId: receiverID, + }) + if err != nil { + return err + } + + spinner.Stop() + printer.Successf("Successfully removed receiver id %d from subscription id %d", receiverID, subscriptionID) + printer.Space() + printer.SuccessIcon() + + return nil + }, + } + + cmd.Flags().Uint64VarP(&subscriptionID, "subscription_id", "s", 0, "subscription id") + cmd.MarkFlagRequired("subscription_id") + cmd.Flags().Uint64VarP(&receiverID, "receiver_id", "r", 0, "receiver id") + cmd.MarkFlagRequired("receiver_id") + return cmd +} diff --git a/core/alert/mocks/alert_repository.go b/core/alert/mocks/alert_repository.go index ec0327d6..688abe8c 100644 --- a/core/alert/mocks/alert_repository.go +++ b/core/alert/mocks/alert_repository.go @@ -71,52 +71,6 @@ func (_c *Repository_BulkUpdateSilence_Call) RunAndReturn(run func(context.Conte return _c } -// Commit provides a mock function with given fields: ctx -func (_m *Repository) Commit(ctx context.Context) error { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for Commit") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context) error); ok { - r0 = rf(ctx) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// Repository_Commit_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Commit' -type Repository_Commit_Call struct { - *mock.Call -} - -// Commit is a helper method to define mock.On call -// - ctx context.Context -func (_e *Repository_Expecter) Commit(ctx interface{}) *Repository_Commit_Call { - return &Repository_Commit_Call{Call: _e.mock.On("Commit", ctx)} -} - -func (_c *Repository_Commit_Call) Run(run func(ctx context.Context)) *Repository_Commit_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *Repository_Commit_Call) Return(_a0 error) *Repository_Commit_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *Repository_Commit_Call) RunAndReturn(run func(context.Context) error) *Repository_Commit_Call { - _c.Call.Return(run) - return _c -} - // Create provides a mock function with given fields: _a0, _a1 func (_m *Repository) Create(_a0 context.Context, _a1 alert.Alert) (alert.Alert, error) { ret := _m.Called(_a0, _a1) @@ -233,101 +187,6 @@ func (_c *Repository_List_Call) RunAndReturn(run func(context.Context, alert.Fil return _c } -// Rollback provides a mock function with given fields: ctx, err -func (_m *Repository) Rollback(ctx context.Context, err error) error { - ret := _m.Called(ctx, err) - - if len(ret) == 0 { - panic("no return value specified for Rollback") - } - - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, error) error); ok { - r0 = rf(ctx, err) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// Repository_Rollback_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Rollback' -type Repository_Rollback_Call struct { - *mock.Call -} - -// Rollback is a helper method to define mock.On call -// - ctx context.Context -// - err error -func (_e *Repository_Expecter) Rollback(ctx interface{}, err interface{}) *Repository_Rollback_Call { - return &Repository_Rollback_Call{Call: _e.mock.On("Rollback", ctx, err)} -} - -func (_c *Repository_Rollback_Call) Run(run func(ctx context.Context, err error)) *Repository_Rollback_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(error)) - }) - return _c -} - -func (_c *Repository_Rollback_Call) Return(_a0 error) *Repository_Rollback_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *Repository_Rollback_Call) RunAndReturn(run func(context.Context, error) error) *Repository_Rollback_Call { - _c.Call.Return(run) - return _c -} - -// WithTransaction provides a mock function with given fields: ctx -func (_m *Repository) WithTransaction(ctx context.Context) context.Context { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for WithTransaction") - } - - var r0 context.Context - if rf, ok := ret.Get(0).(func(context.Context) context.Context); ok { - r0 = rf(ctx) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(context.Context) - } - } - - return r0 -} - -// Repository_WithTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'WithTransaction' -type Repository_WithTransaction_Call struct { - *mock.Call -} - -// WithTransaction is a helper method to define mock.On call -// - ctx context.Context -func (_e *Repository_Expecter) WithTransaction(ctx interface{}) *Repository_WithTransaction_Call { - return &Repository_WithTransaction_Call{Call: _e.mock.On("WithTransaction", ctx)} -} - -func (_c *Repository_WithTransaction_Call) Run(run func(ctx context.Context)) *Repository_WithTransaction_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *Repository_WithTransaction_Call) Return(_a0 context.Context) *Repository_WithTransaction_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *Repository_WithTransaction_Call) RunAndReturn(run func(context.Context) context.Context) *Repository_WithTransaction_Call { - _c.Call.Return(run) - return _c -} - // NewRepository creates a new instance of Repository. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewRepository(t interface { diff --git a/core/alert/service_test.go b/core/alert/service_test.go index 3dae266c..e283e560 100644 --- a/core/alert/service_test.go +++ b/core/alert/service_test.go @@ -120,7 +120,6 @@ func TestService_CreateAlerts(t *testing.T) { { name: "should return error if TransformToAlerts return error", setup: func(ar *mocks.Repository, at *mocks.AlertTransformer, ns *mocks.NotificationService) { - ar.EXPECT().WithTransaction(mock.AnythingOfType("context.todoCtx")).Return(ctx) at.EXPECT().TransformToAlerts(mock.AnythingOfType("context.todoCtx"), mock.AnythingOfType("uint64"), mock.AnythingOfType("uint64"), mock.AnythingOfType("map[string]interface {}")).Return(nil, 0, errors.New("some error")) }, alertsToBeCreated: alertsToBeCreated, @@ -129,7 +128,6 @@ func TestService_CreateAlerts(t *testing.T) { { name: "should call repository Create method with proper arguments", setup: func(ar *mocks.Repository, at *mocks.AlertTransformer, ns *mocks.NotificationService) { - ar.EXPECT().WithTransaction(mock.AnythingOfType("context.todoCtx")).Return(ctx) at.EXPECT().TransformToAlerts(mock.AnythingOfType("context.todoCtx"), mock.AnythingOfType("uint64"), mock.AnythingOfType("uint64"), mock.AnythingOfType("map[string]interface {}")).Return([]alert.Alert{ {ID: 1, ProviderID: 1, ResourceName: "foo", Severity: "CRITICAL", MetricName: "lag", MetricValue: "20", Rule: "lagHigh", TriggeredAt: timenow}, @@ -137,7 +135,6 @@ func TestService_CreateAlerts(t *testing.T) { ar.EXPECT().Create(mock.AnythingOfType("context.todoCtx"), mock.AnythingOfType("alert.Alert")).Return(alert.Alert{ID: 1, ProviderID: 1, ResourceName: "foo", Severity: "CRITICAL", MetricName: "lag", MetricValue: "20", Rule: "lagHigh", TriggeredAt: timenow}, nil) ns.EXPECT().Dispatch(mock.AnythingOfType("context.todoCtx"), mock.AnythingOfType("[]notification.Notification"), mock.AnythingOfType("string")).Return(nil, nil) - ar.EXPECT().Commit(mock.AnythingOfType("context.todoCtx")).Return(nil) }, alertsToBeCreated: alertsToBeCreated, expectedFiringLen: 1, @@ -149,13 +146,11 @@ func TestService_CreateAlerts(t *testing.T) { { name: "should return error not found if repository return err relation", setup: func(ar *mocks.Repository, at *mocks.AlertTransformer, ns *mocks.NotificationService) { - ar.EXPECT().WithTransaction(mock.AnythingOfType("context.todoCtx")).Return(ctx) at.EXPECT().TransformToAlerts(mock.AnythingOfType("context.todoCtx"), mock.AnythingOfType("uint64"), mock.AnythingOfType("uint64"), mock.AnythingOfType("map[string]interface {}")).Return([]alert.Alert{ {ID: 1, ProviderID: 1, ResourceName: "foo", Severity: "CRITICAL", MetricName: "lag", MetricValue: "20", Rule: "lagHigh", TriggeredAt: timenow}, }, 1, nil) ar.EXPECT().Create(mock.AnythingOfType("context.todoCtx"), mock.Anything).Return(alert.Alert{}, alert.ErrRelation) - ar.EXPECT().Rollback(mock.AnythingOfType("context.todoCtx"), errors.ErrNotFound.WithMsgf(alert.ErrRelation.Error())).Return(nil) }, alertsToBeCreated: alertsToBeCreated, wantErr: true, @@ -163,14 +158,11 @@ func TestService_CreateAlerts(t *testing.T) { { name: "should handle errors from repository", setup: func(ar *mocks.Repository, at *mocks.AlertTransformer, ns *mocks.NotificationService) { - ar.EXPECT().WithTransaction(mock.AnythingOfType("context.todoCtx")).Return(ctx) at.EXPECT().TransformToAlerts(mock.AnythingOfType("context.todoCtx"), mock.AnythingOfType("uint64"), mock.AnythingOfType("uint64"), mock.AnythingOfType("map[string]interface {}")).Return([]alert.Alert{ {ID: 1, ProviderID: 1, ResourceName: "foo", Severity: "CRITICAL", MetricName: "lag", MetricValue: "20", Rule: "lagHigh", TriggeredAt: timenow}, }, 1, nil) ar.EXPECT().Create(mock.AnythingOfType("context.todoCtx"), mock.Anything).Return(alert.Alert{}, errors.New("random error")) - ar.EXPECT().Rollback(mock.AnythingOfType("context.todoCtx"), errors.New("random error")).Return(nil) - }, alertsToBeCreated: alertsToBeCreated, wantErr: true, diff --git a/core/notification/dispatch_bulk_notification_service_test.go b/core/notification/dispatch_bulk_notification_service_test.go index 8566424d..41506a1d 100644 --- a/core/notification/dispatch_bulk_notification_service_test.go +++ b/core/notification/dispatch_bulk_notification_service_test.go @@ -2,10 +2,10 @@ package notification_test import ( "context" + "sort" "testing" "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" saltlog "github.com/goto/salt/log" "github.com/goto/siren/core/log" "github.com/goto/siren/core/notification" @@ -444,7 +444,13 @@ func TestReduceMetaMessages(t *testing.T) { t.Errorf("ReduceMetaMessages() error = %v, wantErr %v", err, tt.wantErr) return } - if diff := cmp.Diff(got, tt.want, cmpopts.SortSlices(func(i, j notification.MetaMessage) bool { return i.ReceiverID < j.ReceiverID })); diff != "" { + sort.Slice(got, func(i, j int) bool { + return got[i].ReceiverID < got[j].ReceiverID + }) + sort.Slice(tt.want, func(i, j int) bool { + return tt.want[i].ReceiverID < tt.want[j].ReceiverID + }) + if diff := cmp.Diff(got, tt.want); diff != "" { t.Errorf("ReduceMetaMessages() diff = %v", diff) } }) diff --git a/core/subscription/servicev2_test.go b/core/subscription/servicev2_test.go index 6c2677d7..203f2838 100644 --- a/core/subscription/servicev2_test.go +++ b/core/subscription/servicev2_test.go @@ -2,6 +2,7 @@ package subscription_test import ( "context" + "sort" "testing" "github.com/google/go-cmp/cmp" @@ -943,6 +944,18 @@ func TestClassifyReceivers(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.Description, func(t *testing.T) { tu, td := subscription.ClassifyReceivers(testCase.NewRelations, testCase.ExistingRelations) + sort.Slice(tu, func(i, j int) bool { + return tu[i].ReceiverID < tu[j].ReceiverID + }) + sort.Slice(testCase.ExpectedToUpsert, func(i, j int) bool { + return testCase.ExpectedToUpsert[i].ReceiverID < testCase.ExpectedToUpsert[j].ReceiverID + }) + sort.Slice(td, func(i, j int) bool { + return td[i].ReceiverID < td[j].ReceiverID + }) + sort.Slice(testCase.ExistingRelations, func(i, j int) bool { + return testCase.ExistingRelations[i].ReceiverID < testCase.ExistingRelations[j].ReceiverID + }) if diff := cmp.Diff(tu, testCase.ExpectedToUpsert, cmpopts.IgnoreFields(subscriptionreceiver.Relation{}, "ID")); diff != "" { t.Fatalf("got diff to update %+v", diff) diff --git a/core/subscriptionreceiver/errors.go b/core/subscriptionreceiver/errors.go index bcf2ac0b..1071faea 100644 --- a/core/subscriptionreceiver/errors.go +++ b/core/subscriptionreceiver/errors.go @@ -13,15 +13,12 @@ var ( type NotFoundError struct { SubscriptionID uint64 ReceiverID uint64 + ErrStr string } func (err NotFoundError) Error() string { - if err.SubscriptionID != 0 { - return fmt.Sprintf("subscription with id %d not found", err.SubscriptionID) + if err.ErrStr != "" { + return err.ErrStr } - if err.ReceiverID != 0 { - return fmt.Sprintf("receiver with id %d not found", err.ReceiverID) - } - - return "subscription receiver pair not found" + return fmt.Sprintf("subscription with id %d and receiver with id %d not found", err.SubscriptionID, err.ReceiverID) } diff --git a/core/subscriptionreceiver/filter.go b/core/subscriptionreceiver/filter.go index c204f989..ea981a28 100644 --- a/core/subscriptionreceiver/filter.go +++ b/core/subscriptionreceiver/filter.go @@ -3,6 +3,7 @@ package subscriptionreceiver type Filter struct { SubscriptionIDs []uint64 ReceiverID uint64 + Labels map[string]string Deleted bool } diff --git a/core/subscriptionreceiver/mocks/repository.go b/core/subscriptionreceiver/mocks/repository.go index 57c28a63..b1476ff4 100644 --- a/core/subscriptionreceiver/mocks/repository.go +++ b/core/subscriptionreceiver/mocks/repository.go @@ -269,6 +269,53 @@ func (_c *Repository_List_Call) RunAndReturn(run func(context.Context, subscript return _c } +// Update provides a mock function with given fields: _a0, _a1 +func (_m *Repository) Update(_a0 context.Context, _a1 *subscriptionreceiver.Relation) error { + ret := _m.Called(_a0, _a1) + + if len(ret) == 0 { + panic("no return value specified for Update") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, *subscriptionreceiver.Relation) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Repository_Update_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Update' +type Repository_Update_Call struct { + *mock.Call +} + +// Update is a helper method to define mock.On call +// - _a0 context.Context +// - _a1 *subscriptionreceiver.Relation +func (_e *Repository_Expecter) Update(_a0 interface{}, _a1 interface{}) *Repository_Update_Call { + return &Repository_Update_Call{Call: _e.mock.On("Update", _a0, _a1)} +} + +func (_c *Repository_Update_Call) Run(run func(_a0 context.Context, _a1 *subscriptionreceiver.Relation)) *Repository_Update_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(*subscriptionreceiver.Relation)) + }) + return _c +} + +func (_c *Repository_Update_Call) Return(_a0 error) *Repository_Update_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *Repository_Update_Call) RunAndReturn(run func(context.Context, *subscriptionreceiver.Relation) error) *Repository_Update_Call { + _c.Call.Return(run) + return _c +} + // NewRepository creates a new instance of Repository. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewRepository(t interface { diff --git a/core/subscriptionreceiver/service.go b/core/subscriptionreceiver/service.go index 095b00ae..91c6e2b5 100644 --- a/core/subscriptionreceiver/service.go +++ b/core/subscriptionreceiver/service.go @@ -2,6 +2,8 @@ package subscriptionreceiver import ( "context" + + "github.com/goto/siren/pkg/errors" ) type Transactor interface { @@ -14,6 +16,7 @@ type Repository interface { List(context.Context, Filter) ([]Relation, error) BulkCreate(context.Context, []Relation) error BulkUpsert(context.Context, []Relation) error + Update(context.Context, *Relation) error BulkSoftDelete(ctx context.Context, flt DeleteFilter) error BulkDelete(ctx context.Context, flt DeleteFilter) error } @@ -43,9 +46,22 @@ func (s *Service) List(ctx context.Context, flt Filter) ([]Relation, error) { return relations, nil } +func (s *Service) repositoryHandleError(err error) error { + if errors.Is(err, ErrDuplicate) { + return errors.ErrConflict.WithMsgf(err.Error()) + } + if errors.Is(err, ErrRelation) { + return errors.ErrNotFound.WithMsgf(err.Error()) + } + if errors.As(err, new(NotFoundError)) { + return errors.ErrNotFound.WithMsgf(err.Error()) + } + return err +} + func (s *Service) BulkCreate(ctx context.Context, rels []Relation) error { if err := s.repository.BulkCreate(ctx, rels); err != nil { - return err + return s.repositoryHandleError(err) } return nil @@ -53,7 +69,15 @@ func (s *Service) BulkCreate(ctx context.Context, rels []Relation) error { func (s *Service) BulkUpsert(ctx context.Context, rels []Relation) error { if err := s.repository.BulkUpsert(ctx, rels); err != nil { - return err + return s.repositoryHandleError(err) + } + + return nil +} + +func (s *Service) Update(ctx context.Context, rel *Relation) error { + if err := s.repository.Update(ctx, rel); err != nil { + return s.repositoryHandleError(err) } return nil @@ -61,7 +85,7 @@ func (s *Service) BulkUpsert(ctx context.Context, rels []Relation) error { func (s *Service) BulkSoftDelete(ctx context.Context, flt DeleteFilter) error { if err := s.repository.BulkSoftDelete(ctx, flt); err != nil { - return err + return s.repositoryHandleError(err) } return nil @@ -69,7 +93,7 @@ func (s *Service) BulkSoftDelete(ctx context.Context, flt DeleteFilter) error { func (s *Service) BulkDelete(ctx context.Context, flt DeleteFilter) error { if err := s.repository.BulkDelete(ctx, flt); err != nil { - return err + return s.repositoryHandleError(err) } return nil diff --git a/internal/api/api.go b/internal/api/api.go index 54c2fce4..4d433219 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -12,6 +12,7 @@ import ( "github.com/goto/siren/core/rule" "github.com/goto/siren/core/silence" "github.com/goto/siren/core/subscription" + "github.com/goto/siren/core/subscriptionreceiver" "github.com/goto/siren/core/template" ) @@ -63,6 +64,13 @@ type SubscriptionService interface { DeleteV2(context.Context, uint64) error } +type SubscriptionReceiverService interface { + List(ctx context.Context, flt subscriptionreceiver.Filter) ([]subscriptionreceiver.Relation, error) + BulkUpsert(ctx context.Context, rels []subscriptionreceiver.Relation) error + Update(ctx context.Context, rel *subscriptionreceiver.Relation) error + BulkSoftDelete(ctx context.Context, flt subscriptionreceiver.DeleteFilter) error +} + type TemplateService interface { Upsert(context.Context, *template.Template) error List(context.Context, template.Filter) ([]template.Template, error) @@ -88,13 +96,14 @@ type SilenceService interface { } type Deps struct { - TemplateService TemplateService - RuleService RuleService - AlertService AlertService - ProviderService ProviderService - NamespaceService NamespaceService - ReceiverService ReceiverService - SubscriptionService SubscriptionService - NotificationService NotificationService - SilenceService SilenceService + TemplateService TemplateService + RuleService RuleService + AlertService AlertService + ProviderService ProviderService + NamespaceService NamespaceService + ReceiverService ReceiverService + SubscriptionService SubscriptionService + SubscriptionReceiverService SubscriptionReceiverService + NotificationService NotificationService + SilenceService SilenceService } diff --git a/internal/api/v1beta1/subscription.go b/internal/api/v1beta1/subscription.go index 0b0bf3b0..bb832f50 100644 --- a/internal/api/v1beta1/subscription.go +++ b/internal/api/v1beta1/subscription.go @@ -4,6 +4,8 @@ import ( "context" "github.com/goto/siren/core/subscription" + "github.com/goto/siren/core/subscriptionreceiver" + "github.com/goto/siren/pkg/errors" sirenv1beta1 "github.com/goto/siren/proto/gotocompany/siren/v1beta1" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" @@ -87,6 +89,17 @@ func (s *GRPCServer) ListSubscriptions(ctx context.Context, req *sirenv1beta1.Li }, nil } +func getReceiverMetadataListInDomainObject(domainReceivers []*sirenv1beta1.ReceiverMetadata) []subscription.Receiver { + receivers := make([]subscription.Receiver, 0) + for _, item := range domainReceivers { + receivers = append(receivers, subscription.Receiver{ + ID: item.Id, + Configuration: item.Configuration.AsMap(), + }) + } + return receivers +} + func (s *GRPCServer) CreateSubscription(ctx context.Context, req *sirenv1beta1.CreateSubscriptionRequest) (*sirenv1beta1.CreateSubscriptionResponse, error) { sub := &subscription.Subscription{ Namespace: req.GetNamespace(), @@ -204,13 +217,83 @@ func (s *GRPCServer) DeleteSubscription(ctx context.Context, req *sirenv1beta1.D return &sirenv1beta1.DeleteSubscriptionResponse{}, nil } -func getReceiverMetadataListInDomainObject(domainReceivers []*sirenv1beta1.ReceiverMetadata) []subscription.Receiver { - receivers := make([]subscription.Receiver, 0) - for _, item := range domainReceivers { - receivers = append(receivers, subscription.Receiver{ - ID: item.Id, - Configuration: item.Configuration.AsMap(), - }) +func (s *GRPCServer) AddSubscriptionReceiver(ctx context.Context, req *sirenv1beta1.AddSubscriptionReceiverRequest) (*sirenv1beta1.AddSubscriptionReceiverResponse, error) { + if err := s.subscriptionReceiverService.BulkUpsert(ctx, []subscriptionreceiver.Relation{ + { + SubscriptionID: req.GetSubscriptionId(), + ReceiverID: req.GetReceiverId(), + Labels: req.GetLabels(), + }, + }); err != nil { + return nil, s.generateRPCErr(err) } - return receivers + return &sirenv1beta1.AddSubscriptionReceiverResponse{ + SubscriptionId: req.GetSubscriptionId(), + ReceiverId: req.GetReceiverId(), + Labels: req.GetLabels(), + }, nil +} + +func (s *GRPCServer) UpdateSubscriptionReceiver(ctx context.Context, req *sirenv1beta1.UpdateSubscriptionReceiverRequest) (*sirenv1beta1.UpdateSubscriptionReceiverResponse, error) { + if err := s.subscriptionReceiverService.Update(ctx, &subscriptionreceiver.Relation{ + SubscriptionID: req.GetSubscriptionId(), + ReceiverID: req.GetReceiverId(), + Labels: req.GetLabels(), + }); err != nil { + return nil, s.generateRPCErr(err) + } + return &sirenv1beta1.UpdateSubscriptionReceiverResponse{ + SubscriptionId: req.GetSubscriptionId(), + ReceiverId: req.GetReceiverId(), + Labels: req.GetLabels(), + }, nil +} + +func (s *GRPCServer) DeleteSubscriptionReceiver(ctx context.Context, req *sirenv1beta1.DeleteSubscriptionReceiverRequest) (*sirenv1beta1.DeleteSubscriptionReceiverResponse, error) { + if err := s.subscriptionReceiverService.BulkSoftDelete(ctx, subscriptionreceiver.DeleteFilter{ + Pair: []subscriptionreceiver.Relation{ + { + SubscriptionID: req.GetSubscriptionId(), + ReceiverID: req.GetReceiverId(), + }, + }, + }); err != nil { + return nil, s.generateRPCErr(err) + } + return &sirenv1beta1.DeleteSubscriptionReceiverResponse{}, nil +} + +func (s *GRPCServer) ListSubscriptionReceivers(ctx context.Context, req *sirenv1beta1.ListSubscriptionReceiversRequest) (*sirenv1beta1.ListSubscriptionReceiversResponse, error) { + subscriptionID := req.GetSubscriptionId() + if subscriptionID == 0 { + return nil, s.generateRPCErr(errors.ErrInvalid.WithMsgf("subscription id cannot be zero or empty")) + } + + relations, err := s.subscriptionReceiverService.List(ctx, subscriptionreceiver.Filter{ + SubscriptionIDs: []uint64{ + subscriptionID, + }, + Labels: req.GetLabels(), + Deleted: false, + }) + + if err != nil { + return nil, s.generateRPCErr(err) + } + + items := []*sirenv1beta1.SubscriptionReceiverRelation{} + + for _, rel := range relations { + item := &sirenv1beta1.SubscriptionReceiverRelation{ + SubscriptionId: rel.SubscriptionID, + ReceiverId: rel.ReceiverID, + Labels: rel.Labels, + CreatedAt: timestamppb.New(rel.CreatedAt), + UpdatedAt: timestamppb.New(rel.UpdatedAt), + } + items = append(items, item) + } + return &sirenv1beta1.ListSubscriptionReceiversResponse{ + SubscriptionReceivers: items, + }, nil } diff --git a/internal/api/v1beta1/v1beta1.go b/internal/api/v1beta1/v1beta1.go index 82f6c62c..25988aae 100644 --- a/internal/api/v1beta1/v1beta1.go +++ b/internal/api/v1beta1/v1beta1.go @@ -36,15 +36,16 @@ type GRPCServer struct { cfg Config headers api.HeadersConfig sirenv1beta1.UnimplementedSirenServiceServer - templateService api.TemplateService - ruleService api.RuleService - alertService api.AlertService - providerService api.ProviderService - namespaceService api.NamespaceService - receiverService api.ReceiverService - subscriptionService api.SubscriptionService - notificationService api.NotificationService - silenceService api.SilenceService + templateService api.TemplateService + ruleService api.RuleService + alertService api.AlertService + providerService api.ProviderService + namespaceService api.NamespaceService + receiverService api.ReceiverService + subscriptionService api.SubscriptionService + subscriptionReceiverService api.SubscriptionReceiverService + notificationService api.NotificationService + silenceService api.SilenceService } func NewGRPCServer( @@ -54,17 +55,18 @@ func NewGRPCServer( opts ...GRPCServerOption) *GRPCServer { s := &GRPCServer{ - headers: headers, - logger: logger, - templateService: apiDeps.TemplateService, - ruleService: apiDeps.RuleService, - alertService: apiDeps.AlertService, - providerService: apiDeps.ProviderService, - namespaceService: apiDeps.NamespaceService, - receiverService: apiDeps.ReceiverService, - subscriptionService: apiDeps.SubscriptionService, - notificationService: apiDeps.NotificationService, - silenceService: apiDeps.SilenceService, + headers: headers, + logger: logger, + templateService: apiDeps.TemplateService, + ruleService: apiDeps.RuleService, + alertService: apiDeps.AlertService, + providerService: apiDeps.ProviderService, + namespaceService: apiDeps.NamespaceService, + receiverService: apiDeps.ReceiverService, + subscriptionService: apiDeps.SubscriptionService, + subscriptionReceiverService: apiDeps.SubscriptionReceiverService, + notificationService: apiDeps.NotificationService, + silenceService: apiDeps.SilenceService, } for _, opt := range opts { diff --git a/internal/store/postgres/subscription_receiver.go b/internal/store/postgres/subscriptionreceiver.go similarity index 81% rename from internal/store/postgres/subscription_receiver.go rename to internal/store/postgres/subscriptionreceiver.go index b92cdc2b..5d99c174 100644 --- a/internal/store/postgres/subscription_receiver.go +++ b/internal/store/postgres/subscriptionreceiver.go @@ -3,10 +3,12 @@ package postgres import ( "context" "database/sql" + "encoding/json" "fmt" "strings" sq "github.com/Masterminds/squirrel" + "github.com/goto/siren/core/subscription" "github.com/goto/siren/core/subscriptionreceiver" "github.com/goto/siren/internal/store/model" "github.com/goto/siren/pkg/errors" @@ -33,6 +35,12 @@ DO UPDATE SET RETURNING * ` +const subscriptionReceiverUpdateQuery = ` +UPDATE subscriptions_receivers SET labels=$3, updated_at=now() +WHERE subscription_id = $1 AND receiver_id = $2 AND deleted_at IS NULL +RETURNING * +` + var subscriptionReceiverBulkSoftDeleteQueryBuilder = sq.Update("subscriptions_receivers"). Set("deleted_at", "now()") @@ -113,6 +121,15 @@ func (s *SubscriptionReceiverRepository) List(ctx context.Context, flt subscript if flt.ReceiverID != 0 { queryBuilder = queryBuilder.Where("receiver_id = ?", flt.ReceiverID) } + // given map of string from input [lf], look for rows that [lf] exist in labels column in DB + if len(flt.Labels) != 0 { + labelsJSON, err := json.Marshal(flt.Labels) + if err != nil { + return nil, errors.ErrInvalid.WithMsgf("problem marshalling labels json to string with err: %s", err.Error()) + } + queryBuilder = queryBuilder.Where(fmt.Sprintf("labels @> '%s'::jsonb", string(json.RawMessage(labelsJSON)))) + } + if flt.Deleted { queryBuilder = queryBuilder.Where("deleted_at IS NOT NULL") } else { @@ -197,6 +214,53 @@ func (r *SubscriptionReceiverRepository) BulkUpsert(ctx context.Context, subscri return nil } +func (r *SubscriptionReceiverRepository) Update(ctx context.Context, rel *subscriptionreceiver.Relation) error { + if rel == nil { + return errors.New("subscription receiver relation is nil") + } + + srModel := new(model.SubscriptionReceiverRelation) + srModel.FromDomain(*rel) + + var newModel model.SubscriptionReceiverRelation + + ctx = otelsql.WithCustomAttributes( + ctx, + []attribute.KeyValue{ + attribute.String("db.repository.method", "Update"), + attribute.String("db.sql.table", "subscriptions_receivers"), + }..., + ) + + if err := r.client.QueryRowxContext(ctx, subscriptionReceiverUpdateQuery, + srModel.SubscriptionID, + srModel.ReceiverID, + srModel.Labels, + ).StructScan(&newModel); err != nil { + err = pgc.CheckError(err) + if errors.Is(err, sql.ErrNoRows) { + return subscriptionreceiver.NotFoundError{ + SubscriptionID: srModel.SubscriptionID, + ReceiverID: srModel.ReceiverID, + } + } + if errors.Is(err, pgc.ErrDuplicateKey) { + return subscription.ErrDuplicate + } + if errors.Is(err, pgc.ErrForeignKeyViolation) { + return subscriptionreceiver.NotFoundError{ + SubscriptionID: srModel.SubscriptionID, + ReceiverID: srModel.ReceiverID, + } + } + return err + } + + *rel = *newModel.ToDomain() + + return nil +} + func (r *SubscriptionReceiverRepository) BulkSoftDelete(ctx context.Context, flt subscriptionreceiver.DeleteFilter) error { if len(flt.Pair) > 0 && flt.SubscriptionID != 0 { return errors.New("use either pairs of subscription id and receiver id or a single subscription id") @@ -241,7 +305,9 @@ func (r *SubscriptionReceiverRepository) BulkSoftDelete(ctx context.Context, flt return err } if rowsAffected == 0 { - return errors.New("no rows affected when soft deleting subscription receivers") + return subscriptionreceiver.NotFoundError{ + ErrStr: "no data found", + } } return nil diff --git a/internal/store/postgres/subscription_receiver_test.go b/internal/store/postgres/subscriptionreceiver_test.go similarity index 86% rename from internal/store/postgres/subscription_receiver_test.go rename to internal/store/postgres/subscriptionreceiver_test.go index b64ebf76..be22b3d7 100644 --- a/internal/store/postgres/subscription_receiver_test.go +++ b/internal/store/postgres/subscriptionreceiver_test.go @@ -129,7 +129,10 @@ func (s *SubscriptionReceiverRepositoryTestSuite) TestList() { { SubscriptionID: 1, ReceiverID: 3, - Labels: map[string]string{}, + Labels: map[string]string{ + "lk1": "lv1", + "lk2": "lv2", + }, }, { SubscriptionID: 2, @@ -152,6 +155,25 @@ func (s *SubscriptionReceiverRepositoryTestSuite) TestList() { }, }, }, + { + Description: "should get all subscriptions receivers with filter label", + Filter: subscriptionreceiver.Filter{ + SubscriptionIDs: []uint64{1}, + Labels: map[string]string{ + "lk1": "lv1", + }, + }, + Expected: []subscriptionreceiver.Relation{ + { + SubscriptionID: 1, + ReceiverID: 3, + Labels: map[string]string{ + "lk1": "lv1", + "lk2": "lv2", + }, + }, + }, + }, } for _, tc := range testCases { @@ -325,7 +347,10 @@ func (s *SubscriptionReceiverRepositoryTestSuite) TestBulkUpsert() { { SubscriptionID: 1, ReceiverID: 3, - Labels: map[string]string{}, + Labels: map[string]string{ + "lk1": "lv1", + "lk2": "lv2", + }, }, } if diff := cmp.Diff(sr1, expectedSR1, @@ -372,6 +397,62 @@ func (s *SubscriptionReceiverRepositoryTestSuite) TestBulkUpsert() { } } +func (s *SubscriptionReceiverRepositoryTestSuite) TestUpdate() { + type testCase struct { + Description string + ToUpdate *subscriptionreceiver.Relation + ErrString string + } + + var testCases = []testCase{ + { + Description: "should update a subscription receiver relation", + ToUpdate: &subscriptionreceiver.Relation{ + SubscriptionID: 1, + ReceiverID: 2, + Labels: map[string]string{ + "newkey": "newvalue", + }, + }, + }, + { + Description: "should return relation error if subscription id does not exist", + ToUpdate: &subscriptionreceiver.Relation{ + SubscriptionID: 100, + ReceiverID: 2, + Labels: map[string]string{ + "newkey": "newvalue", + }, + }, + ErrString: "subscription with id 100 and receiver with id 2 not found", + }, + { + Description: "should return relation error if receiver id does not exist", + ToUpdate: &subscriptionreceiver.Relation{ + SubscriptionID: 1, + ReceiverID: 200, + Labels: map[string]string{ + "newkey": "newvalue", + }, + }, + ErrString: "subscription with id 1 and receiver with id 200 not found", + }, + { + Description: "should return error if subscription receiver relation is nil", + ErrString: "subscription receiver relation is nil", + }, + } + + for _, tc := range testCases { + s.Run(tc.Description, func() { + err := s.repository.Update(s.ctx, tc.ToUpdate) + if err != nil && err.Error() != tc.ErrString { + s.T().Fatalf("got error %s, expected was %s", err.Error(), tc.ErrString) + } + }) + } +} + func (s *SubscriptionReceiverRepositoryTestSuite) TestBulkSoftDelete() { type testCase struct { Description string diff --git a/internal/store/postgres/testdata/mock-subscription-receiver.json b/internal/store/postgres/testdata/mock-subscription-receiver.json index 28726421..6eed730a 100644 --- a/internal/store/postgres/testdata/mock-subscription-receiver.json +++ b/internal/store/postgres/testdata/mock-subscription-receiver.json @@ -9,7 +9,11 @@ }, { "subscription_id": 1, - "receiver_id": 3 + "receiver_id": 3, + "labels": { + "lk1": "lv1", + "lk2": "lv2" + } }, { "subscription_id": 2, diff --git a/proto/gotocompany/siren/v1beta1/siren.pb.go b/proto/gotocompany/siren/v1beta1/siren.pb.go index 305eb684..23c08fb8 100644 --- a/proto/gotocompany/siren/v1beta1/siren.pb.go +++ b/proto/gotocompany/siren/v1beta1/siren.pb.go @@ -2077,24 +2077,18 @@ func (*DeleteSubscriptionResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{33} } -type Receiver struct { +type AddSubscriptionReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Configurations *structpb.Struct `protobuf:"bytes,5,opt,name=configurations,proto3" json:"configurations,omitempty"` - Data *structpb.Struct `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ParentId uint64 `protobuf:"varint,9,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + ReceiverId uint64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *Receiver) Reset() { - *x = Receiver{} +func (x *AddSubscriptionReceiverRequest) Reset() { + *x = AddSubscriptionReceiverRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2102,13 +2096,13 @@ func (x *Receiver) Reset() { } } -func (x *Receiver) String() string { +func (x *AddSubscriptionReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Receiver) ProtoMessage() {} +func (*AddSubscriptionReceiverRequest) ProtoMessage() {} -func (x *Receiver) ProtoReflect() protoreflect.Message { +func (x *AddSubscriptionReceiverRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2120,84 +2114,43 @@ func (x *Receiver) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Receiver.ProtoReflect.Descriptor instead. -func (*Receiver) Descriptor() ([]byte, []int) { +// Deprecated: Use AddSubscriptionReceiverRequest.ProtoReflect.Descriptor instead. +func (*AddSubscriptionReceiverRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{34} } -func (x *Receiver) GetId() uint64 { +func (x *AddSubscriptionReceiverRequest) GetSubscriptionId() uint64 { if x != nil { - return x.Id + return x.SubscriptionId } return 0 } -func (x *Receiver) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Receiver) GetType() string { +func (x *AddSubscriptionReceiverRequest) GetReceiverId() uint64 { if x != nil { - return x.Type + return x.ReceiverId } - return "" + return 0 } -func (x *Receiver) GetLabels() map[string]string { +func (x *AddSubscriptionReceiverRequest) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } -func (x *Receiver) GetConfigurations() *structpb.Struct { - if x != nil { - return x.Configurations - } - return nil -} - -func (x *Receiver) GetData() *structpb.Struct { - if x != nil { - return x.Data - } - return nil -} - -func (x *Receiver) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Receiver) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Receiver) GetParentId() uint64 { - if x != nil { - return x.ParentId - } - return 0 -} - -type ListReceiversRequest struct { +type ListSubscriptionReceiversRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ListReceiversRequest) Reset() { - *x = ListReceiversRequest{} +func (x *ListSubscriptionReceiversRequest) Reset() { + *x = ListSubscriptionReceiversRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2205,13 +2158,13 @@ func (x *ListReceiversRequest) Reset() { } } -func (x *ListReceiversRequest) String() string { +func (x *ListSubscriptionReceiversRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReceiversRequest) ProtoMessage() {} +func (*ListSubscriptionReceiversRequest) ProtoMessage() {} -func (x *ListReceiversRequest) ProtoReflect() protoreflect.Message { +func (x *ListSubscriptionReceiversRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2223,28 +2176,35 @@ func (x *ListReceiversRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReceiversRequest.ProtoReflect.Descriptor instead. -func (*ListReceiversRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListSubscriptionReceiversRequest.ProtoReflect.Descriptor instead. +func (*ListSubscriptionReceiversRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{35} } -func (x *ListReceiversRequest) GetLabels() map[string]string { +func (x *ListSubscriptionReceiversRequest) GetSubscriptionId() uint64 { + if x != nil { + return x.SubscriptionId + } + return 0 +} + +func (x *ListSubscriptionReceiversRequest) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } -type ListReceiversResponse struct { +type ListSubscriptionReceiversResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Receivers []*Receiver `protobuf:"bytes,1,rep,name=receivers,proto3" json:"receivers,omitempty"` + SubscriptionReceivers []*SubscriptionReceiverRelation `protobuf:"bytes,1,rep,name=subscription_receivers,json=subscriptionReceivers,proto3" json:"subscription_receivers,omitempty"` } -func (x *ListReceiversResponse) Reset() { - *x = ListReceiversResponse{} +func (x *ListSubscriptionReceiversResponse) Reset() { + *x = ListSubscriptionReceiversResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2252,13 +2212,13 @@ func (x *ListReceiversResponse) Reset() { } } -func (x *ListReceiversResponse) String() string { +func (x *ListSubscriptionReceiversResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReceiversResponse) ProtoMessage() {} +func (*ListSubscriptionReceiversResponse) ProtoMessage() {} -func (x *ListReceiversResponse) ProtoReflect() protoreflect.Message { +func (x *ListSubscriptionReceiversResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2270,32 +2230,32 @@ func (x *ListReceiversResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReceiversResponse.ProtoReflect.Descriptor instead. -func (*ListReceiversResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListSubscriptionReceiversResponse.ProtoReflect.Descriptor instead. +func (*ListSubscriptionReceiversResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{36} } -func (x *ListReceiversResponse) GetReceivers() []*Receiver { +func (x *ListSubscriptionReceiversResponse) GetSubscriptionReceivers() []*SubscriptionReceiverRelation { if x != nil { - return x.Receivers + return x.SubscriptionReceivers } return nil } -type CreateReceiverRequest struct { +type SubscriptionReceiverRelation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Configurations *structpb.Struct `protobuf:"bytes,4,opt,name=configurations,proto3" json:"configurations,omitempty"` - ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + ReceiverId uint64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (x *CreateReceiverRequest) Reset() { - *x = CreateReceiverRequest{} +func (x *SubscriptionReceiverRelation) Reset() { + *x = SubscriptionReceiverRelation{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2303,13 +2263,13 @@ func (x *CreateReceiverRequest) Reset() { } } -func (x *CreateReceiverRequest) String() string { +func (x *SubscriptionReceiverRelation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateReceiverRequest) ProtoMessage() {} +func (*SubscriptionReceiverRelation) ProtoMessage() {} -func (x *CreateReceiverRequest) ProtoReflect() protoreflect.Message { +func (x *SubscriptionReceiverRelation) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2321,56 +2281,58 @@ func (x *CreateReceiverRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateReceiverRequest.ProtoReflect.Descriptor instead. -func (*CreateReceiverRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use SubscriptionReceiverRelation.ProtoReflect.Descriptor instead. +func (*SubscriptionReceiverRelation) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{37} } -func (x *CreateReceiverRequest) GetName() string { +func (x *SubscriptionReceiverRelation) GetSubscriptionId() uint64 { if x != nil { - return x.Name + return x.SubscriptionId } - return "" + return 0 } -func (x *CreateReceiverRequest) GetType() string { +func (x *SubscriptionReceiverRelation) GetReceiverId() uint64 { if x != nil { - return x.Type + return x.ReceiverId } - return "" + return 0 } -func (x *CreateReceiverRequest) GetLabels() map[string]string { +func (x *SubscriptionReceiverRelation) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } -func (x *CreateReceiverRequest) GetConfigurations() *structpb.Struct { +func (x *SubscriptionReceiverRelation) GetCreatedAt() *timestamppb.Timestamp { if x != nil { - return x.Configurations + return x.CreatedAt } return nil } -func (x *CreateReceiverRequest) GetParentId() uint64 { +func (x *SubscriptionReceiverRelation) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { - return x.ParentId + return x.UpdatedAt } - return 0 + return nil } -type CreateReceiverResponse struct { +type AddSubscriptionReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + ReceiverId uint64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *CreateReceiverResponse) Reset() { - *x = CreateReceiverResponse{} +func (x *AddSubscriptionReceiverResponse) Reset() { + *x = AddSubscriptionReceiverResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2378,13 +2340,13 @@ func (x *CreateReceiverResponse) Reset() { } } -func (x *CreateReceiverResponse) String() string { +func (x *AddSubscriptionReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateReceiverResponse) ProtoMessage() {} +func (*AddSubscriptionReceiverResponse) ProtoMessage() {} -func (x *CreateReceiverResponse) ProtoReflect() protoreflect.Message { +func (x *AddSubscriptionReceiverResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2396,28 +2358,44 @@ func (x *CreateReceiverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateReceiverResponse.ProtoReflect.Descriptor instead. -func (*CreateReceiverResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use AddSubscriptionReceiverResponse.ProtoReflect.Descriptor instead. +func (*AddSubscriptionReceiverResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{38} } -func (x *CreateReceiverResponse) GetId() uint64 { +func (x *AddSubscriptionReceiverResponse) GetSubscriptionId() uint64 { if x != nil { - return x.Id + return x.SubscriptionId } return 0 } -type GetReceiverRequest struct { +func (x *AddSubscriptionReceiverResponse) GetReceiverId() uint64 { + if x != nil { + return x.ReceiverId + } + return 0 +} + +func (x *AddSubscriptionReceiverResponse) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +type UpdateSubscriptionReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + ReceiverId uint64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *GetReceiverRequest) Reset() { - *x = GetReceiverRequest{} +func (x *UpdateSubscriptionReceiverRequest) Reset() { + *x = UpdateSubscriptionReceiverRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2425,13 +2403,13 @@ func (x *GetReceiverRequest) Reset() { } } -func (x *GetReceiverRequest) String() string { +func (x *UpdateSubscriptionReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReceiverRequest) ProtoMessage() {} +func (*UpdateSubscriptionReceiverRequest) ProtoMessage() {} -func (x *GetReceiverRequest) ProtoReflect() protoreflect.Message { +func (x *UpdateSubscriptionReceiverRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2443,28 +2421,44 @@ func (x *GetReceiverRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReceiverRequest.ProtoReflect.Descriptor instead. -func (*GetReceiverRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateSubscriptionReceiverRequest.ProtoReflect.Descriptor instead. +func (*UpdateSubscriptionReceiverRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{39} } -func (x *GetReceiverRequest) GetId() uint64 { +func (x *UpdateSubscriptionReceiverRequest) GetSubscriptionId() uint64 { if x != nil { - return x.Id + return x.SubscriptionId } return 0 } -type GetReceiverResponse struct { +func (x *UpdateSubscriptionReceiverRequest) GetReceiverId() uint64 { + if x != nil { + return x.ReceiverId + } + return 0 +} + +func (x *UpdateSubscriptionReceiverRequest) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +type UpdateSubscriptionReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Receiver *Receiver `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + ReceiverId uint64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *GetReceiverResponse) Reset() { - *x = GetReceiverResponse{} +func (x *UpdateSubscriptionReceiverResponse) Reset() { + *x = UpdateSubscriptionReceiverResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2472,13 +2466,13 @@ func (x *GetReceiverResponse) Reset() { } } -func (x *GetReceiverResponse) String() string { +func (x *UpdateSubscriptionReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReceiverResponse) ProtoMessage() {} +func (*UpdateSubscriptionReceiverResponse) ProtoMessage() {} -func (x *GetReceiverResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateSubscriptionReceiverResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2490,32 +2484,43 @@ func (x *GetReceiverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReceiverResponse.ProtoReflect.Descriptor instead. -func (*GetReceiverResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateSubscriptionReceiverResponse.ProtoReflect.Descriptor instead. +func (*UpdateSubscriptionReceiverResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{40} } -func (x *GetReceiverResponse) GetReceiver() *Receiver { +func (x *UpdateSubscriptionReceiverResponse) GetSubscriptionId() uint64 { if x != nil { - return x.Receiver + return x.SubscriptionId + } + return 0 +} + +func (x *UpdateSubscriptionReceiverResponse) GetReceiverId() uint64 { + if x != nil { + return x.ReceiverId + } + return 0 +} + +func (x *UpdateSubscriptionReceiverResponse) GetLabels() map[string]string { + if x != nil { + return x.Labels } return nil } -type UpdateReceiverRequest struct { +type DeleteSubscriptionReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Configurations *structpb.Struct `protobuf:"bytes,4,opt,name=configurations,proto3" json:"configurations,omitempty"` - ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + ReceiverId uint64 `protobuf:"varint,2,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"` } -func (x *UpdateReceiverRequest) Reset() { - *x = UpdateReceiverRequest{} +func (x *DeleteSubscriptionReceiverRequest) Reset() { + *x = DeleteSubscriptionReceiverRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2523,13 +2528,13 @@ func (x *UpdateReceiverRequest) Reset() { } } -func (x *UpdateReceiverRequest) String() string { +func (x *DeleteSubscriptionReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateReceiverRequest) ProtoMessage() {} +func (*DeleteSubscriptionReceiverRequest) ProtoMessage() {} -func (x *UpdateReceiverRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteSubscriptionReceiverRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2541,56 +2546,33 @@ func (x *UpdateReceiverRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateReceiverRequest.ProtoReflect.Descriptor instead. -func (*UpdateReceiverRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteSubscriptionReceiverRequest.ProtoReflect.Descriptor instead. +func (*DeleteSubscriptionReceiverRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{41} } -func (x *UpdateReceiverRequest) GetId() uint64 { +func (x *DeleteSubscriptionReceiverRequest) GetSubscriptionId() uint64 { if x != nil { - return x.Id + return x.SubscriptionId } return 0 } -func (x *UpdateReceiverRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateReceiverRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *UpdateReceiverRequest) GetConfigurations() *structpb.Struct { - if x != nil { - return x.Configurations - } - return nil -} - -func (x *UpdateReceiverRequest) GetParentId() uint64 { +func (x *DeleteSubscriptionReceiverRequest) GetReceiverId() uint64 { if x != nil { - return x.ParentId + return x.ReceiverId } return 0 } -type UpdateReceiverResponse struct { +type DeleteSubscriptionReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *UpdateReceiverResponse) Reset() { - *x = UpdateReceiverResponse{} +func (x *DeleteSubscriptionReceiverResponse) Reset() { + *x = DeleteSubscriptionReceiverResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2598,13 +2580,13 @@ func (x *UpdateReceiverResponse) Reset() { } } -func (x *UpdateReceiverResponse) String() string { +func (x *DeleteSubscriptionReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateReceiverResponse) ProtoMessage() {} +func (*DeleteSubscriptionReceiverResponse) ProtoMessage() {} -func (x *UpdateReceiverResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteSubscriptionReceiverResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2616,28 +2598,29 @@ func (x *UpdateReceiverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateReceiverResponse.ProtoReflect.Descriptor instead. -func (*UpdateReceiverResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteSubscriptionReceiverResponse.ProtoReflect.Descriptor instead. +func (*DeleteSubscriptionReceiverResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{42} } -func (x *UpdateReceiverResponse) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -type DeleteReceiverRequest struct { +type Receiver struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Configurations *structpb.Struct `protobuf:"bytes,5,opt,name=configurations,proto3" json:"configurations,omitempty"` + Data *structpb.Struct `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ParentId uint64 `protobuf:"varint,9,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` } -func (x *DeleteReceiverRequest) Reset() { - *x = DeleteReceiverRequest{} +func (x *Receiver) Reset() { + *x = Receiver{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2645,13 +2628,13 @@ func (x *DeleteReceiverRequest) Reset() { } } -func (x *DeleteReceiverRequest) String() string { +func (x *Receiver) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteReceiverRequest) ProtoMessage() {} +func (*Receiver) ProtoMessage() {} -func (x *DeleteReceiverRequest) ProtoReflect() protoreflect.Message { +func (x *Receiver) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2663,26 +2646,84 @@ func (x *DeleteReceiverRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteReceiverRequest.ProtoReflect.Descriptor instead. -func (*DeleteReceiverRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use Receiver.ProtoReflect.Descriptor instead. +func (*Receiver) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{43} } -func (x *DeleteReceiverRequest) GetId() uint64 { +func (x *Receiver) GetId() uint64 { if x != nil { return x.Id } return 0 } -type DeleteReceiverResponse struct { +func (x *Receiver) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Receiver) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Receiver) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Receiver) GetConfigurations() *structpb.Struct { + if x != nil { + return x.Configurations + } + return nil +} + +func (x *Receiver) GetData() *structpb.Struct { + if x != nil { + return x.Data + } + return nil +} + +func (x *Receiver) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Receiver) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Receiver) GetParentId() uint64 { + if x != nil { + return x.ParentId + } + return 0 +} + +type ListReceiversRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *DeleteReceiverResponse) Reset() { - *x = DeleteReceiverResponse{} +func (x *ListReceiversRequest) Reset() { + *x = ListReceiversRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2690,13 +2731,13 @@ func (x *DeleteReceiverResponse) Reset() { } } -func (x *DeleteReceiverResponse) String() string { +func (x *ListReceiversRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteReceiverResponse) ProtoMessage() {} +func (*ListReceiversRequest) ProtoMessage() {} -func (x *DeleteReceiverResponse) ProtoReflect() protoreflect.Message { +func (x *ListReceiversRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2708,23 +2749,28 @@ func (x *DeleteReceiverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteReceiverResponse.ProtoReflect.Descriptor instead. -func (*DeleteReceiverResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListReceiversRequest.ProtoReflect.Descriptor instead. +func (*ListReceiversRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{44} } -// Deprecated: Do not use. -type NotifyReceiverRequest struct { +func (x *ListReceiversRequest) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +type ListReceiversResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Payload *structpb.Struct `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Receivers []*Receiver `protobuf:"bytes,1,rep,name=receivers,proto3" json:"receivers,omitempty"` } -func (x *NotifyReceiverRequest) Reset() { - *x = NotifyReceiverRequest{} +func (x *ListReceiversResponse) Reset() { + *x = ListReceiversResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2732,13 +2778,13 @@ func (x *NotifyReceiverRequest) Reset() { } } -func (x *NotifyReceiverRequest) String() string { +func (x *ListReceiversResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NotifyReceiverRequest) ProtoMessage() {} +func (*ListReceiversResponse) ProtoMessage() {} -func (x *NotifyReceiverRequest) ProtoReflect() protoreflect.Message { +func (x *ListReceiversResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2750,34 +2796,32 @@ func (x *NotifyReceiverRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NotifyReceiverRequest.ProtoReflect.Descriptor instead. -func (*NotifyReceiverRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListReceiversResponse.ProtoReflect.Descriptor instead. +func (*ListReceiversResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{45} } -func (x *NotifyReceiverRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *NotifyReceiverRequest) GetPayload() *structpb.Struct { +func (x *ListReceiversResponse) GetReceivers() []*Receiver { if x != nil { - return x.Payload + return x.Receivers } return nil } -// Deprecated: Do not use. -type NotifyReceiverResponse struct { +type CreateReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Configurations *structpb.Struct `protobuf:"bytes,4,opt,name=configurations,proto3" json:"configurations,omitempty"` + ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` } -func (x *NotifyReceiverResponse) Reset() { - *x = NotifyReceiverResponse{} +func (x *CreateReceiverRequest) Reset() { + *x = CreateReceiverRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2785,13 +2829,13 @@ func (x *NotifyReceiverResponse) Reset() { } } -func (x *NotifyReceiverResponse) String() string { +func (x *CreateReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NotifyReceiverResponse) ProtoMessage() {} +func (*CreateReceiverRequest) ProtoMessage() {} -func (x *NotifyReceiverResponse) ProtoReflect() protoreflect.Message { +func (x *CreateReceiverRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2803,38 +2847,56 @@ func (x *NotifyReceiverResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NotifyReceiverResponse.ProtoReflect.Descriptor instead. -func (*NotifyReceiverResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateReceiverRequest.ProtoReflect.Descriptor instead. +func (*CreateReceiverRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{46} } -type Alert struct { +func (x *CreateReceiverRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateReceiverRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *CreateReceiverRequest) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *CreateReceiverRequest) GetConfigurations() *structpb.Struct { + if x != nil { + return x.Configurations + } + return nil +} + +func (x *CreateReceiverRequest) GetParentId() uint64 { + if x != nil { + return x.ParentId + } + return 0 +} + +type CreateReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` - ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - MetricName string `protobuf:"bytes,4,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` - MetricValue string `protobuf:"bytes,5,opt,name=metric_value,json=metricValue,proto3" json:"metric_value,omitempty"` - Severity string `protobuf:"bytes,6,opt,name=severity,proto3" json:"severity,omitempty"` - Rule string `protobuf:"bytes,7,opt,name=rule,proto3" json:"rule,omitempty"` - TriggeredAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=triggered_at,json=triggeredAt,proto3" json:"triggered_at,omitempty"` - NamespaceId uint64 `protobuf:"varint,9,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - SilenceStatus string `protobuf:"bytes,10,opt,name=silence_status,json=silenceStatus,proto3" json:"silence_status,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - GroupKey string `protobuf:"bytes,13,opt,name=group_key,json=groupKey,proto3" json:"group_key,omitempty"` - Status string `protobuf:"bytes,14,opt,name=status,proto3" json:"status,omitempty"` - Annotations map[string]string `protobuf:"bytes,15,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Labels map[string]string `protobuf:"bytes,16,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - GeneratorUrl string `protobuf:"bytes,17,opt,name=generator_url,json=generatorUrl,proto3" json:"generator_url,omitempty"` - Fingerprint string `protobuf:"bytes,18,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *Alert) Reset() { - *x = Alert{} +func (x *CreateReceiverResponse) Reset() { + *x = CreateReceiverResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2842,13 +2904,13 @@ func (x *Alert) Reset() { } } -func (x *Alert) String() string { +func (x *CreateReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Alert) ProtoMessage() {} +func (*CreateReceiverResponse) ProtoMessage() {} -func (x *Alert) ProtoReflect() protoreflect.Message { +func (x *CreateReceiverResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2860,168 +2922,141 @@ func (x *Alert) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Alert.ProtoReflect.Descriptor instead. -func (*Alert) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateReceiverResponse.ProtoReflect.Descriptor instead. +func (*CreateReceiverResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{47} } -func (x *Alert) GetId() uint64 { +func (x *CreateReceiverResponse) GetId() uint64 { if x != nil { return x.Id } return 0 } -func (x *Alert) GetProviderId() uint64 { - if x != nil { - return x.ProviderId - } - return 0 +type GetReceiverRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *Alert) GetResourceName() string { - if x != nil { - return x.ResourceName +func (x *GetReceiverRequest) Reset() { + *x = GetReceiverRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Alert) GetMetricName() string { - if x != nil { - return x.MetricName - } - return "" -} - -func (x *Alert) GetMetricValue() string { - if x != nil { - return x.MetricValue - } - return "" +func (x *GetReceiverRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Alert) GetSeverity() string { - if x != nil { - return x.Severity - } - return "" -} +func (*GetReceiverRequest) ProtoMessage() {} -func (x *Alert) GetRule() string { - if x != nil { - return x.Rule +func (x *GetReceiverRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Alert) GetTriggeredAt() *timestamppb.Timestamp { - if x != nil { - return x.TriggeredAt - } - return nil +// Deprecated: Use GetReceiverRequest.ProtoReflect.Descriptor instead. +func (*GetReceiverRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{48} } -func (x *Alert) GetNamespaceId() uint64 { +func (x *GetReceiverRequest) GetId() uint64 { if x != nil { - return x.NamespaceId + return x.Id } return 0 } -func (x *Alert) GetSilenceStatus() string { - if x != nil { - return x.SilenceStatus - } - return "" -} - -func (x *Alert) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} +type GetReceiverResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *Alert) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil + Receiver *Receiver `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` } -func (x *Alert) GetGroupKey() string { - if x != nil { - return x.GroupKey +func (x *GetReceiverResponse) Reset() { + *x = GetReceiverResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Alert) GetStatus() string { - if x != nil { - return x.Status - } - return "" +func (x *GetReceiverResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Alert) GetAnnotations() map[string]string { - if x != nil { - return x.Annotations - } - return nil -} +func (*GetReceiverResponse) ProtoMessage() {} -func (x *Alert) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (x *GetReceiverResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *Alert) GetGeneratorUrl() string { - if x != nil { - return x.GeneratorUrl - } - return "" +// Deprecated: Use GetReceiverResponse.ProtoReflect.Descriptor instead. +func (*GetReceiverResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{49} } -func (x *Alert) GetFingerprint() string { +func (x *GetReceiverResponse) GetReceiver() *Receiver { if x != nil { - return x.Fingerprint + return x.Receiver } - return "" + return nil } -type ListAlertsRequest struct { +type UpdateReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProviderType string `protobuf:"bytes,1,opt,name=provider_type,json=providerType,proto3" json:"provider_type,omitempty"` - ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` - ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - StartTime uint64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime uint64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - NamespaceId uint64 `protobuf:"varint,6,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - SilenceId string `protobuf:"bytes,7,opt,name=silence_id,json=silenceId,proto3" json:"silence_id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Configurations *structpb.Struct `protobuf:"bytes,4,opt,name=configurations,proto3" json:"configurations,omitempty"` + ParentId uint64 `protobuf:"varint,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` } -func (x *ListAlertsRequest) Reset() { - *x = ListAlertsRequest{} +func (x *UpdateReceiverRequest) Reset() { + *x = UpdateReceiverRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[48] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListAlertsRequest) String() string { +func (x *UpdateReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAlertsRequest) ProtoMessage() {} +func (*UpdateReceiverRequest) ProtoMessage() {} -func (x *ListAlertsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[48] +func (x *UpdateReceiverRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3032,85 +3067,71 @@ func (x *ListAlertsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAlertsRequest.ProtoReflect.Descriptor instead. -func (*ListAlertsRequest) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{48} -} - -func (x *ListAlertsRequest) GetProviderType() string { - if x != nil { - return x.ProviderType - } - return "" +// Deprecated: Use UpdateReceiverRequest.ProtoReflect.Descriptor instead. +func (*UpdateReceiverRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{50} } -func (x *ListAlertsRequest) GetProviderId() uint64 { +func (x *UpdateReceiverRequest) GetId() uint64 { if x != nil { - return x.ProviderId + return x.Id } return 0 } -func (x *ListAlertsRequest) GetResourceName() string { +func (x *UpdateReceiverRequest) GetName() string { if x != nil { - return x.ResourceName + return x.Name } return "" } -func (x *ListAlertsRequest) GetStartTime() uint64 { +func (x *UpdateReceiverRequest) GetLabels() map[string]string { if x != nil { - return x.StartTime + return x.Labels } - return 0 + return nil } -func (x *ListAlertsRequest) GetEndTime() uint64 { +func (x *UpdateReceiverRequest) GetConfigurations() *structpb.Struct { if x != nil { - return x.EndTime + return x.Configurations } - return 0 + return nil } -func (x *ListAlertsRequest) GetNamespaceId() uint64 { +func (x *UpdateReceiverRequest) GetParentId() uint64 { if x != nil { - return x.NamespaceId + return x.ParentId } return 0 } -func (x *ListAlertsRequest) GetSilenceId() string { - if x != nil { - return x.SilenceId - } - return "" -} - -type ListAlertsResponse struct { +type UpdateReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *ListAlertsResponse) Reset() { - *x = ListAlertsResponse{} +func (x *UpdateReceiverResponse) Reset() { + *x = UpdateReceiverResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[49] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListAlertsResponse) String() string { +func (x *UpdateReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAlertsResponse) ProtoMessage() {} +func (*UpdateReceiverResponse) ProtoMessage() {} -func (x *ListAlertsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[49] +func (x *UpdateReceiverResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3121,45 +3142,43 @@ func (x *ListAlertsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAlertsResponse.ProtoReflect.Descriptor instead. -func (*ListAlertsResponse) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{49} +// Deprecated: Use UpdateReceiverResponse.ProtoReflect.Descriptor instead. +func (*UpdateReceiverResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{51} } -func (x *ListAlertsResponse) GetAlerts() []*Alert { +func (x *UpdateReceiverResponse) GetId() uint64 { if x != nil { - return x.Alerts + return x.Id } - return nil + return 0 } -type CreateAlertsRequest struct { +type DeleteReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProviderType string `protobuf:"bytes,1,opt,name=provider_type,json=providerType,proto3" json:"provider_type,omitempty"` - ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` - Body *structpb.Struct `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *CreateAlertsRequest) Reset() { - *x = CreateAlertsRequest{} +func (x *DeleteReceiverRequest) Reset() { + *x = DeleteReceiverRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[50] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateAlertsRequest) String() string { +func (x *DeleteReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAlertsRequest) ProtoMessage() {} +func (*DeleteReceiverRequest) ProtoMessage() {} -func (x *CreateAlertsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[50] +func (x *DeleteReceiverRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3170,57 +3189,41 @@ func (x *CreateAlertsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAlertsRequest.ProtoReflect.Descriptor instead. -func (*CreateAlertsRequest) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{50} +// Deprecated: Use DeleteReceiverRequest.ProtoReflect.Descriptor instead. +func (*DeleteReceiverRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{52} } -func (x *CreateAlertsRequest) GetProviderType() string { +func (x *DeleteReceiverRequest) GetId() uint64 { if x != nil { - return x.ProviderType + return x.Id } - return "" + return 0 } -func (x *CreateAlertsRequest) GetProviderId() uint64 { - if x != nil { - return x.ProviderId - } - return 0 -} - -func (x *CreateAlertsRequest) GetBody() *structpb.Struct { - if x != nil { - return x.Body - } - return nil -} - -type CreateAlertsResponse struct { +type DeleteReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` } -func (x *CreateAlertsResponse) Reset() { - *x = CreateAlertsResponse{} +func (x *DeleteReceiverResponse) Reset() { + *x = DeleteReceiverResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[51] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateAlertsResponse) String() string { +func (x *DeleteReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAlertsResponse) ProtoMessage() {} +func (*DeleteReceiverResponse) ProtoMessage() {} -func (x *CreateAlertsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[51] +func (x *DeleteReceiverResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3231,46 +3234,38 @@ func (x *CreateAlertsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAlertsResponse.ProtoReflect.Descriptor instead. -func (*CreateAlertsResponse) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{51} -} - -func (x *CreateAlertsResponse) GetAlerts() []*Alert { - if x != nil { - return x.Alerts - } - return nil +// Deprecated: Use DeleteReceiverResponse.ProtoReflect.Descriptor instead. +func (*DeleteReceiverResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{53} } -type CreateAlertsWithNamespaceRequest struct { +// Deprecated: Do not use. +type NotifyReceiverRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProviderType string `protobuf:"bytes,1,opt,name=provider_type,json=providerType,proto3" json:"provider_type,omitempty"` - ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` - Body *structpb.Struct `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` - NamespaceId uint64 `protobuf:"varint,4,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Payload *structpb.Struct `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } -func (x *CreateAlertsWithNamespaceRequest) Reset() { - *x = CreateAlertsWithNamespaceRequest{} +func (x *NotifyReceiverRequest) Reset() { + *x = NotifyReceiverRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[52] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateAlertsWithNamespaceRequest) String() string { +func (x *NotifyReceiverRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAlertsWithNamespaceRequest) ProtoMessage() {} +func (*NotifyReceiverRequest) ProtoMessage() {} -func (x *CreateAlertsWithNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[52] +func (x *NotifyReceiverRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3281,64 +3276,49 @@ func (x *CreateAlertsWithNamespaceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAlertsWithNamespaceRequest.ProtoReflect.Descriptor instead. -func (*CreateAlertsWithNamespaceRequest) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{52} -} - -func (x *CreateAlertsWithNamespaceRequest) GetProviderType() string { - if x != nil { - return x.ProviderType - } - return "" +// Deprecated: Use NotifyReceiverRequest.ProtoReflect.Descriptor instead. +func (*NotifyReceiverRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{54} } -func (x *CreateAlertsWithNamespaceRequest) GetProviderId() uint64 { +func (x *NotifyReceiverRequest) GetId() uint64 { if x != nil { - return x.ProviderId + return x.Id } return 0 } -func (x *CreateAlertsWithNamespaceRequest) GetBody() *structpb.Struct { +func (x *NotifyReceiverRequest) GetPayload() *structpb.Struct { if x != nil { - return x.Body + return x.Payload } return nil } -func (x *CreateAlertsWithNamespaceRequest) GetNamespaceId() uint64 { - if x != nil { - return x.NamespaceId - } - return 0 -} - -type CreateAlertsWithNamespaceResponse struct { +// Deprecated: Do not use. +type NotifyReceiverResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` } -func (x *CreateAlertsWithNamespaceResponse) Reset() { - *x = CreateAlertsWithNamespaceResponse{} +func (x *NotifyReceiverResponse) Reset() { + *x = NotifyReceiverResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[53] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateAlertsWithNamespaceResponse) String() string { +func (x *NotifyReceiverResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAlertsWithNamespaceResponse) ProtoMessage() {} +func (*NotifyReceiverResponse) ProtoMessage() {} -func (x *CreateAlertsWithNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[53] +func (x *NotifyReceiverResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3349,46 +3329,53 @@ func (x *CreateAlertsWithNamespaceResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use CreateAlertsWithNamespaceResponse.ProtoReflect.Descriptor instead. -func (*CreateAlertsWithNamespaceResponse) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{53} -} - -func (x *CreateAlertsWithNamespaceResponse) GetAlerts() []*Alert { - if x != nil { - return x.Alerts - } - return nil +// Deprecated: Use NotifyReceiverResponse.ProtoReflect.Descriptor instead. +func (*NotifyReceiverResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{55} } -type Annotations struct { +type Alert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` - MetricValue string `protobuf:"bytes,2,opt,name=metric_value,json=metricValue,proto3" json:"metric_value,omitempty"` - Resource string `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"` - Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` + ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + MetricName string `protobuf:"bytes,4,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` + MetricValue string `protobuf:"bytes,5,opt,name=metric_value,json=metricValue,proto3" json:"metric_value,omitempty"` + Severity string `protobuf:"bytes,6,opt,name=severity,proto3" json:"severity,omitempty"` + Rule string `protobuf:"bytes,7,opt,name=rule,proto3" json:"rule,omitempty"` + TriggeredAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=triggered_at,json=triggeredAt,proto3" json:"triggered_at,omitempty"` + NamespaceId uint64 `protobuf:"varint,9,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + SilenceStatus string `protobuf:"bytes,10,opt,name=silence_status,json=silenceStatus,proto3" json:"silence_status,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + GroupKey string `protobuf:"bytes,13,opt,name=group_key,json=groupKey,proto3" json:"group_key,omitempty"` + Status string `protobuf:"bytes,14,opt,name=status,proto3" json:"status,omitempty"` + Annotations map[string]string `protobuf:"bytes,15,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,16,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + GeneratorUrl string `protobuf:"bytes,17,opt,name=generator_url,json=generatorUrl,proto3" json:"generator_url,omitempty"` + Fingerprint string `protobuf:"bytes,18,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` } -func (x *Annotations) Reset() { - *x = Annotations{} +func (x *Alert) Reset() { + *x = Alert{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[54] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Annotations) String() string { +func (x *Alert) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Annotations) ProtoMessage() {} +func (*Alert) ProtoMessage() {} -func (x *Annotations) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[54] +func (x *Alert) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3399,218 +3386,153 @@ func (x *Annotations) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Annotations.ProtoReflect.Descriptor instead. -func (*Annotations) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{54} +// Deprecated: Use Alert.ProtoReflect.Descriptor instead. +func (*Alert) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{56} } -func (x *Annotations) GetMetricName() string { +func (x *Alert) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Alert) GetProviderId() uint64 { + if x != nil { + return x.ProviderId + } + return 0 +} + +func (x *Alert) GetResourceName() string { + if x != nil { + return x.ResourceName + } + return "" +} + +func (x *Alert) GetMetricName() string { if x != nil { return x.MetricName } return "" } -func (x *Annotations) GetMetricValue() string { +func (x *Alert) GetMetricValue() string { if x != nil { return x.MetricValue } return "" } -func (x *Annotations) GetResource() string { +func (x *Alert) GetSeverity() string { if x != nil { - return x.Resource + return x.Severity } return "" } -func (x *Annotations) GetTemplate() string { +func (x *Alert) GetRule() string { if x != nil { - return x.Template + return x.Rule } return "" } -type Labels struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Severity string `protobuf:"bytes,1,opt,name=severity,proto3" json:"severity,omitempty"` +func (x *Alert) GetTriggeredAt() *timestamppb.Timestamp { + if x != nil { + return x.TriggeredAt + } + return nil } -func (x *Labels) Reset() { - *x = Labels{} - if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Alert) GetNamespaceId() uint64 { + if x != nil { + return x.NamespaceId } + return 0 } -func (x *Labels) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Alert) GetSilenceStatus() string { + if x != nil { + return x.SilenceStatus + } + return "" } -func (*Labels) ProtoMessage() {} - -func (x *Labels) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Alert) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Labels.ProtoReflect.Descriptor instead. -func (*Labels) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{55} +func (x *Alert) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil } -func (x *Labels) GetSeverity() string { +func (x *Alert) GetGroupKey() string { if x != nil { - return x.Severity + return x.GroupKey } return "" } -type Rule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` - GroupName string `protobuf:"bytes,4,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` - Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` - Template string `protobuf:"bytes,6,opt,name=template,proto3" json:"template,omitempty"` - Variables []*Variables `protobuf:"bytes,7,rep,name=variables,proto3" json:"variables,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ProviderNamespace uint64 `protobuf:"varint,10,opt,name=provider_namespace,json=providerNamespace,proto3" json:"provider_namespace,omitempty"` -} - -func (x *Rule) Reset() { - *x = Rule{} - if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Rule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Rule) ProtoMessage() {} - -func (x *Rule) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[56] - 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 Rule.ProtoReflect.Descriptor instead. -func (*Rule) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{56} -} - -func (x *Rule) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Rule) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Rule) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *Rule) GetGroupName() string { - if x != nil { - return x.GroupName - } - return "" -} - -func (x *Rule) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *Rule) GetTemplate() string { +func (x *Alert) GetStatus() string { if x != nil { - return x.Template + return x.Status } return "" } -func (x *Rule) GetVariables() []*Variables { +func (x *Alert) GetAnnotations() map[string]string { if x != nil { - return x.Variables + return x.Annotations } return nil } -func (x *Rule) GetCreatedAt() *timestamppb.Timestamp { +func (x *Alert) GetLabels() map[string]string { if x != nil { - return x.CreatedAt + return x.Labels } return nil } -func (x *Rule) GetUpdatedAt() *timestamppb.Timestamp { +func (x *Alert) GetGeneratorUrl() string { if x != nil { - return x.UpdatedAt + return x.GeneratorUrl } - return nil + return "" } -func (x *Rule) GetProviderNamespace() uint64 { +func (x *Alert) GetFingerprint() string { if x != nil { - return x.ProviderNamespace + return x.Fingerprint } - return 0 + return "" } -type Variables struct { +type ListAlertsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + ProviderType string `protobuf:"bytes,1,opt,name=provider_type,json=providerType,proto3" json:"provider_type,omitempty"` + ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` + ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + StartTime uint64 `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime uint64 `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + NamespaceId uint64 `protobuf:"varint,6,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + SilenceId string `protobuf:"bytes,7,opt,name=silence_id,json=silenceId,proto3" json:"silence_id,omitempty"` } -func (x *Variables) Reset() { - *x = Variables{} +func (x *ListAlertsRequest) Reset() { + *x = ListAlertsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3618,13 +3540,13 @@ func (x *Variables) Reset() { } } -func (x *Variables) String() string { +func (x *ListAlertsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Variables) ProtoMessage() {} +func (*ListAlertsRequest) ProtoMessage() {} -func (x *Variables) ProtoReflect() protoreflect.Message { +func (x *ListAlertsRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3636,53 +3558,70 @@ func (x *Variables) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Variables.ProtoReflect.Descriptor instead. -func (*Variables) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAlertsRequest.ProtoReflect.Descriptor instead. +func (*ListAlertsRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{57} } -func (x *Variables) GetName() string { +func (x *ListAlertsRequest) GetProviderType() string { if x != nil { - return x.Name + return x.ProviderType } return "" } -func (x *Variables) GetValue() string { +func (x *ListAlertsRequest) GetProviderId() uint64 { if x != nil { - return x.Value + return x.ProviderId } - return "" + return 0 } -func (x *Variables) GetType() string { +func (x *ListAlertsRequest) GetResourceName() string { if x != nil { - return x.Type + return x.ResourceName } return "" } -func (x *Variables) GetDescription() string { +func (x *ListAlertsRequest) GetStartTime() uint64 { if x != nil { - return x.Description + return x.StartTime + } + return 0 +} + +func (x *ListAlertsRequest) GetEndTime() uint64 { + if x != nil { + return x.EndTime + } + return 0 +} + +func (x *ListAlertsRequest) GetNamespaceId() uint64 { + if x != nil { + return x.NamespaceId + } + return 0 +} + +func (x *ListAlertsRequest) GetSilenceId() string { + if x != nil { + return x.SilenceId } return "" } -type ListRulesRequest struct { +type ListAlertsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - GroupName string `protobuf:"bytes,3,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` - Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` - ProviderNamespace uint64 `protobuf:"varint,5,opt,name=provider_namespace,json=providerNamespace,proto3" json:"provider_namespace,omitempty"` + Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` } -func (x *ListRulesRequest) Reset() { - *x = ListRulesRequest{} +func (x *ListAlertsResponse) Reset() { + *x = ListAlertsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3690,13 +3629,13 @@ func (x *ListRulesRequest) Reset() { } } -func (x *ListRulesRequest) String() string { +func (x *ListAlertsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRulesRequest) ProtoMessage() {} +func (*ListAlertsResponse) ProtoMessage() {} -func (x *ListRulesRequest) ProtoReflect() protoreflect.Message { +func (x *ListAlertsResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3708,56 +3647,30 @@ func (x *ListRulesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRulesRequest.ProtoReflect.Descriptor instead. -func (*ListRulesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAlertsResponse.ProtoReflect.Descriptor instead. +func (*ListAlertsResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{58} } -func (x *ListRulesRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ListRulesRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *ListRulesRequest) GetGroupName() string { - if x != nil { - return x.GroupName - } - return "" -} - -func (x *ListRulesRequest) GetTemplate() string { - if x != nil { - return x.Template - } - return "" -} - -func (x *ListRulesRequest) GetProviderNamespace() uint64 { +func (x *ListAlertsResponse) GetAlerts() []*Alert { if x != nil { - return x.ProviderNamespace + return x.Alerts } - return 0 + return nil } -type ListRulesResponse struct { +type CreateAlertsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Rules []*Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + ProviderType string `protobuf:"bytes,1,opt,name=provider_type,json=providerType,proto3" json:"provider_type,omitempty"` + ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` + Body *structpb.Struct `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` } -func (x *ListRulesResponse) Reset() { - *x = ListRulesResponse{} +func (x *CreateAlertsRequest) Reset() { + *x = CreateAlertsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3765,13 +3678,13 @@ func (x *ListRulesResponse) Reset() { } } -func (x *ListRulesResponse) String() string { +func (x *CreateAlertsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRulesResponse) ProtoMessage() {} +func (*CreateAlertsRequest) ProtoMessage() {} -func (x *ListRulesResponse) ProtoReflect() protoreflect.Message { +func (x *CreateAlertsRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3783,33 +3696,42 @@ func (x *ListRulesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRulesResponse.ProtoReflect.Descriptor instead. -func (*ListRulesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAlertsRequest.ProtoReflect.Descriptor instead. +func (*CreateAlertsRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{59} } -func (x *ListRulesResponse) GetRules() []*Rule { +func (x *CreateAlertsRequest) GetProviderType() string { if x != nil { - return x.Rules + return x.ProviderType } - return nil + return "" } -type UpdateRuleRequest struct { +func (x *CreateAlertsRequest) GetProviderId() uint64 { + if x != nil { + return x.ProviderId + } + return 0 +} + +func (x *CreateAlertsRequest) GetBody() *structpb.Struct { + if x != nil { + return x.Body + } + return nil +} + +type CreateAlertsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` - Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` - Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` - Variables []*Variables `protobuf:"bytes,5,rep,name=variables,proto3" json:"variables,omitempty"` - ProviderNamespace uint64 `protobuf:"varint,6,opt,name=provider_namespace,json=providerNamespace,proto3" json:"provider_namespace,omitempty"` + Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` } -func (x *UpdateRuleRequest) Reset() { - *x = UpdateRuleRequest{} +func (x *CreateAlertsResponse) Reset() { + *x = CreateAlertsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3817,13 +3739,13 @@ func (x *UpdateRuleRequest) Reset() { } } -func (x *UpdateRuleRequest) String() string { +func (x *CreateAlertsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRuleRequest) ProtoMessage() {} +func (*CreateAlertsResponse) ProtoMessage() {} -func (x *UpdateRuleRequest) ProtoReflect() protoreflect.Message { +func (x *CreateAlertsResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3835,63 +3757,31 @@ func (x *UpdateRuleRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRuleRequest.ProtoReflect.Descriptor instead. -func (*UpdateRuleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAlertsResponse.ProtoReflect.Descriptor instead. +func (*CreateAlertsResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{60} } -func (x *UpdateRuleRequest) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *UpdateRuleRequest) GetGroupName() string { - if x != nil { - return x.GroupName - } - return "" -} - -func (x *UpdateRuleRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *UpdateRuleRequest) GetTemplate() string { - if x != nil { - return x.Template - } - return "" -} - -func (x *UpdateRuleRequest) GetVariables() []*Variables { +func (x *CreateAlertsResponse) GetAlerts() []*Alert { if x != nil { - return x.Variables + return x.Alerts } return nil } -func (x *UpdateRuleRequest) GetProviderNamespace() uint64 { - if x != nil { - return x.ProviderNamespace - } - return 0 -} - -type UpdateRuleResponse struct { +type CreateAlertsWithNamespaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Rule *Rule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` + ProviderType string `protobuf:"bytes,1,opt,name=provider_type,json=providerType,proto3" json:"provider_type,omitempty"` + ProviderId uint64 `protobuf:"varint,2,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` + Body *structpb.Struct `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` + NamespaceId uint64 `protobuf:"varint,4,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` } -func (x *UpdateRuleResponse) Reset() { - *x = UpdateRuleResponse{} +func (x *CreateAlertsWithNamespaceRequest) Reset() { + *x = CreateAlertsWithNamespaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3899,13 +3789,13 @@ func (x *UpdateRuleResponse) Reset() { } } -func (x *UpdateRuleResponse) String() string { +func (x *CreateAlertsWithNamespaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRuleResponse) ProtoMessage() {} +func (*CreateAlertsWithNamespaceRequest) ProtoMessage() {} -func (x *UpdateRuleResponse) ProtoReflect() protoreflect.Message { +func (x *CreateAlertsWithNamespaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3917,31 +3807,49 @@ func (x *UpdateRuleResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRuleResponse.ProtoReflect.Descriptor instead. -func (*UpdateRuleResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAlertsWithNamespaceRequest.ProtoReflect.Descriptor instead. +func (*CreateAlertsWithNamespaceRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{61} } -func (x *UpdateRuleResponse) GetRule() *Rule { +func (x *CreateAlertsWithNamespaceRequest) GetProviderType() string { if x != nil { - return x.Rule + return x.ProviderType + } + return "" +} + +func (x *CreateAlertsWithNamespaceRequest) GetProviderId() uint64 { + if x != nil { + return x.ProviderId + } + return 0 +} + +func (x *CreateAlertsWithNamespaceRequest) GetBody() *structpb.Struct { + if x != nil { + return x.Body } return nil } -type TemplateVariables struct { +func (x *CreateAlertsWithNamespaceRequest) GetNamespaceId() uint64 { + if x != nil { + return x.NamespaceId + } + return 0 +} + +type CreateAlertsWithNamespaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Default string `protobuf:"bytes,3,opt,name=default,proto3" json:"default,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` } -func (x *TemplateVariables) Reset() { - *x = TemplateVariables{} +func (x *CreateAlertsWithNamespaceResponse) Reset() { + *x = CreateAlertsWithNamespaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3949,13 +3857,13 @@ func (x *TemplateVariables) Reset() { } } -func (x *TemplateVariables) String() string { +func (x *CreateAlertsWithNamespaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TemplateVariables) ProtoMessage() {} +func (*CreateAlertsWithNamespaceResponse) ProtoMessage() {} -func (x *TemplateVariables) ProtoReflect() protoreflect.Message { +func (x *CreateAlertsWithNamespaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3967,55 +3875,31 @@ func (x *TemplateVariables) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TemplateVariables.ProtoReflect.Descriptor instead. -func (*TemplateVariables) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAlertsWithNamespaceResponse.ProtoReflect.Descriptor instead. +func (*CreateAlertsWithNamespaceResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{62} } -func (x *TemplateVariables) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *TemplateVariables) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *TemplateVariables) GetDefault() string { - if x != nil { - return x.Default - } - return "" -} - -func (x *TemplateVariables) GetDescription() string { +func (x *CreateAlertsWithNamespaceResponse) GetAlerts() []*Alert { if x != nil { - return x.Description + return x.Alerts } - return "" + return nil } -type Template struct { +type Annotations struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` - Tags []string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Variables []*TemplateVariables `protobuf:"bytes,7,rep,name=variables,proto3" json:"variables,omitempty"` + MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` + MetricValue string `protobuf:"bytes,2,opt,name=metric_value,json=metricValue,proto3" json:"metric_value,omitempty"` + Resource string `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"` + Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` } -func (x *Template) Reset() { - *x = Template{} +func (x *Annotations) Reset() { + *x = Annotations{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4023,13 +3907,13 @@ func (x *Template) Reset() { } } -func (x *Template) String() string { +func (x *Annotations) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Template) ProtoMessage() {} +func (*Annotations) ProtoMessage() {} -func (x *Template) ProtoReflect() protoreflect.Message { +func (x *Annotations) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4041,70 +3925,49 @@ func (x *Template) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Template.ProtoReflect.Descriptor instead. -func (*Template) Descriptor() ([]byte, []int) { +// Deprecated: Use Annotations.ProtoReflect.Descriptor instead. +func (*Annotations) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{63} } -func (x *Template) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Template) GetName() string { +func (x *Annotations) GetMetricName() string { if x != nil { - return x.Name + return x.MetricName } return "" } -func (x *Template) GetBody() string { +func (x *Annotations) GetMetricValue() string { if x != nil { - return x.Body + return x.MetricValue } return "" } -func (x *Template) GetTags() []string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *Template) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Template) GetUpdatedAt() *timestamppb.Timestamp { +func (x *Annotations) GetResource() string { if x != nil { - return x.UpdatedAt + return x.Resource } - return nil + return "" } -func (x *Template) GetVariables() []*TemplateVariables { +func (x *Annotations) GetTemplate() string { if x != nil { - return x.Variables + return x.Template } - return nil + return "" } -type ListTemplatesRequest struct { +type Labels struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + Severity string `protobuf:"bytes,1,opt,name=severity,proto3" json:"severity,omitempty"` } -func (x *ListTemplatesRequest) Reset() { - *x = ListTemplatesRequest{} +func (x *Labels) Reset() { + *x = Labels{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4112,13 +3975,13 @@ func (x *ListTemplatesRequest) Reset() { } } -func (x *ListTemplatesRequest) String() string { +func (x *Labels) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTemplatesRequest) ProtoMessage() {} +func (*Labels) ProtoMessage() {} -func (x *ListTemplatesRequest) ProtoReflect() protoreflect.Message { +func (x *Labels) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4130,28 +3993,37 @@ func (x *ListTemplatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListTemplatesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use Labels.ProtoReflect.Descriptor instead. +func (*Labels) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{64} } -func (x *ListTemplatesRequest) GetTag() string { +func (x *Labels) GetSeverity() string { if x != nil { - return x.Tag + return x.Severity } return "" } -type ListTemplatesResponse struct { +type Rule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Templates []*Template `protobuf:"bytes,1,rep,name=templates,proto3" json:"templates,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` + GroupName string `protobuf:"bytes,4,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + Namespace string `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"` + Template string `protobuf:"bytes,6,opt,name=template,proto3" json:"template,omitempty"` + Variables []*Variables `protobuf:"bytes,7,rep,name=variables,proto3" json:"variables,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ProviderNamespace uint64 `protobuf:"varint,10,opt,name=provider_namespace,json=providerNamespace,proto3" json:"provider_namespace,omitempty"` } -func (x *ListTemplatesResponse) Reset() { - *x = ListTemplatesResponse{} +func (x *Rule) Reset() { + *x = Rule{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4159,13 +4031,13 @@ func (x *ListTemplatesResponse) Reset() { } } -func (x *ListTemplatesResponse) String() string { +func (x *Rule) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTemplatesResponse) ProtoMessage() {} +func (*Rule) ProtoMessage() {} -func (x *ListTemplatesResponse) ProtoReflect() protoreflect.Message { +func (x *Rule) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4177,32 +4049,94 @@ func (x *ListTemplatesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListTemplatesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use Rule.ProtoReflect.Descriptor instead. +func (*Rule) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{65} } -func (x *ListTemplatesResponse) GetTemplates() []*Template { +func (x *Rule) GetId() uint64 { if x != nil { - return x.Templates + return x.Id + } + return 0 +} + +func (x *Rule) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Rule) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *Rule) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" +} + +func (x *Rule) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *Rule) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + +func (x *Rule) GetVariables() []*Variables { + if x != nil { + return x.Variables } return nil } -type UpsertTemplateRequest struct { +func (x *Rule) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Rule) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Rule) GetProviderNamespace() uint64 { + if x != nil { + return x.ProviderNamespace + } + return 0 +} + +type Variables struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` - Tags []string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"` - Variables []*TemplateVariables `protobuf:"bytes,5,rep,name=variables,proto3" json:"variables,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` } -func (x *UpsertTemplateRequest) Reset() { - *x = UpsertTemplateRequest{} +func (x *Variables) Reset() { + *x = Variables{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4210,13 +4144,13 @@ func (x *UpsertTemplateRequest) Reset() { } } -func (x *UpsertTemplateRequest) String() string { +func (x *Variables) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpsertTemplateRequest) ProtoMessage() {} +func (*Variables) ProtoMessage() {} -func (x *UpsertTemplateRequest) ProtoReflect() protoreflect.Message { +func (x *Variables) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4228,56 +4162,53 @@ func (x *UpsertTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpsertTemplateRequest.ProtoReflect.Descriptor instead. -func (*UpsertTemplateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use Variables.ProtoReflect.Descriptor instead. +func (*Variables) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{66} } -func (x *UpsertTemplateRequest) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *UpsertTemplateRequest) GetName() string { +func (x *Variables) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpsertTemplateRequest) GetBody() string { +func (x *Variables) GetValue() string { if x != nil { - return x.Body + return x.Value } return "" } -func (x *UpsertTemplateRequest) GetTags() []string { +func (x *Variables) GetType() string { if x != nil { - return x.Tags + return x.Type } - return nil + return "" } -func (x *UpsertTemplateRequest) GetVariables() []*TemplateVariables { +func (x *Variables) GetDescription() string { if x != nil { - return x.Variables + return x.Description } - return nil + return "" } -type UpsertTemplateResponse struct { +type ListRulesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + GroupName string `protobuf:"bytes,3,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` + ProviderNamespace uint64 `protobuf:"varint,5,opt,name=provider_namespace,json=providerNamespace,proto3" json:"provider_namespace,omitempty"` } -func (x *UpsertTemplateResponse) Reset() { - *x = UpsertTemplateResponse{} +func (x *ListRulesRequest) Reset() { + *x = ListRulesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4285,13 +4216,13 @@ func (x *UpsertTemplateResponse) Reset() { } } -func (x *UpsertTemplateResponse) String() string { +func (x *ListRulesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpsertTemplateResponse) ProtoMessage() {} +func (*ListRulesRequest) ProtoMessage() {} -func (x *UpsertTemplateResponse) ProtoReflect() protoreflect.Message { +func (x *ListRulesRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4303,28 +4234,56 @@ func (x *UpsertTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpsertTemplateResponse.ProtoReflect.Descriptor instead. -func (*UpsertTemplateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRulesRequest.ProtoReflect.Descriptor instead. +func (*ListRulesRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{67} } -func (x *UpsertTemplateResponse) GetId() uint64 { +func (x *ListRulesRequest) GetName() string { if x != nil { - return x.Id + return x.Name + } + return "" +} + +func (x *ListRulesRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *ListRulesRequest) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" +} + +func (x *ListRulesRequest) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + +func (x *ListRulesRequest) GetProviderNamespace() uint64 { + if x != nil { + return x.ProviderNamespace } return 0 } -type GetTemplateRequest struct { +type ListRulesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Rules []*Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` } -func (x *GetTemplateRequest) Reset() { - *x = GetTemplateRequest{} +func (x *ListRulesResponse) Reset() { + *x = ListRulesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4332,13 +4291,13 @@ func (x *GetTemplateRequest) Reset() { } } -func (x *GetTemplateRequest) String() string { +func (x *ListRulesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTemplateRequest) ProtoMessage() {} +func (*ListRulesResponse) ProtoMessage() {} -func (x *GetTemplateRequest) ProtoReflect() protoreflect.Message { +func (x *ListRulesResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4350,28 +4309,33 @@ func (x *GetTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetTemplateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRulesResponse.ProtoReflect.Descriptor instead. +func (*ListRulesResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{68} } -func (x *GetTemplateRequest) GetName() string { +func (x *ListRulesResponse) GetRules() []*Rule { if x != nil { - return x.Name + return x.Rules } - return "" + return nil } -type GetTemplateResponse struct { +type UpdateRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Template *Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` + Variables []*Variables `protobuf:"bytes,5,rep,name=variables,proto3" json:"variables,omitempty"` + ProviderNamespace uint64 `protobuf:"varint,6,opt,name=provider_namespace,json=providerNamespace,proto3" json:"provider_namespace,omitempty"` } -func (x *GetTemplateResponse) Reset() { - *x = GetTemplateResponse{} +func (x *UpdateRuleRequest) Reset() { + *x = UpdateRuleRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4379,13 +4343,13 @@ func (x *GetTemplateResponse) Reset() { } } -func (x *GetTemplateResponse) String() string { +func (x *UpdateRuleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTemplateResponse) ProtoMessage() {} +func (*UpdateRuleRequest) ProtoMessage() {} -func (x *GetTemplateResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateRuleRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4397,28 +4361,63 @@ func (x *GetTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetTemplateResponse.ProtoReflect.Descriptor instead. -func (*GetTemplateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateRuleRequest.ProtoReflect.Descriptor instead. +func (*UpdateRuleRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{69} } -func (x *GetTemplateResponse) GetTemplate() *Template { +func (x *UpdateRuleRequest) GetEnabled() bool { if x != nil { - return x.Template + return x.Enabled } - return nil + return false } -type DeleteTemplateRequest struct { +func (x *UpdateRuleRequest) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" +} + +func (x *UpdateRuleRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *UpdateRuleRequest) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + +func (x *UpdateRuleRequest) GetVariables() []*Variables { + if x != nil { + return x.Variables + } + return nil +} + +func (x *UpdateRuleRequest) GetProviderNamespace() uint64 { + if x != nil { + return x.ProviderNamespace + } + return 0 +} + +type UpdateRuleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Rule *Rule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` } -func (x *DeleteTemplateRequest) Reset() { - *x = DeleteTemplateRequest{} +func (x *UpdateRuleResponse) Reset() { + *x = UpdateRuleResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4426,13 +4425,13 @@ func (x *DeleteTemplateRequest) Reset() { } } -func (x *DeleteTemplateRequest) String() string { +func (x *UpdateRuleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteTemplateRequest) ProtoMessage() {} +func (*UpdateRuleResponse) ProtoMessage() {} -func (x *DeleteTemplateRequest) ProtoReflect() protoreflect.Message { +func (x *UpdateRuleResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4444,26 +4443,31 @@ func (x *DeleteTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteTemplateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateRuleResponse.ProtoReflect.Descriptor instead. +func (*UpdateRuleResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{70} } -func (x *DeleteTemplateRequest) GetName() string { +func (x *UpdateRuleResponse) GetRule() *Rule { if x != nil { - return x.Name + return x.Rule } - return "" + return nil } -type DeleteTemplateResponse struct { +type TemplateVariables struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Default string `protobuf:"bytes,3,opt,name=default,proto3" json:"default,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` } -func (x *DeleteTemplateResponse) Reset() { - *x = DeleteTemplateResponse{} +func (x *TemplateVariables) Reset() { + *x = TemplateVariables{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4471,13 +4475,13 @@ func (x *DeleteTemplateResponse) Reset() { } } -func (x *DeleteTemplateResponse) String() string { +func (x *TemplateVariables) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteTemplateResponse) ProtoMessage() {} +func (*TemplateVariables) ProtoMessage() {} -func (x *DeleteTemplateResponse) ProtoReflect() protoreflect.Message { +func (x *TemplateVariables) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4489,22 +4493,55 @@ func (x *DeleteTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteTemplateResponse.ProtoReflect.Descriptor instead. -func (*DeleteTemplateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use TemplateVariables.ProtoReflect.Descriptor instead. +func (*TemplateVariables) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{71} } -type RenderTemplateRequest struct { +func (x *TemplateVariables) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TemplateVariables) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *TemplateVariables) GetDefault() string { + if x != nil { + return x.Default + } + return "" +} + +func (x *TemplateVariables) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type Template struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Variables map[string]string `protobuf:"bytes,2,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` + Tags []string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Variables []*TemplateVariables `protobuf:"bytes,7,rep,name=variables,proto3" json:"variables,omitempty"` } -func (x *RenderTemplateRequest) Reset() { - *x = RenderTemplateRequest{} +func (x *Template) Reset() { + *x = Template{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4512,13 +4549,13 @@ func (x *RenderTemplateRequest) Reset() { } } -func (x *RenderTemplateRequest) String() string { +func (x *Template) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RenderTemplateRequest) ProtoMessage() {} +func (*Template) ProtoMessage() {} -func (x *RenderTemplateRequest) ProtoReflect() protoreflect.Message { +func (x *Template) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4530,35 +4567,70 @@ func (x *RenderTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RenderTemplateRequest.ProtoReflect.Descriptor instead. -func (*RenderTemplateRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use Template.ProtoReflect.Descriptor instead. +func (*Template) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{72} } -func (x *RenderTemplateRequest) GetName() string { +func (x *Template) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Template) GetName() string { if x != nil { return x.Name } return "" } -func (x *RenderTemplateRequest) GetVariables() map[string]string { +func (x *Template) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +func (x *Template) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Template) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Template) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Template) GetVariables() []*TemplateVariables { if x != nil { return x.Variables } return nil } -type RenderTemplateResponse struct { +type ListTemplatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Body string `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` } -func (x *RenderTemplateResponse) Reset() { - *x = RenderTemplateResponse{} +func (x *ListTemplatesRequest) Reset() { + *x = ListTemplatesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4566,13 +4638,13 @@ func (x *RenderTemplateResponse) Reset() { } } -func (x *RenderTemplateResponse) String() string { +func (x *ListTemplatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RenderTemplateResponse) ProtoMessage() {} +func (*ListTemplatesRequest) ProtoMessage() {} -func (x *RenderTemplateResponse) ProtoReflect() protoreflect.Message { +func (x *ListTemplatesRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4584,35 +4656,28 @@ func (x *RenderTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RenderTemplateResponse.ProtoReflect.Descriptor instead. -func (*RenderTemplateResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListTemplatesRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{73} } -func (x *RenderTemplateResponse) GetBody() string { +func (x *ListTemplatesRequest) GetTag() string { if x != nil { - return x.Body + return x.Tag } return "" } -type Silence struct { +type ListTemplatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - NamespaceId uint64 `protobuf:"varint,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - TargetId uint64 `protobuf:"varint,4,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` - TargetExpression *structpb.Struct `protobuf:"bytes,5,opt,name=target_expression,json=targetExpression,proto3" json:"target_expression,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - DeletedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + Templates []*Template `protobuf:"bytes,1,rep,name=templates,proto3" json:"templates,omitempty"` } -func (x *Silence) Reset() { - *x = Silence{} +func (x *ListTemplatesResponse) Reset() { + *x = ListTemplatesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4620,13 +4685,13 @@ func (x *Silence) Reset() { } } -func (x *Silence) String() string { +func (x *ListTemplatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Silence) ProtoMessage() {} +func (*ListTemplatesResponse) ProtoMessage() {} -func (x *Silence) ProtoReflect() protoreflect.Message { +func (x *ListTemplatesResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4638,94 +4703,46 @@ func (x *Silence) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Silence.ProtoReflect.Descriptor instead. -func (*Silence) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListTemplatesResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{74} } -func (x *Silence) GetId() string { +func (x *ListTemplatesResponse) GetTemplates() []*Template { if x != nil { - return x.Id + return x.Templates } - return "" + return nil } -func (x *Silence) GetNamespaceId() uint64 { - if x != nil { - return x.NamespaceId - } - return 0 +type UpsertTemplateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` + Tags []string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"` + Variables []*TemplateVariables `protobuf:"bytes,5,rep,name=variables,proto3" json:"variables,omitempty"` } -func (x *Silence) GetType() string { - if x != nil { - return x.Type +func (x *UpsertTemplateRequest) Reset() { + *x = UpsertTemplateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Silence) GetTargetId() uint64 { - if x != nil { - return x.TargetId - } - return 0 +func (x *UpsertTemplateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Silence) GetTargetExpression() *structpb.Struct { - if x != nil { - return x.TargetExpression - } - return nil -} - -func (x *Silence) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Silence) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Silence) GetDeletedAt() *timestamppb.Timestamp { - if x != nil { - return x.DeletedAt - } - return nil -} - -type CreateSilenceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NamespaceId uint64 `protobuf:"varint,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - TargetId uint64 `protobuf:"varint,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` - TargetExpression *structpb.Struct `protobuf:"bytes,4,opt,name=target_expression,json=targetExpression,proto3" json:"target_expression,omitempty"` -} - -func (x *CreateSilenceRequest) Reset() { - *x = CreateSilenceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateSilenceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateSilenceRequest) ProtoMessage() {} +func (*UpsertTemplateRequest) ProtoMessage() {} -func (x *CreateSilenceRequest) ProtoReflect() protoreflect.Message { +func (x *UpsertTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4737,49 +4754,56 @@ func (x *CreateSilenceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateSilenceRequest.ProtoReflect.Descriptor instead. -func (*CreateSilenceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UpsertTemplateRequest.ProtoReflect.Descriptor instead. +func (*UpsertTemplateRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{75} } -func (x *CreateSilenceRequest) GetNamespaceId() uint64 { +func (x *UpsertTemplateRequest) GetId() uint64 { if x != nil { - return x.NamespaceId + return x.Id } return 0 } -func (x *CreateSilenceRequest) GetType() string { +func (x *UpsertTemplateRequest) GetName() string { if x != nil { - return x.Type + return x.Name } return "" } -func (x *CreateSilenceRequest) GetTargetId() uint64 { +func (x *UpsertTemplateRequest) GetBody() string { if x != nil { - return x.TargetId + return x.Body } - return 0 + return "" } -func (x *CreateSilenceRequest) GetTargetExpression() *structpb.Struct { +func (x *UpsertTemplateRequest) GetTags() []string { if x != nil { - return x.TargetExpression + return x.Tags } return nil } -type CreateSilenceResponse struct { +func (x *UpsertTemplateRequest) GetVariables() []*TemplateVariables { + if x != nil { + return x.Variables + } + return nil +} + +type UpsertTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *CreateSilenceResponse) Reset() { - *x = CreateSilenceResponse{} +func (x *UpsertTemplateResponse) Reset() { + *x = UpsertTemplateResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4787,13 +4811,13 @@ func (x *CreateSilenceResponse) Reset() { } } -func (x *CreateSilenceResponse) String() string { +func (x *UpsertTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateSilenceResponse) ProtoMessage() {} +func (*UpsertTemplateResponse) ProtoMessage() {} -func (x *CreateSilenceResponse) ProtoReflect() protoreflect.Message { +func (x *UpsertTemplateResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4805,31 +4829,28 @@ func (x *CreateSilenceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateSilenceResponse.ProtoReflect.Descriptor instead. -func (*CreateSilenceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpsertTemplateResponse.ProtoReflect.Descriptor instead. +func (*UpsertTemplateResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{76} } -func (x *CreateSilenceResponse) GetId() string { +func (x *UpsertTemplateResponse) GetId() uint64 { if x != nil { return x.Id } - return "" + return 0 } -type ListSilencesRequest struct { +type GetTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` - NamespaceId uint64 `protobuf:"varint,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Match map[string]string `protobuf:"bytes,3,rep,name=match,proto3" json:"match,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - SubscriptionMatch map[string]string `protobuf:"bytes,4,rep,name=subscription_match,json=subscriptionMatch,proto3" json:"subscription_match,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListSilencesRequest) Reset() { - *x = ListSilencesRequest{} +func (x *GetTemplateRequest) Reset() { + *x = GetTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4837,13 +4858,13 @@ func (x *ListSilencesRequest) Reset() { } } -func (x *ListSilencesRequest) String() string { +func (x *GetTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListSilencesRequest) ProtoMessage() {} +func (*GetTemplateRequest) ProtoMessage() {} -func (x *ListSilencesRequest) ProtoReflect() protoreflect.Message { +func (x *GetTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4855,49 +4876,28 @@ func (x *ListSilencesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSilencesRequest.ProtoReflect.Descriptor instead. -func (*ListSilencesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetTemplateRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{77} } -func (x *ListSilencesRequest) GetSubscriptionId() uint64 { - if x != nil { - return x.SubscriptionId - } - return 0 -} - -func (x *ListSilencesRequest) GetNamespaceId() uint64 { - if x != nil { - return x.NamespaceId - } - return 0 -} - -func (x *ListSilencesRequest) GetMatch() map[string]string { - if x != nil { - return x.Match - } - return nil -} - -func (x *ListSilencesRequest) GetSubscriptionMatch() map[string]string { +func (x *GetTemplateRequest) GetName() string { if x != nil { - return x.SubscriptionMatch + return x.Name } - return nil + return "" } -type ListSilencesResponse struct { +type GetTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Silences []*Silence `protobuf:"bytes,1,rep,name=silences,proto3" json:"silences,omitempty"` + Template *Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` } -func (x *ListSilencesResponse) Reset() { - *x = ListSilencesResponse{} +func (x *GetTemplateResponse) Reset() { + *x = GetTemplateResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4905,13 +4905,13 @@ func (x *ListSilencesResponse) Reset() { } } -func (x *ListSilencesResponse) String() string { +func (x *GetTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListSilencesResponse) ProtoMessage() {} +func (*GetTemplateResponse) ProtoMessage() {} -func (x *ListSilencesResponse) ProtoReflect() protoreflect.Message { +func (x *GetTemplateResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4923,28 +4923,28 @@ func (x *ListSilencesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSilencesResponse.ProtoReflect.Descriptor instead. -func (*ListSilencesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetTemplateResponse.ProtoReflect.Descriptor instead. +func (*GetTemplateResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{78} } -func (x *ListSilencesResponse) GetSilences() []*Silence { +func (x *GetTemplateResponse) GetTemplate() *Template { if x != nil { - return x.Silences + return x.Template } return nil } -type GetSilenceRequest struct { +type DeleteTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetSilenceRequest) Reset() { - *x = GetSilenceRequest{} +func (x *DeleteTemplateRequest) Reset() { + *x = DeleteTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4952,13 +4952,13 @@ func (x *GetSilenceRequest) Reset() { } } -func (x *GetSilenceRequest) String() string { +func (x *DeleteTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetSilenceRequest) ProtoMessage() {} +func (*DeleteTemplateRequest) ProtoMessage() {} -func (x *GetSilenceRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4970,28 +4970,26 @@ func (x *GetSilenceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetSilenceRequest.ProtoReflect.Descriptor instead. -func (*GetSilenceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteTemplateRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{79} } -func (x *GetSilenceRequest) GetId() string { +func (x *DeleteTemplateRequest) GetName() string { if x != nil { - return x.Id + return x.Name } return "" } -type GetSilenceResponse struct { +type DeleteTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Silence *Silence `protobuf:"bytes,1,opt,name=silence,proto3" json:"silence,omitempty"` } -func (x *GetSilenceResponse) Reset() { - *x = GetSilenceResponse{} +func (x *DeleteTemplateResponse) Reset() { + *x = DeleteTemplateResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4999,13 +4997,13 @@ func (x *GetSilenceResponse) Reset() { } } -func (x *GetSilenceResponse) String() string { +func (x *DeleteTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetSilenceResponse) ProtoMessage() {} +func (*DeleteTemplateResponse) ProtoMessage() {} -func (x *GetSilenceResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteTemplateResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5017,28 +5015,22 @@ func (x *GetSilenceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetSilenceResponse.ProtoReflect.Descriptor instead. -func (*GetSilenceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteTemplateResponse.ProtoReflect.Descriptor instead. +func (*DeleteTemplateResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{80} } -func (x *GetSilenceResponse) GetSilence() *Silence { - if x != nil { - return x.Silence - } - return nil -} - -type ExpireSilenceRequest struct { +type RenderTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Variables map[string]string `protobuf:"bytes,2,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ExpireSilenceRequest) Reset() { - *x = ExpireSilenceRequest{} +func (x *RenderTemplateRequest) Reset() { + *x = RenderTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5046,13 +5038,13 @@ func (x *ExpireSilenceRequest) Reset() { } } -func (x *ExpireSilenceRequest) String() string { +func (x *RenderTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExpireSilenceRequest) ProtoMessage() {} +func (*RenderTemplateRequest) ProtoMessage() {} -func (x *ExpireSilenceRequest) ProtoReflect() protoreflect.Message { +func (x *RenderTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5064,26 +5056,35 @@ func (x *ExpireSilenceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExpireSilenceRequest.ProtoReflect.Descriptor instead. -func (*ExpireSilenceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RenderTemplateRequest.ProtoReflect.Descriptor instead. +func (*RenderTemplateRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{81} } -func (x *ExpireSilenceRequest) GetId() string { +func (x *RenderTemplateRequest) GetName() string { if x != nil { - return x.Id + return x.Name } return "" } -type ExpireSilenceResponse struct { +func (x *RenderTemplateRequest) GetVariables() map[string]string { + if x != nil { + return x.Variables + } + return nil +} + +type RenderTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Body string `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` } -func (x *ExpireSilenceResponse) Reset() { - *x = ExpireSilenceResponse{} +func (x *RenderTemplateResponse) Reset() { + *x = RenderTemplateResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5091,13 +5092,13 @@ func (x *ExpireSilenceResponse) Reset() { } } -func (x *ExpireSilenceResponse) String() string { +func (x *RenderTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExpireSilenceResponse) ProtoMessage() {} +func (*RenderTemplateResponse) ProtoMessage() {} -func (x *ExpireSilenceResponse) ProtoReflect() protoreflect.Message { +func (x *RenderTemplateResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5109,24 +5110,35 @@ func (x *ExpireSilenceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExpireSilenceResponse.ProtoReflect.Descriptor instead. -func (*ExpireSilenceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RenderTemplateResponse.ProtoReflect.Descriptor instead. +func (*RenderTemplateResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{82} } -type PostNotificationRequest struct { +func (x *RenderTemplateResponse) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +type Silence struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Receivers []*structpb.Struct `protobuf:"bytes,1,rep,name=receivers,proto3" json:"receivers,omitempty"` - Data *structpb.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + NamespaceId uint64 `protobuf:"varint,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + TargetId uint64 `protobuf:"varint,4,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + TargetExpression *structpb.Struct `protobuf:"bytes,5,opt,name=target_expression,json=targetExpression,proto3" json:"target_expression,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` } -func (x *PostNotificationRequest) Reset() { - *x = PostNotificationRequest{} +func (x *Silence) Reset() { + *x = Silence{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5134,13 +5146,13 @@ func (x *PostNotificationRequest) Reset() { } } -func (x *PostNotificationRequest) String() string { +func (x *Silence) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PostNotificationRequest) ProtoMessage() {} +func (*Silence) ProtoMessage() {} -func (x *PostNotificationRequest) ProtoReflect() protoreflect.Message { +func (x *Silence) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5152,49 +5164,80 @@ func (x *PostNotificationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostNotificationRequest.ProtoReflect.Descriptor instead. -func (*PostNotificationRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use Silence.ProtoReflect.Descriptor instead. +func (*Silence) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{83} } -func (x *PostNotificationRequest) GetReceivers() []*structpb.Struct { +func (x *Silence) GetId() string { if x != nil { - return x.Receivers + return x.Id + } + return "" +} + +func (x *Silence) GetNamespaceId() uint64 { + if x != nil { + return x.NamespaceId + } + return 0 +} + +func (x *Silence) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Silence) GetTargetId() uint64 { + if x != nil { + return x.TargetId + } + return 0 +} + +func (x *Silence) GetTargetExpression() *structpb.Struct { + if x != nil { + return x.TargetExpression } return nil } -func (x *PostNotificationRequest) GetData() *structpb.Struct { +func (x *Silence) GetCreatedAt() *timestamppb.Timestamp { if x != nil { - return x.Data + return x.CreatedAt } return nil } -func (x *PostNotificationRequest) GetLabels() map[string]string { +func (x *Silence) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { - return x.Labels + return x.UpdatedAt } return nil } -func (x *PostNotificationRequest) GetTemplate() string { +func (x *Silence) GetDeletedAt() *timestamppb.Timestamp { if x != nil { - return x.Template + return x.DeletedAt } - return "" + return nil } -type PostNotificationResponse struct { +type CreateSilenceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NotificationId string `protobuf:"bytes,1,opt,name=notification_id,json=notificationId,proto3" json:"notification_id,omitempty"` + NamespaceId uint64 `protobuf:"varint,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + TargetId uint64 `protobuf:"varint,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + TargetExpression *structpb.Struct `protobuf:"bytes,4,opt,name=target_expression,json=targetExpression,proto3" json:"target_expression,omitempty"` } -func (x *PostNotificationResponse) Reset() { - *x = PostNotificationResponse{} +func (x *CreateSilenceRequest) Reset() { + *x = CreateSilenceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5202,13 +5245,13 @@ func (x *PostNotificationResponse) Reset() { } } -func (x *PostNotificationResponse) String() string { +func (x *CreateSilenceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PostNotificationResponse) ProtoMessage() {} +func (*CreateSilenceRequest) ProtoMessage() {} -func (x *PostNotificationResponse) ProtoReflect() protoreflect.Message { +func (x *CreateSilenceRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5220,28 +5263,49 @@ func (x *PostNotificationResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostNotificationResponse.ProtoReflect.Descriptor instead. -func (*PostNotificationResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateSilenceRequest.ProtoReflect.Descriptor instead. +func (*CreateSilenceRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{84} } -func (x *PostNotificationResponse) GetNotificationId() string { +func (x *CreateSilenceRequest) GetNamespaceId() uint64 { if x != nil { - return x.NotificationId + return x.NamespaceId + } + return 0 +} + +func (x *CreateSilenceRequest) GetType() string { + if x != nil { + return x.Type } return "" } -type PostBulkNotificationsRequest struct { +func (x *CreateSilenceRequest) GetTargetId() uint64 { + if x != nil { + return x.TargetId + } + return 0 +} + +func (x *CreateSilenceRequest) GetTargetExpression() *structpb.Struct { + if x != nil { + return x.TargetExpression + } + return nil +} + +type CreateSilenceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Notifications []*Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *PostBulkNotificationsRequest) Reset() { - *x = PostBulkNotificationsRequest{} +func (x *CreateSilenceResponse) Reset() { + *x = CreateSilenceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5249,13 +5313,13 @@ func (x *PostBulkNotificationsRequest) Reset() { } } -func (x *PostBulkNotificationsRequest) String() string { +func (x *CreateSilenceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PostBulkNotificationsRequest) ProtoMessage() {} +func (*CreateSilenceResponse) ProtoMessage() {} -func (x *PostBulkNotificationsRequest) ProtoReflect() protoreflect.Message { +func (x *CreateSilenceResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5267,28 +5331,31 @@ func (x *PostBulkNotificationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostBulkNotificationsRequest.ProtoReflect.Descriptor instead. -func (*PostBulkNotificationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateSilenceResponse.ProtoReflect.Descriptor instead. +func (*CreateSilenceResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{85} } -func (x *PostBulkNotificationsRequest) GetNotifications() []*Notification { +func (x *CreateSilenceResponse) GetId() string { if x != nil { - return x.Notifications + return x.Id } - return nil + return "" } -type PostBulkNotificationsResponse struct { +type ListSilencesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NotificationIds []string `protobuf:"bytes,1,rep,name=notification_ids,json=notificationIds,proto3" json:"notification_ids,omitempty"` + SubscriptionId uint64 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + NamespaceId uint64 `protobuf:"varint,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Match map[string]string `protobuf:"bytes,3,rep,name=match,proto3" json:"match,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SubscriptionMatch map[string]string `protobuf:"bytes,4,rep,name=subscription_match,json=subscriptionMatch,proto3" json:"subscription_match,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *PostBulkNotificationsResponse) Reset() { - *x = PostBulkNotificationsResponse{} +func (x *ListSilencesRequest) Reset() { + *x = ListSilencesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5296,13 +5363,13 @@ func (x *PostBulkNotificationsResponse) Reset() { } } -func (x *PostBulkNotificationsResponse) String() string { +func (x *ListSilencesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PostBulkNotificationsResponse) ProtoMessage() {} +func (*ListSilencesRequest) ProtoMessage() {} -func (x *PostBulkNotificationsResponse) ProtoReflect() protoreflect.Message { +func (x *ListSilencesRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5314,28 +5381,49 @@ func (x *PostBulkNotificationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PostBulkNotificationsResponse.ProtoReflect.Descriptor instead. -func (*PostBulkNotificationsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListSilencesRequest.ProtoReflect.Descriptor instead. +func (*ListSilencesRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{86} } -func (x *PostBulkNotificationsResponse) GetNotificationIds() []string { +func (x *ListSilencesRequest) GetSubscriptionId() uint64 { if x != nil { - return x.NotificationIds + return x.SubscriptionId + } + return 0 +} + +func (x *ListSilencesRequest) GetNamespaceId() uint64 { + if x != nil { + return x.NamespaceId + } + return 0 +} + +func (x *ListSilencesRequest) GetMatch() map[string]string { + if x != nil { + return x.Match } return nil } -type ListNotificationMessagesRequest struct { +func (x *ListSilencesRequest) GetSubscriptionMatch() map[string]string { + if x != nil { + return x.SubscriptionMatch + } + return nil +} + +type ListSilencesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NotificationId string `protobuf:"bytes,1,opt,name=notification_id,json=notificationId,proto3" json:"notification_id,omitempty"` + Silences []*Silence `protobuf:"bytes,1,rep,name=silences,proto3" json:"silences,omitempty"` } -func (x *ListNotificationMessagesRequest) Reset() { - *x = ListNotificationMessagesRequest{} +func (x *ListSilencesResponse) Reset() { + *x = ListSilencesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5343,13 +5431,13 @@ func (x *ListNotificationMessagesRequest) Reset() { } } -func (x *ListNotificationMessagesRequest) String() string { +func (x *ListSilencesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNotificationMessagesRequest) ProtoMessage() {} +func (*ListSilencesResponse) ProtoMessage() {} -func (x *ListNotificationMessagesRequest) ProtoReflect() protoreflect.Message { +func (x *ListSilencesResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5361,54 +5449,42 @@ func (x *ListNotificationMessagesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNotificationMessagesRequest.ProtoReflect.Descriptor instead. -func (*ListNotificationMessagesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListSilencesResponse.ProtoReflect.Descriptor instead. +func (*ListSilencesResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{87} } -func (x *ListNotificationMessagesRequest) GetNotificationId() string { +func (x *ListSilencesResponse) GetSilences() []*Silence { if x != nil { - return x.NotificationId + return x.Silences } - return "" + return nil } -type NotificationMessage struct { +type GetSilenceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - NotificationIds []string `protobuf:"bytes,2,rep,name=notification_ids,json=notificationIds,proto3" json:"notification_ids,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - ReceiverType string `protobuf:"bytes,4,opt,name=receiver_type,json=receiverType,proto3" json:"receiver_type,omitempty"` - Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` - LastError string `protobuf:"bytes,6,opt,name=last_error,json=lastError,proto3" json:"last_error,omitempty"` - MaxTries uint64 `protobuf:"varint,7,opt,name=max_tries,json=maxTries,proto3" json:"max_tries,omitempty"` - TryCount uint64 `protobuf:"varint,8,opt,name=try_count,json=tryCount,proto3" json:"try_count,omitempty"` - Retryable bool `protobuf:"varint,9,opt,name=retryable,proto3" json:"retryable,omitempty"` - ExpiredAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Configs *structpb.Struct `protobuf:"bytes,13,opt,name=configs,proto3" json:"configs,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *NotificationMessage) Reset() { - *x = NotificationMessage{} - if protoimpl.UnsafeEnabled { +func (x *GetSilenceRequest) Reset() { + *x = GetSilenceRequest{} + if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *NotificationMessage) String() string { +func (x *GetSilenceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NotificationMessage) ProtoMessage() {} +func (*GetSilenceRequest) ProtoMessage() {} -func (x *NotificationMessage) ProtoReflect() protoreflect.Message { +func (x *GetSilenceRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5420,112 +5496,28 @@ func (x *NotificationMessage) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NotificationMessage.ProtoReflect.Descriptor instead. -func (*NotificationMessage) Descriptor() ([]byte, []int) { +// Deprecated: Use GetSilenceRequest.ProtoReflect.Descriptor instead. +func (*GetSilenceRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{88} } -func (x *NotificationMessage) GetId() string { +func (x *GetSilenceRequest) GetId() string { if x != nil { return x.Id } return "" } -func (x *NotificationMessage) GetNotificationIds() []string { - if x != nil { - return x.NotificationIds - } - return nil -} - -func (x *NotificationMessage) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *NotificationMessage) GetReceiverType() string { - if x != nil { - return x.ReceiverType - } - return "" -} - -func (x *NotificationMessage) GetDetails() *structpb.Struct { - if x != nil { - return x.Details - } - return nil -} - -func (x *NotificationMessage) GetLastError() string { - if x != nil { - return x.LastError - } - return "" -} - -func (x *NotificationMessage) GetMaxTries() uint64 { - if x != nil { - return x.MaxTries - } - return 0 -} - -func (x *NotificationMessage) GetTryCount() uint64 { - if x != nil { - return x.TryCount - } - return 0 -} - -func (x *NotificationMessage) GetRetryable() bool { - if x != nil { - return x.Retryable - } - return false -} - -func (x *NotificationMessage) GetExpiredAt() *timestamppb.Timestamp { - if x != nil { - return x.ExpiredAt - } - return nil -} - -func (x *NotificationMessage) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *NotificationMessage) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *NotificationMessage) GetConfigs() *structpb.Struct { - if x != nil { - return x.Configs - } - return nil -} - -type ListNotificationMessagesResponse struct { +type GetSilenceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Messages []*NotificationMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` + Silence *Silence `protobuf:"bytes,1,opt,name=silence,proto3" json:"silence,omitempty"` } -func (x *ListNotificationMessagesResponse) Reset() { - *x = ListNotificationMessagesResponse{} +func (x *GetSilenceResponse) Reset() { + *x = GetSilenceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5533,13 +5525,13 @@ func (x *ListNotificationMessagesResponse) Reset() { } } -func (x *ListNotificationMessagesResponse) String() string { +func (x *GetSilenceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNotificationMessagesResponse) ProtoMessage() {} +func (*GetSilenceResponse) ProtoMessage() {} -func (x *ListNotificationMessagesResponse) ProtoReflect() protoreflect.Message { +func (x *GetSilenceResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5551,31 +5543,28 @@ func (x *ListNotificationMessagesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNotificationMessagesResponse.ProtoReflect.Descriptor instead. -func (*ListNotificationMessagesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetSilenceResponse.ProtoReflect.Descriptor instead. +func (*GetSilenceResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{89} } -func (x *ListNotificationMessagesResponse) GetMessages() []*NotificationMessage { +func (x *GetSilenceResponse) GetSilence() *Silence { if x != nil { - return x.Messages + return x.Silence } return nil } -type ListNotificationsRequest struct { +type ExpireSilenceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ReceiverSelectors map[string]string `protobuf:"bytes,4,rep,name=receiver_selectors,json=receiverSelectors,proto3" json:"receiver_selectors,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *ListNotificationsRequest) Reset() { - *x = ListNotificationsRequest{} +func (x *ExpireSilenceRequest) Reset() { + *x = ExpireSilenceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5583,13 +5572,13 @@ func (x *ListNotificationsRequest) Reset() { } } -func (x *ListNotificationsRequest) String() string { +func (x *ExpireSilenceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNotificationsRequest) ProtoMessage() {} +func (*ExpireSilenceRequest) ProtoMessage() {} -func (x *ListNotificationsRequest) ProtoReflect() protoreflect.Message { +func (x *ExpireSilenceRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5601,49 +5590,26 @@ func (x *ListNotificationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNotificationsRequest.ProtoReflect.Descriptor instead. -func (*ListNotificationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ExpireSilenceRequest.ProtoReflect.Descriptor instead. +func (*ExpireSilenceRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{90} } -func (x *ListNotificationsRequest) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *ListNotificationsRequest) GetTemplate() string { +func (x *ExpireSilenceRequest) GetId() string { if x != nil { - return x.Template + return x.Id } return "" } -func (x *ListNotificationsRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *ListNotificationsRequest) GetReceiverSelectors() map[string]string { - if x != nil { - return x.ReceiverSelectors - } - return nil -} - -type ReceiverSelector struct { +type ExpireSilenceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - ReceiverSelector map[string]string `protobuf:"bytes,1,rep,name=receiver_selector,json=receiverSelector,proto3" json:"receiver_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ReceiverSelector) Reset() { - *x = ReceiverSelector{} +func (x *ExpireSilenceResponse) Reset() { + *x = ExpireSilenceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5651,13 +5617,13 @@ func (x *ReceiverSelector) Reset() { } } -func (x *ReceiverSelector) String() string { +func (x *ExpireSilenceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReceiverSelector) ProtoMessage() {} +func (*ExpireSilenceResponse) ProtoMessage() {} -func (x *ReceiverSelector) ProtoReflect() protoreflect.Message { +func (x *ExpireSilenceResponse) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5669,37 +5635,24 @@ func (x *ReceiverSelector) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReceiverSelector.ProtoReflect.Descriptor instead. -func (*ReceiverSelector) Descriptor() ([]byte, []int) { +// Deprecated: Use ExpireSilenceResponse.ProtoReflect.Descriptor instead. +func (*ExpireSilenceResponse) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{91} } -func (x *ReceiverSelector) GetReceiverSelector() map[string]string { - if x != nil { - return x.ReceiverSelector - } - return nil -} - -type Notification struct { +type PostNotificationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - NamespaceId uint64 `protobuf:"varint,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Data *structpb.Struct `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` - Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ValidDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=valid_duration,json=validDuration,proto3" json:"valid_duration,omitempty"` - Template string `protobuf:"bytes,7,opt,name=template,proto3" json:"template,omitempty"` - CreateAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=create_at,json=createAt,proto3" json:"create_at,omitempty"` - UniqueKey string `protobuf:"bytes,9,opt,name=unique_key,json=uniqueKey,proto3" json:"unique_key,omitempty"` - ReceiverSelectors []*ReceiverSelector `protobuf:"bytes,10,rep,name=receiver_selectors,json=receiverSelectors,proto3" json:"receiver_selectors,omitempty"` + Receivers []*structpb.Struct `protobuf:"bytes,1,rep,name=receivers,proto3" json:"receivers,omitempty"` + Data *structpb.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Template string `protobuf:"bytes,4,opt,name=template,proto3" json:"template,omitempty"` } -func (x *Notification) Reset() { - *x = Notification{} +func (x *PostNotificationRequest) Reset() { + *x = PostNotificationRequest{} if protoimpl.UnsafeEnabled { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5707,13 +5660,13 @@ func (x *Notification) Reset() { } } -func (x *Notification) String() string { +func (x *PostNotificationRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Notification) ProtoMessage() {} +func (*PostNotificationRequest) ProtoMessage() {} -func (x *Notification) ProtoReflect() protoreflect.Message { +func (x *PostNotificationRequest) ProtoReflect() protoreflect.Message { mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5725,61 +5678,634 @@ func (x *Notification) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Notification.ProtoReflect.Descriptor instead. -func (*Notification) Descriptor() ([]byte, []int) { +// Deprecated: Use PostNotificationRequest.ProtoReflect.Descriptor instead. +func (*PostNotificationRequest) Descriptor() ([]byte, []int) { return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{92} } -func (x *Notification) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Notification) GetNamespaceId() uint64 { - if x != nil { - return x.NamespaceId - } - return 0 -} - -func (x *Notification) GetType() string { +func (x *PostNotificationRequest) GetReceivers() []*structpb.Struct { if x != nil { - return x.Type + return x.Receivers } - return "" + return nil } -func (x *Notification) GetData() *structpb.Struct { +func (x *PostNotificationRequest) GetData() *structpb.Struct { if x != nil { return x.Data } return nil } -func (x *Notification) GetLabels() map[string]string { +func (x *PostNotificationRequest) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } -func (x *Notification) GetValidDuration() *durationpb.Duration { - if x != nil { - return x.ValidDuration - } - return nil -} - -func (x *Notification) GetTemplate() string { +func (x *PostNotificationRequest) GetTemplate() string { if x != nil { return x.Template } return "" } -func (x *Notification) GetCreateAt() *timestamppb.Timestamp { +type PostNotificationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NotificationId string `protobuf:"bytes,1,opt,name=notification_id,json=notificationId,proto3" json:"notification_id,omitempty"` +} + +func (x *PostNotificationResponse) Reset() { + *x = PostNotificationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostNotificationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostNotificationResponse) ProtoMessage() {} + +func (x *PostNotificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[93] + 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 PostNotificationResponse.ProtoReflect.Descriptor instead. +func (*PostNotificationResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{93} +} + +func (x *PostNotificationResponse) GetNotificationId() string { + if x != nil { + return x.NotificationId + } + return "" +} + +type PostBulkNotificationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Notifications []*Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"` +} + +func (x *PostBulkNotificationsRequest) Reset() { + *x = PostBulkNotificationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostBulkNotificationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostBulkNotificationsRequest) ProtoMessage() {} + +func (x *PostBulkNotificationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[94] + 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 PostBulkNotificationsRequest.ProtoReflect.Descriptor instead. +func (*PostBulkNotificationsRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{94} +} + +func (x *PostBulkNotificationsRequest) GetNotifications() []*Notification { + if x != nil { + return x.Notifications + } + return nil +} + +type PostBulkNotificationsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NotificationIds []string `protobuf:"bytes,1,rep,name=notification_ids,json=notificationIds,proto3" json:"notification_ids,omitempty"` +} + +func (x *PostBulkNotificationsResponse) Reset() { + *x = PostBulkNotificationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostBulkNotificationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostBulkNotificationsResponse) ProtoMessage() {} + +func (x *PostBulkNotificationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[95] + 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 PostBulkNotificationsResponse.ProtoReflect.Descriptor instead. +func (*PostBulkNotificationsResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{95} +} + +func (x *PostBulkNotificationsResponse) GetNotificationIds() []string { + if x != nil { + return x.NotificationIds + } + return nil +} + +type ListNotificationMessagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NotificationId string `protobuf:"bytes,1,opt,name=notification_id,json=notificationId,proto3" json:"notification_id,omitempty"` +} + +func (x *ListNotificationMessagesRequest) Reset() { + *x = ListNotificationMessagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNotificationMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNotificationMessagesRequest) ProtoMessage() {} + +func (x *ListNotificationMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[96] + 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 ListNotificationMessagesRequest.ProtoReflect.Descriptor instead. +func (*ListNotificationMessagesRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{96} +} + +func (x *ListNotificationMessagesRequest) GetNotificationId() string { + if x != nil { + return x.NotificationId + } + return "" +} + +type NotificationMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + NotificationIds []string `protobuf:"bytes,2,rep,name=notification_ids,json=notificationIds,proto3" json:"notification_ids,omitempty"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + ReceiverType string `protobuf:"bytes,4,opt,name=receiver_type,json=receiverType,proto3" json:"receiver_type,omitempty"` + Details *structpb.Struct `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"` + LastError string `protobuf:"bytes,6,opt,name=last_error,json=lastError,proto3" json:"last_error,omitempty"` + MaxTries uint64 `protobuf:"varint,7,opt,name=max_tries,json=maxTries,proto3" json:"max_tries,omitempty"` + TryCount uint64 `protobuf:"varint,8,opt,name=try_count,json=tryCount,proto3" json:"try_count,omitempty"` + Retryable bool `protobuf:"varint,9,opt,name=retryable,proto3" json:"retryable,omitempty"` + ExpiredAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expired_at,json=expiredAt,proto3" json:"expired_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Configs *structpb.Struct `protobuf:"bytes,13,opt,name=configs,proto3" json:"configs,omitempty"` +} + +func (x *NotificationMessage) Reset() { + *x = NotificationMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotificationMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotificationMessage) ProtoMessage() {} + +func (x *NotificationMessage) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[97] + 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 NotificationMessage.ProtoReflect.Descriptor instead. +func (*NotificationMessage) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{97} +} + +func (x *NotificationMessage) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *NotificationMessage) GetNotificationIds() []string { + if x != nil { + return x.NotificationIds + } + return nil +} + +func (x *NotificationMessage) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *NotificationMessage) GetReceiverType() string { + if x != nil { + return x.ReceiverType + } + return "" +} + +func (x *NotificationMessage) GetDetails() *structpb.Struct { + if x != nil { + return x.Details + } + return nil +} + +func (x *NotificationMessage) GetLastError() string { + if x != nil { + return x.LastError + } + return "" +} + +func (x *NotificationMessage) GetMaxTries() uint64 { + if x != nil { + return x.MaxTries + } + return 0 +} + +func (x *NotificationMessage) GetTryCount() uint64 { + if x != nil { + return x.TryCount + } + return 0 +} + +func (x *NotificationMessage) GetRetryable() bool { + if x != nil { + return x.Retryable + } + return false +} + +func (x *NotificationMessage) GetExpiredAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiredAt + } + return nil +} + +func (x *NotificationMessage) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *NotificationMessage) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *NotificationMessage) GetConfigs() *structpb.Struct { + if x != nil { + return x.Configs + } + return nil +} + +type ListNotificationMessagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Messages []*NotificationMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (x *ListNotificationMessagesResponse) Reset() { + *x = ListNotificationMessagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNotificationMessagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNotificationMessagesResponse) ProtoMessage() {} + +func (x *ListNotificationMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[98] + 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 ListNotificationMessagesResponse.ProtoReflect.Descriptor instead. +func (*ListNotificationMessagesResponse) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{98} +} + +func (x *ListNotificationMessagesResponse) GetMessages() []*NotificationMessage { + if x != nil { + return x.Messages + } + return nil +} + +type ListNotificationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ReceiverSelectors map[string]string `protobuf:"bytes,4,rep,name=receiver_selectors,json=receiverSelectors,proto3" json:"receiver_selectors,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ListNotificationsRequest) Reset() { + *x = ListNotificationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNotificationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNotificationsRequest) ProtoMessage() {} + +func (x *ListNotificationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[99] + 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 ListNotificationsRequest.ProtoReflect.Descriptor instead. +func (*ListNotificationsRequest) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{99} +} + +func (x *ListNotificationsRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ListNotificationsRequest) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + +func (x *ListNotificationsRequest) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ListNotificationsRequest) GetReceiverSelectors() map[string]string { + if x != nil { + return x.ReceiverSelectors + } + return nil +} + +type ReceiverSelector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ReceiverSelector map[string]string `protobuf:"bytes,1,rep,name=receiver_selector,json=receiverSelector,proto3" json:"receiver_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ReceiverSelector) Reset() { + *x = ReceiverSelector{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReceiverSelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReceiverSelector) ProtoMessage() {} + +func (x *ReceiverSelector) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[100] + 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 ReceiverSelector.ProtoReflect.Descriptor instead. +func (*ReceiverSelector) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{100} +} + +func (x *ReceiverSelector) GetReceiverSelector() map[string]string { + if x != nil { + return x.ReceiverSelector + } + return nil +} + +type Notification struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + NamespaceId uint64 `protobuf:"varint,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Data *structpb.Struct `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` + Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ValidDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=valid_duration,json=validDuration,proto3" json:"valid_duration,omitempty"` + Template string `protobuf:"bytes,7,opt,name=template,proto3" json:"template,omitempty"` + CreateAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=create_at,json=createAt,proto3" json:"create_at,omitempty"` + UniqueKey string `protobuf:"bytes,9,opt,name=unique_key,json=uniqueKey,proto3" json:"unique_key,omitempty"` + ReceiverSelectors []*ReceiverSelector `protobuf:"bytes,10,rep,name=receiver_selectors,json=receiverSelectors,proto3" json:"receiver_selectors,omitempty"` +} + +func (x *Notification) Reset() { + *x = Notification{} + if protoimpl.UnsafeEnabled { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Notification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Notification) ProtoMessage() {} + +func (x *Notification) ProtoReflect() protoreflect.Message { + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[101] + 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 Notification.ProtoReflect.Descriptor instead. +func (*Notification) Descriptor() ([]byte, []int) { + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{101} +} + +func (x *Notification) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Notification) GetNamespaceId() uint64 { + if x != nil { + return x.NamespaceId + } + return 0 +} + +func (x *Notification) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Notification) GetData() *structpb.Struct { + if x != nil { + return x.Data + } + return nil +} + +func (x *Notification) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Notification) GetValidDuration() *durationpb.Duration { + if x != nil { + return x.ValidDuration + } + return nil +} + +func (x *Notification) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + +func (x *Notification) GetCreateAt() *timestamppb.Timestamp { if x != nil { return x.CreateAt } @@ -5811,7 +6337,7 @@ type ListNotificationsResponse struct { func (x *ListNotificationsResponse) Reset() { *x = ListNotificationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[93] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5824,7 +6350,7 @@ func (x *ListNotificationsResponse) String() string { func (*ListNotificationsResponse) ProtoMessage() {} func (x *ListNotificationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[93] + mi := &file_gotocompany_siren_v1beta1_siren_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5837,7 +6363,7 @@ func (x *ListNotificationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListNotificationsResponse.ProtoReflect.Descriptor instead. func (*ListNotificationsResponse) Descriptor() ([]byte, []int) { - return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{93} + return file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP(), []int{102} } func (x *ListNotificationsResponse) GetNotifications() []*Notification { @@ -6242,1151 +6768,1350 @@ var file_gotocompany_siren_v1beta1_siren_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc7, 0x03, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x84, 0x02, 0x0a, 0x1e, 0x41, 0x64, 0x64, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 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, 0x22, 0xda, + 0x02, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0xd1, 0x01, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x70, 0x92, 0x41, 0x6d, 0x32, 0x6b, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, + 0x6f, 0x6e, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x77, + 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, + 0x67, 0x2c, 0x20, 0x22, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x5b, 0x6b, 0x65, 0x79, 0x31, 0x5d, + 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x22, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 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, 0x22, 0x93, 0x01, 0x0a, 0x21, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x6e, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x07, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 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, 0x22, 0x8c, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xb8, 0x01, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x63, 0x92, 0x41, 0x60, 0x32, 0x5e, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, - 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x20, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6d, - 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x5b, - 0x6b, 0x65, 0x79, 0x31, 0x5d, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x22, 0x52, 0x06, 0x6c, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x05, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 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, 0x22, 0x86, 0x02, 0x0a, 0x1f, 0x41, + 0x64, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x5e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 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, 0x22, 0x8a, 0x02, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x60, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 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, - 0x22, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x22, 0xc8, 0x02, 0x0a, - 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2e, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, - 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 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, 0x22, 0x28, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x22, - 0xc4, 0x02, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, - 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2e, 0x2d, 0x5d, 0x2b, - 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 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, 0x22, 0x28, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x27, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x15, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x3a, - 0x02, 0x18, 0x01, 0x22, 0x1c, 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x02, 0x18, - 0x01, 0x22, 0xe2, 0x06, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6c, 0x65, 0x6e, - 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, - 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, - 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x22, 0x8c, 0x02, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x61, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, - 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x1a, 0x3e, 0x0a, 0x10, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 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, 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, 0x22, 0xfa, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x62, 0x65, 0x6c, 0x73, 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, 0x22, + 0x6d, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x24, + 0x0a, 0x22, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc7, 0x03, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x50, - 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, - 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x22, 0xb8, 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x62, - 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x21, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x38, 0x0a, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x24, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x8f, 0x03, 0x0a, - 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x09, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x00, 0x52, 0x11, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x84, - 0x01, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, - 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, - 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x33, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, - 0x6c, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, - 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc5, - 0x02, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, - 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, - 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, - 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x06, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x54, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, - 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x28, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, - 0x22, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0xd2, 0x01, 0x0a, - 0x15, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x49, 0x64, 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, 0x22, 0x8c, + 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xb8, 0x01, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x22, 0x28, 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x56, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe1, 0x01, - 0x0a, 0x15, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 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, 0x2c, 0x0a, 0x16, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, - 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, - 0xe4, 0x02, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x44, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x06, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, - 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, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x09, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0xa3, 0x05, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0xb7, 0x01, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, - 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x66, 0x92, 0x41, 0x63, 0x32, 0x61, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x20, 0x6b, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, - 0x61, 0x73, 0x20, 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x5b, 0x6b, 0x65, 0x79, 0x31, 0x5d, 0x22, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x85, 0x02, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, - 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, - 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x8e, 0x01, 0x92, 0x41, 0x8a, 0x01, 0x32, 0x87, 0x01, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, - 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, - 0x6b, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, - 0x73, 0x20, 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5b, 0x6b, - 0x65, 0x79, 0x31, 0x5d, 0x22, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, - 0x68, 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, 0x44, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x56, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x22, 0x23, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x73, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x14, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x17, 0x0a, 0x15, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x17, 0x50, - 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x22, 0x43, 0x0a, 0x18, 0x50, 0x6f, 0x73, - 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6d, - 0x0a, 0x1c, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, - 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4a, 0x0a, - 0x1d, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, - 0x0a, 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x9b, 0x04, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, - 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, - 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x52, - 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x0c, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x31, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x22, 0x6e, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x22, 0x87, 0x05, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x12, 0xbf, 0x01, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, - 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x66, 0x92, 0x41, 0x63, 0x32, 0x61, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x61, 0x62, 0x65, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x63, 0x92, 0x41, 0x60, 0x32, 0x5e, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, + 0x6e, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x5b, 0x6b, 0x65, 0x79, 0x31, 0x5d, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x22, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x12, 0xf7, 0x01, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x4a, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x7c, 0x92, 0x41, 0x79, - 0x32, 0x77, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, - 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x20, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, - 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5b, 0x6b, 0x65, 0x79, 0x31, - 0x5d, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x22, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 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, 0x44, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x6c, 0x73, 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, 0x22, 0xc7, 0x01, - 0x0a, 0x10, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x6e, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, + 0x15, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x09, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x22, 0xc8, 0x02, 0x0a, 0x15, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2e, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 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, 0x22, 0x28, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x24, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x1a, 0x43, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 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, 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, 0x9c, 0x04, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x65, 0x72, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x22, 0xc4, 0x02, 0x0a, + 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2e, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 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, 0x22, 0x28, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, + 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x5e, 0x0a, 0x15, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x02, 0x18, 0x01, + 0x22, 0x1c, 0x0a, 0x16, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xe2, + 0x06, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x75, + 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x69, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, + 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 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, 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, 0x22, 0xfa, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, + 0x22, 0x4e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, + 0x22, 0x88, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, + 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x50, 0x0a, 0x14, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x22, 0xb8, 0x01, + 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, + 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x22, 0x24, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x8f, 0x03, 0x0a, 0x04, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x00, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x09, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, + 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, + 0x92, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x08, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, + 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x42, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x72, 0x75, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, + 0xa9, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc5, 0x02, 0x0a, 0x08, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x54, 0x0a, + 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, + 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x22, 0x28, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, + 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x5a, 0x0a, + 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x09, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0xd2, 0x01, 0x0a, 0x15, 0x55, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x28, + 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, + 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x56, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x15, 0x52, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x5d, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 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, 0x2c, + 0x0a, 0x16, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xe4, 0x02, 0x0a, + 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4b, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 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, 0x52, 0x0d, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x12, - 0x5a, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, + 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 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, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x44, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0xa3, 0x05, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x64, 0x12, 0xb7, 0x01, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x66, + 0x92, 0x41, 0x63, 0x32, 0x61, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6b, 0x65, + 0x79, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, + 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5b, + 0x6b, 0x65, 0x79, 0x31, 0x5d, 0x22, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x85, 0x02, + 0x0a, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x8e, 0x01, 0x92, 0x41, 0x8a, 0x01, 0x32, 0x87, 0x01, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, + 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x73, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6d, + 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5b, 0x6b, 0x65, 0x79, 0x31, + 0x5d, 0x22, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, + 0x44, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 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, 0x56, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, + 0x08, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, + 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x08, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x23, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x52, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x73, 0x69, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, + 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, + 0x0a, 0x15, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x17, 0x50, 0x6f, 0x73, 0x74, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 0x22, 0x6a, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x74, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x43, 0x0a, 0x18, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x1c, 0x50, + 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0d, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4a, 0x0a, 0x1d, 0x50, 0x6f, + 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x22, 0x9b, 0x04, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x72, 0x65, 0x74, 0x72, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x52, 0x09, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0c, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x31, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x22, 0x6e, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x22, 0x87, 0x05, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0xbf, 0x01, + 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, + 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, + 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x66, 0x92, 0x41, 0x63, 0x32, 0x61, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, + 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x70, 0x2e, 0x20, 0x65, 0x67, + 0x2c, 0x20, 0x22, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x5b, 0x6b, 0x65, 0x79, 0x31, 0x5d, 0x3d, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x22, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0xf7, 0x01, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x7c, 0x92, 0x41, 0x79, 0x32, 0x77, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, + 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x20, 0x20, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x69, + 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x70, + 0x2e, 0x20, 0x65, 0x67, 0x2c, 0x20, 0x22, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5b, 0x6b, 0x65, 0x79, 0x31, 0x5d, 0x3d, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x31, 0x22, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 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, 0x44, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 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, 0xc7, 0x01, 0x0a, 0x10, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x6e, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x32, 0xaa, 0x3a, 0x0a, 0x0c, 0x53, 0x69, 0x72, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xab, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, + 0x43, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 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, 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, 0x9c, 0x04, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 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, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, + 0x74, 0x18, 0x08, 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, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x5a, 0x0a, 0x12, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 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, 0x22, 0x6a, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4d, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, + 0xf3, 0x42, 0x0a, 0x0c, 0x53, 0x69, 0x72, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xab, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0xb4, + 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, + 0x2a, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, - 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, - 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x1d, 0x0a, 0x08, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x12, 0x0e, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0xb9, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb9, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, + 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x92, 0x41, 0x1d, 0x0a, + 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x1a, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb6, + 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x92, - 0x41, 0x1d, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x11, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x1a, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, - 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x1d, 0x0a, 0x08, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x19, 0x2a, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x30, 0x2e, - 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, - 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x56, 0x88, 0x02, 0x01, 0x92, 0x41, 0x29, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x12, 0x1d, 0x73, 0x65, 0x6e, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x12, 0xb1, 0x01, 0x0a, 0x0e, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x30, 0x2e, - 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, - 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x56, 0x88, 0x02, 0x01, 0x92, 0x41, 0x29, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x12, 0x1d, 0x73, 0x65, 0x6e, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x12, 0xb1, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3a, 0x92, 0x41, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0xba, 0x01, 0x0a, 0x0f, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x3a, 0x92, 0x41, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0xba, - 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x1f, 0x0a, 0x09, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x20, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, - 0x41, 0x1c, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0f, 0x67, - 0x65, 0x74, 0x20, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xbf, - 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x1f, 0x0a, 0x09, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, + 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x1c, 0x0a, + 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0f, 0x67, 0x65, 0x74, 0x20, + 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x0f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, + 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x92, 0x41, 0x1f, 0x0a, 0x09, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0xbc, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x92, 0x41, 0x1f, 0x0a, 0x09, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, + 0x3a, 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xbc, 0x01, + 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x92, 0x41, 0x1f, 0x0a, 0x09, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x20, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc3, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x92, 0x41, 0x1f, - 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, - 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x92, + 0x41, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, + 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x92, 0x41, 0x25, 0x0a, 0x0c, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x43, 0x92, 0x41, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x92, 0x41, 0x25, 0x0a, 0x0c, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x48, 0x92, 0x41, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xd1, 0x01, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, + 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x12, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xd1, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x25, 0x0a, + 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x1a, 0x1b, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x02, 0x0a, 0x19, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x92, 0x41, 0x30, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x73, 0x12, 0x82, 0x02, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x39, + 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, + 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x92, 0x41, 0x30, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, + 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x9d, 0x02, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, - 0x41, 0x25, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, - 0x1a, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xce, 0x01, - 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x81, 0x01, 0x92, 0x41, 0x33, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x1a, 0x40, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x99, 0x02, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x7e, 0x92, 0x41, 0x33, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x42, 0x2a, 0x40, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4b, 0x92, 0x41, 0x25, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xab, - 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, - 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0xb4, 0x01, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, - 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x12, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, - 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, - 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x12, 0x0e, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0xb9, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, - 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, + 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x92, 0x41, 0x25, 0x0a, 0x0c, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1a, 0x0a, 0x08, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x3a, 0x01, 0x2a, 0x1a, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb6, 0x01, 0x0a, - 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, - 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x12, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4c, 0x92, 0x41, 0x14, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x0b, 0x6c, - 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, - 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0xc5, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x54, 0x92, 0x41, 0x16, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x0d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x35, 0x3a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8a, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x1d, 0x0a, + 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb9, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, + 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x11, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x1a, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, - 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x72, 0x92, 0x41, 0x25, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1c, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, - 0x3a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x1d, 0x0a, + 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x92, 0x41, 0x14, 0x0a, 0x05, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x12, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x92, - 0x41, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0a, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x92, 0x41, 0x19, 0x0a, 0x04, 0x52, 0x75, 0x6c, - 0x65, 0x12, 0x11, 0x61, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, - 0x72, 0x75, 0x6c, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x3a, 0x01, 0x2a, 0x1a, 0x0e, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0xab, 0x01, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x12, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xc5, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x92, 0x41, 0x16, 0x0a, 0x05, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x12, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x2d, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8a, 0x02, + 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, + 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x92, 0x41, 0x1a, 0x0a, - 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x67, 0x65, 0x74, 0x20, 0x61, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, - 0x19, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0e, 0x55, - 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, - 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, - 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x21, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x12, 0x15, 0x61, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, - 0x2a, 0x1a, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xb8, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, - 0x41, 0x1d, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x11, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x73, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x92, 0x41, 0x25, 0x0a, 0x05, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x12, 0x1c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3c, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x09, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x92, 0x41, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0a, + 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, + 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x12, 0xa0, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, + 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x92, 0x41, + 0x19, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x11, 0x61, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, + 0x3a, 0x01, 0x2a, 0x1a, 0x0e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x12, 0xab, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x12, 0xac, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, + 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3e, 0x92, 0x41, 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x0e, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x12, 0xc2, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x12, 0xb8, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x11, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, - 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, - 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x92, 0x41, 0x1b, 0x0a, - 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x20, 0x61, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, - 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xa8, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x1b, 0x0a, 0x07, 0x53, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x67, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, - 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x21, 0x0a, 0x08, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x15, 0x61, 0x64, 0x64, 0x2f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x1a, 0x12, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xb8, 0x01, 0x0a, 0x0e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, - 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x92, - 0x41, 0x18, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0d, 0x67, 0x65, 0x74, - 0x20, 0x61, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, - 0x12, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x6c, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x53, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, - 0x41, 0x1b, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x10, - 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, - 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, - 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x2a, 0x0a, 0x0c, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x50, 0x6f, - 0x73, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, - 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe2, 0x01, 0x0a, 0x15, 0x50, 0x6f, - 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, - 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, - 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x2d, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x50, 0x6f, 0x73, 0x74, 0x20, - 0x62, 0x75, 0x6c, 0x6b, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, - 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x75, 0x6c, 0x6b, - 0x2d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x88, - 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, + 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, + 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc2, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x92, 0x41, 0x37, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x33, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, - 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, + 0x92, 0x41, 0x1d, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x11, 0x72, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, + 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, + 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3a, 0x92, 0x41, 0x1b, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xa8, 0x01, 0x0a, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, + 0x92, 0x41, 0x1b, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x67, 0x65, + 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, + 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, + 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x92, 0x41, 0x22, 0x0a, - 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0xc9, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, - 0x42, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x50, 0x01, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, - 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2f, 0x73, 0x69, 0x72, 0x65, - 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x92, 0x41, 0x52, 0x12, 0x4d, 0x0a, 0x0a, 0x53, 0x69, 0x72, - 0x65, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x73, 0x12, 0x3a, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x6f, 0x75, 0x72, 0x20, 0x53, 0x69, - 0x72, 0x65, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x67, 0x52, 0x50, - 0x43, 0x20, 0x61, 0x6e, 0x64, 0x0a, 0x67, 0x52, 0x50, 0x43, 0x2d, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x32, 0x03, 0x30, 0x2e, 0x36, 0x2a, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x39, 0x92, 0x41, 0x18, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x0d, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb0, + 0x01, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, + 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x1b, 0x0a, 0x07, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x4e, 0x92, 0x41, 0x2a, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1a, 0x50, 0x6f, 0x73, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0xe2, 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, + 0x6f, 0x73, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, + 0x2d, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x50, 0x6f, 0x73, 0x74, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x2d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x88, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, + 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, + 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x92, 0x41, 0x37, 0x0a, + 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, + 0xc3, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x43, 0x92, 0x41, 0x22, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0xc9, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6e, + 0x2e, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x42, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x2f, 0x73, 0x69, 0x72, 0x65, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, + 0x73, 0x69, 0x72, 0x65, 0x6e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x92, 0x41, 0x52, 0x12, + 0x4d, 0x0a, 0x0a, 0x53, 0x69, 0x72, 0x65, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x73, 0x12, 0x3a, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, + 0x6f, 0x75, 0x72, 0x20, 0x53, 0x69, 0x72, 0x65, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x67, 0x52, 0x50, 0x43, 0x20, 0x61, 0x6e, 0x64, 0x0a, 0x67, 0x52, 0x50, 0x43, + 0x2d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x32, 0x03, 0x30, 0x2e, 0x36, 0x2a, 0x01, + 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7401,319 +8126,351 @@ func file_gotocompany_siren_v1beta1_siren_proto_rawDescGZIP() []byte { return file_gotocompany_siren_v1beta1_siren_proto_rawDescData } -var file_gotocompany_siren_v1beta1_siren_proto_msgTypes = make([]protoimpl.MessageInfo, 120) +var file_gotocompany_siren_v1beta1_siren_proto_msgTypes = make([]protoimpl.MessageInfo, 135) var file_gotocompany_siren_v1beta1_siren_proto_goTypes = []interface{}{ - (*Provider)(nil), // 0: gotocompany.siren.v1beta1.Provider - (*ListProvidersRequest)(nil), // 1: gotocompany.siren.v1beta1.ListProvidersRequest - (*ListProvidersResponse)(nil), // 2: gotocompany.siren.v1beta1.ListProvidersResponse - (*CreateProviderRequest)(nil), // 3: gotocompany.siren.v1beta1.CreateProviderRequest - (*CreateProviderResponse)(nil), // 4: gotocompany.siren.v1beta1.CreateProviderResponse - (*GetProviderRequest)(nil), // 5: gotocompany.siren.v1beta1.GetProviderRequest - (*GetProviderResponse)(nil), // 6: gotocompany.siren.v1beta1.GetProviderResponse - (*UpdateProviderRequest)(nil), // 7: gotocompany.siren.v1beta1.UpdateProviderRequest - (*UpdateProviderResponse)(nil), // 8: gotocompany.siren.v1beta1.UpdateProviderResponse - (*DeleteProviderRequest)(nil), // 9: gotocompany.siren.v1beta1.DeleteProviderRequest - (*DeleteProviderResponse)(nil), // 10: gotocompany.siren.v1beta1.DeleteProviderResponse - (*Namespace)(nil), // 11: gotocompany.siren.v1beta1.Namespace - (*ListNamespacesRequest)(nil), // 12: gotocompany.siren.v1beta1.ListNamespacesRequest - (*ListNamespacesResponse)(nil), // 13: gotocompany.siren.v1beta1.ListNamespacesResponse - (*CreateNamespaceRequest)(nil), // 14: gotocompany.siren.v1beta1.CreateNamespaceRequest - (*CreateNamespaceResponse)(nil), // 15: gotocompany.siren.v1beta1.CreateNamespaceResponse - (*GetNamespaceRequest)(nil), // 16: gotocompany.siren.v1beta1.GetNamespaceRequest - (*GetNamespaceResponse)(nil), // 17: gotocompany.siren.v1beta1.GetNamespaceResponse - (*UpdateNamespaceRequest)(nil), // 18: gotocompany.siren.v1beta1.UpdateNamespaceRequest - (*UpdateNamespaceResponse)(nil), // 19: gotocompany.siren.v1beta1.UpdateNamespaceResponse - (*DeleteNamespaceRequest)(nil), // 20: gotocompany.siren.v1beta1.DeleteNamespaceRequest - (*DeleteNamespaceResponse)(nil), // 21: gotocompany.siren.v1beta1.DeleteNamespaceResponse - (*ReceiverMetadata)(nil), // 22: gotocompany.siren.v1beta1.ReceiverMetadata - (*Subscription)(nil), // 23: gotocompany.siren.v1beta1.Subscription - (*ListSubscriptionsRequest)(nil), // 24: gotocompany.siren.v1beta1.ListSubscriptionsRequest - (*ListSubscriptionsResponse)(nil), // 25: gotocompany.siren.v1beta1.ListSubscriptionsResponse - (*CreateSubscriptionRequest)(nil), // 26: gotocompany.siren.v1beta1.CreateSubscriptionRequest - (*CreateSubscriptionResponse)(nil), // 27: gotocompany.siren.v1beta1.CreateSubscriptionResponse - (*GetSubscriptionRequest)(nil), // 28: gotocompany.siren.v1beta1.GetSubscriptionRequest - (*GetSubscriptionResponse)(nil), // 29: gotocompany.siren.v1beta1.GetSubscriptionResponse - (*UpdateSubscriptionRequest)(nil), // 30: gotocompany.siren.v1beta1.UpdateSubscriptionRequest - (*UpdateSubscriptionResponse)(nil), // 31: gotocompany.siren.v1beta1.UpdateSubscriptionResponse - (*DeleteSubscriptionRequest)(nil), // 32: gotocompany.siren.v1beta1.DeleteSubscriptionRequest - (*DeleteSubscriptionResponse)(nil), // 33: gotocompany.siren.v1beta1.DeleteSubscriptionResponse - (*Receiver)(nil), // 34: gotocompany.siren.v1beta1.Receiver - (*ListReceiversRequest)(nil), // 35: gotocompany.siren.v1beta1.ListReceiversRequest - (*ListReceiversResponse)(nil), // 36: gotocompany.siren.v1beta1.ListReceiversResponse - (*CreateReceiverRequest)(nil), // 37: gotocompany.siren.v1beta1.CreateReceiverRequest - (*CreateReceiverResponse)(nil), // 38: gotocompany.siren.v1beta1.CreateReceiverResponse - (*GetReceiverRequest)(nil), // 39: gotocompany.siren.v1beta1.GetReceiverRequest - (*GetReceiverResponse)(nil), // 40: gotocompany.siren.v1beta1.GetReceiverResponse - (*UpdateReceiverRequest)(nil), // 41: gotocompany.siren.v1beta1.UpdateReceiverRequest - (*UpdateReceiverResponse)(nil), // 42: gotocompany.siren.v1beta1.UpdateReceiverResponse - (*DeleteReceiverRequest)(nil), // 43: gotocompany.siren.v1beta1.DeleteReceiverRequest - (*DeleteReceiverResponse)(nil), // 44: gotocompany.siren.v1beta1.DeleteReceiverResponse - (*NotifyReceiverRequest)(nil), // 45: gotocompany.siren.v1beta1.NotifyReceiverRequest - (*NotifyReceiverResponse)(nil), // 46: gotocompany.siren.v1beta1.NotifyReceiverResponse - (*Alert)(nil), // 47: gotocompany.siren.v1beta1.Alert - (*ListAlertsRequest)(nil), // 48: gotocompany.siren.v1beta1.ListAlertsRequest - (*ListAlertsResponse)(nil), // 49: gotocompany.siren.v1beta1.ListAlertsResponse - (*CreateAlertsRequest)(nil), // 50: gotocompany.siren.v1beta1.CreateAlertsRequest - (*CreateAlertsResponse)(nil), // 51: gotocompany.siren.v1beta1.CreateAlertsResponse - (*CreateAlertsWithNamespaceRequest)(nil), // 52: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceRequest - (*CreateAlertsWithNamespaceResponse)(nil), // 53: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceResponse - (*Annotations)(nil), // 54: gotocompany.siren.v1beta1.Annotations - (*Labels)(nil), // 55: gotocompany.siren.v1beta1.Labels - (*Rule)(nil), // 56: gotocompany.siren.v1beta1.Rule - (*Variables)(nil), // 57: gotocompany.siren.v1beta1.Variables - (*ListRulesRequest)(nil), // 58: gotocompany.siren.v1beta1.ListRulesRequest - (*ListRulesResponse)(nil), // 59: gotocompany.siren.v1beta1.ListRulesResponse - (*UpdateRuleRequest)(nil), // 60: gotocompany.siren.v1beta1.UpdateRuleRequest - (*UpdateRuleResponse)(nil), // 61: gotocompany.siren.v1beta1.UpdateRuleResponse - (*TemplateVariables)(nil), // 62: gotocompany.siren.v1beta1.TemplateVariables - (*Template)(nil), // 63: gotocompany.siren.v1beta1.Template - (*ListTemplatesRequest)(nil), // 64: gotocompany.siren.v1beta1.ListTemplatesRequest - (*ListTemplatesResponse)(nil), // 65: gotocompany.siren.v1beta1.ListTemplatesResponse - (*UpsertTemplateRequest)(nil), // 66: gotocompany.siren.v1beta1.UpsertTemplateRequest - (*UpsertTemplateResponse)(nil), // 67: gotocompany.siren.v1beta1.UpsertTemplateResponse - (*GetTemplateRequest)(nil), // 68: gotocompany.siren.v1beta1.GetTemplateRequest - (*GetTemplateResponse)(nil), // 69: gotocompany.siren.v1beta1.GetTemplateResponse - (*DeleteTemplateRequest)(nil), // 70: gotocompany.siren.v1beta1.DeleteTemplateRequest - (*DeleteTemplateResponse)(nil), // 71: gotocompany.siren.v1beta1.DeleteTemplateResponse - (*RenderTemplateRequest)(nil), // 72: gotocompany.siren.v1beta1.RenderTemplateRequest - (*RenderTemplateResponse)(nil), // 73: gotocompany.siren.v1beta1.RenderTemplateResponse - (*Silence)(nil), // 74: gotocompany.siren.v1beta1.Silence - (*CreateSilenceRequest)(nil), // 75: gotocompany.siren.v1beta1.CreateSilenceRequest - (*CreateSilenceResponse)(nil), // 76: gotocompany.siren.v1beta1.CreateSilenceResponse - (*ListSilencesRequest)(nil), // 77: gotocompany.siren.v1beta1.ListSilencesRequest - (*ListSilencesResponse)(nil), // 78: gotocompany.siren.v1beta1.ListSilencesResponse - (*GetSilenceRequest)(nil), // 79: gotocompany.siren.v1beta1.GetSilenceRequest - (*GetSilenceResponse)(nil), // 80: gotocompany.siren.v1beta1.GetSilenceResponse - (*ExpireSilenceRequest)(nil), // 81: gotocompany.siren.v1beta1.ExpireSilenceRequest - (*ExpireSilenceResponse)(nil), // 82: gotocompany.siren.v1beta1.ExpireSilenceResponse - (*PostNotificationRequest)(nil), // 83: gotocompany.siren.v1beta1.PostNotificationRequest - (*PostNotificationResponse)(nil), // 84: gotocompany.siren.v1beta1.PostNotificationResponse - (*PostBulkNotificationsRequest)(nil), // 85: gotocompany.siren.v1beta1.PostBulkNotificationsRequest - (*PostBulkNotificationsResponse)(nil), // 86: gotocompany.siren.v1beta1.PostBulkNotificationsResponse - (*ListNotificationMessagesRequest)(nil), // 87: gotocompany.siren.v1beta1.ListNotificationMessagesRequest - (*NotificationMessage)(nil), // 88: gotocompany.siren.v1beta1.NotificationMessage - (*ListNotificationMessagesResponse)(nil), // 89: gotocompany.siren.v1beta1.ListNotificationMessagesResponse - (*ListNotificationsRequest)(nil), // 90: gotocompany.siren.v1beta1.ListNotificationsRequest - (*ReceiverSelector)(nil), // 91: gotocompany.siren.v1beta1.ReceiverSelector - (*Notification)(nil), // 92: gotocompany.siren.v1beta1.Notification - (*ListNotificationsResponse)(nil), // 93: gotocompany.siren.v1beta1.ListNotificationsResponse - nil, // 94: gotocompany.siren.v1beta1.Provider.LabelsEntry - nil, // 95: gotocompany.siren.v1beta1.CreateProviderRequest.LabelsEntry - nil, // 96: gotocompany.siren.v1beta1.UpdateProviderRequest.LabelsEntry - nil, // 97: gotocompany.siren.v1beta1.Namespace.LabelsEntry - nil, // 98: gotocompany.siren.v1beta1.CreateNamespaceRequest.LabelsEntry - nil, // 99: gotocompany.siren.v1beta1.UpdateNamespaceRequest.LabelsEntry - nil, // 100: gotocompany.siren.v1beta1.Subscription.MatchEntry - nil, // 101: gotocompany.siren.v1beta1.ListSubscriptionsRequest.MatchEntry - nil, // 102: gotocompany.siren.v1beta1.ListSubscriptionsRequest.NotificationMatchEntry - nil, // 103: gotocompany.siren.v1beta1.ListSubscriptionsRequest.MetadataEntry - nil, // 104: gotocompany.siren.v1beta1.CreateSubscriptionRequest.MatchEntry - nil, // 105: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.MatchEntry - nil, // 106: gotocompany.siren.v1beta1.Receiver.LabelsEntry - nil, // 107: gotocompany.siren.v1beta1.ListReceiversRequest.LabelsEntry - nil, // 108: gotocompany.siren.v1beta1.CreateReceiverRequest.LabelsEntry - nil, // 109: gotocompany.siren.v1beta1.UpdateReceiverRequest.LabelsEntry - nil, // 110: gotocompany.siren.v1beta1.Alert.AnnotationsEntry - nil, // 111: gotocompany.siren.v1beta1.Alert.LabelsEntry - nil, // 112: gotocompany.siren.v1beta1.RenderTemplateRequest.VariablesEntry - nil, // 113: gotocompany.siren.v1beta1.ListSilencesRequest.MatchEntry - nil, // 114: gotocompany.siren.v1beta1.ListSilencesRequest.SubscriptionMatchEntry - nil, // 115: gotocompany.siren.v1beta1.PostNotificationRequest.LabelsEntry - nil, // 116: gotocompany.siren.v1beta1.ListNotificationsRequest.LabelsEntry - nil, // 117: gotocompany.siren.v1beta1.ListNotificationsRequest.ReceiverSelectorsEntry - nil, // 118: gotocompany.siren.v1beta1.ReceiverSelector.ReceiverSelectorEntry - nil, // 119: gotocompany.siren.v1beta1.Notification.LabelsEntry - (*structpb.Struct)(nil), // 120: google.protobuf.Struct - (*timestamppb.Timestamp)(nil), // 121: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 122: google.protobuf.Duration + (*Provider)(nil), // 0: gotocompany.siren.v1beta1.Provider + (*ListProvidersRequest)(nil), // 1: gotocompany.siren.v1beta1.ListProvidersRequest + (*ListProvidersResponse)(nil), // 2: gotocompany.siren.v1beta1.ListProvidersResponse + (*CreateProviderRequest)(nil), // 3: gotocompany.siren.v1beta1.CreateProviderRequest + (*CreateProviderResponse)(nil), // 4: gotocompany.siren.v1beta1.CreateProviderResponse + (*GetProviderRequest)(nil), // 5: gotocompany.siren.v1beta1.GetProviderRequest + (*GetProviderResponse)(nil), // 6: gotocompany.siren.v1beta1.GetProviderResponse + (*UpdateProviderRequest)(nil), // 7: gotocompany.siren.v1beta1.UpdateProviderRequest + (*UpdateProviderResponse)(nil), // 8: gotocompany.siren.v1beta1.UpdateProviderResponse + (*DeleteProviderRequest)(nil), // 9: gotocompany.siren.v1beta1.DeleteProviderRequest + (*DeleteProviderResponse)(nil), // 10: gotocompany.siren.v1beta1.DeleteProviderResponse + (*Namespace)(nil), // 11: gotocompany.siren.v1beta1.Namespace + (*ListNamespacesRequest)(nil), // 12: gotocompany.siren.v1beta1.ListNamespacesRequest + (*ListNamespacesResponse)(nil), // 13: gotocompany.siren.v1beta1.ListNamespacesResponse + (*CreateNamespaceRequest)(nil), // 14: gotocompany.siren.v1beta1.CreateNamespaceRequest + (*CreateNamespaceResponse)(nil), // 15: gotocompany.siren.v1beta1.CreateNamespaceResponse + (*GetNamespaceRequest)(nil), // 16: gotocompany.siren.v1beta1.GetNamespaceRequest + (*GetNamespaceResponse)(nil), // 17: gotocompany.siren.v1beta1.GetNamespaceResponse + (*UpdateNamespaceRequest)(nil), // 18: gotocompany.siren.v1beta1.UpdateNamespaceRequest + (*UpdateNamespaceResponse)(nil), // 19: gotocompany.siren.v1beta1.UpdateNamespaceResponse + (*DeleteNamespaceRequest)(nil), // 20: gotocompany.siren.v1beta1.DeleteNamespaceRequest + (*DeleteNamespaceResponse)(nil), // 21: gotocompany.siren.v1beta1.DeleteNamespaceResponse + (*ReceiverMetadata)(nil), // 22: gotocompany.siren.v1beta1.ReceiverMetadata + (*Subscription)(nil), // 23: gotocompany.siren.v1beta1.Subscription + (*ListSubscriptionsRequest)(nil), // 24: gotocompany.siren.v1beta1.ListSubscriptionsRequest + (*ListSubscriptionsResponse)(nil), // 25: gotocompany.siren.v1beta1.ListSubscriptionsResponse + (*CreateSubscriptionRequest)(nil), // 26: gotocompany.siren.v1beta1.CreateSubscriptionRequest + (*CreateSubscriptionResponse)(nil), // 27: gotocompany.siren.v1beta1.CreateSubscriptionResponse + (*GetSubscriptionRequest)(nil), // 28: gotocompany.siren.v1beta1.GetSubscriptionRequest + (*GetSubscriptionResponse)(nil), // 29: gotocompany.siren.v1beta1.GetSubscriptionResponse + (*UpdateSubscriptionRequest)(nil), // 30: gotocompany.siren.v1beta1.UpdateSubscriptionRequest + (*UpdateSubscriptionResponse)(nil), // 31: gotocompany.siren.v1beta1.UpdateSubscriptionResponse + (*DeleteSubscriptionRequest)(nil), // 32: gotocompany.siren.v1beta1.DeleteSubscriptionRequest + (*DeleteSubscriptionResponse)(nil), // 33: gotocompany.siren.v1beta1.DeleteSubscriptionResponse + (*AddSubscriptionReceiverRequest)(nil), // 34: gotocompany.siren.v1beta1.AddSubscriptionReceiverRequest + (*ListSubscriptionReceiversRequest)(nil), // 35: gotocompany.siren.v1beta1.ListSubscriptionReceiversRequest + (*ListSubscriptionReceiversResponse)(nil), // 36: gotocompany.siren.v1beta1.ListSubscriptionReceiversResponse + (*SubscriptionReceiverRelation)(nil), // 37: gotocompany.siren.v1beta1.SubscriptionReceiverRelation + (*AddSubscriptionReceiverResponse)(nil), // 38: gotocompany.siren.v1beta1.AddSubscriptionReceiverResponse + (*UpdateSubscriptionReceiverRequest)(nil), // 39: gotocompany.siren.v1beta1.UpdateSubscriptionReceiverRequest + (*UpdateSubscriptionReceiverResponse)(nil), // 40: gotocompany.siren.v1beta1.UpdateSubscriptionReceiverResponse + (*DeleteSubscriptionReceiverRequest)(nil), // 41: gotocompany.siren.v1beta1.DeleteSubscriptionReceiverRequest + (*DeleteSubscriptionReceiverResponse)(nil), // 42: gotocompany.siren.v1beta1.DeleteSubscriptionReceiverResponse + (*Receiver)(nil), // 43: gotocompany.siren.v1beta1.Receiver + (*ListReceiversRequest)(nil), // 44: gotocompany.siren.v1beta1.ListReceiversRequest + (*ListReceiversResponse)(nil), // 45: gotocompany.siren.v1beta1.ListReceiversResponse + (*CreateReceiverRequest)(nil), // 46: gotocompany.siren.v1beta1.CreateReceiverRequest + (*CreateReceiverResponse)(nil), // 47: gotocompany.siren.v1beta1.CreateReceiverResponse + (*GetReceiverRequest)(nil), // 48: gotocompany.siren.v1beta1.GetReceiverRequest + (*GetReceiverResponse)(nil), // 49: gotocompany.siren.v1beta1.GetReceiverResponse + (*UpdateReceiverRequest)(nil), // 50: gotocompany.siren.v1beta1.UpdateReceiverRequest + (*UpdateReceiverResponse)(nil), // 51: gotocompany.siren.v1beta1.UpdateReceiverResponse + (*DeleteReceiverRequest)(nil), // 52: gotocompany.siren.v1beta1.DeleteReceiverRequest + (*DeleteReceiverResponse)(nil), // 53: gotocompany.siren.v1beta1.DeleteReceiverResponse + (*NotifyReceiverRequest)(nil), // 54: gotocompany.siren.v1beta1.NotifyReceiverRequest + (*NotifyReceiverResponse)(nil), // 55: gotocompany.siren.v1beta1.NotifyReceiverResponse + (*Alert)(nil), // 56: gotocompany.siren.v1beta1.Alert + (*ListAlertsRequest)(nil), // 57: gotocompany.siren.v1beta1.ListAlertsRequest + (*ListAlertsResponse)(nil), // 58: gotocompany.siren.v1beta1.ListAlertsResponse + (*CreateAlertsRequest)(nil), // 59: gotocompany.siren.v1beta1.CreateAlertsRequest + (*CreateAlertsResponse)(nil), // 60: gotocompany.siren.v1beta1.CreateAlertsResponse + (*CreateAlertsWithNamespaceRequest)(nil), // 61: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceRequest + (*CreateAlertsWithNamespaceResponse)(nil), // 62: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceResponse + (*Annotations)(nil), // 63: gotocompany.siren.v1beta1.Annotations + (*Labels)(nil), // 64: gotocompany.siren.v1beta1.Labels + (*Rule)(nil), // 65: gotocompany.siren.v1beta1.Rule + (*Variables)(nil), // 66: gotocompany.siren.v1beta1.Variables + (*ListRulesRequest)(nil), // 67: gotocompany.siren.v1beta1.ListRulesRequest + (*ListRulesResponse)(nil), // 68: gotocompany.siren.v1beta1.ListRulesResponse + (*UpdateRuleRequest)(nil), // 69: gotocompany.siren.v1beta1.UpdateRuleRequest + (*UpdateRuleResponse)(nil), // 70: gotocompany.siren.v1beta1.UpdateRuleResponse + (*TemplateVariables)(nil), // 71: gotocompany.siren.v1beta1.TemplateVariables + (*Template)(nil), // 72: gotocompany.siren.v1beta1.Template + (*ListTemplatesRequest)(nil), // 73: gotocompany.siren.v1beta1.ListTemplatesRequest + (*ListTemplatesResponse)(nil), // 74: gotocompany.siren.v1beta1.ListTemplatesResponse + (*UpsertTemplateRequest)(nil), // 75: gotocompany.siren.v1beta1.UpsertTemplateRequest + (*UpsertTemplateResponse)(nil), // 76: gotocompany.siren.v1beta1.UpsertTemplateResponse + (*GetTemplateRequest)(nil), // 77: gotocompany.siren.v1beta1.GetTemplateRequest + (*GetTemplateResponse)(nil), // 78: gotocompany.siren.v1beta1.GetTemplateResponse + (*DeleteTemplateRequest)(nil), // 79: gotocompany.siren.v1beta1.DeleteTemplateRequest + (*DeleteTemplateResponse)(nil), // 80: gotocompany.siren.v1beta1.DeleteTemplateResponse + (*RenderTemplateRequest)(nil), // 81: gotocompany.siren.v1beta1.RenderTemplateRequest + (*RenderTemplateResponse)(nil), // 82: gotocompany.siren.v1beta1.RenderTemplateResponse + (*Silence)(nil), // 83: gotocompany.siren.v1beta1.Silence + (*CreateSilenceRequest)(nil), // 84: gotocompany.siren.v1beta1.CreateSilenceRequest + (*CreateSilenceResponse)(nil), // 85: gotocompany.siren.v1beta1.CreateSilenceResponse + (*ListSilencesRequest)(nil), // 86: gotocompany.siren.v1beta1.ListSilencesRequest + (*ListSilencesResponse)(nil), // 87: gotocompany.siren.v1beta1.ListSilencesResponse + (*GetSilenceRequest)(nil), // 88: gotocompany.siren.v1beta1.GetSilenceRequest + (*GetSilenceResponse)(nil), // 89: gotocompany.siren.v1beta1.GetSilenceResponse + (*ExpireSilenceRequest)(nil), // 90: gotocompany.siren.v1beta1.ExpireSilenceRequest + (*ExpireSilenceResponse)(nil), // 91: gotocompany.siren.v1beta1.ExpireSilenceResponse + (*PostNotificationRequest)(nil), // 92: gotocompany.siren.v1beta1.PostNotificationRequest + (*PostNotificationResponse)(nil), // 93: gotocompany.siren.v1beta1.PostNotificationResponse + (*PostBulkNotificationsRequest)(nil), // 94: gotocompany.siren.v1beta1.PostBulkNotificationsRequest + (*PostBulkNotificationsResponse)(nil), // 95: gotocompany.siren.v1beta1.PostBulkNotificationsResponse + (*ListNotificationMessagesRequest)(nil), // 96: gotocompany.siren.v1beta1.ListNotificationMessagesRequest + (*NotificationMessage)(nil), // 97: gotocompany.siren.v1beta1.NotificationMessage + (*ListNotificationMessagesResponse)(nil), // 98: gotocompany.siren.v1beta1.ListNotificationMessagesResponse + (*ListNotificationsRequest)(nil), // 99: gotocompany.siren.v1beta1.ListNotificationsRequest + (*ReceiverSelector)(nil), // 100: gotocompany.siren.v1beta1.ReceiverSelector + (*Notification)(nil), // 101: gotocompany.siren.v1beta1.Notification + (*ListNotificationsResponse)(nil), // 102: gotocompany.siren.v1beta1.ListNotificationsResponse + nil, // 103: gotocompany.siren.v1beta1.Provider.LabelsEntry + nil, // 104: gotocompany.siren.v1beta1.CreateProviderRequest.LabelsEntry + nil, // 105: gotocompany.siren.v1beta1.UpdateProviderRequest.LabelsEntry + nil, // 106: gotocompany.siren.v1beta1.Namespace.LabelsEntry + nil, // 107: gotocompany.siren.v1beta1.CreateNamespaceRequest.LabelsEntry + nil, // 108: gotocompany.siren.v1beta1.UpdateNamespaceRequest.LabelsEntry + nil, // 109: gotocompany.siren.v1beta1.Subscription.MatchEntry + nil, // 110: gotocompany.siren.v1beta1.ListSubscriptionsRequest.MatchEntry + nil, // 111: gotocompany.siren.v1beta1.ListSubscriptionsRequest.NotificationMatchEntry + nil, // 112: gotocompany.siren.v1beta1.ListSubscriptionsRequest.MetadataEntry + nil, // 113: gotocompany.siren.v1beta1.CreateSubscriptionRequest.MatchEntry + nil, // 114: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.MatchEntry + nil, // 115: gotocompany.siren.v1beta1.AddSubscriptionReceiverRequest.LabelsEntry + nil, // 116: gotocompany.siren.v1beta1.ListSubscriptionReceiversRequest.LabelsEntry + nil, // 117: gotocompany.siren.v1beta1.SubscriptionReceiverRelation.LabelsEntry + nil, // 118: gotocompany.siren.v1beta1.AddSubscriptionReceiverResponse.LabelsEntry + nil, // 119: gotocompany.siren.v1beta1.UpdateSubscriptionReceiverRequest.LabelsEntry + nil, // 120: gotocompany.siren.v1beta1.UpdateSubscriptionReceiverResponse.LabelsEntry + nil, // 121: gotocompany.siren.v1beta1.Receiver.LabelsEntry + nil, // 122: gotocompany.siren.v1beta1.ListReceiversRequest.LabelsEntry + nil, // 123: gotocompany.siren.v1beta1.CreateReceiverRequest.LabelsEntry + nil, // 124: gotocompany.siren.v1beta1.UpdateReceiverRequest.LabelsEntry + nil, // 125: gotocompany.siren.v1beta1.Alert.AnnotationsEntry + nil, // 126: gotocompany.siren.v1beta1.Alert.LabelsEntry + nil, // 127: gotocompany.siren.v1beta1.RenderTemplateRequest.VariablesEntry + nil, // 128: gotocompany.siren.v1beta1.ListSilencesRequest.MatchEntry + nil, // 129: gotocompany.siren.v1beta1.ListSilencesRequest.SubscriptionMatchEntry + nil, // 130: gotocompany.siren.v1beta1.PostNotificationRequest.LabelsEntry + nil, // 131: gotocompany.siren.v1beta1.ListNotificationsRequest.LabelsEntry + nil, // 132: gotocompany.siren.v1beta1.ListNotificationsRequest.ReceiverSelectorsEntry + nil, // 133: gotocompany.siren.v1beta1.ReceiverSelector.ReceiverSelectorEntry + nil, // 134: gotocompany.siren.v1beta1.Notification.LabelsEntry + (*structpb.Struct)(nil), // 135: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 136: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 137: google.protobuf.Duration } var file_gotocompany_siren_v1beta1_siren_proto_depIdxs = []int32{ - 120, // 0: gotocompany.siren.v1beta1.Provider.credentials:type_name -> google.protobuf.Struct - 94, // 1: gotocompany.siren.v1beta1.Provider.labels:type_name -> gotocompany.siren.v1beta1.Provider.LabelsEntry - 121, // 2: gotocompany.siren.v1beta1.Provider.created_at:type_name -> google.protobuf.Timestamp - 121, // 3: gotocompany.siren.v1beta1.Provider.updated_at:type_name -> google.protobuf.Timestamp + 135, // 0: gotocompany.siren.v1beta1.Provider.credentials:type_name -> google.protobuf.Struct + 103, // 1: gotocompany.siren.v1beta1.Provider.labels:type_name -> gotocompany.siren.v1beta1.Provider.LabelsEntry + 136, // 2: gotocompany.siren.v1beta1.Provider.created_at:type_name -> google.protobuf.Timestamp + 136, // 3: gotocompany.siren.v1beta1.Provider.updated_at:type_name -> google.protobuf.Timestamp 0, // 4: gotocompany.siren.v1beta1.ListProvidersResponse.providers:type_name -> gotocompany.siren.v1beta1.Provider - 120, // 5: gotocompany.siren.v1beta1.CreateProviderRequest.credentials:type_name -> google.protobuf.Struct - 95, // 6: gotocompany.siren.v1beta1.CreateProviderRequest.labels:type_name -> gotocompany.siren.v1beta1.CreateProviderRequest.LabelsEntry + 135, // 5: gotocompany.siren.v1beta1.CreateProviderRequest.credentials:type_name -> google.protobuf.Struct + 104, // 6: gotocompany.siren.v1beta1.CreateProviderRequest.labels:type_name -> gotocompany.siren.v1beta1.CreateProviderRequest.LabelsEntry 0, // 7: gotocompany.siren.v1beta1.GetProviderResponse.provider:type_name -> gotocompany.siren.v1beta1.Provider - 120, // 8: gotocompany.siren.v1beta1.UpdateProviderRequest.credentials:type_name -> google.protobuf.Struct - 96, // 9: gotocompany.siren.v1beta1.UpdateProviderRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateProviderRequest.LabelsEntry - 120, // 10: gotocompany.siren.v1beta1.Namespace.credentials:type_name -> google.protobuf.Struct - 97, // 11: gotocompany.siren.v1beta1.Namespace.labels:type_name -> gotocompany.siren.v1beta1.Namespace.LabelsEntry - 121, // 12: gotocompany.siren.v1beta1.Namespace.created_at:type_name -> google.protobuf.Timestamp - 121, // 13: gotocompany.siren.v1beta1.Namespace.updated_at:type_name -> google.protobuf.Timestamp + 135, // 8: gotocompany.siren.v1beta1.UpdateProviderRequest.credentials:type_name -> google.protobuf.Struct + 105, // 9: gotocompany.siren.v1beta1.UpdateProviderRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateProviderRequest.LabelsEntry + 135, // 10: gotocompany.siren.v1beta1.Namespace.credentials:type_name -> google.protobuf.Struct + 106, // 11: gotocompany.siren.v1beta1.Namespace.labels:type_name -> gotocompany.siren.v1beta1.Namespace.LabelsEntry + 136, // 12: gotocompany.siren.v1beta1.Namespace.created_at:type_name -> google.protobuf.Timestamp + 136, // 13: gotocompany.siren.v1beta1.Namespace.updated_at:type_name -> google.protobuf.Timestamp 11, // 14: gotocompany.siren.v1beta1.ListNamespacesResponse.namespaces:type_name -> gotocompany.siren.v1beta1.Namespace - 120, // 15: gotocompany.siren.v1beta1.CreateNamespaceRequest.credentials:type_name -> google.protobuf.Struct - 98, // 16: gotocompany.siren.v1beta1.CreateNamespaceRequest.labels:type_name -> gotocompany.siren.v1beta1.CreateNamespaceRequest.LabelsEntry - 121, // 17: gotocompany.siren.v1beta1.CreateNamespaceRequest.created_at:type_name -> google.protobuf.Timestamp - 121, // 18: gotocompany.siren.v1beta1.CreateNamespaceRequest.updated_at:type_name -> google.protobuf.Timestamp + 135, // 15: gotocompany.siren.v1beta1.CreateNamespaceRequest.credentials:type_name -> google.protobuf.Struct + 107, // 16: gotocompany.siren.v1beta1.CreateNamespaceRequest.labels:type_name -> gotocompany.siren.v1beta1.CreateNamespaceRequest.LabelsEntry + 136, // 17: gotocompany.siren.v1beta1.CreateNamespaceRequest.created_at:type_name -> google.protobuf.Timestamp + 136, // 18: gotocompany.siren.v1beta1.CreateNamespaceRequest.updated_at:type_name -> google.protobuf.Timestamp 11, // 19: gotocompany.siren.v1beta1.GetNamespaceResponse.namespace:type_name -> gotocompany.siren.v1beta1.Namespace - 120, // 20: gotocompany.siren.v1beta1.UpdateNamespaceRequest.credentials:type_name -> google.protobuf.Struct - 99, // 21: gotocompany.siren.v1beta1.UpdateNamespaceRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateNamespaceRequest.LabelsEntry - 120, // 22: gotocompany.siren.v1beta1.ReceiverMetadata.configuration:type_name -> google.protobuf.Struct + 135, // 20: gotocompany.siren.v1beta1.UpdateNamespaceRequest.credentials:type_name -> google.protobuf.Struct + 108, // 21: gotocompany.siren.v1beta1.UpdateNamespaceRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateNamespaceRequest.LabelsEntry + 135, // 22: gotocompany.siren.v1beta1.ReceiverMetadata.configuration:type_name -> google.protobuf.Struct 22, // 23: gotocompany.siren.v1beta1.Subscription.receivers:type_name -> gotocompany.siren.v1beta1.ReceiverMetadata - 100, // 24: gotocompany.siren.v1beta1.Subscription.match:type_name -> gotocompany.siren.v1beta1.Subscription.MatchEntry - 121, // 25: gotocompany.siren.v1beta1.Subscription.created_at:type_name -> google.protobuf.Timestamp - 121, // 26: gotocompany.siren.v1beta1.Subscription.updated_at:type_name -> google.protobuf.Timestamp - 120, // 27: gotocompany.siren.v1beta1.Subscription.metadata:type_name -> google.protobuf.Struct - 101, // 28: gotocompany.siren.v1beta1.ListSubscriptionsRequest.match:type_name -> gotocompany.siren.v1beta1.ListSubscriptionsRequest.MatchEntry - 102, // 29: gotocompany.siren.v1beta1.ListSubscriptionsRequest.notification_match:type_name -> gotocompany.siren.v1beta1.ListSubscriptionsRequest.NotificationMatchEntry - 103, // 30: gotocompany.siren.v1beta1.ListSubscriptionsRequest.metadata:type_name -> gotocompany.siren.v1beta1.ListSubscriptionsRequest.MetadataEntry + 109, // 24: gotocompany.siren.v1beta1.Subscription.match:type_name -> gotocompany.siren.v1beta1.Subscription.MatchEntry + 136, // 25: gotocompany.siren.v1beta1.Subscription.created_at:type_name -> google.protobuf.Timestamp + 136, // 26: gotocompany.siren.v1beta1.Subscription.updated_at:type_name -> google.protobuf.Timestamp + 135, // 27: gotocompany.siren.v1beta1.Subscription.metadata:type_name -> google.protobuf.Struct + 110, // 28: gotocompany.siren.v1beta1.ListSubscriptionsRequest.match:type_name -> gotocompany.siren.v1beta1.ListSubscriptionsRequest.MatchEntry + 111, // 29: gotocompany.siren.v1beta1.ListSubscriptionsRequest.notification_match:type_name -> gotocompany.siren.v1beta1.ListSubscriptionsRequest.NotificationMatchEntry + 112, // 30: gotocompany.siren.v1beta1.ListSubscriptionsRequest.metadata:type_name -> gotocompany.siren.v1beta1.ListSubscriptionsRequest.MetadataEntry 23, // 31: gotocompany.siren.v1beta1.ListSubscriptionsResponse.subscriptions:type_name -> gotocompany.siren.v1beta1.Subscription 22, // 32: gotocompany.siren.v1beta1.CreateSubscriptionRequest.receivers:type_name -> gotocompany.siren.v1beta1.ReceiverMetadata - 104, // 33: gotocompany.siren.v1beta1.CreateSubscriptionRequest.match:type_name -> gotocompany.siren.v1beta1.CreateSubscriptionRequest.MatchEntry - 120, // 34: gotocompany.siren.v1beta1.CreateSubscriptionRequest.metadata:type_name -> google.protobuf.Struct + 113, // 33: gotocompany.siren.v1beta1.CreateSubscriptionRequest.match:type_name -> gotocompany.siren.v1beta1.CreateSubscriptionRequest.MatchEntry + 135, // 34: gotocompany.siren.v1beta1.CreateSubscriptionRequest.metadata:type_name -> google.protobuf.Struct 23, // 35: gotocompany.siren.v1beta1.GetSubscriptionResponse.subscription:type_name -> gotocompany.siren.v1beta1.Subscription 22, // 36: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.receivers:type_name -> gotocompany.siren.v1beta1.ReceiverMetadata - 105, // 37: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.match:type_name -> gotocompany.siren.v1beta1.UpdateSubscriptionRequest.MatchEntry - 120, // 38: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.metadata:type_name -> google.protobuf.Struct - 106, // 39: gotocompany.siren.v1beta1.Receiver.labels:type_name -> gotocompany.siren.v1beta1.Receiver.LabelsEntry - 120, // 40: gotocompany.siren.v1beta1.Receiver.configurations:type_name -> google.protobuf.Struct - 120, // 41: gotocompany.siren.v1beta1.Receiver.data:type_name -> google.protobuf.Struct - 121, // 42: gotocompany.siren.v1beta1.Receiver.created_at:type_name -> google.protobuf.Timestamp - 121, // 43: gotocompany.siren.v1beta1.Receiver.updated_at:type_name -> google.protobuf.Timestamp - 107, // 44: gotocompany.siren.v1beta1.ListReceiversRequest.labels:type_name -> gotocompany.siren.v1beta1.ListReceiversRequest.LabelsEntry - 34, // 45: gotocompany.siren.v1beta1.ListReceiversResponse.receivers:type_name -> gotocompany.siren.v1beta1.Receiver - 108, // 46: gotocompany.siren.v1beta1.CreateReceiverRequest.labels:type_name -> gotocompany.siren.v1beta1.CreateReceiverRequest.LabelsEntry - 120, // 47: gotocompany.siren.v1beta1.CreateReceiverRequest.configurations:type_name -> google.protobuf.Struct - 34, // 48: gotocompany.siren.v1beta1.GetReceiverResponse.receiver:type_name -> gotocompany.siren.v1beta1.Receiver - 109, // 49: gotocompany.siren.v1beta1.UpdateReceiverRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateReceiverRequest.LabelsEntry - 120, // 50: gotocompany.siren.v1beta1.UpdateReceiverRequest.configurations:type_name -> google.protobuf.Struct - 120, // 51: gotocompany.siren.v1beta1.NotifyReceiverRequest.payload:type_name -> google.protobuf.Struct - 121, // 52: gotocompany.siren.v1beta1.Alert.triggered_at:type_name -> google.protobuf.Timestamp - 121, // 53: gotocompany.siren.v1beta1.Alert.created_at:type_name -> google.protobuf.Timestamp - 121, // 54: gotocompany.siren.v1beta1.Alert.updated_at:type_name -> google.protobuf.Timestamp - 110, // 55: gotocompany.siren.v1beta1.Alert.annotations:type_name -> gotocompany.siren.v1beta1.Alert.AnnotationsEntry - 111, // 56: gotocompany.siren.v1beta1.Alert.labels:type_name -> gotocompany.siren.v1beta1.Alert.LabelsEntry - 47, // 57: gotocompany.siren.v1beta1.ListAlertsResponse.alerts:type_name -> gotocompany.siren.v1beta1.Alert - 120, // 58: gotocompany.siren.v1beta1.CreateAlertsRequest.body:type_name -> google.protobuf.Struct - 47, // 59: gotocompany.siren.v1beta1.CreateAlertsResponse.alerts:type_name -> gotocompany.siren.v1beta1.Alert - 120, // 60: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceRequest.body:type_name -> google.protobuf.Struct - 47, // 61: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceResponse.alerts:type_name -> gotocompany.siren.v1beta1.Alert - 57, // 62: gotocompany.siren.v1beta1.Rule.variables:type_name -> gotocompany.siren.v1beta1.Variables - 121, // 63: gotocompany.siren.v1beta1.Rule.created_at:type_name -> google.protobuf.Timestamp - 121, // 64: gotocompany.siren.v1beta1.Rule.updated_at:type_name -> google.protobuf.Timestamp - 56, // 65: gotocompany.siren.v1beta1.ListRulesResponse.rules:type_name -> gotocompany.siren.v1beta1.Rule - 57, // 66: gotocompany.siren.v1beta1.UpdateRuleRequest.variables:type_name -> gotocompany.siren.v1beta1.Variables - 56, // 67: gotocompany.siren.v1beta1.UpdateRuleResponse.rule:type_name -> gotocompany.siren.v1beta1.Rule - 121, // 68: gotocompany.siren.v1beta1.Template.created_at:type_name -> google.protobuf.Timestamp - 121, // 69: gotocompany.siren.v1beta1.Template.updated_at:type_name -> google.protobuf.Timestamp - 62, // 70: gotocompany.siren.v1beta1.Template.variables:type_name -> gotocompany.siren.v1beta1.TemplateVariables - 63, // 71: gotocompany.siren.v1beta1.ListTemplatesResponse.templates:type_name -> gotocompany.siren.v1beta1.Template - 62, // 72: gotocompany.siren.v1beta1.UpsertTemplateRequest.variables:type_name -> gotocompany.siren.v1beta1.TemplateVariables - 63, // 73: gotocompany.siren.v1beta1.GetTemplateResponse.template:type_name -> gotocompany.siren.v1beta1.Template - 112, // 74: gotocompany.siren.v1beta1.RenderTemplateRequest.variables:type_name -> gotocompany.siren.v1beta1.RenderTemplateRequest.VariablesEntry - 120, // 75: gotocompany.siren.v1beta1.Silence.target_expression:type_name -> google.protobuf.Struct - 121, // 76: gotocompany.siren.v1beta1.Silence.created_at:type_name -> google.protobuf.Timestamp - 121, // 77: gotocompany.siren.v1beta1.Silence.updated_at:type_name -> google.protobuf.Timestamp - 121, // 78: gotocompany.siren.v1beta1.Silence.deleted_at:type_name -> google.protobuf.Timestamp - 120, // 79: gotocompany.siren.v1beta1.CreateSilenceRequest.target_expression:type_name -> google.protobuf.Struct - 113, // 80: gotocompany.siren.v1beta1.ListSilencesRequest.match:type_name -> gotocompany.siren.v1beta1.ListSilencesRequest.MatchEntry - 114, // 81: gotocompany.siren.v1beta1.ListSilencesRequest.subscription_match:type_name -> gotocompany.siren.v1beta1.ListSilencesRequest.SubscriptionMatchEntry - 74, // 82: gotocompany.siren.v1beta1.ListSilencesResponse.silences:type_name -> gotocompany.siren.v1beta1.Silence - 74, // 83: gotocompany.siren.v1beta1.GetSilenceResponse.silence:type_name -> gotocompany.siren.v1beta1.Silence - 120, // 84: gotocompany.siren.v1beta1.PostNotificationRequest.receivers:type_name -> google.protobuf.Struct - 120, // 85: gotocompany.siren.v1beta1.PostNotificationRequest.data:type_name -> google.protobuf.Struct - 115, // 86: gotocompany.siren.v1beta1.PostNotificationRequest.labels:type_name -> gotocompany.siren.v1beta1.PostNotificationRequest.LabelsEntry - 92, // 87: gotocompany.siren.v1beta1.PostBulkNotificationsRequest.notifications:type_name -> gotocompany.siren.v1beta1.Notification - 120, // 88: gotocompany.siren.v1beta1.NotificationMessage.details:type_name -> google.protobuf.Struct - 121, // 89: gotocompany.siren.v1beta1.NotificationMessage.expired_at:type_name -> google.protobuf.Timestamp - 121, // 90: gotocompany.siren.v1beta1.NotificationMessage.created_at:type_name -> google.protobuf.Timestamp - 121, // 91: gotocompany.siren.v1beta1.NotificationMessage.updated_at:type_name -> google.protobuf.Timestamp - 120, // 92: gotocompany.siren.v1beta1.NotificationMessage.configs:type_name -> google.protobuf.Struct - 88, // 93: gotocompany.siren.v1beta1.ListNotificationMessagesResponse.messages:type_name -> gotocompany.siren.v1beta1.NotificationMessage - 116, // 94: gotocompany.siren.v1beta1.ListNotificationsRequest.labels:type_name -> gotocompany.siren.v1beta1.ListNotificationsRequest.LabelsEntry - 117, // 95: gotocompany.siren.v1beta1.ListNotificationsRequest.receiver_selectors:type_name -> gotocompany.siren.v1beta1.ListNotificationsRequest.ReceiverSelectorsEntry - 118, // 96: gotocompany.siren.v1beta1.ReceiverSelector.receiver_selector:type_name -> gotocompany.siren.v1beta1.ReceiverSelector.ReceiverSelectorEntry - 120, // 97: gotocompany.siren.v1beta1.Notification.data:type_name -> google.protobuf.Struct - 119, // 98: gotocompany.siren.v1beta1.Notification.labels:type_name -> gotocompany.siren.v1beta1.Notification.LabelsEntry - 122, // 99: gotocompany.siren.v1beta1.Notification.valid_duration:type_name -> google.protobuf.Duration - 121, // 100: gotocompany.siren.v1beta1.Notification.create_at:type_name -> google.protobuf.Timestamp - 91, // 101: gotocompany.siren.v1beta1.Notification.receiver_selectors:type_name -> gotocompany.siren.v1beta1.ReceiverSelector - 92, // 102: gotocompany.siren.v1beta1.ListNotificationsResponse.notifications:type_name -> gotocompany.siren.v1beta1.Notification - 1, // 103: gotocompany.siren.v1beta1.SirenService.ListProviders:input_type -> gotocompany.siren.v1beta1.ListProvidersRequest - 3, // 104: gotocompany.siren.v1beta1.SirenService.CreateProvider:input_type -> gotocompany.siren.v1beta1.CreateProviderRequest - 5, // 105: gotocompany.siren.v1beta1.SirenService.GetProvider:input_type -> gotocompany.siren.v1beta1.GetProviderRequest - 7, // 106: gotocompany.siren.v1beta1.SirenService.UpdateProvider:input_type -> gotocompany.siren.v1beta1.UpdateProviderRequest - 9, // 107: gotocompany.siren.v1beta1.SirenService.DeleteProvider:input_type -> gotocompany.siren.v1beta1.DeleteProviderRequest - 45, // 108: gotocompany.siren.v1beta1.SirenService.NotifyReceiver:input_type -> gotocompany.siren.v1beta1.NotifyReceiverRequest - 12, // 109: gotocompany.siren.v1beta1.SirenService.ListNamespaces:input_type -> gotocompany.siren.v1beta1.ListNamespacesRequest - 14, // 110: gotocompany.siren.v1beta1.SirenService.CreateNamespace:input_type -> gotocompany.siren.v1beta1.CreateNamespaceRequest - 16, // 111: gotocompany.siren.v1beta1.SirenService.GetNamespace:input_type -> gotocompany.siren.v1beta1.GetNamespaceRequest - 18, // 112: gotocompany.siren.v1beta1.SirenService.UpdateNamespace:input_type -> gotocompany.siren.v1beta1.UpdateNamespaceRequest - 20, // 113: gotocompany.siren.v1beta1.SirenService.DeleteNamespace:input_type -> gotocompany.siren.v1beta1.DeleteNamespaceRequest - 24, // 114: gotocompany.siren.v1beta1.SirenService.ListSubscriptions:input_type -> gotocompany.siren.v1beta1.ListSubscriptionsRequest - 26, // 115: gotocompany.siren.v1beta1.SirenService.CreateSubscription:input_type -> gotocompany.siren.v1beta1.CreateSubscriptionRequest - 28, // 116: gotocompany.siren.v1beta1.SirenService.GetSubscription:input_type -> gotocompany.siren.v1beta1.GetSubscriptionRequest - 30, // 117: gotocompany.siren.v1beta1.SirenService.UpdateSubscription:input_type -> gotocompany.siren.v1beta1.UpdateSubscriptionRequest - 32, // 118: gotocompany.siren.v1beta1.SirenService.DeleteSubscription:input_type -> gotocompany.siren.v1beta1.DeleteSubscriptionRequest - 35, // 119: gotocompany.siren.v1beta1.SirenService.ListReceivers:input_type -> gotocompany.siren.v1beta1.ListReceiversRequest - 37, // 120: gotocompany.siren.v1beta1.SirenService.CreateReceiver:input_type -> gotocompany.siren.v1beta1.CreateReceiverRequest - 39, // 121: gotocompany.siren.v1beta1.SirenService.GetReceiver:input_type -> gotocompany.siren.v1beta1.GetReceiverRequest - 41, // 122: gotocompany.siren.v1beta1.SirenService.UpdateReceiver:input_type -> gotocompany.siren.v1beta1.UpdateReceiverRequest - 43, // 123: gotocompany.siren.v1beta1.SirenService.DeleteReceiver:input_type -> gotocompany.siren.v1beta1.DeleteReceiverRequest - 48, // 124: gotocompany.siren.v1beta1.SirenService.ListAlerts:input_type -> gotocompany.siren.v1beta1.ListAlertsRequest - 50, // 125: gotocompany.siren.v1beta1.SirenService.CreateAlerts:input_type -> gotocompany.siren.v1beta1.CreateAlertsRequest - 52, // 126: gotocompany.siren.v1beta1.SirenService.CreateAlertsWithNamespace:input_type -> gotocompany.siren.v1beta1.CreateAlertsWithNamespaceRequest - 58, // 127: gotocompany.siren.v1beta1.SirenService.ListRules:input_type -> gotocompany.siren.v1beta1.ListRulesRequest - 60, // 128: gotocompany.siren.v1beta1.SirenService.UpdateRule:input_type -> gotocompany.siren.v1beta1.UpdateRuleRequest - 64, // 129: gotocompany.siren.v1beta1.SirenService.ListTemplates:input_type -> gotocompany.siren.v1beta1.ListTemplatesRequest - 68, // 130: gotocompany.siren.v1beta1.SirenService.GetTemplate:input_type -> gotocompany.siren.v1beta1.GetTemplateRequest - 66, // 131: gotocompany.siren.v1beta1.SirenService.UpsertTemplate:input_type -> gotocompany.siren.v1beta1.UpsertTemplateRequest - 70, // 132: gotocompany.siren.v1beta1.SirenService.DeleteTemplate:input_type -> gotocompany.siren.v1beta1.DeleteTemplateRequest - 72, // 133: gotocompany.siren.v1beta1.SirenService.RenderTemplate:input_type -> gotocompany.siren.v1beta1.RenderTemplateRequest - 75, // 134: gotocompany.siren.v1beta1.SirenService.CreateSilence:input_type -> gotocompany.siren.v1beta1.CreateSilenceRequest - 77, // 135: gotocompany.siren.v1beta1.SirenService.ListSilences:input_type -> gotocompany.siren.v1beta1.ListSilencesRequest - 79, // 136: gotocompany.siren.v1beta1.SirenService.GetSilence:input_type -> gotocompany.siren.v1beta1.GetSilenceRequest - 81, // 137: gotocompany.siren.v1beta1.SirenService.ExpireSilence:input_type -> gotocompany.siren.v1beta1.ExpireSilenceRequest - 83, // 138: gotocompany.siren.v1beta1.SirenService.PostNotification:input_type -> gotocompany.siren.v1beta1.PostNotificationRequest - 85, // 139: gotocompany.siren.v1beta1.SirenService.PostBulkNotifications:input_type -> gotocompany.siren.v1beta1.PostBulkNotificationsRequest - 87, // 140: gotocompany.siren.v1beta1.SirenService.ListNotificationMessages:input_type -> gotocompany.siren.v1beta1.ListNotificationMessagesRequest - 90, // 141: gotocompany.siren.v1beta1.SirenService.ListNotifications:input_type -> gotocompany.siren.v1beta1.ListNotificationsRequest - 2, // 142: gotocompany.siren.v1beta1.SirenService.ListProviders:output_type -> gotocompany.siren.v1beta1.ListProvidersResponse - 4, // 143: gotocompany.siren.v1beta1.SirenService.CreateProvider:output_type -> gotocompany.siren.v1beta1.CreateProviderResponse - 6, // 144: gotocompany.siren.v1beta1.SirenService.GetProvider:output_type -> gotocompany.siren.v1beta1.GetProviderResponse - 8, // 145: gotocompany.siren.v1beta1.SirenService.UpdateProvider:output_type -> gotocompany.siren.v1beta1.UpdateProviderResponse - 10, // 146: gotocompany.siren.v1beta1.SirenService.DeleteProvider:output_type -> gotocompany.siren.v1beta1.DeleteProviderResponse - 46, // 147: gotocompany.siren.v1beta1.SirenService.NotifyReceiver:output_type -> gotocompany.siren.v1beta1.NotifyReceiverResponse - 13, // 148: gotocompany.siren.v1beta1.SirenService.ListNamespaces:output_type -> gotocompany.siren.v1beta1.ListNamespacesResponse - 15, // 149: gotocompany.siren.v1beta1.SirenService.CreateNamespace:output_type -> gotocompany.siren.v1beta1.CreateNamespaceResponse - 17, // 150: gotocompany.siren.v1beta1.SirenService.GetNamespace:output_type -> gotocompany.siren.v1beta1.GetNamespaceResponse - 19, // 151: gotocompany.siren.v1beta1.SirenService.UpdateNamespace:output_type -> gotocompany.siren.v1beta1.UpdateNamespaceResponse - 21, // 152: gotocompany.siren.v1beta1.SirenService.DeleteNamespace:output_type -> gotocompany.siren.v1beta1.DeleteNamespaceResponse - 25, // 153: gotocompany.siren.v1beta1.SirenService.ListSubscriptions:output_type -> gotocompany.siren.v1beta1.ListSubscriptionsResponse - 27, // 154: gotocompany.siren.v1beta1.SirenService.CreateSubscription:output_type -> gotocompany.siren.v1beta1.CreateSubscriptionResponse - 29, // 155: gotocompany.siren.v1beta1.SirenService.GetSubscription:output_type -> gotocompany.siren.v1beta1.GetSubscriptionResponse - 31, // 156: gotocompany.siren.v1beta1.SirenService.UpdateSubscription:output_type -> gotocompany.siren.v1beta1.UpdateSubscriptionResponse - 33, // 157: gotocompany.siren.v1beta1.SirenService.DeleteSubscription:output_type -> gotocompany.siren.v1beta1.DeleteSubscriptionResponse - 36, // 158: gotocompany.siren.v1beta1.SirenService.ListReceivers:output_type -> gotocompany.siren.v1beta1.ListReceiversResponse - 38, // 159: gotocompany.siren.v1beta1.SirenService.CreateReceiver:output_type -> gotocompany.siren.v1beta1.CreateReceiverResponse - 40, // 160: gotocompany.siren.v1beta1.SirenService.GetReceiver:output_type -> gotocompany.siren.v1beta1.GetReceiverResponse - 42, // 161: gotocompany.siren.v1beta1.SirenService.UpdateReceiver:output_type -> gotocompany.siren.v1beta1.UpdateReceiverResponse - 44, // 162: gotocompany.siren.v1beta1.SirenService.DeleteReceiver:output_type -> gotocompany.siren.v1beta1.DeleteReceiverResponse - 49, // 163: gotocompany.siren.v1beta1.SirenService.ListAlerts:output_type -> gotocompany.siren.v1beta1.ListAlertsResponse - 51, // 164: gotocompany.siren.v1beta1.SirenService.CreateAlerts:output_type -> gotocompany.siren.v1beta1.CreateAlertsResponse - 53, // 165: gotocompany.siren.v1beta1.SirenService.CreateAlertsWithNamespace:output_type -> gotocompany.siren.v1beta1.CreateAlertsWithNamespaceResponse - 59, // 166: gotocompany.siren.v1beta1.SirenService.ListRules:output_type -> gotocompany.siren.v1beta1.ListRulesResponse - 61, // 167: gotocompany.siren.v1beta1.SirenService.UpdateRule:output_type -> gotocompany.siren.v1beta1.UpdateRuleResponse - 65, // 168: gotocompany.siren.v1beta1.SirenService.ListTemplates:output_type -> gotocompany.siren.v1beta1.ListTemplatesResponse - 69, // 169: gotocompany.siren.v1beta1.SirenService.GetTemplate:output_type -> gotocompany.siren.v1beta1.GetTemplateResponse - 67, // 170: gotocompany.siren.v1beta1.SirenService.UpsertTemplate:output_type -> gotocompany.siren.v1beta1.UpsertTemplateResponse - 71, // 171: gotocompany.siren.v1beta1.SirenService.DeleteTemplate:output_type -> gotocompany.siren.v1beta1.DeleteTemplateResponse - 73, // 172: gotocompany.siren.v1beta1.SirenService.RenderTemplate:output_type -> gotocompany.siren.v1beta1.RenderTemplateResponse - 76, // 173: gotocompany.siren.v1beta1.SirenService.CreateSilence:output_type -> gotocompany.siren.v1beta1.CreateSilenceResponse - 78, // 174: gotocompany.siren.v1beta1.SirenService.ListSilences:output_type -> gotocompany.siren.v1beta1.ListSilencesResponse - 80, // 175: gotocompany.siren.v1beta1.SirenService.GetSilence:output_type -> gotocompany.siren.v1beta1.GetSilenceResponse - 82, // 176: gotocompany.siren.v1beta1.SirenService.ExpireSilence:output_type -> gotocompany.siren.v1beta1.ExpireSilenceResponse - 84, // 177: gotocompany.siren.v1beta1.SirenService.PostNotification:output_type -> gotocompany.siren.v1beta1.PostNotificationResponse - 86, // 178: gotocompany.siren.v1beta1.SirenService.PostBulkNotifications:output_type -> gotocompany.siren.v1beta1.PostBulkNotificationsResponse - 89, // 179: gotocompany.siren.v1beta1.SirenService.ListNotificationMessages:output_type -> gotocompany.siren.v1beta1.ListNotificationMessagesResponse - 93, // 180: gotocompany.siren.v1beta1.SirenService.ListNotifications:output_type -> gotocompany.siren.v1beta1.ListNotificationsResponse - 142, // [142:181] is the sub-list for method output_type - 103, // [103:142] is the sub-list for method input_type - 103, // [103:103] is the sub-list for extension type_name - 103, // [103:103] is the sub-list for extension extendee - 0, // [0:103] is the sub-list for field type_name + 114, // 37: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.match:type_name -> gotocompany.siren.v1beta1.UpdateSubscriptionRequest.MatchEntry + 135, // 38: gotocompany.siren.v1beta1.UpdateSubscriptionRequest.metadata:type_name -> google.protobuf.Struct + 115, // 39: gotocompany.siren.v1beta1.AddSubscriptionReceiverRequest.labels:type_name -> gotocompany.siren.v1beta1.AddSubscriptionReceiverRequest.LabelsEntry + 116, // 40: gotocompany.siren.v1beta1.ListSubscriptionReceiversRequest.labels:type_name -> gotocompany.siren.v1beta1.ListSubscriptionReceiversRequest.LabelsEntry + 37, // 41: gotocompany.siren.v1beta1.ListSubscriptionReceiversResponse.subscription_receivers:type_name -> gotocompany.siren.v1beta1.SubscriptionReceiverRelation + 117, // 42: gotocompany.siren.v1beta1.SubscriptionReceiverRelation.labels:type_name -> gotocompany.siren.v1beta1.SubscriptionReceiverRelation.LabelsEntry + 136, // 43: gotocompany.siren.v1beta1.SubscriptionReceiverRelation.created_at:type_name -> google.protobuf.Timestamp + 136, // 44: gotocompany.siren.v1beta1.SubscriptionReceiverRelation.updated_at:type_name -> google.protobuf.Timestamp + 118, // 45: gotocompany.siren.v1beta1.AddSubscriptionReceiverResponse.labels:type_name -> gotocompany.siren.v1beta1.AddSubscriptionReceiverResponse.LabelsEntry + 119, // 46: gotocompany.siren.v1beta1.UpdateSubscriptionReceiverRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateSubscriptionReceiverRequest.LabelsEntry + 120, // 47: gotocompany.siren.v1beta1.UpdateSubscriptionReceiverResponse.labels:type_name -> gotocompany.siren.v1beta1.UpdateSubscriptionReceiverResponse.LabelsEntry + 121, // 48: gotocompany.siren.v1beta1.Receiver.labels:type_name -> gotocompany.siren.v1beta1.Receiver.LabelsEntry + 135, // 49: gotocompany.siren.v1beta1.Receiver.configurations:type_name -> google.protobuf.Struct + 135, // 50: gotocompany.siren.v1beta1.Receiver.data:type_name -> google.protobuf.Struct + 136, // 51: gotocompany.siren.v1beta1.Receiver.created_at:type_name -> google.protobuf.Timestamp + 136, // 52: gotocompany.siren.v1beta1.Receiver.updated_at:type_name -> google.protobuf.Timestamp + 122, // 53: gotocompany.siren.v1beta1.ListReceiversRequest.labels:type_name -> gotocompany.siren.v1beta1.ListReceiversRequest.LabelsEntry + 43, // 54: gotocompany.siren.v1beta1.ListReceiversResponse.receivers:type_name -> gotocompany.siren.v1beta1.Receiver + 123, // 55: gotocompany.siren.v1beta1.CreateReceiverRequest.labels:type_name -> gotocompany.siren.v1beta1.CreateReceiverRequest.LabelsEntry + 135, // 56: gotocompany.siren.v1beta1.CreateReceiverRequest.configurations:type_name -> google.protobuf.Struct + 43, // 57: gotocompany.siren.v1beta1.GetReceiverResponse.receiver:type_name -> gotocompany.siren.v1beta1.Receiver + 124, // 58: gotocompany.siren.v1beta1.UpdateReceiverRequest.labels:type_name -> gotocompany.siren.v1beta1.UpdateReceiverRequest.LabelsEntry + 135, // 59: gotocompany.siren.v1beta1.UpdateReceiverRequest.configurations:type_name -> google.protobuf.Struct + 135, // 60: gotocompany.siren.v1beta1.NotifyReceiverRequest.payload:type_name -> google.protobuf.Struct + 136, // 61: gotocompany.siren.v1beta1.Alert.triggered_at:type_name -> google.protobuf.Timestamp + 136, // 62: gotocompany.siren.v1beta1.Alert.created_at:type_name -> google.protobuf.Timestamp + 136, // 63: gotocompany.siren.v1beta1.Alert.updated_at:type_name -> google.protobuf.Timestamp + 125, // 64: gotocompany.siren.v1beta1.Alert.annotations:type_name -> gotocompany.siren.v1beta1.Alert.AnnotationsEntry + 126, // 65: gotocompany.siren.v1beta1.Alert.labels:type_name -> gotocompany.siren.v1beta1.Alert.LabelsEntry + 56, // 66: gotocompany.siren.v1beta1.ListAlertsResponse.alerts:type_name -> gotocompany.siren.v1beta1.Alert + 135, // 67: gotocompany.siren.v1beta1.CreateAlertsRequest.body:type_name -> google.protobuf.Struct + 56, // 68: gotocompany.siren.v1beta1.CreateAlertsResponse.alerts:type_name -> gotocompany.siren.v1beta1.Alert + 135, // 69: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceRequest.body:type_name -> google.protobuf.Struct + 56, // 70: gotocompany.siren.v1beta1.CreateAlertsWithNamespaceResponse.alerts:type_name -> gotocompany.siren.v1beta1.Alert + 66, // 71: gotocompany.siren.v1beta1.Rule.variables:type_name -> gotocompany.siren.v1beta1.Variables + 136, // 72: gotocompany.siren.v1beta1.Rule.created_at:type_name -> google.protobuf.Timestamp + 136, // 73: gotocompany.siren.v1beta1.Rule.updated_at:type_name -> google.protobuf.Timestamp + 65, // 74: gotocompany.siren.v1beta1.ListRulesResponse.rules:type_name -> gotocompany.siren.v1beta1.Rule + 66, // 75: gotocompany.siren.v1beta1.UpdateRuleRequest.variables:type_name -> gotocompany.siren.v1beta1.Variables + 65, // 76: gotocompany.siren.v1beta1.UpdateRuleResponse.rule:type_name -> gotocompany.siren.v1beta1.Rule + 136, // 77: gotocompany.siren.v1beta1.Template.created_at:type_name -> google.protobuf.Timestamp + 136, // 78: gotocompany.siren.v1beta1.Template.updated_at:type_name -> google.protobuf.Timestamp + 71, // 79: gotocompany.siren.v1beta1.Template.variables:type_name -> gotocompany.siren.v1beta1.TemplateVariables + 72, // 80: gotocompany.siren.v1beta1.ListTemplatesResponse.templates:type_name -> gotocompany.siren.v1beta1.Template + 71, // 81: gotocompany.siren.v1beta1.UpsertTemplateRequest.variables:type_name -> gotocompany.siren.v1beta1.TemplateVariables + 72, // 82: gotocompany.siren.v1beta1.GetTemplateResponse.template:type_name -> gotocompany.siren.v1beta1.Template + 127, // 83: gotocompany.siren.v1beta1.RenderTemplateRequest.variables:type_name -> gotocompany.siren.v1beta1.RenderTemplateRequest.VariablesEntry + 135, // 84: gotocompany.siren.v1beta1.Silence.target_expression:type_name -> google.protobuf.Struct + 136, // 85: gotocompany.siren.v1beta1.Silence.created_at:type_name -> google.protobuf.Timestamp + 136, // 86: gotocompany.siren.v1beta1.Silence.updated_at:type_name -> google.protobuf.Timestamp + 136, // 87: gotocompany.siren.v1beta1.Silence.deleted_at:type_name -> google.protobuf.Timestamp + 135, // 88: gotocompany.siren.v1beta1.CreateSilenceRequest.target_expression:type_name -> google.protobuf.Struct + 128, // 89: gotocompany.siren.v1beta1.ListSilencesRequest.match:type_name -> gotocompany.siren.v1beta1.ListSilencesRequest.MatchEntry + 129, // 90: gotocompany.siren.v1beta1.ListSilencesRequest.subscription_match:type_name -> gotocompany.siren.v1beta1.ListSilencesRequest.SubscriptionMatchEntry + 83, // 91: gotocompany.siren.v1beta1.ListSilencesResponse.silences:type_name -> gotocompany.siren.v1beta1.Silence + 83, // 92: gotocompany.siren.v1beta1.GetSilenceResponse.silence:type_name -> gotocompany.siren.v1beta1.Silence + 135, // 93: gotocompany.siren.v1beta1.PostNotificationRequest.receivers:type_name -> google.protobuf.Struct + 135, // 94: gotocompany.siren.v1beta1.PostNotificationRequest.data:type_name -> google.protobuf.Struct + 130, // 95: gotocompany.siren.v1beta1.PostNotificationRequest.labels:type_name -> gotocompany.siren.v1beta1.PostNotificationRequest.LabelsEntry + 101, // 96: gotocompany.siren.v1beta1.PostBulkNotificationsRequest.notifications:type_name -> gotocompany.siren.v1beta1.Notification + 135, // 97: gotocompany.siren.v1beta1.NotificationMessage.details:type_name -> google.protobuf.Struct + 136, // 98: gotocompany.siren.v1beta1.NotificationMessage.expired_at:type_name -> google.protobuf.Timestamp + 136, // 99: gotocompany.siren.v1beta1.NotificationMessage.created_at:type_name -> google.protobuf.Timestamp + 136, // 100: gotocompany.siren.v1beta1.NotificationMessage.updated_at:type_name -> google.protobuf.Timestamp + 135, // 101: gotocompany.siren.v1beta1.NotificationMessage.configs:type_name -> google.protobuf.Struct + 97, // 102: gotocompany.siren.v1beta1.ListNotificationMessagesResponse.messages:type_name -> gotocompany.siren.v1beta1.NotificationMessage + 131, // 103: gotocompany.siren.v1beta1.ListNotificationsRequest.labels:type_name -> gotocompany.siren.v1beta1.ListNotificationsRequest.LabelsEntry + 132, // 104: gotocompany.siren.v1beta1.ListNotificationsRequest.receiver_selectors:type_name -> gotocompany.siren.v1beta1.ListNotificationsRequest.ReceiverSelectorsEntry + 133, // 105: gotocompany.siren.v1beta1.ReceiverSelector.receiver_selector:type_name -> gotocompany.siren.v1beta1.ReceiverSelector.ReceiverSelectorEntry + 135, // 106: gotocompany.siren.v1beta1.Notification.data:type_name -> google.protobuf.Struct + 134, // 107: gotocompany.siren.v1beta1.Notification.labels:type_name -> gotocompany.siren.v1beta1.Notification.LabelsEntry + 137, // 108: gotocompany.siren.v1beta1.Notification.valid_duration:type_name -> google.protobuf.Duration + 136, // 109: gotocompany.siren.v1beta1.Notification.create_at:type_name -> google.protobuf.Timestamp + 100, // 110: gotocompany.siren.v1beta1.Notification.receiver_selectors:type_name -> gotocompany.siren.v1beta1.ReceiverSelector + 101, // 111: gotocompany.siren.v1beta1.ListNotificationsResponse.notifications:type_name -> gotocompany.siren.v1beta1.Notification + 1, // 112: gotocompany.siren.v1beta1.SirenService.ListProviders:input_type -> gotocompany.siren.v1beta1.ListProvidersRequest + 3, // 113: gotocompany.siren.v1beta1.SirenService.CreateProvider:input_type -> gotocompany.siren.v1beta1.CreateProviderRequest + 5, // 114: gotocompany.siren.v1beta1.SirenService.GetProvider:input_type -> gotocompany.siren.v1beta1.GetProviderRequest + 7, // 115: gotocompany.siren.v1beta1.SirenService.UpdateProvider:input_type -> gotocompany.siren.v1beta1.UpdateProviderRequest + 9, // 116: gotocompany.siren.v1beta1.SirenService.DeleteProvider:input_type -> gotocompany.siren.v1beta1.DeleteProviderRequest + 54, // 117: gotocompany.siren.v1beta1.SirenService.NotifyReceiver:input_type -> gotocompany.siren.v1beta1.NotifyReceiverRequest + 12, // 118: gotocompany.siren.v1beta1.SirenService.ListNamespaces:input_type -> gotocompany.siren.v1beta1.ListNamespacesRequest + 14, // 119: gotocompany.siren.v1beta1.SirenService.CreateNamespace:input_type -> gotocompany.siren.v1beta1.CreateNamespaceRequest + 16, // 120: gotocompany.siren.v1beta1.SirenService.GetNamespace:input_type -> gotocompany.siren.v1beta1.GetNamespaceRequest + 18, // 121: gotocompany.siren.v1beta1.SirenService.UpdateNamespace:input_type -> gotocompany.siren.v1beta1.UpdateNamespaceRequest + 20, // 122: gotocompany.siren.v1beta1.SirenService.DeleteNamespace:input_type -> gotocompany.siren.v1beta1.DeleteNamespaceRequest + 24, // 123: gotocompany.siren.v1beta1.SirenService.ListSubscriptions:input_type -> gotocompany.siren.v1beta1.ListSubscriptionsRequest + 26, // 124: gotocompany.siren.v1beta1.SirenService.CreateSubscription:input_type -> gotocompany.siren.v1beta1.CreateSubscriptionRequest + 28, // 125: gotocompany.siren.v1beta1.SirenService.GetSubscription:input_type -> gotocompany.siren.v1beta1.GetSubscriptionRequest + 30, // 126: gotocompany.siren.v1beta1.SirenService.UpdateSubscription:input_type -> gotocompany.siren.v1beta1.UpdateSubscriptionRequest + 35, // 127: gotocompany.siren.v1beta1.SirenService.ListSubscriptionReceivers:input_type -> gotocompany.siren.v1beta1.ListSubscriptionReceiversRequest + 34, // 128: gotocompany.siren.v1beta1.SirenService.AddSubscriptionReceiver:input_type -> gotocompany.siren.v1beta1.AddSubscriptionReceiverRequest + 39, // 129: gotocompany.siren.v1beta1.SirenService.UpdateSubscriptionReceiver:input_type -> gotocompany.siren.v1beta1.UpdateSubscriptionReceiverRequest + 41, // 130: gotocompany.siren.v1beta1.SirenService.DeleteSubscriptionReceiver:input_type -> gotocompany.siren.v1beta1.DeleteSubscriptionReceiverRequest + 32, // 131: gotocompany.siren.v1beta1.SirenService.DeleteSubscription:input_type -> gotocompany.siren.v1beta1.DeleteSubscriptionRequest + 44, // 132: gotocompany.siren.v1beta1.SirenService.ListReceivers:input_type -> gotocompany.siren.v1beta1.ListReceiversRequest + 46, // 133: gotocompany.siren.v1beta1.SirenService.CreateReceiver:input_type -> gotocompany.siren.v1beta1.CreateReceiverRequest + 48, // 134: gotocompany.siren.v1beta1.SirenService.GetReceiver:input_type -> gotocompany.siren.v1beta1.GetReceiverRequest + 50, // 135: gotocompany.siren.v1beta1.SirenService.UpdateReceiver:input_type -> gotocompany.siren.v1beta1.UpdateReceiverRequest + 52, // 136: gotocompany.siren.v1beta1.SirenService.DeleteReceiver:input_type -> gotocompany.siren.v1beta1.DeleteReceiverRequest + 57, // 137: gotocompany.siren.v1beta1.SirenService.ListAlerts:input_type -> gotocompany.siren.v1beta1.ListAlertsRequest + 59, // 138: gotocompany.siren.v1beta1.SirenService.CreateAlerts:input_type -> gotocompany.siren.v1beta1.CreateAlertsRequest + 61, // 139: gotocompany.siren.v1beta1.SirenService.CreateAlertsWithNamespace:input_type -> gotocompany.siren.v1beta1.CreateAlertsWithNamespaceRequest + 67, // 140: gotocompany.siren.v1beta1.SirenService.ListRules:input_type -> gotocompany.siren.v1beta1.ListRulesRequest + 69, // 141: gotocompany.siren.v1beta1.SirenService.UpdateRule:input_type -> gotocompany.siren.v1beta1.UpdateRuleRequest + 73, // 142: gotocompany.siren.v1beta1.SirenService.ListTemplates:input_type -> gotocompany.siren.v1beta1.ListTemplatesRequest + 77, // 143: gotocompany.siren.v1beta1.SirenService.GetTemplate:input_type -> gotocompany.siren.v1beta1.GetTemplateRequest + 75, // 144: gotocompany.siren.v1beta1.SirenService.UpsertTemplate:input_type -> gotocompany.siren.v1beta1.UpsertTemplateRequest + 79, // 145: gotocompany.siren.v1beta1.SirenService.DeleteTemplate:input_type -> gotocompany.siren.v1beta1.DeleteTemplateRequest + 81, // 146: gotocompany.siren.v1beta1.SirenService.RenderTemplate:input_type -> gotocompany.siren.v1beta1.RenderTemplateRequest + 84, // 147: gotocompany.siren.v1beta1.SirenService.CreateSilence:input_type -> gotocompany.siren.v1beta1.CreateSilenceRequest + 86, // 148: gotocompany.siren.v1beta1.SirenService.ListSilences:input_type -> gotocompany.siren.v1beta1.ListSilencesRequest + 88, // 149: gotocompany.siren.v1beta1.SirenService.GetSilence:input_type -> gotocompany.siren.v1beta1.GetSilenceRequest + 90, // 150: gotocompany.siren.v1beta1.SirenService.ExpireSilence:input_type -> gotocompany.siren.v1beta1.ExpireSilenceRequest + 92, // 151: gotocompany.siren.v1beta1.SirenService.PostNotification:input_type -> gotocompany.siren.v1beta1.PostNotificationRequest + 94, // 152: gotocompany.siren.v1beta1.SirenService.PostBulkNotifications:input_type -> gotocompany.siren.v1beta1.PostBulkNotificationsRequest + 96, // 153: gotocompany.siren.v1beta1.SirenService.ListNotificationMessages:input_type -> gotocompany.siren.v1beta1.ListNotificationMessagesRequest + 99, // 154: gotocompany.siren.v1beta1.SirenService.ListNotifications:input_type -> gotocompany.siren.v1beta1.ListNotificationsRequest + 2, // 155: gotocompany.siren.v1beta1.SirenService.ListProviders:output_type -> gotocompany.siren.v1beta1.ListProvidersResponse + 4, // 156: gotocompany.siren.v1beta1.SirenService.CreateProvider:output_type -> gotocompany.siren.v1beta1.CreateProviderResponse + 6, // 157: gotocompany.siren.v1beta1.SirenService.GetProvider:output_type -> gotocompany.siren.v1beta1.GetProviderResponse + 8, // 158: gotocompany.siren.v1beta1.SirenService.UpdateProvider:output_type -> gotocompany.siren.v1beta1.UpdateProviderResponse + 10, // 159: gotocompany.siren.v1beta1.SirenService.DeleteProvider:output_type -> gotocompany.siren.v1beta1.DeleteProviderResponse + 55, // 160: gotocompany.siren.v1beta1.SirenService.NotifyReceiver:output_type -> gotocompany.siren.v1beta1.NotifyReceiverResponse + 13, // 161: gotocompany.siren.v1beta1.SirenService.ListNamespaces:output_type -> gotocompany.siren.v1beta1.ListNamespacesResponse + 15, // 162: gotocompany.siren.v1beta1.SirenService.CreateNamespace:output_type -> gotocompany.siren.v1beta1.CreateNamespaceResponse + 17, // 163: gotocompany.siren.v1beta1.SirenService.GetNamespace:output_type -> gotocompany.siren.v1beta1.GetNamespaceResponse + 19, // 164: gotocompany.siren.v1beta1.SirenService.UpdateNamespace:output_type -> gotocompany.siren.v1beta1.UpdateNamespaceResponse + 21, // 165: gotocompany.siren.v1beta1.SirenService.DeleteNamespace:output_type -> gotocompany.siren.v1beta1.DeleteNamespaceResponse + 25, // 166: gotocompany.siren.v1beta1.SirenService.ListSubscriptions:output_type -> gotocompany.siren.v1beta1.ListSubscriptionsResponse + 27, // 167: gotocompany.siren.v1beta1.SirenService.CreateSubscription:output_type -> gotocompany.siren.v1beta1.CreateSubscriptionResponse + 29, // 168: gotocompany.siren.v1beta1.SirenService.GetSubscription:output_type -> gotocompany.siren.v1beta1.GetSubscriptionResponse + 31, // 169: gotocompany.siren.v1beta1.SirenService.UpdateSubscription:output_type -> gotocompany.siren.v1beta1.UpdateSubscriptionResponse + 36, // 170: gotocompany.siren.v1beta1.SirenService.ListSubscriptionReceivers:output_type -> gotocompany.siren.v1beta1.ListSubscriptionReceiversResponse + 38, // 171: gotocompany.siren.v1beta1.SirenService.AddSubscriptionReceiver:output_type -> gotocompany.siren.v1beta1.AddSubscriptionReceiverResponse + 40, // 172: gotocompany.siren.v1beta1.SirenService.UpdateSubscriptionReceiver:output_type -> gotocompany.siren.v1beta1.UpdateSubscriptionReceiverResponse + 42, // 173: gotocompany.siren.v1beta1.SirenService.DeleteSubscriptionReceiver:output_type -> gotocompany.siren.v1beta1.DeleteSubscriptionReceiverResponse + 33, // 174: gotocompany.siren.v1beta1.SirenService.DeleteSubscription:output_type -> gotocompany.siren.v1beta1.DeleteSubscriptionResponse + 45, // 175: gotocompany.siren.v1beta1.SirenService.ListReceivers:output_type -> gotocompany.siren.v1beta1.ListReceiversResponse + 47, // 176: gotocompany.siren.v1beta1.SirenService.CreateReceiver:output_type -> gotocompany.siren.v1beta1.CreateReceiverResponse + 49, // 177: gotocompany.siren.v1beta1.SirenService.GetReceiver:output_type -> gotocompany.siren.v1beta1.GetReceiverResponse + 51, // 178: gotocompany.siren.v1beta1.SirenService.UpdateReceiver:output_type -> gotocompany.siren.v1beta1.UpdateReceiverResponse + 53, // 179: gotocompany.siren.v1beta1.SirenService.DeleteReceiver:output_type -> gotocompany.siren.v1beta1.DeleteReceiverResponse + 58, // 180: gotocompany.siren.v1beta1.SirenService.ListAlerts:output_type -> gotocompany.siren.v1beta1.ListAlertsResponse + 60, // 181: gotocompany.siren.v1beta1.SirenService.CreateAlerts:output_type -> gotocompany.siren.v1beta1.CreateAlertsResponse + 62, // 182: gotocompany.siren.v1beta1.SirenService.CreateAlertsWithNamespace:output_type -> gotocompany.siren.v1beta1.CreateAlertsWithNamespaceResponse + 68, // 183: gotocompany.siren.v1beta1.SirenService.ListRules:output_type -> gotocompany.siren.v1beta1.ListRulesResponse + 70, // 184: gotocompany.siren.v1beta1.SirenService.UpdateRule:output_type -> gotocompany.siren.v1beta1.UpdateRuleResponse + 74, // 185: gotocompany.siren.v1beta1.SirenService.ListTemplates:output_type -> gotocompany.siren.v1beta1.ListTemplatesResponse + 78, // 186: gotocompany.siren.v1beta1.SirenService.GetTemplate:output_type -> gotocompany.siren.v1beta1.GetTemplateResponse + 76, // 187: gotocompany.siren.v1beta1.SirenService.UpsertTemplate:output_type -> gotocompany.siren.v1beta1.UpsertTemplateResponse + 80, // 188: gotocompany.siren.v1beta1.SirenService.DeleteTemplate:output_type -> gotocompany.siren.v1beta1.DeleteTemplateResponse + 82, // 189: gotocompany.siren.v1beta1.SirenService.RenderTemplate:output_type -> gotocompany.siren.v1beta1.RenderTemplateResponse + 85, // 190: gotocompany.siren.v1beta1.SirenService.CreateSilence:output_type -> gotocompany.siren.v1beta1.CreateSilenceResponse + 87, // 191: gotocompany.siren.v1beta1.SirenService.ListSilences:output_type -> gotocompany.siren.v1beta1.ListSilencesResponse + 89, // 192: gotocompany.siren.v1beta1.SirenService.GetSilence:output_type -> gotocompany.siren.v1beta1.GetSilenceResponse + 91, // 193: gotocompany.siren.v1beta1.SirenService.ExpireSilence:output_type -> gotocompany.siren.v1beta1.ExpireSilenceResponse + 93, // 194: gotocompany.siren.v1beta1.SirenService.PostNotification:output_type -> gotocompany.siren.v1beta1.PostNotificationResponse + 95, // 195: gotocompany.siren.v1beta1.SirenService.PostBulkNotifications:output_type -> gotocompany.siren.v1beta1.PostBulkNotificationsResponse + 98, // 196: gotocompany.siren.v1beta1.SirenService.ListNotificationMessages:output_type -> gotocompany.siren.v1beta1.ListNotificationMessagesResponse + 102, // 197: gotocompany.siren.v1beta1.SirenService.ListNotifications:output_type -> gotocompany.siren.v1beta1.ListNotificationsResponse + 155, // [155:198] is the sub-list for method output_type + 112, // [112:155] is the sub-list for method input_type + 112, // [112:112] is the sub-list for extension type_name + 112, // [112:112] is the sub-list for extension extendee + 0, // [0:112] is the sub-list for field type_name } func init() { file_gotocompany_siren_v1beta1_siren_proto_init() } @@ -8131,7 +8888,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Receiver); i { + switch v := v.(*AddSubscriptionReceiverRequest); i { case 0: return &v.state case 1: @@ -8143,7 +8900,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReceiversRequest); i { + switch v := v.(*ListSubscriptionReceiversRequest); i { case 0: return &v.state case 1: @@ -8155,7 +8912,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReceiversResponse); i { + switch v := v.(*ListSubscriptionReceiversResponse); i { case 0: return &v.state case 1: @@ -8167,7 +8924,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateReceiverRequest); i { + switch v := v.(*SubscriptionReceiverRelation); i { case 0: return &v.state case 1: @@ -8179,7 +8936,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateReceiverResponse); i { + switch v := v.(*AddSubscriptionReceiverResponse); i { case 0: return &v.state case 1: @@ -8191,7 +8948,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReceiverRequest); i { + switch v := v.(*UpdateSubscriptionReceiverRequest); i { case 0: return &v.state case 1: @@ -8203,7 +8960,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReceiverResponse); i { + switch v := v.(*UpdateSubscriptionReceiverResponse); i { case 0: return &v.state case 1: @@ -8215,7 +8972,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateReceiverRequest); i { + switch v := v.(*DeleteSubscriptionReceiverRequest); i { case 0: return &v.state case 1: @@ -8227,7 +8984,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateReceiverResponse); i { + switch v := v.(*DeleteSubscriptionReceiverResponse); i { case 0: return &v.state case 1: @@ -8239,7 +8996,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteReceiverRequest); i { + switch v := v.(*Receiver); i { case 0: return &v.state case 1: @@ -8251,7 +9008,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteReceiverResponse); i { + switch v := v.(*ListReceiversRequest); i { case 0: return &v.state case 1: @@ -8263,7 +9020,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyReceiverRequest); i { + switch v := v.(*ListReceiversResponse); i { case 0: return &v.state case 1: @@ -8275,7 +9032,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyReceiverResponse); i { + switch v := v.(*CreateReceiverRequest); i { case 0: return &v.state case 1: @@ -8287,7 +9044,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Alert); i { + switch v := v.(*CreateReceiverResponse); i { case 0: return &v.state case 1: @@ -8299,7 +9056,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAlertsRequest); i { + switch v := v.(*GetReceiverRequest); i { case 0: return &v.state case 1: @@ -8311,7 +9068,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAlertsResponse); i { + switch v := v.(*GetReceiverResponse); i { case 0: return &v.state case 1: @@ -8323,7 +9080,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlertsRequest); i { + switch v := v.(*UpdateReceiverRequest); i { case 0: return &v.state case 1: @@ -8335,7 +9092,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlertsResponse); i { + switch v := v.(*UpdateReceiverResponse); i { case 0: return &v.state case 1: @@ -8347,7 +9104,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlertsWithNamespaceRequest); i { + switch v := v.(*DeleteReceiverRequest); i { case 0: return &v.state case 1: @@ -8359,7 +9116,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAlertsWithNamespaceResponse); i { + switch v := v.(*DeleteReceiverResponse); i { case 0: return &v.state case 1: @@ -8371,7 +9128,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Annotations); i { + switch v := v.(*NotifyReceiverRequest); i { case 0: return &v.state case 1: @@ -8383,7 +9140,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Labels); i { + switch v := v.(*NotifyReceiverResponse); i { case 0: return &v.state case 1: @@ -8395,7 +9152,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Rule); i { + switch v := v.(*Alert); i { case 0: return &v.state case 1: @@ -8407,7 +9164,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Variables); i { + switch v := v.(*ListAlertsRequest); i { case 0: return &v.state case 1: @@ -8419,7 +9176,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRulesRequest); i { + switch v := v.(*ListAlertsResponse); i { case 0: return &v.state case 1: @@ -8431,7 +9188,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRulesResponse); i { + switch v := v.(*CreateAlertsRequest); i { case 0: return &v.state case 1: @@ -8443,7 +9200,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateRuleRequest); i { + switch v := v.(*CreateAlertsResponse); i { case 0: return &v.state case 1: @@ -8455,7 +9212,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateRuleResponse); i { + switch v := v.(*CreateAlertsWithNamespaceRequest); i { case 0: return &v.state case 1: @@ -8467,7 +9224,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TemplateVariables); i { + switch v := v.(*CreateAlertsWithNamespaceResponse); i { case 0: return &v.state case 1: @@ -8479,7 +9236,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Template); i { + switch v := v.(*Annotations); i { case 0: return &v.state case 1: @@ -8491,7 +9248,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplatesRequest); i { + switch v := v.(*Labels); i { case 0: return &v.state case 1: @@ -8503,7 +9260,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplatesResponse); i { + switch v := v.(*Rule); i { case 0: return &v.state case 1: @@ -8515,7 +9272,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertTemplateRequest); i { + switch v := v.(*Variables); i { case 0: return &v.state case 1: @@ -8527,7 +9284,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertTemplateResponse); i { + switch v := v.(*ListRulesRequest); i { case 0: return &v.state case 1: @@ -8539,7 +9296,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateRequest); i { + switch v := v.(*ListRulesResponse); i { case 0: return &v.state case 1: @@ -8551,7 +9308,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateResponse); i { + switch v := v.(*UpdateRuleRequest); i { case 0: return &v.state case 1: @@ -8563,7 +9320,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateRequest); i { + switch v := v.(*UpdateRuleResponse); i { case 0: return &v.state case 1: @@ -8575,7 +9332,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateResponse); i { + switch v := v.(*TemplateVariables); i { case 0: return &v.state case 1: @@ -8587,7 +9344,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RenderTemplateRequest); i { + switch v := v.(*Template); i { case 0: return &v.state case 1: @@ -8599,7 +9356,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RenderTemplateResponse); i { + switch v := v.(*ListTemplatesRequest); i { case 0: return &v.state case 1: @@ -8611,7 +9368,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Silence); i { + switch v := v.(*ListTemplatesResponse); i { case 0: return &v.state case 1: @@ -8623,7 +9380,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSilenceRequest); i { + switch v := v.(*UpsertTemplateRequest); i { case 0: return &v.state case 1: @@ -8635,7 +9392,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSilenceResponse); i { + switch v := v.(*UpsertTemplateResponse); i { case 0: return &v.state case 1: @@ -8647,7 +9404,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSilencesRequest); i { + switch v := v.(*GetTemplateRequest); i { case 0: return &v.state case 1: @@ -8659,7 +9416,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSilencesResponse); i { + switch v := v.(*GetTemplateResponse); i { case 0: return &v.state case 1: @@ -8671,7 +9428,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSilenceRequest); i { + switch v := v.(*DeleteTemplateRequest); i { case 0: return &v.state case 1: @@ -8683,7 +9440,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSilenceResponse); i { + switch v := v.(*DeleteTemplateResponse); i { case 0: return &v.state case 1: @@ -8695,7 +9452,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpireSilenceRequest); i { + switch v := v.(*RenderTemplateRequest); i { case 0: return &v.state case 1: @@ -8707,7 +9464,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpireSilenceResponse); i { + switch v := v.(*RenderTemplateResponse); i { case 0: return &v.state case 1: @@ -8719,7 +9476,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostNotificationRequest); i { + switch v := v.(*Silence); i { case 0: return &v.state case 1: @@ -8731,7 +9488,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostNotificationResponse); i { + switch v := v.(*CreateSilenceRequest); i { case 0: return &v.state case 1: @@ -8743,7 +9500,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostBulkNotificationsRequest); i { + switch v := v.(*CreateSilenceResponse); i { case 0: return &v.state case 1: @@ -8755,7 +9512,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PostBulkNotificationsResponse); i { + switch v := v.(*ListSilencesRequest); i { case 0: return &v.state case 1: @@ -8767,7 +9524,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotificationMessagesRequest); i { + switch v := v.(*ListSilencesResponse); i { case 0: return &v.state case 1: @@ -8779,7 +9536,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotificationMessage); i { + switch v := v.(*GetSilenceRequest); i { case 0: return &v.state case 1: @@ -8791,7 +9548,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotificationMessagesResponse); i { + switch v := v.(*GetSilenceResponse); i { case 0: return &v.state case 1: @@ -8803,7 +9560,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotificationsRequest); i { + switch v := v.(*ExpireSilenceRequest); i { case 0: return &v.state case 1: @@ -8815,7 +9572,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReceiverSelector); i { + switch v := v.(*ExpireSilenceResponse); i { case 0: return &v.state case 1: @@ -8827,7 +9584,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Notification); i { + switch v := v.(*PostNotificationRequest); i { case 0: return &v.state case 1: @@ -8839,6 +9596,114 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { } } file_gotocompany_siren_v1beta1_siren_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostNotificationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostBulkNotificationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostBulkNotificationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNotificationMessagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotificationMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNotificationMessagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNotificationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReceiverSelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Notification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gotocompany_siren_v1beta1_siren_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNotificationsResponse); i { case 0: return &v.state @@ -8857,7 +9722,7 @@ func file_gotocompany_siren_v1beta1_siren_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gotocompany_siren_v1beta1_siren_proto_rawDesc, NumEnums: 0, - NumMessages: 120, + NumMessages: 135, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gotocompany/siren/v1beta1/siren.pb.gw.go b/proto/gotocompany/siren/v1beta1/siren.pb.gw.go index 73e9e5f1..f7a9d0c7 100644 --- a/proto/gotocompany/siren/v1beta1/siren.pb.gw.go +++ b/proto/gotocompany/siren/v1beta1/siren.pb.gw.go @@ -755,6 +755,304 @@ func local_request_SirenService_UpdateSubscription_0(ctx context.Context, marsha } +var ( + filter_SirenService_ListSubscriptionReceivers_0 = &utilities.DoubleArray{Encoding: map[string]int{"subscription_id": 0, "subscriptionId": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} +) + +func request_SirenService_ListSubscriptionReceivers_0(ctx context.Context, marshaler runtime.Marshaler, client SirenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListSubscriptionReceiversRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SirenService_ListSubscriptionReceivers_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListSubscriptionReceivers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SirenService_ListSubscriptionReceivers_0(ctx context.Context, marshaler runtime.Marshaler, server SirenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListSubscriptionReceiversRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SirenService_ListSubscriptionReceivers_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListSubscriptionReceivers(ctx, &protoReq) + return msg, metadata, err + +} + +func request_SirenService_AddSubscriptionReceiver_0(ctx context.Context, marshaler runtime.Marshaler, client SirenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddSubscriptionReceiverRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + msg, err := client.AddSubscriptionReceiver(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SirenService_AddSubscriptionReceiver_0(ctx context.Context, marshaler runtime.Marshaler, server SirenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddSubscriptionReceiverRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + msg, err := server.AddSubscriptionReceiver(ctx, &protoReq) + return msg, metadata, err + +} + +func request_SirenService_UpdateSubscriptionReceiver_0(ctx context.Context, marshaler runtime.Marshaler, client SirenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UpdateSubscriptionReceiverRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + val, ok = pathParams["receiver_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "receiver_id") + } + + protoReq.ReceiverId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_id", err) + } + + msg, err := client.UpdateSubscriptionReceiver(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SirenService_UpdateSubscriptionReceiver_0(ctx context.Context, marshaler runtime.Marshaler, server SirenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UpdateSubscriptionReceiverRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + val, ok = pathParams["receiver_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "receiver_id") + } + + protoReq.ReceiverId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_id", err) + } + + msg, err := server.UpdateSubscriptionReceiver(ctx, &protoReq) + return msg, metadata, err + +} + +func request_SirenService_DeleteSubscriptionReceiver_0(ctx context.Context, marshaler runtime.Marshaler, client SirenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteSubscriptionReceiverRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + val, ok = pathParams["receiver_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "receiver_id") + } + + protoReq.ReceiverId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_id", err) + } + + msg, err := client.DeleteSubscriptionReceiver(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_SirenService_DeleteSubscriptionReceiver_0(ctx context.Context, marshaler runtime.Marshaler, server SirenServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteSubscriptionReceiverRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["subscription_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "subscription_id") + } + + protoReq.SubscriptionId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "subscription_id", err) + } + + val, ok = pathParams["receiver_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "receiver_id") + } + + protoReq.ReceiverId, err = runtime.Uint64(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_id", err) + } + + msg, err := server.DeleteSubscriptionReceiver(ctx, &protoReq) + return msg, metadata, err + +} + func request_SirenService_DeleteSubscription_0(ctx context.Context, marshaler runtime.Marshaler, client SirenServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq DeleteSubscriptionRequest var metadata runtime.ServerMetadata @@ -2358,6 +2656,106 @@ func RegisterSirenServiceHandlerServer(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_SirenService_ListSubscriptionReceivers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/ListSubscriptionReceivers", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SirenService_ListSubscriptionReceivers_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_ListSubscriptionReceivers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_SirenService_AddSubscriptionReceiver_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/AddSubscriptionReceiver", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SirenService_AddSubscriptionReceiver_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_AddSubscriptionReceiver_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_SirenService_UpdateSubscriptionReceiver_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/UpdateSubscriptionReceiver", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers/{receiver_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SirenService_UpdateSubscriptionReceiver_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_UpdateSubscriptionReceiver_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_SirenService_DeleteSubscriptionReceiver_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/DeleteSubscriptionReceiver", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers/{receiver_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_SirenService_DeleteSubscriptionReceiver_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_DeleteSubscriptionReceiver_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("DELETE", pattern_SirenService_DeleteSubscription_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3329,6 +3727,94 @@ func RegisterSirenServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("GET", pattern_SirenService_ListSubscriptionReceivers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/ListSubscriptionReceivers", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SirenService_ListSubscriptionReceivers_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_ListSubscriptionReceivers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_SirenService_AddSubscriptionReceiver_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/AddSubscriptionReceiver", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SirenService_AddSubscriptionReceiver_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_AddSubscriptionReceiver_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("PUT", pattern_SirenService_UpdateSubscriptionReceiver_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/UpdateSubscriptionReceiver", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers/{receiver_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SirenService_UpdateSubscriptionReceiver_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_UpdateSubscriptionReceiver_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_SirenService_DeleteSubscriptionReceiver_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/gotocompany.siren.v1beta1.SirenService/DeleteSubscriptionReceiver", runtime.WithHTTPPathPattern("/v1beta1/subscriptions/{subscription_id}/receivers/{receiver_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_SirenService_DeleteSubscriptionReceiver_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_SirenService_DeleteSubscriptionReceiver_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("DELETE", pattern_SirenService_DeleteSubscription_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3891,6 +4377,14 @@ var ( pattern_SirenService_UpdateSubscription_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1beta1", "subscriptions", "id"}, "")) + pattern_SirenService_ListSubscriptionReceivers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1beta1", "subscriptions", "subscription_id", "receivers"}, "")) + + pattern_SirenService_AddSubscriptionReceiver_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1beta1", "subscriptions", "subscription_id", "receivers"}, "")) + + pattern_SirenService_UpdateSubscriptionReceiver_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1beta1", "subscriptions", "subscription_id", "receivers", "receiver_id"}, "")) + + pattern_SirenService_DeleteSubscriptionReceiver_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1beta1", "subscriptions", "subscription_id", "receivers", "receiver_id"}, "")) + pattern_SirenService_DeleteSubscription_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1beta1", "subscriptions", "id"}, "")) pattern_SirenService_ListReceivers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1beta1", "receivers"}, "")) @@ -3971,6 +4465,14 @@ var ( forward_SirenService_UpdateSubscription_0 = runtime.ForwardResponseMessage + forward_SirenService_ListSubscriptionReceivers_0 = runtime.ForwardResponseMessage + + forward_SirenService_AddSubscriptionReceiver_0 = runtime.ForwardResponseMessage + + forward_SirenService_UpdateSubscriptionReceiver_0 = runtime.ForwardResponseMessage + + forward_SirenService_DeleteSubscriptionReceiver_0 = runtime.ForwardResponseMessage + forward_SirenService_DeleteSubscription_0 = runtime.ForwardResponseMessage forward_SirenService_ListReceivers_0 = runtime.ForwardResponseMessage diff --git a/proto/gotocompany/siren/v1beta1/siren.pb.validate.go b/proto/gotocompany/siren/v1beta1/siren.pb.validate.go index 1b504d9b..78f8e2d0 100644 --- a/proto/gotocompany/siren/v1beta1/siren.pb.validate.go +++ b/proto/gotocompany/siren/v1beta1/siren.pb.validate.go @@ -4548,6 +4548,1075 @@ var _ interface { ErrorName() string } = DeleteSubscriptionResponseValidationError{} +// Validate checks the field values on AddSubscriptionReceiverRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *AddSubscriptionReceiverRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddSubscriptionReceiverRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// AddSubscriptionReceiverRequestMultiError, or nil if none found. +func (m *AddSubscriptionReceiverRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *AddSubscriptionReceiverRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for ReceiverId + + // no validation rules for Labels + + if len(errors) > 0 { + return AddSubscriptionReceiverRequestMultiError(errors) + } + + return nil +} + +// AddSubscriptionReceiverRequestMultiError is an error wrapping multiple +// validation errors returned by AddSubscriptionReceiverRequest.ValidateAll() +// if the designated constraints aren't met. +type AddSubscriptionReceiverRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddSubscriptionReceiverRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddSubscriptionReceiverRequestMultiError) AllErrors() []error { return m } + +// AddSubscriptionReceiverRequestValidationError is the validation error +// returned by AddSubscriptionReceiverRequest.Validate if the designated +// constraints aren't met. +type AddSubscriptionReceiverRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AddSubscriptionReceiverRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AddSubscriptionReceiverRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AddSubscriptionReceiverRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AddSubscriptionReceiverRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AddSubscriptionReceiverRequestValidationError) ErrorName() string { + return "AddSubscriptionReceiverRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e AddSubscriptionReceiverRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAddSubscriptionReceiverRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AddSubscriptionReceiverRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AddSubscriptionReceiverRequestValidationError{} + +// Validate checks the field values on ListSubscriptionReceiversRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *ListSubscriptionReceiversRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListSubscriptionReceiversRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListSubscriptionReceiversRequestMultiError, or nil if none found. +func (m *ListSubscriptionReceiversRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListSubscriptionReceiversRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for Labels + + if len(errors) > 0 { + return ListSubscriptionReceiversRequestMultiError(errors) + } + + return nil +} + +// ListSubscriptionReceiversRequestMultiError is an error wrapping multiple +// validation errors returned by +// ListSubscriptionReceiversRequest.ValidateAll() if the designated +// constraints aren't met. +type ListSubscriptionReceiversRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListSubscriptionReceiversRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListSubscriptionReceiversRequestMultiError) AllErrors() []error { return m } + +// ListSubscriptionReceiversRequestValidationError is the validation error +// returned by ListSubscriptionReceiversRequest.Validate if the designated +// constraints aren't met. +type ListSubscriptionReceiversRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListSubscriptionReceiversRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListSubscriptionReceiversRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListSubscriptionReceiversRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListSubscriptionReceiversRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListSubscriptionReceiversRequestValidationError) ErrorName() string { + return "ListSubscriptionReceiversRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListSubscriptionReceiversRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListSubscriptionReceiversRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListSubscriptionReceiversRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListSubscriptionReceiversRequestValidationError{} + +// Validate checks the field values on ListSubscriptionReceiversResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *ListSubscriptionReceiversResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListSubscriptionReceiversResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// ListSubscriptionReceiversResponseMultiError, or nil if none found. +func (m *ListSubscriptionReceiversResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListSubscriptionReceiversResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetSubscriptionReceivers() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListSubscriptionReceiversResponseValidationError{ + field: fmt.Sprintf("SubscriptionReceivers[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListSubscriptionReceiversResponseValidationError{ + field: fmt.Sprintf("SubscriptionReceivers[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListSubscriptionReceiversResponseValidationError{ + field: fmt.Sprintf("SubscriptionReceivers[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return ListSubscriptionReceiversResponseMultiError(errors) + } + + return nil +} + +// ListSubscriptionReceiversResponseMultiError is an error wrapping multiple +// validation errors returned by +// ListSubscriptionReceiversResponse.ValidateAll() if the designated +// constraints aren't met. +type ListSubscriptionReceiversResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListSubscriptionReceiversResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListSubscriptionReceiversResponseMultiError) AllErrors() []error { return m } + +// ListSubscriptionReceiversResponseValidationError is the validation error +// returned by ListSubscriptionReceiversResponse.Validate if the designated +// constraints aren't met. +type ListSubscriptionReceiversResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListSubscriptionReceiversResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListSubscriptionReceiversResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListSubscriptionReceiversResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListSubscriptionReceiversResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListSubscriptionReceiversResponseValidationError) ErrorName() string { + return "ListSubscriptionReceiversResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ListSubscriptionReceiversResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListSubscriptionReceiversResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListSubscriptionReceiversResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListSubscriptionReceiversResponseValidationError{} + +// Validate checks the field values on SubscriptionReceiverRelation with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *SubscriptionReceiverRelation) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SubscriptionReceiverRelation with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// SubscriptionReceiverRelationMultiError, or nil if none found. +func (m *SubscriptionReceiverRelation) ValidateAll() error { + return m.validate(true) +} + +func (m *SubscriptionReceiverRelation) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for ReceiverId + + // no validation rules for Labels + + if all { + switch v := interface{}(m.GetCreatedAt()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubscriptionReceiverRelationValidationError{ + field: "CreatedAt", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubscriptionReceiverRelationValidationError{ + field: "CreatedAt", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreatedAt()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SubscriptionReceiverRelationValidationError{ + field: "CreatedAt", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetUpdatedAt()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubscriptionReceiverRelationValidationError{ + field: "UpdatedAt", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubscriptionReceiverRelationValidationError{ + field: "UpdatedAt", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdatedAt()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return SubscriptionReceiverRelationValidationError{ + field: "UpdatedAt", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return SubscriptionReceiverRelationMultiError(errors) + } + + return nil +} + +// SubscriptionReceiverRelationMultiError is an error wrapping multiple +// validation errors returned by SubscriptionReceiverRelation.ValidateAll() if +// the designated constraints aren't met. +type SubscriptionReceiverRelationMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SubscriptionReceiverRelationMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SubscriptionReceiverRelationMultiError) AllErrors() []error { return m } + +// SubscriptionReceiverRelationValidationError is the validation error returned +// by SubscriptionReceiverRelation.Validate if the designated constraints +// aren't met. +type SubscriptionReceiverRelationValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SubscriptionReceiverRelationValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SubscriptionReceiverRelationValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SubscriptionReceiverRelationValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SubscriptionReceiverRelationValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SubscriptionReceiverRelationValidationError) ErrorName() string { + return "SubscriptionReceiverRelationValidationError" +} + +// Error satisfies the builtin error interface +func (e SubscriptionReceiverRelationValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sSubscriptionReceiverRelation.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SubscriptionReceiverRelationValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SubscriptionReceiverRelationValidationError{} + +// Validate checks the field values on AddSubscriptionReceiverResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *AddSubscriptionReceiverResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddSubscriptionReceiverResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// AddSubscriptionReceiverResponseMultiError, or nil if none found. +func (m *AddSubscriptionReceiverResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *AddSubscriptionReceiverResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for ReceiverId + + // no validation rules for Labels + + if len(errors) > 0 { + return AddSubscriptionReceiverResponseMultiError(errors) + } + + return nil +} + +// AddSubscriptionReceiverResponseMultiError is an error wrapping multiple +// validation errors returned by AddSubscriptionReceiverResponse.ValidateAll() +// if the designated constraints aren't met. +type AddSubscriptionReceiverResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddSubscriptionReceiverResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddSubscriptionReceiverResponseMultiError) AllErrors() []error { return m } + +// AddSubscriptionReceiverResponseValidationError is the validation error +// returned by AddSubscriptionReceiverResponse.Validate if the designated +// constraints aren't met. +type AddSubscriptionReceiverResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AddSubscriptionReceiverResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AddSubscriptionReceiverResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AddSubscriptionReceiverResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AddSubscriptionReceiverResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AddSubscriptionReceiverResponseValidationError) ErrorName() string { + return "AddSubscriptionReceiverResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e AddSubscriptionReceiverResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAddSubscriptionReceiverResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AddSubscriptionReceiverResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AddSubscriptionReceiverResponseValidationError{} + +// Validate checks the field values on UpdateSubscriptionReceiverRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *UpdateSubscriptionReceiverRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateSubscriptionReceiverRequest +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// UpdateSubscriptionReceiverRequestMultiError, or nil if none found. +func (m *UpdateSubscriptionReceiverRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateSubscriptionReceiverRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for ReceiverId + + // no validation rules for Labels + + if len(errors) > 0 { + return UpdateSubscriptionReceiverRequestMultiError(errors) + } + + return nil +} + +// UpdateSubscriptionReceiverRequestMultiError is an error wrapping multiple +// validation errors returned by +// UpdateSubscriptionReceiverRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateSubscriptionReceiverRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateSubscriptionReceiverRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateSubscriptionReceiverRequestMultiError) AllErrors() []error { return m } + +// UpdateSubscriptionReceiverRequestValidationError is the validation error +// returned by UpdateSubscriptionReceiverRequest.Validate if the designated +// constraints aren't met. +type UpdateSubscriptionReceiverRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateSubscriptionReceiverRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateSubscriptionReceiverRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateSubscriptionReceiverRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateSubscriptionReceiverRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateSubscriptionReceiverRequestValidationError) ErrorName() string { + return "UpdateSubscriptionReceiverRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateSubscriptionReceiverRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateSubscriptionReceiverRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateSubscriptionReceiverRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateSubscriptionReceiverRequestValidationError{} + +// Validate checks the field values on UpdateSubscriptionReceiverResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *UpdateSubscriptionReceiverResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateSubscriptionReceiverResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// UpdateSubscriptionReceiverResponseMultiError, or nil if none found. +func (m *UpdateSubscriptionReceiverResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateSubscriptionReceiverResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for ReceiverId + + // no validation rules for Labels + + if len(errors) > 0 { + return UpdateSubscriptionReceiverResponseMultiError(errors) + } + + return nil +} + +// UpdateSubscriptionReceiverResponseMultiError is an error wrapping multiple +// validation errors returned by +// UpdateSubscriptionReceiverResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateSubscriptionReceiverResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateSubscriptionReceiverResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateSubscriptionReceiverResponseMultiError) AllErrors() []error { return m } + +// UpdateSubscriptionReceiverResponseValidationError is the validation error +// returned by UpdateSubscriptionReceiverResponse.Validate if the designated +// constraints aren't met. +type UpdateSubscriptionReceiverResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateSubscriptionReceiverResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateSubscriptionReceiverResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateSubscriptionReceiverResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateSubscriptionReceiverResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateSubscriptionReceiverResponseValidationError) ErrorName() string { + return "UpdateSubscriptionReceiverResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateSubscriptionReceiverResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateSubscriptionReceiverResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateSubscriptionReceiverResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateSubscriptionReceiverResponseValidationError{} + +// Validate checks the field values on DeleteSubscriptionReceiverRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *DeleteSubscriptionReceiverRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteSubscriptionReceiverRequest +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// DeleteSubscriptionReceiverRequestMultiError, or nil if none found. +func (m *DeleteSubscriptionReceiverRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteSubscriptionReceiverRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SubscriptionId + + // no validation rules for ReceiverId + + if len(errors) > 0 { + return DeleteSubscriptionReceiverRequestMultiError(errors) + } + + return nil +} + +// DeleteSubscriptionReceiverRequestMultiError is an error wrapping multiple +// validation errors returned by +// DeleteSubscriptionReceiverRequest.ValidateAll() if the designated +// constraints aren't met. +type DeleteSubscriptionReceiverRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteSubscriptionReceiverRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteSubscriptionReceiverRequestMultiError) AllErrors() []error { return m } + +// DeleteSubscriptionReceiverRequestValidationError is the validation error +// returned by DeleteSubscriptionReceiverRequest.Validate if the designated +// constraints aren't met. +type DeleteSubscriptionReceiverRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteSubscriptionReceiverRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteSubscriptionReceiverRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteSubscriptionReceiverRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteSubscriptionReceiverRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteSubscriptionReceiverRequestValidationError) ErrorName() string { + return "DeleteSubscriptionReceiverRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteSubscriptionReceiverRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteSubscriptionReceiverRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteSubscriptionReceiverRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteSubscriptionReceiverRequestValidationError{} + +// Validate checks the field values on DeleteSubscriptionReceiverResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *DeleteSubscriptionReceiverResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteSubscriptionReceiverResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// DeleteSubscriptionReceiverResponseMultiError, or nil if none found. +func (m *DeleteSubscriptionReceiverResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteSubscriptionReceiverResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return DeleteSubscriptionReceiverResponseMultiError(errors) + } + + return nil +} + +// DeleteSubscriptionReceiverResponseMultiError is an error wrapping multiple +// validation errors returned by +// DeleteSubscriptionReceiverResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteSubscriptionReceiverResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteSubscriptionReceiverResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteSubscriptionReceiverResponseMultiError) AllErrors() []error { return m } + +// DeleteSubscriptionReceiverResponseValidationError is the validation error +// returned by DeleteSubscriptionReceiverResponse.Validate if the designated +// constraints aren't met. +type DeleteSubscriptionReceiverResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteSubscriptionReceiverResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteSubscriptionReceiverResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteSubscriptionReceiverResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteSubscriptionReceiverResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteSubscriptionReceiverResponseValidationError) ErrorName() string { + return "DeleteSubscriptionReceiverResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteSubscriptionReceiverResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeleteSubscriptionReceiverResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteSubscriptionReceiverResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteSubscriptionReceiverResponseValidationError{} + // Validate checks the field values on Receiver with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/proto/gotocompany/siren/v1beta1/siren_grpc.pb.go b/proto/gotocompany/siren/v1beta1/siren_grpc.pb.go index d005e7a1..cd41d960 100644 --- a/proto/gotocompany/siren/v1beta1/siren_grpc.pb.go +++ b/proto/gotocompany/siren/v1beta1/siren_grpc.pb.go @@ -38,6 +38,10 @@ type SirenServiceClient interface { CreateSubscription(ctx context.Context, in *CreateSubscriptionRequest, opts ...grpc.CallOption) (*CreateSubscriptionResponse, error) GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*GetSubscriptionResponse, error) UpdateSubscription(ctx context.Context, in *UpdateSubscriptionRequest, opts ...grpc.CallOption) (*UpdateSubscriptionResponse, error) + ListSubscriptionReceivers(ctx context.Context, in *ListSubscriptionReceiversRequest, opts ...grpc.CallOption) (*ListSubscriptionReceiversResponse, error) + AddSubscriptionReceiver(ctx context.Context, in *AddSubscriptionReceiverRequest, opts ...grpc.CallOption) (*AddSubscriptionReceiverResponse, error) + UpdateSubscriptionReceiver(ctx context.Context, in *UpdateSubscriptionReceiverRequest, opts ...grpc.CallOption) (*UpdateSubscriptionReceiverResponse, error) + DeleteSubscriptionReceiver(ctx context.Context, in *DeleteSubscriptionReceiverRequest, opts ...grpc.CallOption) (*DeleteSubscriptionReceiverResponse, error) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*DeleteSubscriptionResponse, error) ListReceivers(ctx context.Context, in *ListReceiversRequest, opts ...grpc.CallOption) (*ListReceiversResponse, error) CreateReceiver(ctx context.Context, in *CreateReceiverRequest, opts ...grpc.CallOption) (*CreateReceiverResponse, error) @@ -208,6 +212,42 @@ func (c *sirenServiceClient) UpdateSubscription(ctx context.Context, in *UpdateS return out, nil } +func (c *sirenServiceClient) ListSubscriptionReceivers(ctx context.Context, in *ListSubscriptionReceiversRequest, opts ...grpc.CallOption) (*ListSubscriptionReceiversResponse, error) { + out := new(ListSubscriptionReceiversResponse) + err := c.cc.Invoke(ctx, "/gotocompany.siren.v1beta1.SirenService/ListSubscriptionReceivers", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sirenServiceClient) AddSubscriptionReceiver(ctx context.Context, in *AddSubscriptionReceiverRequest, opts ...grpc.CallOption) (*AddSubscriptionReceiverResponse, error) { + out := new(AddSubscriptionReceiverResponse) + err := c.cc.Invoke(ctx, "/gotocompany.siren.v1beta1.SirenService/AddSubscriptionReceiver", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sirenServiceClient) UpdateSubscriptionReceiver(ctx context.Context, in *UpdateSubscriptionReceiverRequest, opts ...grpc.CallOption) (*UpdateSubscriptionReceiverResponse, error) { + out := new(UpdateSubscriptionReceiverResponse) + err := c.cc.Invoke(ctx, "/gotocompany.siren.v1beta1.SirenService/UpdateSubscriptionReceiver", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *sirenServiceClient) DeleteSubscriptionReceiver(ctx context.Context, in *DeleteSubscriptionReceiverRequest, opts ...grpc.CallOption) (*DeleteSubscriptionReceiverResponse, error) { + out := new(DeleteSubscriptionReceiverResponse) + err := c.cc.Invoke(ctx, "/gotocompany.siren.v1beta1.SirenService/DeleteSubscriptionReceiver", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *sirenServiceClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*DeleteSubscriptionResponse, error) { out := new(DeleteSubscriptionResponse) err := c.cc.Invoke(ctx, "/gotocompany.siren.v1beta1.SirenService/DeleteSubscription", in, out, opts...) @@ -444,6 +484,10 @@ type SirenServiceServer interface { CreateSubscription(context.Context, *CreateSubscriptionRequest) (*CreateSubscriptionResponse, error) GetSubscription(context.Context, *GetSubscriptionRequest) (*GetSubscriptionResponse, error) UpdateSubscription(context.Context, *UpdateSubscriptionRequest) (*UpdateSubscriptionResponse, error) + ListSubscriptionReceivers(context.Context, *ListSubscriptionReceiversRequest) (*ListSubscriptionReceiversResponse, error) + AddSubscriptionReceiver(context.Context, *AddSubscriptionReceiverRequest) (*AddSubscriptionReceiverResponse, error) + UpdateSubscriptionReceiver(context.Context, *UpdateSubscriptionReceiverRequest) (*UpdateSubscriptionReceiverResponse, error) + DeleteSubscriptionReceiver(context.Context, *DeleteSubscriptionReceiverRequest) (*DeleteSubscriptionReceiverResponse, error) DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*DeleteSubscriptionResponse, error) ListReceivers(context.Context, *ListReceiversRequest) (*ListReceiversResponse, error) CreateReceiver(context.Context, *CreateReceiverRequest) (*CreateReceiverResponse, error) @@ -520,6 +564,18 @@ func (UnimplementedSirenServiceServer) GetSubscription(context.Context, *GetSubs func (UnimplementedSirenServiceServer) UpdateSubscription(context.Context, *UpdateSubscriptionRequest) (*UpdateSubscriptionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateSubscription not implemented") } +func (UnimplementedSirenServiceServer) ListSubscriptionReceivers(context.Context, *ListSubscriptionReceiversRequest) (*ListSubscriptionReceiversResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListSubscriptionReceivers not implemented") +} +func (UnimplementedSirenServiceServer) AddSubscriptionReceiver(context.Context, *AddSubscriptionReceiverRequest) (*AddSubscriptionReceiverResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddSubscriptionReceiver not implemented") +} +func (UnimplementedSirenServiceServer) UpdateSubscriptionReceiver(context.Context, *UpdateSubscriptionReceiverRequest) (*UpdateSubscriptionReceiverResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateSubscriptionReceiver not implemented") +} +func (UnimplementedSirenServiceServer) DeleteSubscriptionReceiver(context.Context, *DeleteSubscriptionReceiverRequest) (*DeleteSubscriptionReceiverResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteSubscriptionReceiver not implemented") +} func (UnimplementedSirenServiceServer) DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*DeleteSubscriptionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteSubscription not implemented") } @@ -875,6 +931,78 @@ func _SirenService_UpdateSubscription_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _SirenService_ListSubscriptionReceivers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSubscriptionReceiversRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SirenServiceServer).ListSubscriptionReceivers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gotocompany.siren.v1beta1.SirenService/ListSubscriptionReceivers", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SirenServiceServer).ListSubscriptionReceivers(ctx, req.(*ListSubscriptionReceiversRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SirenService_AddSubscriptionReceiver_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddSubscriptionReceiverRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SirenServiceServer).AddSubscriptionReceiver(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gotocompany.siren.v1beta1.SirenService/AddSubscriptionReceiver", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SirenServiceServer).AddSubscriptionReceiver(ctx, req.(*AddSubscriptionReceiverRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SirenService_UpdateSubscriptionReceiver_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSubscriptionReceiverRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SirenServiceServer).UpdateSubscriptionReceiver(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gotocompany.siren.v1beta1.SirenService/UpdateSubscriptionReceiver", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SirenServiceServer).UpdateSubscriptionReceiver(ctx, req.(*UpdateSubscriptionReceiverRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SirenService_DeleteSubscriptionReceiver_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteSubscriptionReceiverRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SirenServiceServer).DeleteSubscriptionReceiver(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gotocompany.siren.v1beta1.SirenService/DeleteSubscriptionReceiver", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SirenServiceServer).DeleteSubscriptionReceiver(ctx, req.(*DeleteSubscriptionReceiverRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _SirenService_DeleteSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteSubscriptionRequest) if err := dec(in); err != nil { @@ -1374,6 +1502,22 @@ var SirenService_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateSubscription", Handler: _SirenService_UpdateSubscription_Handler, }, + { + MethodName: "ListSubscriptionReceivers", + Handler: _SirenService_ListSubscriptionReceivers_Handler, + }, + { + MethodName: "AddSubscriptionReceiver", + Handler: _SirenService_AddSubscriptionReceiver_Handler, + }, + { + MethodName: "UpdateSubscriptionReceiver", + Handler: _SirenService_UpdateSubscriptionReceiver_Handler, + }, + { + MethodName: "DeleteSubscriptionReceiver", + Handler: _SirenService_DeleteSubscriptionReceiver_Handler, + }, { MethodName: "DeleteSubscription", Handler: _SirenService_DeleteSubscription_Handler, diff --git a/proto/siren.swagger.yaml b/proto/siren.swagger.yaml index d9a4374d..e6c2f5b9 100644 --- a/proto/siren.swagger.yaml +++ b/proto/siren.swagger.yaml @@ -862,6 +862,121 @@ paths: type: string tags: - Subscription + /v1beta1/subscriptions/{subscription_id}/receivers: + get: + summary: List receivers of a subscription + operationId: SirenService_ListSubscriptionReceivers + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/ListSubscriptionReceiversResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/Status' + parameters: + - name: subscription_id + in: path + required: true + type: string + format: uint64 + tags: + - Subscription + post: + summary: Add a receiver of a subscription + operationId: SirenService_AddSubscriptionReceiver + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/AddSubscriptionReceiverResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/Status' + parameters: + - name: subscription_id + in: path + required: true + type: string + format: uint64 + - name: body + in: body + required: true + schema: + type: object + properties: + receiver_id: + type: string + format: uint64 + labels: + type: object + additionalProperties: + type: string + tags: + - Subscription + /v1beta1/subscriptions/{subscription_id}/receivers/{receiver_id}: + delete: + summary: Delete a receiver of a subscription + operationId: SirenService_DeleteSubscriptionReceiver + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/DeleteSubscriptionReceiverResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/Status' + parameters: + - name: subscription_id + in: path + required: true + type: string + format: uint64 + - name: receiver_id + in: path + required: true + type: string + format: uint64 + tags: + - Subscription + put: + summary: Update a receiver of a subscription + operationId: SirenService_UpdateSubscriptionReceiver + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/UpdateSubscriptionReceiverResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/Status' + parameters: + - name: subscription_id + in: path + required: true + type: string + format: uint64 + - name: receiver_id + in: path + required: true + type: string + format: uint64 + - name: body + in: body + required: true + schema: + type: object + properties: + labels: + type: object + additionalProperties: + type: string + tags: + - Subscription /v1beta1/templates: get: summary: list templates @@ -972,6 +1087,19 @@ paths: tags: - Template definitions: + AddSubscriptionReceiverResponse: + type: object + properties: + subscription_id: + type: string + format: uint64 + receiver_id: + type: string + format: uint64 + labels: + type: object + additionalProperties: + type: string Alert: type: object properties: @@ -1167,6 +1295,8 @@ definitions: type: object DeleteReceiverResponse: type: object + DeleteSubscriptionReceiverResponse: + type: object DeleteSubscriptionResponse: type: object DeleteTemplateResponse: @@ -1267,6 +1397,14 @@ definitions: items: type: object $ref: '#/definitions/Silence' + ListSubscriptionReceiversResponse: + type: object + properties: + subscription_receivers: + type: array + items: + type: object + $ref: '#/definitions/SubscriptionReceiverRelation' ListSubscriptionsResponse: type: object properties: @@ -1597,6 +1735,25 @@ definitions: type: string updated_by: type: string + SubscriptionReceiverRelation: + type: object + properties: + subscription_id: + type: string + format: uint64 + receiver_id: + type: string + format: uint64 + labels: + type: object + additionalProperties: + type: string + created_at: + type: string + format: date-time + updated_at: + type: string + format: date-time SyncRuntimeConfigResponse: type: object properties: @@ -1693,6 +1850,19 @@ definitions: properties: rule: $ref: '#/definitions/Rule' + UpdateSubscriptionReceiverResponse: + type: object + properties: + subscription_id: + type: string + format: uint64 + receiver_id: + type: string + format: uint64 + labels: + type: object + additionalProperties: + type: string UpdateSubscriptionResponse: type: object properties: diff --git a/test/e2e_test/cortex_alerting_test.go b/test/e2e_test/cortex_alerting_test.go index a4641650..5763af90 100644 --- a/test/e2e_test/cortex_alerting_test.go +++ b/test/e2e_test/cortex_alerting_test.go @@ -166,14 +166,9 @@ func (s *CortexAlertingTestSuite) TestAlerting() { }) s.Require().NoError(err) - _, err = s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ + sub, err := s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ Urn: "subscribe-http", Namespace: 1, - Receivers: []*sirenv1beta1.ReceiverMetadata{ - { - Id: 1, - }, - }, Match: map[string]string{ "team": "gotocompany", "service": "some-service", @@ -182,6 +177,12 @@ func (s *CortexAlertingTestSuite) TestAlerting() { }) s.Require().NoError(err) + _, err = s.grpcClient.AddSubscriptionReceiver(ctx, &sirenv1beta1.AddSubscriptionReceiverRequest{ + SubscriptionId: sub.GetId(), + ReceiverId: 1, + }) + s.Require().NoError(err) + for { bodyBytes, err := triggerCortexAlert(s.testBench.NginxHost, "new-gotocompany-1", triggerAlertBody) s.Assert().NoError(err) diff --git a/test/e2e_test/cortex_webhook_test.go b/test/e2e_test/cortex_webhook_test.go index 6f0c33b1..caa7b413 100644 --- a/test/e2e_test/cortex_webhook_test.go +++ b/test/e2e_test/cortex_webhook_test.go @@ -250,14 +250,9 @@ func (s *CortexWebhookTestSuite) TestIncomingHookAPI() { }) s.Require().NoError(err) - _, err = s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ + sub, err := s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ Urn: "subscribe-http", Namespace: 1, - Receivers: []*sirenv1beta1.ReceiverMetadata{ - { - Id: 1, - }, - }, Match: map[string]string{ "team": "gotocompany", "service": "some-service", @@ -266,6 +261,12 @@ func (s *CortexWebhookTestSuite) TestIncomingHookAPI() { }) s.Require().NoError(err) + _, err = s.grpcClient.AddSubscriptionReceiver(ctx, &sirenv1beta1.AddSubscriptionReceiverRequest{ + SubscriptionId: sub.GetId(), + ReceiverId: 1, + }) + s.Require().NoError(err) + res, err := http.DefaultClient.Post(fmt.Sprintf("http://localhost:%d/v1beta1/alerts/cortex/1/1", s.appConfig.Service.Port), "application/json", bytes.NewBufferString(triggerAlertBody)) s.Require().NoError(err) diff --git a/test/e2e_test/notification_bulk_subscription_test.go b/test/e2e_test/notification_bulk_subscription_test.go index 561a0434..d3744c0d 100644 --- a/test/e2e_test/notification_bulk_subscription_test.go +++ b/test/e2e_test/notification_bulk_subscription_test.go @@ -225,14 +225,9 @@ If you need to use these characters you are probably better off using one of the }) s.Require().NoError(err) - _, err = s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ + sub, err := s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ Urn: "subscribe-http-three", Namespace: 1, - Receivers: []*sirenv1beta1.ReceiverMetadata{ - { - Id: 1, - }, - }, Match: map[string]string{ "team": "gotocompany", "service": "some-service", @@ -240,6 +235,12 @@ If you need to use these characters you are probably better off using one of the }) s.Require().NoError(err) + _, err = s.grpcClient.AddSubscriptionReceiver(ctx, &sirenv1beta1.AddSubscriptionReceiverRequest{ + SubscriptionId: sub.GetId(), + ReceiverId: 1, + }) + s.Require().NoError(err) + data, err := structpb.NewStruct(map[string]any{ "title": "This is the test notification with template", "icon_emoji": ":smile:", diff --git a/test/e2e_test/notification_subscription_test.go b/test/e2e_test/notification_subscription_test.go index 0bbc3151..ff73afea 100644 --- a/test/e2e_test/notification_subscription_test.go +++ b/test/e2e_test/notification_subscription_test.go @@ -187,14 +187,9 @@ func (s *NotificationSubscriptionTestSuite) TestSendNotification() { }) s.Require().NoError(err) - _, err = s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ + sub, err := s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ Urn: "subscribe-http-three", Namespace: 1, - Receivers: []*sirenv1beta1.ReceiverMetadata{ - { - Id: 1, - }, - }, Match: map[string]string{ "team": "gotocompany", "service": "some-service", @@ -203,6 +198,12 @@ func (s *NotificationSubscriptionTestSuite) TestSendNotification() { }) s.Require().NoError(err) + _, err = s.grpcClient.AddSubscriptionReceiver(ctx, &sirenv1beta1.AddSubscriptionReceiverRequest{ + SubscriptionId: sub.GetId(), + ReceiverId: 1, + }) + s.Require().NoError(err) + data, err := structpb.NewStruct(map[string]any{ "key1": "value1", "key2": "value2", diff --git a/test/e2e_test/notification_template_test.go b/test/e2e_test/notification_template_test.go index 9dcaee60..7f23ec14 100644 --- a/test/e2e_test/notification_template_test.go +++ b/test/e2e_test/notification_template_test.go @@ -30,7 +30,7 @@ import ( type NotificationTemplateTestSuite struct { suite.Suite cancelContext context.CancelFunc - client sirenv1beta1.SirenServiceClient + grpcClient sirenv1beta1.SirenServiceClient cancelClient func() appConfig *config.Config testBench *CortexTest @@ -51,7 +51,8 @@ func (s *NotificationTemplateTestSuite) SetupTest() { GRPC: server.GRPCConfig{ Port: apiPort, }, - EncryptionKey: testEncryptionKey, + EncryptionKey: testEncryptionKey, + SubscriptionV2Enabled: true, } s.appConfig.Notification = notification.Config{ MessageHandler: notification.HandlerConfig{ @@ -60,7 +61,6 @@ func (s *NotificationTemplateTestSuite) SetupTest() { DLQHandler: notification.HandlerConfig{ Enabled: false, }, - SubscriptionV2Enabled: true, } s.appConfig.Telemetry.OpenTelemetry.Enabled = false @@ -94,10 +94,10 @@ func (s *NotificationTemplateTestSuite) SetupTest() { time.Sleep(500 * time.Millisecond) StartSirenMessageWorker(ctx, *s.appConfig, s.closeWorkerChannel) - s.client, s.cancelClient, err = CreateClient(ctx, fmt.Sprintf("localhost:%d", apiPort)) + s.grpcClient, s.cancelClient, err = CreateClient(ctx, fmt.Sprintf("localhost:%d", apiPort)) s.Require().NoError(err) - bootstrapCortexTestData(&s.Suite, ctx, s.client, s.testBench.NginxHost) + bootstrapCortexTestData(&s.Suite, ctx, s.grpcClient, s.testBench.NginxHost) } func (s *NotificationTemplateTestSuite) TearDownTest() { @@ -154,7 +154,7 @@ If you need to use these characters you are probably better off using one of the "url": testServer.URL, }) s.Require().NoError(err) - rcv, err := s.client.CreateReceiver(ctx, &sirenv1beta1.CreateReceiverRequest{ + rcv, err := s.grpcClient.CreateReceiver(ctx, &sirenv1beta1.CreateReceiverRequest{ Name: "notification-http-template", Type: "http", Labels: nil, @@ -178,7 +178,7 @@ If you need to use these characters you are probably better off using one of the }) } - _, err = s.client.UpsertTemplate(ctx, &sirenv1beta1.UpsertTemplateRequest{ + _, err = s.grpcClient.UpsertTemplate(ctx, &sirenv1beta1.UpsertTemplateRequest{ Name: sampleTemplateFile.Name, Body: string(body), Tags: sampleTemplateFile.Tags, @@ -186,23 +186,24 @@ If you need to use these characters you are probably better off using one of the }) s.Require().NoError(err) - _, err = s.client.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ + sub, err := s.grpcClient.CreateSubscription(ctx, &sirenv1beta1.CreateSubscriptionRequest{ Urn: "subscribe-http", Namespace: 1, - Receivers: []*sirenv1beta1.ReceiverMetadata{ - { - Id: rcv.GetId(), - }, - }, Match: map[string]string{ "category": "httpreceiver", }, }) s.Require().NoError(err) + _, err = s.grpcClient.AddSubscriptionReceiver(ctx, &sirenv1beta1.AddSubscriptionReceiverRequest{ + SubscriptionId: sub.GetId(), + ReceiverId: rcv.GetId(), + }) + s.Require().NoError(err) + time.Sleep(100 * time.Millisecond) - _, err = s.client.PostNotification(ctx, &sirenv1beta1.PostNotificationRequest{ + _, err = s.grpcClient.PostNotification(ctx, &sirenv1beta1.PostNotificationRequest{ Data: &structpb.Struct{ Fields: map[string]*structpb.Value{ "title": structpb.NewStringValue("This is the test notification with template"),