diff --git a/backend/controller/console/console.go b/backend/controller/console/console.go
index edeaf81194..e381dfa8f5 100644
--- a/backend/controller/console/console.go
+++ b/backend/controller/console/console.go
@@ -597,6 +597,10 @@ func eventsQueryProtoToDAL(pb *pbconsole.EventsQuery) ([]timeline.TimelineFilter
eventTypes = append(eventTypes, timeline.EventTypeCronScheduled)
case pbconsole.EventType_EVENT_TYPE_ASYNC_EXECUTE:
eventTypes = append(eventTypes, timeline.EventTypeAsyncExecute)
+ case pbconsole.EventType_EVENT_TYPE_PUBSUB_PUBLISH:
+ eventTypes = append(eventTypes, timeline.EventTypePubSubPublish)
+ case pbconsole.EventType_EVENT_TYPE_PUBSUB_CONSUME:
+ eventTypes = append(eventTypes, timeline.EventTypePubSubConsume)
default:
return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("unknown event type %v", eventType))
}
@@ -827,6 +831,59 @@ func eventDALToProto(event timeline.Event) *pbconsole.Event {
},
}
+ case *timeline.PubSubPublishEvent:
+ var requestKey *string
+ if r, ok := event.RequestKey.Get(); ok {
+ requestKey = &r
+ }
+
+ return &pbconsole.Event{
+ TimeStamp: timestamppb.New(event.Time),
+ Id: event.ID,
+ Entry: &pbconsole.Event_PubsubPublish{
+ PubsubPublish: &pbconsole.PubSubPublishEvent{
+ DeploymentKey: event.DeploymentKey.String(),
+ RequestKey: requestKey,
+ VerbRef: event.SourceVerb.ToProto().(*schemapb.Ref), //nolint:forcetypeassert
+ TimeStamp: timestamppb.New(event.Time),
+ Duration: durationpb.New(event.Duration),
+ Topic: event.Topic,
+ Request: string(event.Request),
+ Error: event.Error.Ptr(),
+ },
+ },
+ }
+
+ case *timeline.PubSubConsumeEvent:
+ var requestKey *string
+ if r, ok := event.RequestKey.Get(); ok {
+ requestKey = &r
+ }
+
+ var destVerbModule string
+ var destVerbName string
+ if destVerb, ok := event.DestVerb.Get(); ok {
+ destVerbModule = destVerb.Module
+ destVerbName = destVerb.Name
+ }
+
+ return &pbconsole.Event{
+ TimeStamp: timestamppb.New(event.Time),
+ Id: event.ID,
+ Entry: &pbconsole.Event_PubsubConsume{
+ PubsubConsume: &pbconsole.PubSubConsumeEvent{
+ DeploymentKey: event.DeploymentKey.String(),
+ RequestKey: requestKey,
+ DestVerbModule: &destVerbModule,
+ DestVerbName: &destVerbName,
+ TimeStamp: timestamppb.New(event.Time),
+ Duration: durationpb.New(event.Duration),
+ Topic: event.Topic,
+ Error: event.Error.Ptr(),
+ },
+ },
+ }
+
default:
panic(fmt.Errorf("unknown event type %T", event))
}
diff --git a/backend/controller/controller.go b/backend/controller/controller.go
index 3f57c3ba72..6cd58724b3 100644
--- a/backend/controller/controller.go
+++ b/backend/controller/controller.go
@@ -293,13 +293,12 @@ func New(
}
svc.schemaState.Store(schemaState{routes: map[string]Route{}, schema: &schema.Schema{}})
- pubSub := pubsub.New(ctx, conn, encryption, optional.Some[pubsub.AsyncCallListener](svc))
- svc.pubSub = pubSub
-
svc.registry = artefacts.New(conn)
timelineSvc := timeline.New(ctx, conn, encryption)
svc.timeline = timelineSvc
+ pubSub := pubsub.New(ctx, conn, encryption, optional.Some[pubsub.AsyncCallListener](svc), timelineSvc)
+ svc.pubSub = pubSub
cronSvc := cronjobs.New(ctx, key, svc.config.Advertise.Host, encryption, timelineSvc, conn)
svc.cronJobs = cronSvc
svc.dal = dal.New(ctx, conn, encryption, pubSub, cronSvc)
@@ -859,7 +858,36 @@ func (s *Service) Call(ctx context.Context, req *connect.Request[ftlv1.CallReque
func (s *Service) PublishEvent(ctx context.Context, req *connect.Request[ftlv1.PublishEventRequest]) (*connect.Response[ftlv1.PublishEventResponse], error) {
// Publish the event.
+ now := time.Now().UTC()
+ pubishError := optional.None[string]()
err := s.pubSub.PublishEventForTopic(ctx, req.Msg.Topic.Module, req.Msg.Topic.Name, req.Msg.Caller, req.Msg.Body)
+ if err != nil {
+ pubishError = optional.Some(err.Error())
+ }
+
+ requestKey := optional.None[string]()
+ if rk, err := rpc.RequestKeyFromContext(ctx); err == nil {
+ if rk, ok := rk.Get(); ok {
+ requestKey = optional.Some(rk.String())
+ }
+ }
+
+ // Add to timeline.
+ sstate := s.schemaState.Load()
+ module := req.Msg.Topic.Module
+ route, ok := sstate.routes[module]
+ if ok {
+ s.timeline.EnqueueEvent(ctx, &timeline.PubSubPublish{
+ DeploymentKey: route.Deployment,
+ RequestKey: requestKey,
+ Time: now,
+ SourceVerb: schema.Ref{Name: req.Msg.Caller, Module: req.Msg.Topic.Module},
+ Topic: req.Msg.Topic.Name,
+ Request: req.Msg,
+ Error: pubishError,
+ })
+ }
+
if err != nil {
return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("failed to publish a event to topic %s:%s: %w", req.Msg.Topic.Module, req.Msg.Topic.Name, err))
}
diff --git a/backend/controller/cronjobs/internal/cronjobs_test.go b/backend/controller/cronjobs/internal/cronjobs_test.go
index 763bbef238..7a4f18f2d9 100644
--- a/backend/controller/cronjobs/internal/cronjobs_test.go
+++ b/backend/controller/cronjobs/internal/cronjobs_test.go
@@ -47,7 +47,7 @@ func TestNewCronJobsForModule(t *testing.T) {
timelineSrv := timeline.New(ctx, conn, encryption)
cjs := cronjobs.NewForTesting(ctx, key, "test.com", encryption, timelineSrv, *dal, clk)
- pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener]())
+ pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener](), timelineSrv)
parentDAL := parentdal.New(ctx, conn, encryption, pubSub, cjs)
moduleName := "initial"
jobsToCreate := newCronJobs(t, moduleName, "* * * * * *", clk, 2) // every minute
diff --git a/backend/controller/dal/async_calls_test.go b/backend/controller/dal/async_calls_test.go
index 4dd484d8d9..457bc7ec5e 100644
--- a/backend/controller/dal/async_calls_test.go
+++ b/backend/controller/dal/async_calls_test.go
@@ -11,6 +11,7 @@ import (
"github.com/TBD54566975/ftl/backend/controller/encryption"
"github.com/TBD54566975/ftl/backend/controller/pubsub"
"github.com/TBD54566975/ftl/backend/controller/sql/sqltest"
+ "github.com/TBD54566975/ftl/backend/controller/timeline"
"github.com/TBD54566975/ftl/backend/libdal"
"github.com/TBD54566975/ftl/internal/log"
"github.com/TBD54566975/ftl/internal/model"
@@ -22,7 +23,9 @@ func TestNoCallToAcquire(t *testing.T) {
conn := sqltest.OpenForTesting(ctx, t)
encryption, err := encryption.New(ctx, conn, encryption.NewBuilder())
assert.NoError(t, err)
- pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener]())
+
+ timelineSvc := timeline.New(ctx, conn, encryption)
+ pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener](), timelineSvc)
dal := New(ctx, conn, encryption, pubSub, nil)
_, _, err = dal.AcquireAsyncCall(ctx)
diff --git a/backend/controller/dal/dal_test.go b/backend/controller/dal/dal_test.go
index 5d4dc4a092..77bd107af4 100644
--- a/backend/controller/dal/dal_test.go
+++ b/backend/controller/dal/dal_test.go
@@ -33,8 +33,8 @@ func TestDAL(t *testing.T) {
encryption, err := encryption.New(ctx, conn, encryption.NewBuilder())
assert.NoError(t, err)
- pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener]())
timelineSrv := timeline.New(ctx, conn, encryption)
+ pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener](), timelineSrv)
key := model.NewControllerKey("localhost", "8081")
cjs := cronjobs.New(ctx, key, "test.com", encryption, timelineSrv, conn)
dal := New(ctx, conn, encryption, pubSub, cjs)
@@ -195,9 +195,9 @@ func TestCreateArtefactConflict(t *testing.T) {
encryption, err := encryption.New(ctx, conn, encryption.NewBuilder())
assert.NoError(t, err)
- pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener]())
-
timelineSrv := timeline.New(ctx, conn, encryption)
+ pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener](), timelineSrv)
+
key := model.NewControllerKey("localhost", "8081")
cjs := cronjobs.New(ctx, key, "test.com", encryption, timelineSrv, conn)
dal := New(ctx, conn, encryption, pubSub, cjs)
diff --git a/backend/controller/dal/internal/sql/queries.sql.go b/backend/controller/dal/internal/sql/queries.sql.go
index 398307d745..e7b669704d 100644
--- a/backend/controller/dal/internal/sql/queries.sql.go
+++ b/backend/controller/dal/internal/sql/queries.sql.go
@@ -1055,9 +1055,11 @@ SELECT
subscribers.retry_attempts as retry_attempts,
subscribers.backoff as backoff,
subscribers.max_backoff as max_backoff,
- subscribers.catch_verb as catch_verb
+ subscribers.catch_verb as catch_verb,
+ deployments.key as deployment_key
FROM topic_subscribers as subscribers
JOIN topic_subscriptions ON subscribers.topic_subscriptions_id = topic_subscriptions.id
+ JOIN deployments ON subscribers.deployment_id = deployments.id
WHERE topic_subscriptions.key = $1::subscription_key
ORDER BY RANDOM()
LIMIT 1
@@ -1069,6 +1071,7 @@ type GetRandomSubscriberRow struct {
Backoff sqltypes.Duration
MaxBackoff sqltypes.Duration
CatchVerb optional.Option[schema.RefKey]
+ DeploymentKey model.DeploymentKey
}
func (q *Queries) GetRandomSubscriber(ctx context.Context, key model.SubscriptionKey) (GetRandomSubscriberRow, error) {
@@ -1080,6 +1083,7 @@ func (q *Queries) GetRandomSubscriber(ctx context.Context, key model.Subscriptio
&i.Backoff,
&i.MaxBackoff,
&i.CatchVerb,
+ &i.DeploymentKey,
)
return i, err
}
@@ -1236,9 +1240,12 @@ SELECT
subs.key::subscription_key as key,
curser.key as cursor,
topics.key::topic_key as topic,
- subs.name
+ subs.name,
+ deployments.key as deployment_key,
+ curser.request_key as request_key
FROM topic_subscriptions subs
JOIN runner_count on subs.deployment_id = runner_count.deployment
+ JOIN deployments ON subs.deployment_id = deployments.id
LEFT JOIN topics ON subs.topic_id = topics.id
LEFT JOIN topic_events curser ON subs.cursor = curser.id
WHERE subs.cursor IS DISTINCT FROM topics.head
@@ -1249,10 +1256,12 @@ LIMIT 3
`
type GetSubscriptionsNeedingUpdateRow struct {
- Key model.SubscriptionKey
- Cursor optional.Option[model.TopicEventKey]
- Topic model.TopicKey
- Name string
+ Key model.SubscriptionKey
+ Cursor optional.Option[model.TopicEventKey]
+ Topic model.TopicKey
+ Name string
+ DeploymentKey model.DeploymentKey
+ RequestKey optional.Option[string]
}
// Results may not be ready to be scheduled yet due to event consumption delay
@@ -1273,6 +1282,8 @@ func (q *Queries) GetSubscriptionsNeedingUpdate(ctx context.Context) ([]GetSubsc
&i.Cursor,
&i.Topic,
&i.Name,
+ &i.DeploymentKey,
+ &i.RequestKey,
); err != nil {
return nil, err
}
diff --git a/backend/controller/pubsub/internal/dal/dal.go b/backend/controller/pubsub/internal/dal/dal.go
index dc982a3aa7..0313fe1fa4 100644
--- a/backend/controller/pubsub/internal/dal/dal.go
+++ b/backend/controller/pubsub/internal/dal/dal.go
@@ -14,6 +14,7 @@ import (
"github.com/TBD54566975/ftl/backend/controller/observability"
dalsql "github.com/TBD54566975/ftl/backend/controller/pubsub/internal/sql"
"github.com/TBD54566975/ftl/backend/controller/sql/sqltypes"
+ "github.com/TBD54566975/ftl/backend/controller/timeline"
"github.com/TBD54566975/ftl/backend/libdal"
"github.com/TBD54566975/ftl/internal/log"
"github.com/TBD54566975/ftl/internal/model"
@@ -97,7 +98,7 @@ func (d *DAL) GetSubscriptionsNeedingUpdate(ctx context.Context) ([]model.Subscr
}), nil
}
-func (d *DAL) ProgressSubscriptions(ctx context.Context, eventConsumptionDelay time.Duration) (count int, err error) {
+func (d *DAL) ProgressSubscriptions(ctx context.Context, eventConsumptionDelay time.Duration, timelineSvc *timeline.Service) (count int, err error) {
tx, err := d.Begin(ctx)
if err != nil {
return 0, fmt.Errorf("failed to begin transaction: %w", err)
@@ -115,36 +116,58 @@ func (d *DAL) ProgressSubscriptions(ctx context.Context, eventConsumptionDelay t
successful := 0
for _, subscription := range subs {
+ now := time.Now().UTC()
+ enqueueTimelineEvent := func(destVerb optional.Option[schema.RefKey], err optional.Option[string]) {
+ timelineSvc.EnqueueEvent(ctx, &timeline.PubSubConsume{
+ DeploymentKey: subscription.DeploymentKey,
+ RequestKey: subscription.RequestKey,
+ Time: now,
+ DestVerb: destVerb,
+ Topic: subscription.Topic.Payload.Name,
+ Error: err,
+ })
+ }
+
nextCursor, err := tx.db.GetNextEventForSubscription(ctx, sqltypes.Duration(eventConsumptionDelay), subscription.Topic, subscription.Cursor)
if err != nil {
observability.PubSub.PropagationFailed(ctx, "GetNextEventForSubscription", subscription.Topic.Payload, nextCursor.Caller, subscriptionRef(subscription), optional.None[schema.RefKey]())
- return 0, fmt.Errorf("failed to get next cursor: %w", libdal.TranslatePGError(err))
+ err = fmt.Errorf("failed to get next cursor: %w", libdal.TranslatePGError(err))
+ enqueueTimelineEvent(optional.None[schema.RefKey](), optional.Some(err.Error()))
+ return 0, err
}
payload, ok := nextCursor.Payload.Get()
if !ok {
observability.PubSub.PropagationFailed(ctx, "GetNextEventForSubscription-->Payload.Get", subscription.Topic.Payload, nextCursor.Caller, subscriptionRef(subscription), optional.None[schema.RefKey]())
- return 0, fmt.Errorf("could not find payload to progress subscription: %w", libdal.TranslatePGError(err))
+ err = fmt.Errorf("could not find payload to progress subscription: %w", libdal.TranslatePGError(err))
+ enqueueTimelineEvent(optional.None[schema.RefKey](), optional.Some(err.Error()))
+ return 0, err
}
nextCursorKey, ok := nextCursor.Event.Get()
if !ok {
observability.PubSub.PropagationFailed(ctx, "GetNextEventForSubscription-->Event.Get", subscription.Topic.Payload, nextCursor.Caller, subscriptionRef(subscription), optional.None[schema.RefKey]())
- return 0, fmt.Errorf("could not find event to progress subscription: %w", libdal.TranslatePGError(err))
+ err = fmt.Errorf("could not find event to progress subscription: %w", libdal.TranslatePGError(err))
+ enqueueTimelineEvent(optional.None[schema.RefKey](), optional.Some(err.Error()))
+ return 0, err
}
if !nextCursor.Ready {
logger.Tracef("Skipping subscription %s because event is too new", subscription.Key)
+ enqueueTimelineEvent(optional.None[schema.RefKey](), optional.Some(fmt.Sprintf("Skipping subscription %s because event is too new", subscription.Key)))
continue
}
subscriber, err := tx.db.GetRandomSubscriber(ctx, subscription.Key)
if err != nil {
logger.Tracef("no subscriber for subscription %s", subscription.Key)
+ enqueueTimelineEvent(optional.None[schema.RefKey](), optional.Some(fmt.Sprintf("no subscriber for subscription %s", subscription.Key)))
continue
}
err = tx.db.BeginConsumingTopicEvent(ctx, subscription.Key, nextCursorKey)
if err != nil {
observability.PubSub.PropagationFailed(ctx, "BeginConsumingTopicEvent", subscription.Topic.Payload, nextCursor.Caller, subscriptionRef(subscription), optional.Some(subscriber.Sink))
- return 0, fmt.Errorf("failed to progress subscription: %w", libdal.TranslatePGError(err))
+ err = fmt.Errorf("failed to progress subscription: %w", libdal.TranslatePGError(err))
+ enqueueTimelineEvent(optional.Some(subscriber.Sink), optional.Some(err.Error()))
+ return 0, err
}
origin := async.AsyncOriginPubSub{
@@ -169,10 +192,13 @@ func (d *DAL) ProgressSubscriptions(ctx context.Context, eventConsumptionDelay t
observability.AsyncCalls.Created(ctx, subscriber.Sink, subscriber.CatchVerb, origin.String(), int64(subscriber.RetryAttempts), err)
if err != nil {
observability.PubSub.PropagationFailed(ctx, "CreateAsyncCall", subscription.Topic.Payload, nextCursor.Caller, subscriptionRef(subscription), optional.Some(subscriber.Sink))
- return 0, fmt.Errorf("failed to schedule async task for subscription: %w", libdal.TranslatePGError(err))
+ err = fmt.Errorf("failed to schedule async task for subscription: %w", libdal.TranslatePGError(err))
+ enqueueTimelineEvent(optional.Some(subscriber.Sink), optional.Some(err.Error()))
+ return 0, err
}
observability.PubSub.SinkCalled(ctx, subscription.Topic.Payload, nextCursor.Caller, subscriptionRef(subscription), subscriber.Sink)
+ enqueueTimelineEvent(optional.Some(subscriber.Sink), optional.None[string]())
successful++
}
diff --git a/backend/controller/pubsub/internal/sql/queries.sql b/backend/controller/pubsub/internal/sql/queries.sql
index 84df1bc654..68e94abc16 100644
--- a/backend/controller/pubsub/internal/sql/queries.sql
+++ b/backend/controller/pubsub/internal/sql/queries.sql
@@ -127,9 +127,12 @@ SELECT
subs.key::subscription_key as key,
curser.key as cursor,
topics.key::topic_key as topic,
- subs.name
+ subs.name,
+ deployments.key as deployment_key,
+ curser.request_key as request_key
FROM topic_subscriptions subs
JOIN runner_count on subs.deployment_id = runner_count.deployment
+ JOIN deployments ON subs.deployment_id = deployments.id
LEFT JOIN topics ON subs.topic_id = topics.id
LEFT JOIN topic_events curser ON subs.cursor = curser.id
WHERE subs.cursor IS DISTINCT FROM topics.head
@@ -138,6 +141,7 @@ ORDER BY curser.created_at
LIMIT 3
FOR UPDATE OF subs SKIP LOCKED;
+
-- name: GetNextEventForSubscription :one
WITH cursor AS (
SELECT
@@ -166,9 +170,11 @@ SELECT
subscribers.retry_attempts as retry_attempts,
subscribers.backoff as backoff,
subscribers.max_backoff as max_backoff,
- subscribers.catch_verb as catch_verb
+ subscribers.catch_verb as catch_verb,
+ deployments.key as deployment_key
FROM topic_subscribers as subscribers
JOIN topic_subscriptions ON subscribers.topic_subscriptions_id = topic_subscriptions.id
+ JOIN deployments ON subscribers.deployment_id = deployments.id
WHERE topic_subscriptions.key = sqlc.arg('key')::subscription_key
ORDER BY RANDOM()
LIMIT 1;
diff --git a/backend/controller/pubsub/internal/sql/queries.sql.go b/backend/controller/pubsub/internal/sql/queries.sql.go
index 0f19bec87d..5bc5b786ca 100644
--- a/backend/controller/pubsub/internal/sql/queries.sql.go
+++ b/backend/controller/pubsub/internal/sql/queries.sql.go
@@ -171,9 +171,11 @@ SELECT
subscribers.retry_attempts as retry_attempts,
subscribers.backoff as backoff,
subscribers.max_backoff as max_backoff,
- subscribers.catch_verb as catch_verb
+ subscribers.catch_verb as catch_verb,
+ deployments.key as deployment_key
FROM topic_subscribers as subscribers
JOIN topic_subscriptions ON subscribers.topic_subscriptions_id = topic_subscriptions.id
+ JOIN deployments ON subscribers.deployment_id = deployments.id
WHERE topic_subscriptions.key = $1::subscription_key
ORDER BY RANDOM()
LIMIT 1
@@ -185,6 +187,7 @@ type GetRandomSubscriberRow struct {
Backoff sqltypes.Duration
MaxBackoff sqltypes.Duration
CatchVerb optional.Option[schema.RefKey]
+ DeploymentKey model.DeploymentKey
}
func (q *Queries) GetRandomSubscriber(ctx context.Context, key model.SubscriptionKey) (GetRandomSubscriberRow, error) {
@@ -196,6 +199,7 @@ func (q *Queries) GetRandomSubscriber(ctx context.Context, key model.Subscriptio
&i.Backoff,
&i.MaxBackoff,
&i.CatchVerb,
+ &i.DeploymentKey,
)
return i, err
}
@@ -240,9 +244,12 @@ SELECT
subs.key::subscription_key as key,
curser.key as cursor,
topics.key::topic_key as topic,
- subs.name
+ subs.name,
+ deployments.key as deployment_key,
+ curser.request_key as request_key
FROM topic_subscriptions subs
JOIN runner_count on subs.deployment_id = runner_count.deployment
+ JOIN deployments ON subs.deployment_id = deployments.id
LEFT JOIN topics ON subs.topic_id = topics.id
LEFT JOIN topic_events curser ON subs.cursor = curser.id
WHERE subs.cursor IS DISTINCT FROM topics.head
@@ -253,10 +260,12 @@ LIMIT 3
`
type GetSubscriptionsNeedingUpdateRow struct {
- Key model.SubscriptionKey
- Cursor optional.Option[model.TopicEventKey]
- Topic model.TopicKey
- Name string
+ Key model.SubscriptionKey
+ Cursor optional.Option[model.TopicEventKey]
+ Topic model.TopicKey
+ Name string
+ DeploymentKey model.DeploymentKey
+ RequestKey optional.Option[string]
}
// Results may not be ready to be scheduled yet due to event consumption delay
@@ -277,6 +286,8 @@ func (q *Queries) GetSubscriptionsNeedingUpdate(ctx context.Context) ([]GetSubsc
&i.Cursor,
&i.Topic,
&i.Name,
+ &i.DeploymentKey,
+ &i.RequestKey,
); err != nil {
return nil, err
}
diff --git a/backend/controller/pubsub/service.go b/backend/controller/pubsub/service.go
index 66b9202fc9..8e98b4f1a4 100644
--- a/backend/controller/pubsub/service.go
+++ b/backend/controller/pubsub/service.go
@@ -13,6 +13,7 @@ import (
"github.com/TBD54566975/ftl/backend/controller/encryption"
"github.com/TBD54566975/ftl/backend/controller/pubsub/internal/dal"
"github.com/TBD54566975/ftl/backend/controller/scheduledtask"
+ "github.com/TBD54566975/ftl/backend/controller/timeline"
"github.com/TBD54566975/ftl/backend/libdal"
"github.com/TBD54566975/ftl/internal/log"
"github.com/TBD54566975/ftl/internal/model"
@@ -39,13 +40,15 @@ type Service struct {
dal *dal.DAL
asyncCallListener optional.Option[AsyncCallListener]
eventPublished chan struct{}
+ timelineSvc *timeline.Service
}
-func New(ctx context.Context, conn libdal.Connection, encryption *encryption.Service, asyncCallListener optional.Option[AsyncCallListener]) *Service {
+func New(ctx context.Context, conn libdal.Connection, encryption *encryption.Service, asyncCallListener optional.Option[AsyncCallListener], timeline *timeline.Service) *Service {
m := &Service{
dal: dal.New(conn, encryption),
asyncCallListener: asyncCallListener,
eventPublished: make(chan struct{}),
+ timelineSvc: timeline,
}
go m.poll(ctx)
return m
@@ -90,7 +93,7 @@ func (s *Service) poll(ctx context.Context) {
}
func (s *Service) progressSubscriptions(ctx context.Context) error {
- count, err := s.dal.ProgressSubscriptions(ctx, eventConsumptionDelay)
+ count, err := s.dal.ProgressSubscriptions(ctx, eventConsumptionDelay, s.timelineSvc)
if err != nil {
return fmt.Errorf("progress subscriptions: %w", err)
}
diff --git a/backend/controller/sql/schema/20241101215338_timeline_pubsub_events.sql b/backend/controller/sql/schema/20241101215338_timeline_pubsub_events.sql
new file mode 100644
index 0000000000..fad43e1b5b
--- /dev/null
+++ b/backend/controller/sql/schema/20241101215338_timeline_pubsub_events.sql
@@ -0,0 +1,6 @@
+-- migrate:up
+
+ALTER TYPE event_type ADD VALUE IF NOT EXISTS 'pubsub_publish';
+ALTER TYPE event_type ADD VALUE IF NOT EXISTS 'pubsub_consume';
+
+-- migrate:down
diff --git a/backend/controller/timeline/events_pubsub_consume.go b/backend/controller/timeline/events_pubsub_consume.go
new file mode 100644
index 0000000000..66904dfae0
--- /dev/null
+++ b/backend/controller/timeline/events_pubsub_consume.go
@@ -0,0 +1,87 @@
+package timeline
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "time"
+
+ "github.com/alecthomas/types/optional"
+
+ ftlencryption "github.com/TBD54566975/ftl/backend/controller/encryption/api"
+ "github.com/TBD54566975/ftl/backend/controller/timeline/internal/sql"
+ "github.com/TBD54566975/ftl/backend/libdal"
+ "github.com/TBD54566975/ftl/internal/model"
+ "github.com/TBD54566975/ftl/internal/schema"
+)
+
+type PubSubConsumeEvent struct {
+ ID int64
+ Duration time.Duration
+ PubSubConsume
+}
+
+func (e *PubSubConsumeEvent) GetID() int64 { return e.ID }
+func (e *PubSubConsumeEvent) event() {}
+
+type PubSubConsume struct {
+ DeploymentKey model.DeploymentKey
+ RequestKey optional.Option[string]
+ Time time.Time
+ DestVerb optional.Option[schema.RefKey]
+ Topic string
+ Error optional.Option[string]
+}
+
+func (e *PubSubConsume) toEvent() (Event, error) { //nolint:unparam
+ return &PubSubConsumeEvent{
+ PubSubConsume: *e,
+ Duration: time.Since(e.Time),
+ }, nil
+}
+
+type eventPubSubConsumeJSON struct {
+ DurationMS int64 `json:"duration_ms"`
+ Topic string `json:"topic"`
+ Error optional.Option[string] `json:"error,omitempty"`
+}
+
+func (s *Service) insertPubSubConsumeEvent(ctx context.Context, querier sql.Querier, event *PubSubConsumeEvent) error {
+ pubsubJSON := eventPubSubConsumeJSON{
+ DurationMS: event.Duration.Milliseconds(),
+ Topic: event.Topic,
+ Error: event.Error,
+ }
+
+ data, err := json.Marshal(pubsubJSON)
+ if err != nil {
+ return fmt.Errorf("failed to marshal pubsub event: %w", err)
+ }
+
+ var payload ftlencryption.EncryptedTimelineColumn
+ err = s.encryption.EncryptJSON(json.RawMessage(data), &payload)
+ if err != nil {
+ return fmt.Errorf("failed to encrypt cron JSON: %w", err)
+ }
+
+ destModule := optional.None[string]()
+ destVerb := optional.None[string]()
+ if dv, ok := event.DestVerb.Get(); ok {
+ destModule = optional.Some(dv.Module)
+ destVerb = optional.Some(dv.Name)
+ }
+
+ err = libdal.TranslatePGError(querier.InsertTimelinePubsubConsumeEvent(ctx, sql.InsertTimelinePubsubConsumeEventParams{
+ DeploymentKey: event.DeploymentKey,
+ RequestKey: event.RequestKey,
+ TimeStamp: event.Time,
+ DestModule: destModule,
+ DestVerb: destVerb,
+ Topic: event.Topic,
+ Payload: payload,
+ }))
+ if err != nil {
+ return fmt.Errorf("failed to insert pubsub consume event: %w", err)
+ }
+ return err
+}
diff --git a/backend/controller/timeline/events_pubsub_publish.go b/backend/controller/timeline/events_pubsub_publish.go
new file mode 100644
index 0000000000..7541641cad
--- /dev/null
+++ b/backend/controller/timeline/events_pubsub_publish.go
@@ -0,0 +1,85 @@
+package timeline
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "time"
+
+ "github.com/alecthomas/types/optional"
+
+ ftlencryption "github.com/TBD54566975/ftl/backend/controller/encryption/api"
+ "github.com/TBD54566975/ftl/backend/controller/timeline/internal/sql"
+ "github.com/TBD54566975/ftl/backend/libdal"
+ ftlv1 "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1"
+ "github.com/TBD54566975/ftl/internal/model"
+ "github.com/TBD54566975/ftl/internal/schema"
+)
+
+type PubSubPublishEvent struct {
+ ID int64
+ Duration time.Duration
+ Request json.RawMessage
+ PubSubPublish
+}
+
+func (e *PubSubPublishEvent) GetID() int64 { return e.ID }
+func (e *PubSubPublishEvent) event() {}
+
+type PubSubPublish struct {
+ DeploymentKey model.DeploymentKey
+ RequestKey optional.Option[string]
+ Time time.Time
+ SourceVerb schema.Ref
+ Topic string
+ Request *ftlv1.PublishEventRequest
+ Error optional.Option[string]
+}
+
+func (e *PubSubPublish) toEvent() (Event, error) { //nolint:unparam
+ return &PubSubPublishEvent{
+ PubSubPublish: *e,
+ Duration: time.Since(e.Time),
+ }, nil
+}
+
+type eventPubSubPublishJSON struct {
+ DurationMS int64 `json:"duration_ms"`
+ Topic string `json:"topic"`
+ Request json.RawMessage `json:"request"`
+ Error optional.Option[string] `json:"error,omitempty"`
+}
+
+func (s *Service) insertPubSubPublishEvent(ctx context.Context, querier sql.Querier, event *PubSubPublishEvent) error {
+ pubsubJSON := eventPubSubPublishJSON{
+ DurationMS: event.Duration.Milliseconds(),
+ Topic: event.Topic,
+ Request: event.Request,
+ Error: event.Error,
+ }
+
+ data, err := json.Marshal(pubsubJSON)
+ if err != nil {
+ return fmt.Errorf("failed to marshal pubsub event: %w", err)
+ }
+
+ var payload ftlencryption.EncryptedTimelineColumn
+ err = s.encryption.EncryptJSON(json.RawMessage(data), &payload)
+ if err != nil {
+ return fmt.Errorf("failed to encrypt cron JSON: %w", err)
+ }
+
+ err = libdal.TranslatePGError(querier.InsertTimelinePubsubPublishEvent(ctx, sql.InsertTimelinePubsubPublishEventParams{
+ DeploymentKey: event.DeploymentKey,
+ RequestKey: event.RequestKey,
+ TimeStamp: event.Time,
+ SourceModule: event.SourceVerb.Module,
+ SourceVerb: event.SourceVerb.Name,
+ Topic: event.Topic,
+ Payload: payload,
+ }))
+ if err != nil {
+ return fmt.Errorf("failed to insert pubsub publish event: %w", err)
+ }
+ return err
+}
diff --git a/backend/controller/timeline/internal/sql/models.go b/backend/controller/timeline/internal/sql/models.go
index 610219ad2a..90b3f40fb4 100644
--- a/backend/controller/timeline/internal/sql/models.go
+++ b/backend/controller/timeline/internal/sql/models.go
@@ -23,6 +23,8 @@ const (
EventTypeIngress EventType = "ingress"
EventTypeCronScheduled EventType = "cron_scheduled"
EventTypeAsyncExecute EventType = "async_execute"
+ EventTypePubsubPublish EventType = "pubsub_publish"
+ EventTypePubsubConsume EventType = "pubsub_consume"
)
func (e *EventType) Scan(src interface{}) error {
diff --git a/backend/controller/timeline/internal/sql/querier.go b/backend/controller/timeline/internal/sql/querier.go
index 5ea251954c..ad15ffef67 100644
--- a/backend/controller/timeline/internal/sql/querier.go
+++ b/backend/controller/timeline/internal/sql/querier.go
@@ -21,6 +21,8 @@ type Querier interface {
InsertTimelineDeploymentUpdatedEvent(ctx context.Context, arg InsertTimelineDeploymentUpdatedEventParams) error
InsertTimelineIngressEvent(ctx context.Context, arg InsertTimelineIngressEventParams) error
InsertTimelineLogEvent(ctx context.Context, arg InsertTimelineLogEventParams) error
+ InsertTimelinePubsubConsumeEvent(ctx context.Context, arg InsertTimelinePubsubConsumeEventParams) error
+ InsertTimelinePubsubPublishEvent(ctx context.Context, arg InsertTimelinePubsubPublishEventParams) error
}
var _ Querier = (*Queries)(nil)
diff --git a/backend/controller/timeline/internal/sql/queries.sql b/backend/controller/timeline/internal/sql/queries.sql
index e130b14266..2eee3cdfdf 100644
--- a/backend/controller/timeline/internal/sql/queries.sql
+++ b/backend/controller/timeline/internal/sql/queries.sql
@@ -121,6 +121,56 @@ VALUES (
sqlc.arg('payload')
);
+-- name: InsertTimelinePubsubPublishEvent :exec
+INSERT INTO timeline (
+ deployment_id,
+ request_id,
+ time_stamp,
+ type,
+ custom_key_1,
+ custom_key_2,
+ custom_key_3,
+ payload
+)
+VALUES (
+ (SELECT id FROM deployments d WHERE d.key = sqlc.arg('deployment_key')::deployment_key LIMIT 1),
+ (CASE
+ WHEN sqlc.narg('request_key')::TEXT IS NULL THEN NULL
+ ELSE (SELECT id FROM requests ir WHERE ir.key = sqlc.narg('request_key')::TEXT)
+ END),
+ sqlc.arg('time_stamp')::TIMESTAMPTZ,
+ 'pubsub_publish',
+ sqlc.arg('source_module')::TEXT,
+ sqlc.arg('source_verb')::TEXT,
+ sqlc.arg('topic')::TEXT,
+ sqlc.arg('payload')
+);
+
+-- name: InsertTimelinePubsubConsumeEvent :exec
+INSERT INTO timeline (
+ deployment_id,
+ request_id,
+ time_stamp,
+ type,
+ custom_key_1,
+ custom_key_2,
+ custom_key_3,
+ payload
+)
+VALUES (
+ (SELECT id FROM deployments d WHERE d.key = sqlc.arg('deployment_key')::deployment_key LIMIT 1),
+ (CASE
+ WHEN sqlc.narg('request_key')::TEXT IS NULL THEN NULL
+ ELSE (SELECT id FROM requests ir WHERE ir.key = sqlc.narg('request_key')::TEXT)
+ END),
+ sqlc.arg('time_stamp')::TIMESTAMPTZ,
+ 'pubsub_consume',
+ sqlc.narg('dest_module')::TEXT,
+ sqlc.narg('dest_verb')::TEXT,
+ sqlc.arg('topic')::TEXT,
+ sqlc.arg('payload')
+);
+
-- name: DeleteOldTimelineEvents :one
WITH deleted AS (
DELETE FROM timeline
diff --git a/backend/controller/timeline/internal/sql/queries.sql.go b/backend/controller/timeline/internal/sql/queries.sql.go
index 7493bd2812..6ea635a67f 100644
--- a/backend/controller/timeline/internal/sql/queries.sql.go
+++ b/backend/controller/timeline/internal/sql/queries.sql.go
@@ -293,3 +293,101 @@ func (q *Queries) InsertTimelineLogEvent(ctx context.Context, arg InsertTimeline
)
return err
}
+
+const insertTimelinePubsubConsumeEvent = `-- name: InsertTimelinePubsubConsumeEvent :exec
+INSERT INTO timeline (
+ deployment_id,
+ request_id,
+ time_stamp,
+ type,
+ custom_key_1,
+ custom_key_2,
+ custom_key_3,
+ payload
+)
+VALUES (
+ (SELECT id FROM deployments d WHERE d.key = $1::deployment_key LIMIT 1),
+ (CASE
+ WHEN $2::TEXT IS NULL THEN NULL
+ ELSE (SELECT id FROM requests ir WHERE ir.key = $2::TEXT)
+ END),
+ $3::TIMESTAMPTZ,
+ 'pubsub_consume',
+ $4::TEXT,
+ $5::TEXT,
+ $6::TEXT,
+ $7
+)
+`
+
+type InsertTimelinePubsubConsumeEventParams struct {
+ DeploymentKey model.DeploymentKey
+ RequestKey optional.Option[string]
+ TimeStamp time.Time
+ DestModule optional.Option[string]
+ DestVerb optional.Option[string]
+ Topic string
+ Payload api.EncryptedTimelineColumn
+}
+
+func (q *Queries) InsertTimelinePubsubConsumeEvent(ctx context.Context, arg InsertTimelinePubsubConsumeEventParams) error {
+ _, err := q.db.ExecContext(ctx, insertTimelinePubsubConsumeEvent,
+ arg.DeploymentKey,
+ arg.RequestKey,
+ arg.TimeStamp,
+ arg.DestModule,
+ arg.DestVerb,
+ arg.Topic,
+ arg.Payload,
+ )
+ return err
+}
+
+const insertTimelinePubsubPublishEvent = `-- name: InsertTimelinePubsubPublishEvent :exec
+INSERT INTO timeline (
+ deployment_id,
+ request_id,
+ time_stamp,
+ type,
+ custom_key_1,
+ custom_key_2,
+ custom_key_3,
+ payload
+)
+VALUES (
+ (SELECT id FROM deployments d WHERE d.key = $1::deployment_key LIMIT 1),
+ (CASE
+ WHEN $2::TEXT IS NULL THEN NULL
+ ELSE (SELECT id FROM requests ir WHERE ir.key = $2::TEXT)
+ END),
+ $3::TIMESTAMPTZ,
+ 'pubsub_publish',
+ $4::TEXT,
+ $5::TEXT,
+ $6::TEXT,
+ $7
+)
+`
+
+type InsertTimelinePubsubPublishEventParams struct {
+ DeploymentKey model.DeploymentKey
+ RequestKey optional.Option[string]
+ TimeStamp time.Time
+ SourceModule string
+ SourceVerb string
+ Topic string
+ Payload api.EncryptedTimelineColumn
+}
+
+func (q *Queries) InsertTimelinePubsubPublishEvent(ctx context.Context, arg InsertTimelinePubsubPublishEventParams) error {
+ _, err := q.db.ExecContext(ctx, insertTimelinePubsubPublishEvent,
+ arg.DeploymentKey,
+ arg.RequestKey,
+ arg.TimeStamp,
+ arg.SourceModule,
+ arg.SourceVerb,
+ arg.Topic,
+ arg.Payload,
+ )
+ return err
+}
diff --git a/backend/controller/timeline/internal/timeline_test.go b/backend/controller/timeline/internal/timeline_test.go
index fdb61f83af..eee7b3a72b 100644
--- a/backend/controller/timeline/internal/timeline_test.go
+++ b/backend/controller/timeline/internal/timeline_test.go
@@ -36,7 +36,7 @@ func TestTimeline(t *testing.T) {
timeline := timeline2.New(ctx, conn, encryption)
registry := artefacts.New(conn)
- pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener]())
+ pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener](), timeline)
key := model.NewControllerKey("localhost", strconv.Itoa(8080+1))
cjs := cronjobs.New(ctx, key, "test.com", encryption, timeline, conn)
@@ -186,6 +186,53 @@ func TestTimeline(t *testing.T) {
time.Sleep(200 * time.Millisecond)
})
+ pubSubPublishEvent := &timeline2.PubSubPublishEvent{
+ Request: []byte("null"),
+ PubSubPublish: timeline2.PubSubPublish{
+ DeploymentKey: deploymentKey,
+ RequestKey: optional.Some(requestKey.String()),
+ Time: time.Now().Round(time.Millisecond),
+ SourceVerb: schema.Ref{Module: "time", Name: "time"},
+ Topic: "test",
+ Error: optional.None[string](),
+ },
+ }
+
+ t.Run("InsertPubSubPublishEvent", func(t *testing.T) {
+ timeline.EnqueueEvent(ctx, &timeline2.PubSubPublish{
+ DeploymentKey: pubSubPublishEvent.DeploymentKey,
+ RequestKey: pubSubPublishEvent.RequestKey,
+ Time: pubSubPublishEvent.Time,
+ SourceVerb: pubSubPublishEvent.SourceVerb,
+ Topic: pubSubPublishEvent.Topic,
+ Error: pubSubPublishEvent.Error,
+ })
+ time.Sleep(200 * time.Millisecond)
+ })
+
+ pubSubConsumeEvent := &timeline2.PubSubConsumeEvent{
+ PubSubConsume: timeline2.PubSubConsume{
+ DeploymentKey: deploymentKey,
+ RequestKey: optional.Some(requestKey.String()),
+ Time: time.Now().Round(time.Millisecond),
+ DestVerb: optional.Some(schema.RefKey{Module: "time", Name: "time"}),
+ Topic: "test",
+ Error: optional.None[string](),
+ },
+ }
+
+ t.Run("InsertPubSubConsumeEvent", func(t *testing.T) {
+ timeline.EnqueueEvent(ctx, &timeline2.PubSubConsume{
+ DeploymentKey: pubSubConsumeEvent.DeploymentKey,
+ RequestKey: pubSubConsumeEvent.RequestKey,
+ Time: pubSubConsumeEvent.Time,
+ DestVerb: pubSubConsumeEvent.DestVerb,
+ Topic: pubSubConsumeEvent.Topic,
+ Error: pubSubConsumeEvent.Error,
+ })
+ time.Sleep(200 * time.Millisecond)
+ })
+
expectedDeploymentUpdatedEvent := &timeline2.DeploymentUpdatedEvent{
DeploymentKey: deploymentKey,
MinReplicas: 1,
@@ -201,13 +248,13 @@ func TestTimeline(t *testing.T) {
t.Run("NoFilters", func(t *testing.T) {
events, err := timeline.QueryTimeline(ctx, 1000)
assert.NoError(t, err)
- assertEventsEqual(t, []timeline2.Event{expectedDeploymentUpdatedEvent, callEvent, logEvent, ingressEvent, cronEvent, asyncEvent}, events)
+ assertEventsEqual(t, []timeline2.Event{expectedDeploymentUpdatedEvent, callEvent, logEvent, ingressEvent, cronEvent, asyncEvent, pubSubPublishEvent, pubSubConsumeEvent}, events)
})
t.Run("ByDeployment", func(t *testing.T) {
events, err := timeline.QueryTimeline(ctx, 1000, timeline2.FilterDeployments(deploymentKey))
assert.NoError(t, err)
- assertEventsEqual(t, []timeline2.Event{expectedDeploymentUpdatedEvent, callEvent, logEvent, ingressEvent, cronEvent, asyncEvent}, events)
+ assertEventsEqual(t, []timeline2.Event{expectedDeploymentUpdatedEvent, callEvent, logEvent, ingressEvent, cronEvent, asyncEvent, pubSubPublishEvent, pubSubConsumeEvent}, events)
})
t.Run("ByCall", func(t *testing.T) {
@@ -237,7 +284,7 @@ func TestTimeline(t *testing.T) {
t.Run("ByRequests", func(t *testing.T) {
events, err := timeline.QueryTimeline(ctx, 1000, timeline2.FilterRequests(requestKey))
assert.NoError(t, err)
- assertEventsEqual(t, []timeline2.Event{callEvent, logEvent, ingressEvent, asyncEvent}, events)
+ assertEventsEqual(t, []timeline2.Event{callEvent, logEvent, ingressEvent, asyncEvent, pubSubPublishEvent, pubSubConsumeEvent}, events)
})
})
}
@@ -269,7 +316,7 @@ func TestDeleteOldEvents(t *testing.T) {
timeline := timeline2.New(ctx, conn, encryption)
registry := artefacts.New(conn)
- pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener]())
+ pubSub := pubsub.New(ctx, conn, encryption, optional.None[pubsub.AsyncCallListener](), timeline)
controllerDAL := controllerdal.New(ctx, conn, encryption, pubSub, nil)
var testContent = bytes.Repeat([]byte("sometestcontentthatislongerthanthereadbuffer"), 100)
diff --git a/backend/controller/timeline/query.go b/backend/controller/timeline/query.go
index 7ee650877d..e18ca216bd 100644
--- a/backend/controller/timeline/query.go
+++ b/backend/controller/timeline/query.go
@@ -411,6 +411,60 @@ func (s *Service) transformRowsToTimelineEvents(deploymentKeys map[int64]model.D
},
})
+ case sql.EventTypePubsubPublish:
+ var jsonPayload eventPubSubPublishJSON
+ if err := s.encryption.DecryptJSON(&row.Payload, &jsonPayload); err != nil {
+ return nil, fmt.Errorf("failed to decrypt pubsub publish event: %w", err)
+ }
+ requestKey := optional.None[string]()
+ if rk, ok := row.RequestKey.Get(); ok {
+ requestKey = optional.Some(rk.String())
+ }
+ out = append(out, &PubSubPublishEvent{
+ ID: row.ID,
+ Duration: time.Duration(jsonPayload.DurationMS) * time.Millisecond,
+ Request: jsonPayload.Request,
+ PubSubPublish: PubSubPublish{
+ DeploymentKey: row.DeploymentKey,
+ RequestKey: requestKey,
+ Time: row.TimeStamp,
+ SourceVerb: schema.Ref{Module: row.CustomKey1.MustGet(), Name: row.CustomKey2.MustGet()},
+ Topic: jsonPayload.Topic,
+ Error: jsonPayload.Error,
+ },
+ })
+
+ case sql.EventTypePubsubConsume:
+ var jsonPayload eventPubSubConsumeJSON
+ if err := s.encryption.DecryptJSON(&row.Payload, &jsonPayload); err != nil {
+ return nil, fmt.Errorf("failed to decrypt pubsub consume event: %w", err)
+ }
+ requestKey := optional.None[string]()
+ if rk, ok := row.RequestKey.Get(); ok {
+ requestKey = optional.Some(rk.String())
+ }
+ destVerb := optional.None[schema.RefKey]()
+ if dv, ok := row.CustomKey2.Get(); ok {
+ dvr := schema.RefKey{Name: dv}
+ dm, ok := row.CustomKey1.Get()
+ if ok {
+ dvr.Module = dm
+ }
+ destVerb = optional.Some(dvr)
+ }
+ out = append(out, &PubSubConsumeEvent{
+ ID: row.ID,
+ Duration: time.Since(row.TimeStamp),
+ PubSubConsume: PubSubConsume{
+ DeploymentKey: row.DeploymentKey,
+ RequestKey: requestKey,
+ Time: row.TimeStamp,
+ DestVerb: destVerb,
+ Topic: jsonPayload.Topic,
+ Error: jsonPayload.Error,
+ },
+ })
+
default:
panic("unknown event type: " + row.Type)
}
diff --git a/backend/controller/timeline/timeline.go b/backend/controller/timeline/timeline.go
index ad48520ece..4220c04837 100644
--- a/backend/controller/timeline/timeline.go
+++ b/backend/controller/timeline/timeline.go
@@ -27,6 +27,8 @@ const (
EventTypeIngress = sql.EventTypeIngress
EventTypeCronScheduled = sql.EventTypeCronScheduled
EventTypeAsyncExecute = sql.EventTypeAsyncExecute
+ EventTypePubSubPublish = sql.EventTypePubsubPublish
+ EventTypePubSubConsume = sql.EventTypePubsubConsume
maxBatchSize = 16
maxBatchDelay = 100 * time.Millisecond
@@ -137,6 +139,10 @@ func (s *Service) flushEvents(events []Event) {
err = s.insertCronScheduledEvent(s.ctx, querier, e)
case *AsyncExecuteEvent:
err = s.insertAsyncExecuteEvent(s.ctx, querier, e)
+ case *PubSubPublishEvent:
+ err = s.insertPubSubPublishEvent(s.ctx, querier, e)
+ case *PubSubConsumeEvent:
+ err = s.insertPubSubConsumeEvent(s.ctx, querier, e)
case *DeploymentCreatedEvent, *DeploymentUpdatedEvent:
// TODO: Implement
default:
diff --git a/backend/protos/xyz/block/ftl/v1/console/console.pb.go b/backend/protos/xyz/block/ftl/v1/console/console.pb.go
index 3fc1869e6d..c24f0b6424 100644
--- a/backend/protos/xyz/block/ftl/v1/console/console.pb.go
+++ b/backend/protos/xyz/block/ftl/v1/console/console.pb.go
@@ -35,6 +35,8 @@ const (
EventType_EVENT_TYPE_INGRESS EventType = 5
EventType_EVENT_TYPE_CRON_SCHEDULED EventType = 6
EventType_EVENT_TYPE_ASYNC_EXECUTE EventType = 7
+ EventType_EVENT_TYPE_PUBSUB_PUBLISH EventType = 8
+ EventType_EVENT_TYPE_PUBSUB_CONSUME EventType = 9
)
// Enum value maps for EventType.
@@ -48,6 +50,8 @@ var (
5: "EVENT_TYPE_INGRESS",
6: "EVENT_TYPE_CRON_SCHEDULED",
7: "EVENT_TYPE_ASYNC_EXECUTE",
+ 8: "EVENT_TYPE_PUBSUB_PUBLISH",
+ 9: "EVENT_TYPE_PUBSUB_CONSUME",
}
EventType_value = map[string]int32{
"EVENT_TYPE_UNKNOWN": 0,
@@ -58,6 +62,8 @@ var (
"EVENT_TYPE_INGRESS": 5,
"EVENT_TYPE_CRON_SCHEDULED": 6,
"EVENT_TYPE_ASYNC_EXECUTE": 7,
+ "EVENT_TYPE_PUBSUB_PUBLISH": 8,
+ "EVENT_TYPE_PUBSUB_CONSUME": 9,
}
)
@@ -238,7 +244,7 @@ func (x EventsQuery_Order) Number() protoreflect.EnumNumber {
// Deprecated: Use EventsQuery_Order.Descriptor instead.
func (EventsQuery_Order) EnumDescriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 0}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 0}
}
type LogEvent struct {
@@ -924,6 +930,208 @@ func (x *AsyncExecuteEvent) GetError() string {
return ""
}
+type PubSubPublishEvent struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DeploymentKey string `protobuf:"bytes,1,opt,name=deployment_key,json=deploymentKey,proto3" json:"deployment_key,omitempty"`
+ RequestKey *string `protobuf:"bytes,2,opt,name=request_key,json=requestKey,proto3,oneof" json:"request_key,omitempty"`
+ VerbRef *schema.Ref `protobuf:"bytes,3,opt,name=verb_ref,json=verbRef,proto3" json:"verb_ref,omitempty"`
+ TimeStamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=time_stamp,json=timeStamp,proto3" json:"time_stamp,omitempty"`
+ Duration *durationpb.Duration `protobuf:"bytes,5,opt,name=duration,proto3" json:"duration,omitempty"`
+ Topic string `protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"`
+ Request string `protobuf:"bytes,7,opt,name=request,proto3" json:"request,omitempty"`
+ Error *string `protobuf:"bytes,8,opt,name=error,proto3,oneof" json:"error,omitempty"`
+}
+
+func (x *PubSubPublishEvent) Reset() {
+ *x = PubSubPublishEvent{}
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PubSubPublishEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PubSubPublishEvent) ProtoMessage() {}
+
+func (x *PubSubPublishEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PubSubPublishEvent.ProtoReflect.Descriptor instead.
+func (*PubSubPublishEvent) Descriptor() ([]byte, []int) {
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *PubSubPublishEvent) GetDeploymentKey() string {
+ if x != nil {
+ return x.DeploymentKey
+ }
+ return ""
+}
+
+func (x *PubSubPublishEvent) GetRequestKey() string {
+ if x != nil && x.RequestKey != nil {
+ return *x.RequestKey
+ }
+ return ""
+}
+
+func (x *PubSubPublishEvent) GetVerbRef() *schema.Ref {
+ if x != nil {
+ return x.VerbRef
+ }
+ return nil
+}
+
+func (x *PubSubPublishEvent) GetTimeStamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.TimeStamp
+ }
+ return nil
+}
+
+func (x *PubSubPublishEvent) GetDuration() *durationpb.Duration {
+ if x != nil {
+ return x.Duration
+ }
+ return nil
+}
+
+func (x *PubSubPublishEvent) GetTopic() string {
+ if x != nil {
+ return x.Topic
+ }
+ return ""
+}
+
+func (x *PubSubPublishEvent) GetRequest() string {
+ if x != nil {
+ return x.Request
+ }
+ return ""
+}
+
+func (x *PubSubPublishEvent) GetError() string {
+ if x != nil && x.Error != nil {
+ return *x.Error
+ }
+ return ""
+}
+
+type PubSubConsumeEvent struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ DeploymentKey string `protobuf:"bytes,1,opt,name=deployment_key,json=deploymentKey,proto3" json:"deployment_key,omitempty"`
+ RequestKey *string `protobuf:"bytes,2,opt,name=request_key,json=requestKey,proto3,oneof" json:"request_key,omitempty"`
+ DestVerbModule *string `protobuf:"bytes,3,opt,name=dest_verb_module,json=destVerbModule,proto3,oneof" json:"dest_verb_module,omitempty"`
+ DestVerbName *string `protobuf:"bytes,4,opt,name=dest_verb_name,json=destVerbName,proto3,oneof" json:"dest_verb_name,omitempty"`
+ TimeStamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=time_stamp,json=timeStamp,proto3" json:"time_stamp,omitempty"`
+ Duration *durationpb.Duration `protobuf:"bytes,6,opt,name=duration,proto3" json:"duration,omitempty"`
+ Topic string `protobuf:"bytes,7,opt,name=topic,proto3" json:"topic,omitempty"`
+ Error *string `protobuf:"bytes,8,opt,name=error,proto3,oneof" json:"error,omitempty"`
+}
+
+func (x *PubSubConsumeEvent) Reset() {
+ *x = PubSubConsumeEvent{}
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PubSubConsumeEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PubSubConsumeEvent) ProtoMessage() {}
+
+func (x *PubSubConsumeEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[8]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PubSubConsumeEvent.ProtoReflect.Descriptor instead.
+func (*PubSubConsumeEvent) Descriptor() ([]byte, []int) {
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *PubSubConsumeEvent) GetDeploymentKey() string {
+ if x != nil {
+ return x.DeploymentKey
+ }
+ return ""
+}
+
+func (x *PubSubConsumeEvent) GetRequestKey() string {
+ if x != nil && x.RequestKey != nil {
+ return *x.RequestKey
+ }
+ return ""
+}
+
+func (x *PubSubConsumeEvent) GetDestVerbModule() string {
+ if x != nil && x.DestVerbModule != nil {
+ return *x.DestVerbModule
+ }
+ return ""
+}
+
+func (x *PubSubConsumeEvent) GetDestVerbName() string {
+ if x != nil && x.DestVerbName != nil {
+ return *x.DestVerbName
+ }
+ return ""
+}
+
+func (x *PubSubConsumeEvent) GetTimeStamp() *timestamppb.Timestamp {
+ if x != nil {
+ return x.TimeStamp
+ }
+ return nil
+}
+
+func (x *PubSubConsumeEvent) GetDuration() *durationpb.Duration {
+ if x != nil {
+ return x.Duration
+ }
+ return nil
+}
+
+func (x *PubSubConsumeEvent) GetTopic() string {
+ if x != nil {
+ return x.Topic
+ }
+ return ""
+}
+
+func (x *PubSubConsumeEvent) GetError() string {
+ if x != nil && x.Error != nil {
+ return *x.Error
+ }
+ return ""
+}
+
type Config struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -935,7 +1143,7 @@ type Config struct {
func (x *Config) Reset() {
*x = Config{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[7]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -947,7 +1155,7 @@ func (x *Config) String() string {
func (*Config) ProtoMessage() {}
func (x *Config) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[7]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -960,7 +1168,7 @@ func (x *Config) ProtoReflect() protoreflect.Message {
// Deprecated: Use Config.ProtoReflect.Descriptor instead.
func (*Config) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{7}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{9}
}
func (x *Config) GetConfig() *schema.Config {
@@ -989,7 +1197,7 @@ type Data struct {
func (x *Data) Reset() {
*x = Data{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[8]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1001,7 +1209,7 @@ func (x *Data) String() string {
func (*Data) ProtoMessage() {}
func (x *Data) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[8]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1014,7 +1222,7 @@ func (x *Data) ProtoReflect() protoreflect.Message {
// Deprecated: Use Data.ProtoReflect.Descriptor instead.
func (*Data) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{8}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{10}
}
func (x *Data) GetData() *schema.Data {
@@ -1049,7 +1257,7 @@ type Database struct {
func (x *Database) Reset() {
*x = Database{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[9]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1061,7 +1269,7 @@ func (x *Database) String() string {
func (*Database) ProtoMessage() {}
func (x *Database) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[9]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1074,7 +1282,7 @@ func (x *Database) ProtoReflect() protoreflect.Message {
// Deprecated: Use Database.ProtoReflect.Descriptor instead.
func (*Database) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{9}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{11}
}
func (x *Database) GetDatabase() *schema.Database {
@@ -1102,7 +1310,7 @@ type Enum struct {
func (x *Enum) Reset() {
*x = Enum{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[10]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1114,7 +1322,7 @@ func (x *Enum) String() string {
func (*Enum) ProtoMessage() {}
func (x *Enum) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[10]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1127,7 +1335,7 @@ func (x *Enum) ProtoReflect() protoreflect.Message {
// Deprecated: Use Enum.ProtoReflect.Descriptor instead.
func (*Enum) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{10}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{12}
}
func (x *Enum) GetEnum() *schema.Enum {
@@ -1155,7 +1363,7 @@ type Topic struct {
func (x *Topic) Reset() {
*x = Topic{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[11]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1167,7 +1375,7 @@ func (x *Topic) String() string {
func (*Topic) ProtoMessage() {}
func (x *Topic) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[11]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1180,7 +1388,7 @@ func (x *Topic) ProtoReflect() protoreflect.Message {
// Deprecated: Use Topic.ProtoReflect.Descriptor instead.
func (*Topic) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{11}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{13}
}
func (x *Topic) GetTopic() *schema.Topic {
@@ -1208,7 +1416,7 @@ type TypeAlias struct {
func (x *TypeAlias) Reset() {
*x = TypeAlias{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[12]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1220,7 +1428,7 @@ func (x *TypeAlias) String() string {
func (*TypeAlias) ProtoMessage() {}
func (x *TypeAlias) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[12]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1233,7 +1441,7 @@ func (x *TypeAlias) ProtoReflect() protoreflect.Message {
// Deprecated: Use TypeAlias.ProtoReflect.Descriptor instead.
func (*TypeAlias) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{12}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{14}
}
func (x *TypeAlias) GetTypealias() *schema.TypeAlias {
@@ -1261,7 +1469,7 @@ type Secret struct {
func (x *Secret) Reset() {
*x = Secret{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[13]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1273,7 +1481,7 @@ func (x *Secret) String() string {
func (*Secret) ProtoMessage() {}
func (x *Secret) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[13]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1286,7 +1494,7 @@ func (x *Secret) ProtoReflect() protoreflect.Message {
// Deprecated: Use Secret.ProtoReflect.Descriptor instead.
func (*Secret) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{13}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{15}
}
func (x *Secret) GetSecret() *schema.Secret {
@@ -1314,7 +1522,7 @@ type Subscription struct {
func (x *Subscription) Reset() {
*x = Subscription{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[14]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1326,7 +1534,7 @@ func (x *Subscription) String() string {
func (*Subscription) ProtoMessage() {}
func (x *Subscription) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[14]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1339,7 +1547,7 @@ func (x *Subscription) ProtoReflect() protoreflect.Message {
// Deprecated: Use Subscription.ProtoReflect.Descriptor instead.
func (*Subscription) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{14}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{16}
}
func (x *Subscription) GetSubscription() *schema.Subscription {
@@ -1369,7 +1577,7 @@ type Verb struct {
func (x *Verb) Reset() {
*x = Verb{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[15]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1381,7 +1589,7 @@ func (x *Verb) String() string {
func (*Verb) ProtoMessage() {}
func (x *Verb) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[15]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1394,7 +1602,7 @@ func (x *Verb) ProtoReflect() protoreflect.Message {
// Deprecated: Use Verb.ProtoReflect.Descriptor instead.
func (*Verb) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{15}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{17}
}
func (x *Verb) GetVerb() *schema.Verb {
@@ -1447,7 +1655,7 @@ type Module struct {
func (x *Module) Reset() {
*x = Module{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[16]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1459,7 +1667,7 @@ func (x *Module) String() string {
func (*Module) ProtoMessage() {}
func (x *Module) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[16]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1472,7 +1680,7 @@ func (x *Module) ProtoReflect() protoreflect.Message {
// Deprecated: Use Module.ProtoReflect.Descriptor instead.
func (*Module) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{16}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{18}
}
func (x *Module) GetName() string {
@@ -1576,7 +1784,7 @@ type TopologyGroup struct {
func (x *TopologyGroup) Reset() {
*x = TopologyGroup{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[17]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1588,7 +1796,7 @@ func (x *TopologyGroup) String() string {
func (*TopologyGroup) ProtoMessage() {}
func (x *TopologyGroup) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[17]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1601,7 +1809,7 @@ func (x *TopologyGroup) ProtoReflect() protoreflect.Message {
// Deprecated: Use TopologyGroup.ProtoReflect.Descriptor instead.
func (*TopologyGroup) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{17}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{19}
}
func (x *TopologyGroup) GetModules() []string {
@@ -1621,7 +1829,7 @@ type Topology struct {
func (x *Topology) Reset() {
*x = Topology{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[18]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1633,7 +1841,7 @@ func (x *Topology) String() string {
func (*Topology) ProtoMessage() {}
func (x *Topology) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[18]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1646,7 +1854,7 @@ func (x *Topology) ProtoReflect() protoreflect.Message {
// Deprecated: Use Topology.ProtoReflect.Descriptor instead.
func (*Topology) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{18}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{20}
}
func (x *Topology) GetLevels() []*TopologyGroup {
@@ -1664,7 +1872,7 @@ type GetModulesRequest struct {
func (x *GetModulesRequest) Reset() {
*x = GetModulesRequest{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[19]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1676,7 +1884,7 @@ func (x *GetModulesRequest) String() string {
func (*GetModulesRequest) ProtoMessage() {}
func (x *GetModulesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[19]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1689,7 +1897,7 @@ func (x *GetModulesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetModulesRequest.ProtoReflect.Descriptor instead.
func (*GetModulesRequest) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{19}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{21}
}
type GetModulesResponse struct {
@@ -1703,7 +1911,7 @@ type GetModulesResponse struct {
func (x *GetModulesResponse) Reset() {
*x = GetModulesResponse{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[20]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1715,7 +1923,7 @@ func (x *GetModulesResponse) String() string {
func (*GetModulesResponse) ProtoMessage() {}
func (x *GetModulesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[20]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1728,7 +1936,7 @@ func (x *GetModulesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetModulesResponse.ProtoReflect.Descriptor instead.
func (*GetModulesResponse) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{20}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{22}
}
func (x *GetModulesResponse) GetModules() []*Module {
@@ -1753,7 +1961,7 @@ type StreamModulesRequest struct {
func (x *StreamModulesRequest) Reset() {
*x = StreamModulesRequest{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[21]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1765,7 +1973,7 @@ func (x *StreamModulesRequest) String() string {
func (*StreamModulesRequest) ProtoMessage() {}
func (x *StreamModulesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[21]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[23]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1778,7 +1986,7 @@ func (x *StreamModulesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use StreamModulesRequest.ProtoReflect.Descriptor instead.
func (*StreamModulesRequest) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{21}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23}
}
type StreamModulesResponse struct {
@@ -1791,7 +1999,7 @@ type StreamModulesResponse struct {
func (x *StreamModulesResponse) Reset() {
*x = StreamModulesResponse{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[22]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1803,7 +2011,7 @@ func (x *StreamModulesResponse) String() string {
func (*StreamModulesResponse) ProtoMessage() {}
func (x *StreamModulesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[22]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[24]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1816,7 +2024,7 @@ func (x *StreamModulesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use StreamModulesResponse.ProtoReflect.Descriptor instead.
func (*StreamModulesResponse) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{22}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{24}
}
func (x *StreamModulesResponse) GetModules() []*Module {
@@ -1839,7 +2047,7 @@ type EventsQuery struct {
func (x *EventsQuery) Reset() {
*x = EventsQuery{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[23]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1851,7 +2059,7 @@ func (x *EventsQuery) String() string {
func (*EventsQuery) ProtoMessage() {}
func (x *EventsQuery) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[23]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[25]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1864,7 +2072,7 @@ func (x *EventsQuery) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery.ProtoReflect.Descriptor instead.
func (*EventsQuery) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25}
}
func (x *EventsQuery) GetFilters() []*EventsQuery_Filter {
@@ -1899,7 +2107,7 @@ type StreamEventsRequest struct {
func (x *StreamEventsRequest) Reset() {
*x = StreamEventsRequest{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[24]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1911,7 +2119,7 @@ func (x *StreamEventsRequest) String() string {
func (*StreamEventsRequest) ProtoMessage() {}
func (x *StreamEventsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[24]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[26]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1924,7 +2132,7 @@ func (x *StreamEventsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use StreamEventsRequest.ProtoReflect.Descriptor instead.
func (*StreamEventsRequest) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{24}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{26}
}
func (x *StreamEventsRequest) GetUpdateInterval() *durationpb.Duration {
@@ -1951,7 +2159,7 @@ type StreamEventsResponse struct {
func (x *StreamEventsResponse) Reset() {
*x = StreamEventsResponse{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[25]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1963,7 +2171,7 @@ func (x *StreamEventsResponse) String() string {
func (*StreamEventsResponse) ProtoMessage() {}
func (x *StreamEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[25]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[27]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1976,7 +2184,7 @@ func (x *StreamEventsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use StreamEventsResponse.ProtoReflect.Descriptor instead.
func (*StreamEventsResponse) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{27}
}
func (x *StreamEventsResponse) GetEvents() []*Event {
@@ -2003,12 +2211,14 @@ type Event struct {
// *Event_Ingress
// *Event_CronScheduled
// *Event_AsyncExecute
+ // *Event_PubsubPublish
+ // *Event_PubsubConsume
Entry isEvent_Entry `protobuf_oneof:"entry"`
}
func (x *Event) Reset() {
*x = Event{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[26]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2020,7 +2230,7 @@ func (x *Event) String() string {
func (*Event) ProtoMessage() {}
func (x *Event) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[26]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[28]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2033,7 +2243,7 @@ func (x *Event) ProtoReflect() protoreflect.Message {
// Deprecated: Use Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{26}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{28}
}
func (x *Event) GetTimeStamp() *timestamppb.Timestamp {
@@ -2106,6 +2316,20 @@ func (x *Event) GetAsyncExecute() *AsyncExecuteEvent {
return nil
}
+func (x *Event) GetPubsubPublish() *PubSubPublishEvent {
+ if x, ok := x.GetEntry().(*Event_PubsubPublish); ok {
+ return x.PubsubPublish
+ }
+ return nil
+}
+
+func (x *Event) GetPubsubConsume() *PubSubConsumeEvent {
+ if x, ok := x.GetEntry().(*Event_PubsubConsume); ok {
+ return x.PubsubConsume
+ }
+ return nil
+}
+
type isEvent_Entry interface {
isEvent_Entry()
}
@@ -2138,6 +2362,14 @@ type Event_AsyncExecute struct {
AsyncExecute *AsyncExecuteEvent `protobuf:"bytes,9,opt,name=async_execute,json=asyncExecute,proto3,oneof"`
}
+type Event_PubsubPublish struct {
+ PubsubPublish *PubSubPublishEvent `protobuf:"bytes,10,opt,name=pubsub_publish,json=pubsubPublish,proto3,oneof"`
+}
+
+type Event_PubsubConsume struct {
+ PubsubConsume *PubSubConsumeEvent `protobuf:"bytes,11,opt,name=pubsub_consume,json=pubsubConsume,proto3,oneof"`
+}
+
func (*Event_Log) isEvent_Entry() {}
func (*Event_Call) isEvent_Entry() {}
@@ -2152,6 +2384,10 @@ func (*Event_CronScheduled) isEvent_Entry() {}
func (*Event_AsyncExecute) isEvent_Entry() {}
+func (*Event_PubsubPublish) isEvent_Entry() {}
+
+func (*Event_PubsubConsume) isEvent_Entry() {}
+
type GetEventsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2164,7 +2400,7 @@ type GetEventsResponse struct {
func (x *GetEventsResponse) Reset() {
*x = GetEventsResponse{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[27]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2176,7 +2412,7 @@ func (x *GetEventsResponse) String() string {
func (*GetEventsResponse) ProtoMessage() {}
func (x *GetEventsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[27]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[29]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2189,7 +2425,7 @@ func (x *GetEventsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetEventsResponse.ProtoReflect.Descriptor instead.
func (*GetEventsResponse) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{27}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{29}
}
func (x *GetEventsResponse) GetEvents() []*Event {
@@ -2217,7 +2453,7 @@ type EventsQuery_LimitFilter struct {
func (x *EventsQuery_LimitFilter) Reset() {
*x = EventsQuery_LimitFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[29]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2229,7 +2465,7 @@ func (x *EventsQuery_LimitFilter) String() string {
func (*EventsQuery_LimitFilter) ProtoMessage() {}
func (x *EventsQuery_LimitFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[29]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[31]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2242,7 +2478,7 @@ func (x *EventsQuery_LimitFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_LimitFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_LimitFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 0}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 0}
}
func (x *EventsQuery_LimitFilter) GetLimit() int32 {
@@ -2263,7 +2499,7 @@ type EventsQuery_LogLevelFilter struct {
func (x *EventsQuery_LogLevelFilter) Reset() {
*x = EventsQuery_LogLevelFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[30]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2275,7 +2511,7 @@ func (x *EventsQuery_LogLevelFilter) String() string {
func (*EventsQuery_LogLevelFilter) ProtoMessage() {}
func (x *EventsQuery_LogLevelFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[30]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[32]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2288,7 +2524,7 @@ func (x *EventsQuery_LogLevelFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_LogLevelFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_LogLevelFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 1}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 1}
}
func (x *EventsQuery_LogLevelFilter) GetLogLevel() LogLevel {
@@ -2309,7 +2545,7 @@ type EventsQuery_DeploymentFilter struct {
func (x *EventsQuery_DeploymentFilter) Reset() {
*x = EventsQuery_DeploymentFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[31]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2321,7 +2557,7 @@ func (x *EventsQuery_DeploymentFilter) String() string {
func (*EventsQuery_DeploymentFilter) ProtoMessage() {}
func (x *EventsQuery_DeploymentFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[31]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[33]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2334,7 +2570,7 @@ func (x *EventsQuery_DeploymentFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_DeploymentFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_DeploymentFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 2}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 2}
}
func (x *EventsQuery_DeploymentFilter) GetDeployments() []string {
@@ -2355,7 +2591,7 @@ type EventsQuery_RequestFilter struct {
func (x *EventsQuery_RequestFilter) Reset() {
*x = EventsQuery_RequestFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[32]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2367,7 +2603,7 @@ func (x *EventsQuery_RequestFilter) String() string {
func (*EventsQuery_RequestFilter) ProtoMessage() {}
func (x *EventsQuery_RequestFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[32]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[34]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2380,7 +2616,7 @@ func (x *EventsQuery_RequestFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_RequestFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_RequestFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 3}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 3}
}
func (x *EventsQuery_RequestFilter) GetRequests() []string {
@@ -2401,7 +2637,7 @@ type EventsQuery_EventTypeFilter struct {
func (x *EventsQuery_EventTypeFilter) Reset() {
*x = EventsQuery_EventTypeFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[33]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2413,7 +2649,7 @@ func (x *EventsQuery_EventTypeFilter) String() string {
func (*EventsQuery_EventTypeFilter) ProtoMessage() {}
func (x *EventsQuery_EventTypeFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[33]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[35]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2426,7 +2662,7 @@ func (x *EventsQuery_EventTypeFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_EventTypeFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_EventTypeFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 4}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 4}
}
func (x *EventsQuery_EventTypeFilter) GetEventTypes() []EventType {
@@ -2450,7 +2686,7 @@ type EventsQuery_TimeFilter struct {
func (x *EventsQuery_TimeFilter) Reset() {
*x = EventsQuery_TimeFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[34]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2462,7 +2698,7 @@ func (x *EventsQuery_TimeFilter) String() string {
func (*EventsQuery_TimeFilter) ProtoMessage() {}
func (x *EventsQuery_TimeFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[34]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[36]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2475,7 +2711,7 @@ func (x *EventsQuery_TimeFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_TimeFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_TimeFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 5}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 5}
}
func (x *EventsQuery_TimeFilter) GetOlderThan() *timestamppb.Timestamp {
@@ -2506,7 +2742,7 @@ type EventsQuery_IDFilter struct {
func (x *EventsQuery_IDFilter) Reset() {
*x = EventsQuery_IDFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[35]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2518,7 +2754,7 @@ func (x *EventsQuery_IDFilter) String() string {
func (*EventsQuery_IDFilter) ProtoMessage() {}
func (x *EventsQuery_IDFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[35]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[37]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2531,7 +2767,7 @@ func (x *EventsQuery_IDFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_IDFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_IDFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 6}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 6}
}
func (x *EventsQuery_IDFilter) GetLowerThan() int64 {
@@ -2561,7 +2797,7 @@ type EventsQuery_CallFilter struct {
func (x *EventsQuery_CallFilter) Reset() {
*x = EventsQuery_CallFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[36]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2573,7 +2809,7 @@ func (x *EventsQuery_CallFilter) String() string {
func (*EventsQuery_CallFilter) ProtoMessage() {}
func (x *EventsQuery_CallFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[36]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[38]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2586,7 +2822,7 @@ func (x *EventsQuery_CallFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_CallFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_CallFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 7}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 7}
}
func (x *EventsQuery_CallFilter) GetDestModule() string {
@@ -2621,7 +2857,7 @@ type EventsQuery_ModuleFilter struct {
func (x *EventsQuery_ModuleFilter) Reset() {
*x = EventsQuery_ModuleFilter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[37]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2633,7 +2869,7 @@ func (x *EventsQuery_ModuleFilter) String() string {
func (*EventsQuery_ModuleFilter) ProtoMessage() {}
func (x *EventsQuery_ModuleFilter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[37]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[39]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2646,7 +2882,7 @@ func (x *EventsQuery_ModuleFilter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_ModuleFilter.ProtoReflect.Descriptor instead.
func (*EventsQuery_ModuleFilter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 8}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 8}
}
func (x *EventsQuery_ModuleFilter) GetModule() string {
@@ -2686,7 +2922,7 @@ type EventsQuery_Filter struct {
func (x *EventsQuery_Filter) Reset() {
*x = EventsQuery_Filter{}
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[38]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2698,7 +2934,7 @@ func (x *EventsQuery_Filter) String() string {
func (*EventsQuery_Filter) ProtoMessage() {}
func (x *EventsQuery_Filter) ProtoReflect() protoreflect.Message {
- mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[38]
+ mi := &file_xyz_block_ftl_v1_console_console_proto_msgTypes[40]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2711,7 +2947,7 @@ func (x *EventsQuery_Filter) ProtoReflect() protoreflect.Message {
// Deprecated: Use EventsQuery_Filter.ProtoReflect.Descriptor instead.
func (*EventsQuery_Filter) Descriptor() ([]byte, []int) {
- return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{23, 9}
+ return file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP(), []int{25, 9}
}
func (m *EventsQuery_Filter) GetFilter() isEventsQuery_Filter_Filter {
@@ -3019,398 +3255,462 @@ var file_xyz_block_ftl_v1_console_console_proto_rawDesc = []byte{
0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65,
- 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37,
- 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
- 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
- 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79,
- 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31,
- 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78,
- 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74,
- 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+ 0x72, 0x72, 0x6f, 0x72, 0x22, 0xf1, 0x02, 0x0a, 0x12, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x50,
+ 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64,
+ 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b,
+ 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6b, 0x65,
+ 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x62,
+ 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a,
+ 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x07, 0x76, 0x65, 0x72, 0x62, 0x52, 0x65,
+ 0x66, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x35, 0x0a, 0x08,
+ 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 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, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e,
+ 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x08,
+ 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa0, 0x03, 0x0a, 0x12, 0x50, 0x75, 0x62,
+ 0x53, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
+ 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
+ 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10,
+ 0x64, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x56, 0x65,
+ 0x72, 0x62, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x64,
+ 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x62, 0x4e,
+ 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 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, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
+ 0x70, 0x12, 0x35, 0x0a, 0x08, 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, 0x08,
+ 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69,
+ 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x19,
+ 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52,
+ 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x65,
+ 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x11,
+ 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7f, 0x0a, 0x06, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c,
+ 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66,
+ 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a,
+ 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e,
+ 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61,
+ 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52,
+ 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x87,
+ 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x64,
+ 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
- 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61,
- 0x62, 0x61, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
- 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
- 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62,
- 0x61, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65,
+ 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
+ 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65,
+ 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x77, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d,
+ 0x12, 0x31, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
+ 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
+ 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x65,
+ 0x6e, 0x75, 0x6d, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d,
0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x73, 0x22, 0x77, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x04, 0x65, 0x6e, 0x75,
- 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
- 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x3c, 0x0a, 0x0a,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
- 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x05, 0x54, 0x6f,
- 0x70, 0x69, 0x63, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
- 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x6f, 0x70,
- 0x69, 0x63, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66,
+ 0x73, 0x22, 0x7b, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x6f,
+ 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63,
+ 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52,
+ 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x8b,
+ 0x01, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x40, 0x0a, 0x09,
+ 0x74, 0x79, 0x70, 0x65, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
+ 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c,
+ 0x69, 0x61, 0x73, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3c,
+ 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66,
+ 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x06,
+ 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12,
+ 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e,
+ 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65,
+ 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x97, 0x01,
+ 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49,
+ 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53,
+ 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62,
+ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66,
0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65,
- 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x61, 0x6c, 0x69,
- 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62,
- 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x09, 0x74, 0x79,
- 0x70, 0x65, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79,
- 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
- 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12,
- 0x37, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
- 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
- 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78,
- 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
- 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
- 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
- 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
- 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
- 0x22, 0xbf, 0x01, 0x0a, 0x04, 0x56, 0x65, 0x72, 0x62, 0x12, 0x31, 0x0a, 0x04, 0x76, 0x65, 0x72,
- 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
- 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x12, 0x16, 0x0a, 0x06,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x12, 0x2e, 0x0a, 0x13, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x11, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62,
- 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x73, 0x22, 0x9f, 0x05, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
- 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f,
- 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67,
- 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67,
- 0x75, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x34, 0x0a, 0x05,
- 0x76, 0x65, 0x72, 0x62, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79,
- 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63,
- 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x52, 0x05, 0x76, 0x65, 0x72,
- 0x62, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
- 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61,
- 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
- 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x04, 0x56, 0x65, 0x72, 0x62,
+ 0x12, 0x31, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,
+ 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
+ 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, 0x65, 0x72, 0x62, 0x52, 0x04, 0x76,
+ 0x65, 0x72, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x2e, 0x0a, 0x13, 0x6a,
+ 0x73, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3c, 0x0a, 0x0a, 0x72,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
+ 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x72,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x9f, 0x05, 0x0a, 0x06, 0x4d, 0x6f,
+ 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c,
+ 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12,
+ 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x65, 0x72, 0x62, 0x73, 0x18, 0x05, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x56, 0x65,
+ 0x72, 0x62, 0x52, 0x05, 0x76, 0x65, 0x72, 0x62, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74,
+ 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65,
- 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x08, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e,
- 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x40,
- 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
- 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x44, 0x61, 0x74,
- 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73,
- 0x12, 0x34, 0x0a, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
- 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
- 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73,
- 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
+ 0x6c, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a,
+ 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
+ 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
+ 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+ 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x79, 0x7a,
+ 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f,
+ 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73,
+ 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x09, 0x64, 0x61,
+ 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+ 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12,
- 0x45, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x0c,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
- 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
- 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x61,
- 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+ 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x37, 0x0a,
+ 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
- 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x29, 0x0a, 0x0d, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22,
- 0x4b, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x3f, 0x0a, 0x06, 0x6c,
- 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x06,
+ 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x61, 0x6c,
+ 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x79,
0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63,
- 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x22, 0x13, 0x0a, 0x11,
- 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75,
- 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x79, 0x7a, 0x2e,
+ 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73,
+ 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x4c, 0x0a,
+ 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x75,
+ 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x29, 0x0a, 0x0d, 0x54,
+ 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07,
+ 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d,
+ 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f,
+ 0x67, 0x79, 0x12, 0x3f, 0x0a, 0x06, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x54, 0x6f,
+ 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x6c, 0x65, 0x76,
+ 0x65, 0x6c, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74,
+ 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3a, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x20, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
+ 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75,
+ 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x74,
+ 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+ 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67,
+ 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x22, 0x16, 0x0a, 0x14, 0x53,
+ 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64,
+ 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07,
+ 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+ 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52,
+ 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0xe4, 0x0d, 0x0a, 0x0b, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x79, 0x7a, 0x2e,
0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e,
- 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64,
- 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
- 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x6f,
- 0x6c, 0x6f, 0x67, 0x79, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f,
- 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x15,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
- 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
- 0x73, 0x22, 0xe4, 0x0d, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72,
- 0x79, 0x12, 0x46, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
- 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12,
- 0x41, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79,
+ 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
+ 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x41, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
+ 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x72, 0x64,
+ 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x23, 0x0a, 0x0b, 0x4c, 0x69, 0x6d,
+ 0x69, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x51,
+ 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x3f, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e,
+ 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x4c,
+ 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65,
+ 0x6c, 0x1a, 0x34, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46,
+ 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
+ 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c,
+ 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x2b, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x73, 0x1a, 0x57, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+ 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74,
+ 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x78,
+ 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+ 0x65, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0xaa, 0x01,
+ 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0a,
+ 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09,
+ 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a,
+ 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18, 0x02, 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, 0x48, 0x01, 0x52, 0x09,
+ 0x6e, 0x65, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b,
+ 0x5f, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
+ 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x1a, 0x73, 0x0a, 0x08, 0x49, 0x44,
+ 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f,
+ 0x74, 0x68, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f,
+ 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x69,
+ 0x67, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48,
+ 0x01, 0x52, 0x0a, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01,
+ 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42,
+ 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x1a,
+ 0x99, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12,
+ 0x20, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x62, 0x88, 0x01,
+ 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x75,
+ 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
+ 0x64, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x48, 0x0a, 0x0c, 0x4d,
+ 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d,
+ 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64,
+ 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05,
+ 0x5f, 0x76, 0x65, 0x72, 0x62, 0x1a, 0xdb, 0x05, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x49, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
+ 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x74,
+ 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x53, 0x0a, 0x09, 0x6c,
+ 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34,
0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64,
- 0x65, 0x72, 0x1a, 0x23, 0x0a, 0x0b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x51, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x4c, 0x65,
- 0x76, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x09, 0x6c, 0x6f, 0x67,
- 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x78,
- 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
- 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c,
- 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x34, 0x0a, 0x10, 0x44, 0x65,
- 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20,
- 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73,
- 0x1a, 0x2b, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65,
- 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x1a, 0x57, 0x0a,
- 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
- 0x12, 0x44, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63,
+ 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c,
+ 0x12, 0x5a, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63,
0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0xaa, 0x01, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74,
- 0x68, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x68,
- 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x74,
- 0x68, 0x61, 0x6e, 0x18, 0x02, 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, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x54, 0x68,
- 0x61, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f,
- 0x74, 0x68, 0x61, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x5f, 0x74,
- 0x68, 0x61, 0x6e, 0x1a, 0x73, 0x0a, 0x08, 0x49, 0x44, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
- 0x22, 0x0a, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e,
- 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x69, 0x67, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x68,
- 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x68, 0x69, 0x67, 0x68,
- 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c, 0x6f,
- 0x77, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x69, 0x67,
- 0x68, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x1a, 0x99, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x6c,
- 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x5f,
- 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
- 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74,
- 0x5f, 0x76, 0x65, 0x72, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x64,
- 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x62, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
- 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65,
- 0x72, 0x62, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x6f,
- 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x48, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04,
- 0x76, 0x65, 0x72, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x76, 0x65,
- 0x72, 0x62, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x1a, 0xdb,
- 0x05, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x05, 0x6c, 0x69, 0x6d,
- 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62,
- 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6c,
- 0x69, 0x6d, 0x69, 0x74, 0x12, 0x53, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
- 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4c,
- 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52,
- 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x5a, 0x0a, 0x0b, 0x64, 0x65, 0x70,
- 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36,
+ 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x70,
+ 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52,
+ 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x08,
+ 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33,
0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79,
- 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
+ 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12,
+ 0x58, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
- 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08,
- 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e,
+ 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x6d,
+ 0x65, 0x12, 0x40, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51,
- 0x75, 0x65, 0x72, 0x79, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x46, 0x69,
- 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
- 0x65, 0x73, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
- 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
- 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x44,
- 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x04,
- 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a,
- 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f,
- 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72,
- 0x79, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04,
- 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x4c, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x09,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x44, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
+ 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x4c, 0x0a, 0x06, 0x6d,
+ 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x78, 0x79,
+ 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63,
+ 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65,
+ 0x72, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48,
+ 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c,
+ 0x74, 0x65, 0x72, 0x22, 0x1a, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x07, 0x0a, 0x03,
+ 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x22,
+ 0xaf, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 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, 0x48, 0x00, 0x52, 0x0e, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01,
+ 0x12, 0x3b, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
+ 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x12, 0x0a,
+ 0x10, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
+ 0x6c, 0x22, 0x4f, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e,
+ 0x74, 0x73, 0x22, 0xb1, 0x06, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a,
+ 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69,
+ 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x75,
- 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75,
- 0x6c, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x1a, 0x0a, 0x05,
- 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x00, 0x12, 0x08,
- 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72,
- 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x47, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72,
- 0x76, 0x61, 0x6c, 0x18, 0x01, 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, 0x48, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e,
- 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x05, 0x71, 0x75, 0x65,
- 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62,
- 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52,
- 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x4f, 0x0a, 0x14, 0x53, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
- 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x83, 0x05, 0x0a, 0x05,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x36, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+ 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12,
+ 0x39, 0x0a, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
- 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x39, 0x0a, 0x04, 0x63, 0x61, 0x6c, 0x6c,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
+ 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x61, 0x0a, 0x12, 0x64, 0x65,
+ 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63,
- 0x61, 0x6c, 0x6c, 0x12, 0x61, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
- 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
- 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f,
- 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x61, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79,
- 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
- 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x44, 0x65,
- 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45,
- 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
- 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x07, 0x69, 0x6e, 0x67,
- 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a,
- 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f,
- 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a,
- 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63,
- 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64,
- 0x75, 0x6c, 0x65, 0x64, 0x12, 0x52, 0x0a, 0x0d, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x78,
- 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x79,
+ 0x65, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x70, 0x6c,
+ 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x61, 0x0a,
+ 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e,
+ 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x64,
+ 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x12, 0x42, 0x0a, 0x07, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x26, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
+ 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x49, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x67,
+ 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
+ 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78,
+ 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x72,
+ 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x52, 0x0a, 0x0d, 0x61,
+ 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x41, 0x73,
+ 0x79, 0x6e, 0x63, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48,
+ 0x00, 0x52, 0x0c, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12,
+ 0x55, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73,
+ 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
+ 0x6c, 0x65, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x50,
+ 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x55, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62,
+ 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
+ 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
+ 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62,
+ 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d,
+ 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x42, 0x07, 0x0a,
+ 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x74, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79,
0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63,
- 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x45, 0x78, 0x65, 0x63,
- 0x75, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x73, 0x79, 0x6e,
- 0x63, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72,
- 0x79, 0x22, 0x74, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f,
- 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c,
- 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12,
- 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48,
- 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07,
- 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x2a, 0xe7, 0x01, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a,
- 0x0e, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x10,
- 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f,
- 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x56, 0x45,
- 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45,
- 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12,
- 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45,
- 0x53, 0x53, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59,
- 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45,
- 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x10,
- 0x07, 0x2a, 0x85, 0x01, 0x0a, 0x15, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x45, 0x78, 0x65, 0x63, 0x75,
- 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x41,
- 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45,
- 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
- 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55,
- 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52,
- 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58,
+ 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01,
+ 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x2a, 0xa5, 0x02, 0x0a,
+ 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56,
+ 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
+ 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x45,
+ 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59,
+ 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21,
+ 0x0a, 0x1d, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50,
+ 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10,
+ 0x04, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x56, 0x45,
+ 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x48,
+ 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e,
+ 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58, 0x45,
+ 0x43, 0x55, 0x54, 0x45, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x55, 0x42, 0x4c,
+ 0x49, 0x53, 0x48, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x53, 0x55, 0x42, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55,
+ 0x4d, 0x45, 0x10, 0x09, 0x2a, 0x85, 0x01, 0x0a, 0x15, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x45, 0x78,
+ 0x65, 0x63, 0x75, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24,
+ 0x0a, 0x20, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x5f,
+ 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
+ 0x57, 0x4e, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x58,
0x45, 0x43, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
- 0x5f, 0x50, 0x55, 0x42, 0x53, 0x55, 0x42, 0x10, 0x02, 0x2a, 0x88, 0x01, 0x0a, 0x08, 0x4c, 0x6f,
- 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45,
- 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a,
- 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45,
- 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
- 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c,
- 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x4c,
- 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x0d, 0x12,
- 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52,
- 0x4f, 0x52, 0x10, 0x11, 0x32, 0x8b, 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12,
- 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
- 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e,
- 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
- 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03,
- 0x90, 0x02, 0x01, 0x12, 0x67, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
- 0x73, 0x12, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
+ 0x5f, 0x43, 0x52, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x53, 0x59, 0x4e, 0x43,
+ 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x53, 0x55, 0x42, 0x10, 0x02, 0x2a, 0x88, 0x01, 0x0a,
+ 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x4f, 0x47,
+ 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
+ 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52,
+ 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56,
+ 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f,
+ 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x09, 0x12, 0x12,
+ 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e,
+ 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
+ 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x11, 0x32, 0x8b, 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x04, 0x50, 0x69,
+ 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
+ 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x67, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64,
+ 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e,
+ 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x2c, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74,
- 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
- 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
- 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64,
- 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0d,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x2e,
- 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
- 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d,
- 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
- 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31,
- 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d,
- 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01,
- 0x12, 0x6f, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x12, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
+ 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x72, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
+ 0x12, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e,
- 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30,
- 0x01, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25,
- 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76,
- 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63,
- 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x42, 0x50, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x54, 0x42, 0x44, 0x35, 0x34, 0x35, 0x36, 0x36, 0x39, 0x37, 0x35, 0x2f, 0x66,
- 0x74, 0x6c, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x73, 0x2f, 0x78, 0x79, 0x7a, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, 0x66, 0x74, 0x6c, 0x2f,
- 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x3b, 0x70, 0x62, 0x63, 0x6f, 0x6e,
- 0x73, 0x6f, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c,
+ 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x65,
+ 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x30, 0x01, 0x12, 0x6f, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e,
+ 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53,
+ 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66,
+ 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x12, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74,
+ 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x2b, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x73,
+ 0x6f, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x50, 0x50, 0x01, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75,
+ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x42, 0x44, 0x35, 0x34, 0x35, 0x36, 0x36, 0x39, 0x37,
+ 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, 0x79, 0x7a, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, 0x66,
+ 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x3b, 0x70, 0x62,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3426,7 +3726,7 @@ func file_xyz_block_ftl_v1_console_console_proto_rawDescGZIP() []byte {
}
var file_xyz_block_ftl_v1_console_console_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_xyz_block_ftl_v1_console_console_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
+var file_xyz_block_ftl_v1_console_console_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
var file_xyz_block_ftl_v1_console_console_proto_goTypes = []any{
(EventType)(0), // 0: xyz.block.ftl.v1.console.EventType
(AsyncExecuteEventType)(0), // 1: xyz.block.ftl.v1.console.AsyncExecuteEventType
@@ -3439,144 +3739,153 @@ var file_xyz_block_ftl_v1_console_console_proto_goTypes = []any{
(*IngressEvent)(nil), // 8: xyz.block.ftl.v1.console.IngressEvent
(*CronScheduledEvent)(nil), // 9: xyz.block.ftl.v1.console.CronScheduledEvent
(*AsyncExecuteEvent)(nil), // 10: xyz.block.ftl.v1.console.AsyncExecuteEvent
- (*Config)(nil), // 11: xyz.block.ftl.v1.console.Config
- (*Data)(nil), // 12: xyz.block.ftl.v1.console.Data
- (*Database)(nil), // 13: xyz.block.ftl.v1.console.Database
- (*Enum)(nil), // 14: xyz.block.ftl.v1.console.Enum
- (*Topic)(nil), // 15: xyz.block.ftl.v1.console.Topic
- (*TypeAlias)(nil), // 16: xyz.block.ftl.v1.console.TypeAlias
- (*Secret)(nil), // 17: xyz.block.ftl.v1.console.Secret
- (*Subscription)(nil), // 18: xyz.block.ftl.v1.console.Subscription
- (*Verb)(nil), // 19: xyz.block.ftl.v1.console.Verb
- (*Module)(nil), // 20: xyz.block.ftl.v1.console.Module
- (*TopologyGroup)(nil), // 21: xyz.block.ftl.v1.console.TopologyGroup
- (*Topology)(nil), // 22: xyz.block.ftl.v1.console.Topology
- (*GetModulesRequest)(nil), // 23: xyz.block.ftl.v1.console.GetModulesRequest
- (*GetModulesResponse)(nil), // 24: xyz.block.ftl.v1.console.GetModulesResponse
- (*StreamModulesRequest)(nil), // 25: xyz.block.ftl.v1.console.StreamModulesRequest
- (*StreamModulesResponse)(nil), // 26: xyz.block.ftl.v1.console.StreamModulesResponse
- (*EventsQuery)(nil), // 27: xyz.block.ftl.v1.console.EventsQuery
- (*StreamEventsRequest)(nil), // 28: xyz.block.ftl.v1.console.StreamEventsRequest
- (*StreamEventsResponse)(nil), // 29: xyz.block.ftl.v1.console.StreamEventsResponse
- (*Event)(nil), // 30: xyz.block.ftl.v1.console.Event
- (*GetEventsResponse)(nil), // 31: xyz.block.ftl.v1.console.GetEventsResponse
- nil, // 32: xyz.block.ftl.v1.console.LogEvent.AttributesEntry
- (*EventsQuery_LimitFilter)(nil), // 33: xyz.block.ftl.v1.console.EventsQuery.LimitFilter
- (*EventsQuery_LogLevelFilter)(nil), // 34: xyz.block.ftl.v1.console.EventsQuery.LogLevelFilter
- (*EventsQuery_DeploymentFilter)(nil), // 35: xyz.block.ftl.v1.console.EventsQuery.DeploymentFilter
- (*EventsQuery_RequestFilter)(nil), // 36: xyz.block.ftl.v1.console.EventsQuery.RequestFilter
- (*EventsQuery_EventTypeFilter)(nil), // 37: xyz.block.ftl.v1.console.EventsQuery.EventTypeFilter
- (*EventsQuery_TimeFilter)(nil), // 38: xyz.block.ftl.v1.console.EventsQuery.TimeFilter
- (*EventsQuery_IDFilter)(nil), // 39: xyz.block.ftl.v1.console.EventsQuery.IDFilter
- (*EventsQuery_CallFilter)(nil), // 40: xyz.block.ftl.v1.console.EventsQuery.CallFilter
- (*EventsQuery_ModuleFilter)(nil), // 41: xyz.block.ftl.v1.console.EventsQuery.ModuleFilter
- (*EventsQuery_Filter)(nil), // 42: xyz.block.ftl.v1.console.EventsQuery.Filter
- (*timestamppb.Timestamp)(nil), // 43: google.protobuf.Timestamp
- (*schema.Ref)(nil), // 44: xyz.block.ftl.v1.schema.Ref
- (*durationpb.Duration)(nil), // 45: google.protobuf.Duration
- (*schema.Config)(nil), // 46: xyz.block.ftl.v1.schema.Config
- (*schema.Data)(nil), // 47: xyz.block.ftl.v1.schema.Data
- (*schema.Database)(nil), // 48: xyz.block.ftl.v1.schema.Database
- (*schema.Enum)(nil), // 49: xyz.block.ftl.v1.schema.Enum
- (*schema.Topic)(nil), // 50: xyz.block.ftl.v1.schema.Topic
- (*schema.TypeAlias)(nil), // 51: xyz.block.ftl.v1.schema.TypeAlias
- (*schema.Secret)(nil), // 52: xyz.block.ftl.v1.schema.Secret
- (*schema.Subscription)(nil), // 53: xyz.block.ftl.v1.schema.Subscription
- (*schema.Verb)(nil), // 54: xyz.block.ftl.v1.schema.Verb
- (*v1.PingRequest)(nil), // 55: xyz.block.ftl.v1.PingRequest
- (*v1.PingResponse)(nil), // 56: xyz.block.ftl.v1.PingResponse
+ (*PubSubPublishEvent)(nil), // 11: xyz.block.ftl.v1.console.PubSubPublishEvent
+ (*PubSubConsumeEvent)(nil), // 12: xyz.block.ftl.v1.console.PubSubConsumeEvent
+ (*Config)(nil), // 13: xyz.block.ftl.v1.console.Config
+ (*Data)(nil), // 14: xyz.block.ftl.v1.console.Data
+ (*Database)(nil), // 15: xyz.block.ftl.v1.console.Database
+ (*Enum)(nil), // 16: xyz.block.ftl.v1.console.Enum
+ (*Topic)(nil), // 17: xyz.block.ftl.v1.console.Topic
+ (*TypeAlias)(nil), // 18: xyz.block.ftl.v1.console.TypeAlias
+ (*Secret)(nil), // 19: xyz.block.ftl.v1.console.Secret
+ (*Subscription)(nil), // 20: xyz.block.ftl.v1.console.Subscription
+ (*Verb)(nil), // 21: xyz.block.ftl.v1.console.Verb
+ (*Module)(nil), // 22: xyz.block.ftl.v1.console.Module
+ (*TopologyGroup)(nil), // 23: xyz.block.ftl.v1.console.TopologyGroup
+ (*Topology)(nil), // 24: xyz.block.ftl.v1.console.Topology
+ (*GetModulesRequest)(nil), // 25: xyz.block.ftl.v1.console.GetModulesRequest
+ (*GetModulesResponse)(nil), // 26: xyz.block.ftl.v1.console.GetModulesResponse
+ (*StreamModulesRequest)(nil), // 27: xyz.block.ftl.v1.console.StreamModulesRequest
+ (*StreamModulesResponse)(nil), // 28: xyz.block.ftl.v1.console.StreamModulesResponse
+ (*EventsQuery)(nil), // 29: xyz.block.ftl.v1.console.EventsQuery
+ (*StreamEventsRequest)(nil), // 30: xyz.block.ftl.v1.console.StreamEventsRequest
+ (*StreamEventsResponse)(nil), // 31: xyz.block.ftl.v1.console.StreamEventsResponse
+ (*Event)(nil), // 32: xyz.block.ftl.v1.console.Event
+ (*GetEventsResponse)(nil), // 33: xyz.block.ftl.v1.console.GetEventsResponse
+ nil, // 34: xyz.block.ftl.v1.console.LogEvent.AttributesEntry
+ (*EventsQuery_LimitFilter)(nil), // 35: xyz.block.ftl.v1.console.EventsQuery.LimitFilter
+ (*EventsQuery_LogLevelFilter)(nil), // 36: xyz.block.ftl.v1.console.EventsQuery.LogLevelFilter
+ (*EventsQuery_DeploymentFilter)(nil), // 37: xyz.block.ftl.v1.console.EventsQuery.DeploymentFilter
+ (*EventsQuery_RequestFilter)(nil), // 38: xyz.block.ftl.v1.console.EventsQuery.RequestFilter
+ (*EventsQuery_EventTypeFilter)(nil), // 39: xyz.block.ftl.v1.console.EventsQuery.EventTypeFilter
+ (*EventsQuery_TimeFilter)(nil), // 40: xyz.block.ftl.v1.console.EventsQuery.TimeFilter
+ (*EventsQuery_IDFilter)(nil), // 41: xyz.block.ftl.v1.console.EventsQuery.IDFilter
+ (*EventsQuery_CallFilter)(nil), // 42: xyz.block.ftl.v1.console.EventsQuery.CallFilter
+ (*EventsQuery_ModuleFilter)(nil), // 43: xyz.block.ftl.v1.console.EventsQuery.ModuleFilter
+ (*EventsQuery_Filter)(nil), // 44: xyz.block.ftl.v1.console.EventsQuery.Filter
+ (*timestamppb.Timestamp)(nil), // 45: google.protobuf.Timestamp
+ (*schema.Ref)(nil), // 46: xyz.block.ftl.v1.schema.Ref
+ (*durationpb.Duration)(nil), // 47: google.protobuf.Duration
+ (*schema.Config)(nil), // 48: xyz.block.ftl.v1.schema.Config
+ (*schema.Data)(nil), // 49: xyz.block.ftl.v1.schema.Data
+ (*schema.Database)(nil), // 50: xyz.block.ftl.v1.schema.Database
+ (*schema.Enum)(nil), // 51: xyz.block.ftl.v1.schema.Enum
+ (*schema.Topic)(nil), // 52: xyz.block.ftl.v1.schema.Topic
+ (*schema.TypeAlias)(nil), // 53: xyz.block.ftl.v1.schema.TypeAlias
+ (*schema.Secret)(nil), // 54: xyz.block.ftl.v1.schema.Secret
+ (*schema.Subscription)(nil), // 55: xyz.block.ftl.v1.schema.Subscription
+ (*schema.Verb)(nil), // 56: xyz.block.ftl.v1.schema.Verb
+ (*v1.PingRequest)(nil), // 57: xyz.block.ftl.v1.PingRequest
+ (*v1.PingResponse)(nil), // 58: xyz.block.ftl.v1.PingResponse
}
var file_xyz_block_ftl_v1_console_console_proto_depIdxs = []int32{
- 43, // 0: xyz.block.ftl.v1.console.LogEvent.time_stamp:type_name -> google.protobuf.Timestamp
- 32, // 1: xyz.block.ftl.v1.console.LogEvent.attributes:type_name -> xyz.block.ftl.v1.console.LogEvent.AttributesEntry
- 43, // 2: xyz.block.ftl.v1.console.CallEvent.time_stamp:type_name -> google.protobuf.Timestamp
- 44, // 3: xyz.block.ftl.v1.console.CallEvent.source_verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
- 44, // 4: xyz.block.ftl.v1.console.CallEvent.destination_verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
- 45, // 5: xyz.block.ftl.v1.console.CallEvent.duration:type_name -> google.protobuf.Duration
- 44, // 6: xyz.block.ftl.v1.console.IngressEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
- 43, // 7: xyz.block.ftl.v1.console.IngressEvent.time_stamp:type_name -> google.protobuf.Timestamp
- 45, // 8: xyz.block.ftl.v1.console.IngressEvent.duration:type_name -> google.protobuf.Duration
- 44, // 9: xyz.block.ftl.v1.console.CronScheduledEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
- 43, // 10: xyz.block.ftl.v1.console.CronScheduledEvent.time_stamp:type_name -> google.protobuf.Timestamp
- 45, // 11: xyz.block.ftl.v1.console.CronScheduledEvent.duration:type_name -> google.protobuf.Duration
- 43, // 12: xyz.block.ftl.v1.console.CronScheduledEvent.scheduled_at:type_name -> google.protobuf.Timestamp
- 44, // 13: xyz.block.ftl.v1.console.AsyncExecuteEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
- 43, // 14: xyz.block.ftl.v1.console.AsyncExecuteEvent.time_stamp:type_name -> google.protobuf.Timestamp
- 45, // 15: xyz.block.ftl.v1.console.AsyncExecuteEvent.duration:type_name -> google.protobuf.Duration
+ 45, // 0: xyz.block.ftl.v1.console.LogEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 34, // 1: xyz.block.ftl.v1.console.LogEvent.attributes:type_name -> xyz.block.ftl.v1.console.LogEvent.AttributesEntry
+ 45, // 2: xyz.block.ftl.v1.console.CallEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 46, // 3: xyz.block.ftl.v1.console.CallEvent.source_verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
+ 46, // 4: xyz.block.ftl.v1.console.CallEvent.destination_verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
+ 47, // 5: xyz.block.ftl.v1.console.CallEvent.duration:type_name -> google.protobuf.Duration
+ 46, // 6: xyz.block.ftl.v1.console.IngressEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
+ 45, // 7: xyz.block.ftl.v1.console.IngressEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 47, // 8: xyz.block.ftl.v1.console.IngressEvent.duration:type_name -> google.protobuf.Duration
+ 46, // 9: xyz.block.ftl.v1.console.CronScheduledEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
+ 45, // 10: xyz.block.ftl.v1.console.CronScheduledEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 47, // 11: xyz.block.ftl.v1.console.CronScheduledEvent.duration:type_name -> google.protobuf.Duration
+ 45, // 12: xyz.block.ftl.v1.console.CronScheduledEvent.scheduled_at:type_name -> google.protobuf.Timestamp
+ 46, // 13: xyz.block.ftl.v1.console.AsyncExecuteEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
+ 45, // 14: xyz.block.ftl.v1.console.AsyncExecuteEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 47, // 15: xyz.block.ftl.v1.console.AsyncExecuteEvent.duration:type_name -> google.protobuf.Duration
1, // 16: xyz.block.ftl.v1.console.AsyncExecuteEvent.async_event_type:type_name -> xyz.block.ftl.v1.console.AsyncExecuteEventType
- 46, // 17: xyz.block.ftl.v1.console.Config.config:type_name -> xyz.block.ftl.v1.schema.Config
- 44, // 18: xyz.block.ftl.v1.console.Config.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 47, // 19: xyz.block.ftl.v1.console.Data.data:type_name -> xyz.block.ftl.v1.schema.Data
- 44, // 20: xyz.block.ftl.v1.console.Data.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 48, // 21: xyz.block.ftl.v1.console.Database.database:type_name -> xyz.block.ftl.v1.schema.Database
- 44, // 22: xyz.block.ftl.v1.console.Database.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 49, // 23: xyz.block.ftl.v1.console.Enum.enum:type_name -> xyz.block.ftl.v1.schema.Enum
- 44, // 24: xyz.block.ftl.v1.console.Enum.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 50, // 25: xyz.block.ftl.v1.console.Topic.topic:type_name -> xyz.block.ftl.v1.schema.Topic
- 44, // 26: xyz.block.ftl.v1.console.Topic.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 51, // 27: xyz.block.ftl.v1.console.TypeAlias.typealias:type_name -> xyz.block.ftl.v1.schema.TypeAlias
- 44, // 28: xyz.block.ftl.v1.console.TypeAlias.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 52, // 29: xyz.block.ftl.v1.console.Secret.secret:type_name -> xyz.block.ftl.v1.schema.Secret
- 44, // 30: xyz.block.ftl.v1.console.Secret.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 53, // 31: xyz.block.ftl.v1.console.Subscription.subscription:type_name -> xyz.block.ftl.v1.schema.Subscription
- 44, // 32: xyz.block.ftl.v1.console.Subscription.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 54, // 33: xyz.block.ftl.v1.console.Verb.verb:type_name -> xyz.block.ftl.v1.schema.Verb
- 44, // 34: xyz.block.ftl.v1.console.Verb.references:type_name -> xyz.block.ftl.v1.schema.Ref
- 19, // 35: xyz.block.ftl.v1.console.Module.verbs:type_name -> xyz.block.ftl.v1.console.Verb
- 12, // 36: xyz.block.ftl.v1.console.Module.data:type_name -> xyz.block.ftl.v1.console.Data
- 17, // 37: xyz.block.ftl.v1.console.Module.secrets:type_name -> xyz.block.ftl.v1.console.Secret
- 11, // 38: xyz.block.ftl.v1.console.Module.configs:type_name -> xyz.block.ftl.v1.console.Config
- 13, // 39: xyz.block.ftl.v1.console.Module.databases:type_name -> xyz.block.ftl.v1.console.Database
- 14, // 40: xyz.block.ftl.v1.console.Module.enums:type_name -> xyz.block.ftl.v1.console.Enum
- 15, // 41: xyz.block.ftl.v1.console.Module.topics:type_name -> xyz.block.ftl.v1.console.Topic
- 16, // 42: xyz.block.ftl.v1.console.Module.typealiases:type_name -> xyz.block.ftl.v1.console.TypeAlias
- 18, // 43: xyz.block.ftl.v1.console.Module.subscriptions:type_name -> xyz.block.ftl.v1.console.Subscription
- 21, // 44: xyz.block.ftl.v1.console.Topology.levels:type_name -> xyz.block.ftl.v1.console.TopologyGroup
- 20, // 45: xyz.block.ftl.v1.console.GetModulesResponse.modules:type_name -> xyz.block.ftl.v1.console.Module
- 22, // 46: xyz.block.ftl.v1.console.GetModulesResponse.topology:type_name -> xyz.block.ftl.v1.console.Topology
- 20, // 47: xyz.block.ftl.v1.console.StreamModulesResponse.modules:type_name -> xyz.block.ftl.v1.console.Module
- 42, // 48: xyz.block.ftl.v1.console.EventsQuery.filters:type_name -> xyz.block.ftl.v1.console.EventsQuery.Filter
- 3, // 49: xyz.block.ftl.v1.console.EventsQuery.order:type_name -> xyz.block.ftl.v1.console.EventsQuery.Order
- 45, // 50: xyz.block.ftl.v1.console.StreamEventsRequest.update_interval:type_name -> google.protobuf.Duration
- 27, // 51: xyz.block.ftl.v1.console.StreamEventsRequest.query:type_name -> xyz.block.ftl.v1.console.EventsQuery
- 30, // 52: xyz.block.ftl.v1.console.StreamEventsResponse.events:type_name -> xyz.block.ftl.v1.console.Event
- 43, // 53: xyz.block.ftl.v1.console.Event.time_stamp:type_name -> google.protobuf.Timestamp
- 4, // 54: xyz.block.ftl.v1.console.Event.log:type_name -> xyz.block.ftl.v1.console.LogEvent
- 5, // 55: xyz.block.ftl.v1.console.Event.call:type_name -> xyz.block.ftl.v1.console.CallEvent
- 6, // 56: xyz.block.ftl.v1.console.Event.deployment_created:type_name -> xyz.block.ftl.v1.console.DeploymentCreatedEvent
- 7, // 57: xyz.block.ftl.v1.console.Event.deployment_updated:type_name -> xyz.block.ftl.v1.console.DeploymentUpdatedEvent
- 8, // 58: xyz.block.ftl.v1.console.Event.ingress:type_name -> xyz.block.ftl.v1.console.IngressEvent
- 9, // 59: xyz.block.ftl.v1.console.Event.cron_scheduled:type_name -> xyz.block.ftl.v1.console.CronScheduledEvent
- 10, // 60: xyz.block.ftl.v1.console.Event.async_execute:type_name -> xyz.block.ftl.v1.console.AsyncExecuteEvent
- 30, // 61: xyz.block.ftl.v1.console.GetEventsResponse.events:type_name -> xyz.block.ftl.v1.console.Event
- 2, // 62: xyz.block.ftl.v1.console.EventsQuery.LogLevelFilter.log_level:type_name -> xyz.block.ftl.v1.console.LogLevel
- 0, // 63: xyz.block.ftl.v1.console.EventsQuery.EventTypeFilter.event_types:type_name -> xyz.block.ftl.v1.console.EventType
- 43, // 64: xyz.block.ftl.v1.console.EventsQuery.TimeFilter.older_than:type_name -> google.protobuf.Timestamp
- 43, // 65: xyz.block.ftl.v1.console.EventsQuery.TimeFilter.newer_than:type_name -> google.protobuf.Timestamp
- 33, // 66: xyz.block.ftl.v1.console.EventsQuery.Filter.limit:type_name -> xyz.block.ftl.v1.console.EventsQuery.LimitFilter
- 34, // 67: xyz.block.ftl.v1.console.EventsQuery.Filter.log_level:type_name -> xyz.block.ftl.v1.console.EventsQuery.LogLevelFilter
- 35, // 68: xyz.block.ftl.v1.console.EventsQuery.Filter.deployments:type_name -> xyz.block.ftl.v1.console.EventsQuery.DeploymentFilter
- 36, // 69: xyz.block.ftl.v1.console.EventsQuery.Filter.requests:type_name -> xyz.block.ftl.v1.console.EventsQuery.RequestFilter
- 37, // 70: xyz.block.ftl.v1.console.EventsQuery.Filter.event_types:type_name -> xyz.block.ftl.v1.console.EventsQuery.EventTypeFilter
- 38, // 71: xyz.block.ftl.v1.console.EventsQuery.Filter.time:type_name -> xyz.block.ftl.v1.console.EventsQuery.TimeFilter
- 39, // 72: xyz.block.ftl.v1.console.EventsQuery.Filter.id:type_name -> xyz.block.ftl.v1.console.EventsQuery.IDFilter
- 40, // 73: xyz.block.ftl.v1.console.EventsQuery.Filter.call:type_name -> xyz.block.ftl.v1.console.EventsQuery.CallFilter
- 41, // 74: xyz.block.ftl.v1.console.EventsQuery.Filter.module:type_name -> xyz.block.ftl.v1.console.EventsQuery.ModuleFilter
- 55, // 75: xyz.block.ftl.v1.console.ConsoleService.Ping:input_type -> xyz.block.ftl.v1.PingRequest
- 23, // 76: xyz.block.ftl.v1.console.ConsoleService.GetModules:input_type -> xyz.block.ftl.v1.console.GetModulesRequest
- 25, // 77: xyz.block.ftl.v1.console.ConsoleService.StreamModules:input_type -> xyz.block.ftl.v1.console.StreamModulesRequest
- 28, // 78: xyz.block.ftl.v1.console.ConsoleService.StreamEvents:input_type -> xyz.block.ftl.v1.console.StreamEventsRequest
- 27, // 79: xyz.block.ftl.v1.console.ConsoleService.GetEvents:input_type -> xyz.block.ftl.v1.console.EventsQuery
- 56, // 80: xyz.block.ftl.v1.console.ConsoleService.Ping:output_type -> xyz.block.ftl.v1.PingResponse
- 24, // 81: xyz.block.ftl.v1.console.ConsoleService.GetModules:output_type -> xyz.block.ftl.v1.console.GetModulesResponse
- 26, // 82: xyz.block.ftl.v1.console.ConsoleService.StreamModules:output_type -> xyz.block.ftl.v1.console.StreamModulesResponse
- 29, // 83: xyz.block.ftl.v1.console.ConsoleService.StreamEvents:output_type -> xyz.block.ftl.v1.console.StreamEventsResponse
- 31, // 84: xyz.block.ftl.v1.console.ConsoleService.GetEvents:output_type -> xyz.block.ftl.v1.console.GetEventsResponse
- 80, // [80:85] is the sub-list for method output_type
- 75, // [75:80] is the sub-list for method input_type
- 75, // [75:75] is the sub-list for extension type_name
- 75, // [75:75] is the sub-list for extension extendee
- 0, // [0:75] is the sub-list for field type_name
+ 46, // 17: xyz.block.ftl.v1.console.PubSubPublishEvent.verb_ref:type_name -> xyz.block.ftl.v1.schema.Ref
+ 45, // 18: xyz.block.ftl.v1.console.PubSubPublishEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 47, // 19: xyz.block.ftl.v1.console.PubSubPublishEvent.duration:type_name -> google.protobuf.Duration
+ 45, // 20: xyz.block.ftl.v1.console.PubSubConsumeEvent.time_stamp:type_name -> google.protobuf.Timestamp
+ 47, // 21: xyz.block.ftl.v1.console.PubSubConsumeEvent.duration:type_name -> google.protobuf.Duration
+ 48, // 22: xyz.block.ftl.v1.console.Config.config:type_name -> xyz.block.ftl.v1.schema.Config
+ 46, // 23: xyz.block.ftl.v1.console.Config.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 49, // 24: xyz.block.ftl.v1.console.Data.data:type_name -> xyz.block.ftl.v1.schema.Data
+ 46, // 25: xyz.block.ftl.v1.console.Data.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 50, // 26: xyz.block.ftl.v1.console.Database.database:type_name -> xyz.block.ftl.v1.schema.Database
+ 46, // 27: xyz.block.ftl.v1.console.Database.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 51, // 28: xyz.block.ftl.v1.console.Enum.enum:type_name -> xyz.block.ftl.v1.schema.Enum
+ 46, // 29: xyz.block.ftl.v1.console.Enum.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 52, // 30: xyz.block.ftl.v1.console.Topic.topic:type_name -> xyz.block.ftl.v1.schema.Topic
+ 46, // 31: xyz.block.ftl.v1.console.Topic.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 53, // 32: xyz.block.ftl.v1.console.TypeAlias.typealias:type_name -> xyz.block.ftl.v1.schema.TypeAlias
+ 46, // 33: xyz.block.ftl.v1.console.TypeAlias.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 54, // 34: xyz.block.ftl.v1.console.Secret.secret:type_name -> xyz.block.ftl.v1.schema.Secret
+ 46, // 35: xyz.block.ftl.v1.console.Secret.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 55, // 36: xyz.block.ftl.v1.console.Subscription.subscription:type_name -> xyz.block.ftl.v1.schema.Subscription
+ 46, // 37: xyz.block.ftl.v1.console.Subscription.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 56, // 38: xyz.block.ftl.v1.console.Verb.verb:type_name -> xyz.block.ftl.v1.schema.Verb
+ 46, // 39: xyz.block.ftl.v1.console.Verb.references:type_name -> xyz.block.ftl.v1.schema.Ref
+ 21, // 40: xyz.block.ftl.v1.console.Module.verbs:type_name -> xyz.block.ftl.v1.console.Verb
+ 14, // 41: xyz.block.ftl.v1.console.Module.data:type_name -> xyz.block.ftl.v1.console.Data
+ 19, // 42: xyz.block.ftl.v1.console.Module.secrets:type_name -> xyz.block.ftl.v1.console.Secret
+ 13, // 43: xyz.block.ftl.v1.console.Module.configs:type_name -> xyz.block.ftl.v1.console.Config
+ 15, // 44: xyz.block.ftl.v1.console.Module.databases:type_name -> xyz.block.ftl.v1.console.Database
+ 16, // 45: xyz.block.ftl.v1.console.Module.enums:type_name -> xyz.block.ftl.v1.console.Enum
+ 17, // 46: xyz.block.ftl.v1.console.Module.topics:type_name -> xyz.block.ftl.v1.console.Topic
+ 18, // 47: xyz.block.ftl.v1.console.Module.typealiases:type_name -> xyz.block.ftl.v1.console.TypeAlias
+ 20, // 48: xyz.block.ftl.v1.console.Module.subscriptions:type_name -> xyz.block.ftl.v1.console.Subscription
+ 23, // 49: xyz.block.ftl.v1.console.Topology.levels:type_name -> xyz.block.ftl.v1.console.TopologyGroup
+ 22, // 50: xyz.block.ftl.v1.console.GetModulesResponse.modules:type_name -> xyz.block.ftl.v1.console.Module
+ 24, // 51: xyz.block.ftl.v1.console.GetModulesResponse.topology:type_name -> xyz.block.ftl.v1.console.Topology
+ 22, // 52: xyz.block.ftl.v1.console.StreamModulesResponse.modules:type_name -> xyz.block.ftl.v1.console.Module
+ 44, // 53: xyz.block.ftl.v1.console.EventsQuery.filters:type_name -> xyz.block.ftl.v1.console.EventsQuery.Filter
+ 3, // 54: xyz.block.ftl.v1.console.EventsQuery.order:type_name -> xyz.block.ftl.v1.console.EventsQuery.Order
+ 47, // 55: xyz.block.ftl.v1.console.StreamEventsRequest.update_interval:type_name -> google.protobuf.Duration
+ 29, // 56: xyz.block.ftl.v1.console.StreamEventsRequest.query:type_name -> xyz.block.ftl.v1.console.EventsQuery
+ 32, // 57: xyz.block.ftl.v1.console.StreamEventsResponse.events:type_name -> xyz.block.ftl.v1.console.Event
+ 45, // 58: xyz.block.ftl.v1.console.Event.time_stamp:type_name -> google.protobuf.Timestamp
+ 4, // 59: xyz.block.ftl.v1.console.Event.log:type_name -> xyz.block.ftl.v1.console.LogEvent
+ 5, // 60: xyz.block.ftl.v1.console.Event.call:type_name -> xyz.block.ftl.v1.console.CallEvent
+ 6, // 61: xyz.block.ftl.v1.console.Event.deployment_created:type_name -> xyz.block.ftl.v1.console.DeploymentCreatedEvent
+ 7, // 62: xyz.block.ftl.v1.console.Event.deployment_updated:type_name -> xyz.block.ftl.v1.console.DeploymentUpdatedEvent
+ 8, // 63: xyz.block.ftl.v1.console.Event.ingress:type_name -> xyz.block.ftl.v1.console.IngressEvent
+ 9, // 64: xyz.block.ftl.v1.console.Event.cron_scheduled:type_name -> xyz.block.ftl.v1.console.CronScheduledEvent
+ 10, // 65: xyz.block.ftl.v1.console.Event.async_execute:type_name -> xyz.block.ftl.v1.console.AsyncExecuteEvent
+ 11, // 66: xyz.block.ftl.v1.console.Event.pubsub_publish:type_name -> xyz.block.ftl.v1.console.PubSubPublishEvent
+ 12, // 67: xyz.block.ftl.v1.console.Event.pubsub_consume:type_name -> xyz.block.ftl.v1.console.PubSubConsumeEvent
+ 32, // 68: xyz.block.ftl.v1.console.GetEventsResponse.events:type_name -> xyz.block.ftl.v1.console.Event
+ 2, // 69: xyz.block.ftl.v1.console.EventsQuery.LogLevelFilter.log_level:type_name -> xyz.block.ftl.v1.console.LogLevel
+ 0, // 70: xyz.block.ftl.v1.console.EventsQuery.EventTypeFilter.event_types:type_name -> xyz.block.ftl.v1.console.EventType
+ 45, // 71: xyz.block.ftl.v1.console.EventsQuery.TimeFilter.older_than:type_name -> google.protobuf.Timestamp
+ 45, // 72: xyz.block.ftl.v1.console.EventsQuery.TimeFilter.newer_than:type_name -> google.protobuf.Timestamp
+ 35, // 73: xyz.block.ftl.v1.console.EventsQuery.Filter.limit:type_name -> xyz.block.ftl.v1.console.EventsQuery.LimitFilter
+ 36, // 74: xyz.block.ftl.v1.console.EventsQuery.Filter.log_level:type_name -> xyz.block.ftl.v1.console.EventsQuery.LogLevelFilter
+ 37, // 75: xyz.block.ftl.v1.console.EventsQuery.Filter.deployments:type_name -> xyz.block.ftl.v1.console.EventsQuery.DeploymentFilter
+ 38, // 76: xyz.block.ftl.v1.console.EventsQuery.Filter.requests:type_name -> xyz.block.ftl.v1.console.EventsQuery.RequestFilter
+ 39, // 77: xyz.block.ftl.v1.console.EventsQuery.Filter.event_types:type_name -> xyz.block.ftl.v1.console.EventsQuery.EventTypeFilter
+ 40, // 78: xyz.block.ftl.v1.console.EventsQuery.Filter.time:type_name -> xyz.block.ftl.v1.console.EventsQuery.TimeFilter
+ 41, // 79: xyz.block.ftl.v1.console.EventsQuery.Filter.id:type_name -> xyz.block.ftl.v1.console.EventsQuery.IDFilter
+ 42, // 80: xyz.block.ftl.v1.console.EventsQuery.Filter.call:type_name -> xyz.block.ftl.v1.console.EventsQuery.CallFilter
+ 43, // 81: xyz.block.ftl.v1.console.EventsQuery.Filter.module:type_name -> xyz.block.ftl.v1.console.EventsQuery.ModuleFilter
+ 57, // 82: xyz.block.ftl.v1.console.ConsoleService.Ping:input_type -> xyz.block.ftl.v1.PingRequest
+ 25, // 83: xyz.block.ftl.v1.console.ConsoleService.GetModules:input_type -> xyz.block.ftl.v1.console.GetModulesRequest
+ 27, // 84: xyz.block.ftl.v1.console.ConsoleService.StreamModules:input_type -> xyz.block.ftl.v1.console.StreamModulesRequest
+ 30, // 85: xyz.block.ftl.v1.console.ConsoleService.StreamEvents:input_type -> xyz.block.ftl.v1.console.StreamEventsRequest
+ 29, // 86: xyz.block.ftl.v1.console.ConsoleService.GetEvents:input_type -> xyz.block.ftl.v1.console.EventsQuery
+ 58, // 87: xyz.block.ftl.v1.console.ConsoleService.Ping:output_type -> xyz.block.ftl.v1.PingResponse
+ 26, // 88: xyz.block.ftl.v1.console.ConsoleService.GetModules:output_type -> xyz.block.ftl.v1.console.GetModulesResponse
+ 28, // 89: xyz.block.ftl.v1.console.ConsoleService.StreamModules:output_type -> xyz.block.ftl.v1.console.StreamModulesResponse
+ 31, // 90: xyz.block.ftl.v1.console.ConsoleService.StreamEvents:output_type -> xyz.block.ftl.v1.console.StreamEventsResponse
+ 33, // 91: xyz.block.ftl.v1.console.ConsoleService.GetEvents:output_type -> xyz.block.ftl.v1.console.GetEventsResponse
+ 87, // [87:92] is the sub-list for method output_type
+ 82, // [82:87] is the sub-list for method input_type
+ 82, // [82:82] is the sub-list for extension type_name
+ 82, // [82:82] is the sub-list for extension extendee
+ 0, // [0:82] is the sub-list for field type_name
}
func init() { file_xyz_block_ftl_v1_console_console_proto_init() }
@@ -3590,8 +3899,10 @@ func file_xyz_block_ftl_v1_console_console_proto_init() {
file_xyz_block_ftl_v1_console_console_proto_msgTypes[4].OneofWrappers = []any{}
file_xyz_block_ftl_v1_console_console_proto_msgTypes[5].OneofWrappers = []any{}
file_xyz_block_ftl_v1_console_console_proto_msgTypes[6].OneofWrappers = []any{}
- file_xyz_block_ftl_v1_console_console_proto_msgTypes[24].OneofWrappers = []any{}
- file_xyz_block_ftl_v1_console_console_proto_msgTypes[26].OneofWrappers = []any{
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[7].OneofWrappers = []any{}
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[8].OneofWrappers = []any{}
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[26].OneofWrappers = []any{}
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[28].OneofWrappers = []any{
(*Event_Log)(nil),
(*Event_Call)(nil),
(*Event_DeploymentCreated)(nil),
@@ -3599,13 +3910,15 @@ func file_xyz_block_ftl_v1_console_console_proto_init() {
(*Event_Ingress)(nil),
(*Event_CronScheduled)(nil),
(*Event_AsyncExecute)(nil),
+ (*Event_PubsubPublish)(nil),
+ (*Event_PubsubConsume)(nil),
}
- file_xyz_block_ftl_v1_console_console_proto_msgTypes[27].OneofWrappers = []any{}
- file_xyz_block_ftl_v1_console_console_proto_msgTypes[34].OneofWrappers = []any{}
- file_xyz_block_ftl_v1_console_console_proto_msgTypes[35].OneofWrappers = []any{}
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[29].OneofWrappers = []any{}
file_xyz_block_ftl_v1_console_console_proto_msgTypes[36].OneofWrappers = []any{}
file_xyz_block_ftl_v1_console_console_proto_msgTypes[37].OneofWrappers = []any{}
- file_xyz_block_ftl_v1_console_console_proto_msgTypes[38].OneofWrappers = []any{
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[38].OneofWrappers = []any{}
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[39].OneofWrappers = []any{}
+ file_xyz_block_ftl_v1_console_console_proto_msgTypes[40].OneofWrappers = []any{
(*EventsQuery_Filter_Limit)(nil),
(*EventsQuery_Filter_LogLevel)(nil),
(*EventsQuery_Filter_Deployments)(nil),
@@ -3622,7 +3935,7 @@ func file_xyz_block_ftl_v1_console_console_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_xyz_block_ftl_v1_console_console_proto_rawDesc,
NumEnums: 4,
- NumMessages: 39,
+ NumMessages: 41,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/backend/protos/xyz/block/ftl/v1/console/console.proto b/backend/protos/xyz/block/ftl/v1/console/console.proto
index 4212d3b0df..4886dbaff5 100644
--- a/backend/protos/xyz/block/ftl/v1/console/console.proto
+++ b/backend/protos/xyz/block/ftl/v1/console/console.proto
@@ -19,6 +19,8 @@ enum EventType {
EVENT_TYPE_INGRESS = 5;
EVENT_TYPE_CRON_SCHEDULED = 6;
EVENT_TYPE_ASYNC_EXECUTE = 7;
+ EVENT_TYPE_PUBSUB_PUBLISH = 8;
+ EVENT_TYPE_PUBSUB_CONSUME = 9;
}
enum AsyncExecuteEventType {
@@ -112,6 +114,28 @@ message AsyncExecuteEvent {
optional string error = 7;
}
+message PubSubPublishEvent {
+ string deployment_key = 1;
+ optional string request_key = 2;
+ schema.Ref verb_ref = 3;
+ google.protobuf.Timestamp time_stamp = 4;
+ google.protobuf.Duration duration = 5;
+ string topic = 6;
+ string request = 7;
+ optional string error = 8;
+}
+
+message PubSubConsumeEvent {
+ string deployment_key = 1;
+ optional string request_key = 2;
+ optional string dest_verb_module = 3;
+ optional string dest_verb_name = 4;
+ google.protobuf.Timestamp time_stamp = 5;
+ google.protobuf.Duration duration = 6;
+ string topic = 7;
+ optional string error = 8;
+}
+
message Config {
schema.Config config = 1;
repeated schema.Ref references = 2;
@@ -288,6 +312,8 @@ message Event {
IngressEvent ingress = 7;
CronScheduledEvent cron_scheduled = 8;
AsyncExecuteEvent async_execute = 9;
+ PubSubPublishEvent pubsub_publish = 10;
+ PubSubConsumeEvent pubsub_consume = 11;
}
}
diff --git a/frontend/console/src/features/timeline/Timeline.tsx b/frontend/console/src/features/timeline/Timeline.tsx
index bf8d527c19..4db212a694 100644
--- a/frontend/console/src/features/timeline/Timeline.tsx
+++ b/frontend/console/src/features/timeline/Timeline.tsx
@@ -13,6 +13,8 @@ import { TimelineDeploymentUpdatedDetails } from './details/TimelineDeploymentUp
import { TimelineDetailsHeader } from './details/TimelineDetailsHeader.tsx'
import { TimelineIngressDetails } from './details/TimelineIngressDetails.tsx'
import { TimelineLogDetails } from './details/TimelineLogDetails.tsx'
+import { TimelinePubSubConsumeDetails } from './details/TimelinePubSubConsumeDetails.tsx'
+import { TimelinePubSubPublishDetails } from './details/TimelinePubSubPublishDetails.tsx'
import type { TimeSettings } from './filters/TimelineTimeControls.tsx'
export const Timeline = ({ timeSettings, filters }: { timeSettings: TimeSettings; filters: EventsQuery_Filter[] }) => {
@@ -70,6 +72,12 @@ export const Timeline = ({ timeSettings, filters }: { timeSettings: TimeSettings
case 'asyncExecute':
openPanel(