regen (#190)

diff --git a/googleapis/cloud/asset/v1p2beta1/asset_service.pb.go b/googleapis/cloud/asset/v1p2beta1/asset_service.pb.go
new file mode 100644
index 0000000..c923227
--- /dev/null
+++ b/googleapis/cloud/asset/v1p2beta1/asset_service.pb.go
@@ -0,0 +1,1489 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/asset/v1p2beta1/asset_service.proto
+
+package asset
+
+import (
+	context "context"
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	longrunning "google.golang.org/genproto/googleapis/longrunning"
+	field_mask "google.golang.org/genproto/protobuf/field_mask"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Asset content type.
+type ContentType int32
+
+const (
+	// Unspecified content type.
+	ContentType_CONTENT_TYPE_UNSPECIFIED ContentType = 0
+	// Resource metadata.
+	ContentType_RESOURCE ContentType = 1
+	// The actual IAM policy set on a resource.
+	ContentType_IAM_POLICY ContentType = 2
+	// The IAM policy name for the IAM policy set on a resource.
+	ContentType_IAM_POLICY_NAME ContentType = 3
+	ContentType_ORG_POLICY      ContentType = 4
+	// The Cloud Access context mananger Policy set on an asset.
+	ContentType_ACCESS_POLICY ContentType = 5
+)
+
+var ContentType_name = map[int32]string{
+	0: "CONTENT_TYPE_UNSPECIFIED",
+	1: "RESOURCE",
+	2: "IAM_POLICY",
+	3: "IAM_POLICY_NAME",
+	4: "ORG_POLICY",
+	5: "ACCESS_POLICY",
+}
+
+var ContentType_value = map[string]int32{
+	"CONTENT_TYPE_UNSPECIFIED": 0,
+	"RESOURCE":                 1,
+	"IAM_POLICY":               2,
+	"IAM_POLICY_NAME":          3,
+	"ORG_POLICY":               4,
+	"ACCESS_POLICY":            5,
+}
+
+func (x ContentType) String() string {
+	return proto.EnumName(ContentType_name, int32(x))
+}
+
+func (ContentType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{0}
+}
+
+// Export asset request.
+type ExportAssetsRequest struct {
+	// Required. The relative name of the root asset. This can only be an
+	// organization number (such as "organizations/123"), a project ID (such as
+	// "projects/my-project-id"), or a project number (such as "projects/12345").
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Timestamp to take an asset snapshot. This can only be set to a timestamp
+	// between 2018-10-02 UTC (inclusive) and the current time. If not specified,
+	// the current time will be used. Due to delays in resource data collection
+	// and indexing, there is a volatile window during which running the same
+	// query may get different results.
+	ReadTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"`
+	// A list of asset types of which to take a snapshot for. For example:
+	// "compute.googleapis.com/Disk". If specified, only matching assets will be
+	// returned. See [Introduction to Cloud Asset
+	// Inventory](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview)
+	// for all supported asset types.
+	AssetTypes []string `protobuf:"bytes,3,rep,name=asset_types,json=assetTypes,proto3" json:"asset_types,omitempty"`
+	// Asset content type. If not specified, no content but the asset name will be
+	// returned.
+	ContentType ContentType `protobuf:"varint,4,opt,name=content_type,json=contentType,proto3,enum=google.cloud.asset.v1p2beta1.ContentType" json:"content_type,omitempty"`
+	// Required. Output configuration indicating where the results will be output
+	// to. All results will be in newline delimited JSON format.
+	OutputConfig         *OutputConfig `protobuf:"bytes,5,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *ExportAssetsRequest) Reset()         { *m = ExportAssetsRequest{} }
+func (m *ExportAssetsRequest) String() string { return proto.CompactTextString(m) }
+func (*ExportAssetsRequest) ProtoMessage()    {}
+func (*ExportAssetsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{0}
+}
+
+func (m *ExportAssetsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportAssetsRequest.Unmarshal(m, b)
+}
+func (m *ExportAssetsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportAssetsRequest.Marshal(b, m, deterministic)
+}
+func (m *ExportAssetsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportAssetsRequest.Merge(m, src)
+}
+func (m *ExportAssetsRequest) XXX_Size() int {
+	return xxx_messageInfo_ExportAssetsRequest.Size(m)
+}
+func (m *ExportAssetsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportAssetsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportAssetsRequest proto.InternalMessageInfo
+
+func (m *ExportAssetsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *ExportAssetsRequest) GetReadTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.ReadTime
+	}
+	return nil
+}
+
+func (m *ExportAssetsRequest) GetAssetTypes() []string {
+	if m != nil {
+		return m.AssetTypes
+	}
+	return nil
+}
+
+func (m *ExportAssetsRequest) GetContentType() ContentType {
+	if m != nil {
+		return m.ContentType
+	}
+	return ContentType_CONTENT_TYPE_UNSPECIFIED
+}
+
+func (m *ExportAssetsRequest) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// The export asset response. This message is returned by the
+// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] method in the returned
+// [google.longrunning.Operation.response][google.longrunning.Operation.response] field.
+type ExportAssetsResponse struct {
+	// Time the snapshot was taken.
+	ReadTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"`
+	// Output configuration indicating where the results were output to.
+	// All results are in JSON format.
+	OutputConfig         *OutputConfig `protobuf:"bytes,2,opt,name=output_config,json=outputConfig,proto3" json:"output_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *ExportAssetsResponse) Reset()         { *m = ExportAssetsResponse{} }
+func (m *ExportAssetsResponse) String() string { return proto.CompactTextString(m) }
+func (*ExportAssetsResponse) ProtoMessage()    {}
+func (*ExportAssetsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{1}
+}
+
+func (m *ExportAssetsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExportAssetsResponse.Unmarshal(m, b)
+}
+func (m *ExportAssetsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExportAssetsResponse.Marshal(b, m, deterministic)
+}
+func (m *ExportAssetsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExportAssetsResponse.Merge(m, src)
+}
+func (m *ExportAssetsResponse) XXX_Size() int {
+	return xxx_messageInfo_ExportAssetsResponse.Size(m)
+}
+func (m *ExportAssetsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExportAssetsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExportAssetsResponse proto.InternalMessageInfo
+
+func (m *ExportAssetsResponse) GetReadTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.ReadTime
+	}
+	return nil
+}
+
+func (m *ExportAssetsResponse) GetOutputConfig() *OutputConfig {
+	if m != nil {
+		return m.OutputConfig
+	}
+	return nil
+}
+
+// Batch get assets history request.
+type BatchGetAssetsHistoryRequest struct {
+	// Required. The relative name of the root asset. It can only be an
+	// organization number (such as "organizations/123"), a project ID (such as
+	// "projects/my-project-id")", or a project number (such as "projects/12345").
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// A list of the full names of the assets. For example:
+	// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
+	// See [Resource
+	// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
+	// and [Resource Name
+	// Format](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/resource-name-format)
+	// for more info.
+	//
+	// The request becomes a no-op if the asset name list is empty, and the max
+	// size of the asset name list is 100 in one request.
+	AssetNames []string `protobuf:"bytes,2,rep,name=asset_names,json=assetNames,proto3" json:"asset_names,omitempty"`
+	// Required. The content type.
+	ContentType ContentType `protobuf:"varint,3,opt,name=content_type,json=contentType,proto3,enum=google.cloud.asset.v1p2beta1.ContentType" json:"content_type,omitempty"`
+	// Optional. The time window for the asset history. Both start_time and
+	// end_time are optional and if set, it must be after 2018-10-02 UTC. If
+	// end_time is not set, it is default to current timestamp. If start_time is
+	// not set, the snapshot of the assets at end_time will be returned. The
+	// returned results contain all temporal assets whose time window overlap with
+	// read_time_window.
+	ReadTimeWindow       *TimeWindow `protobuf:"bytes,4,opt,name=read_time_window,json=readTimeWindow,proto3" json:"read_time_window,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *BatchGetAssetsHistoryRequest) Reset()         { *m = BatchGetAssetsHistoryRequest{} }
+func (m *BatchGetAssetsHistoryRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchGetAssetsHistoryRequest) ProtoMessage()    {}
+func (*BatchGetAssetsHistoryRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{2}
+}
+
+func (m *BatchGetAssetsHistoryRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchGetAssetsHistoryRequest.Unmarshal(m, b)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchGetAssetsHistoryRequest.Marshal(b, m, deterministic)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchGetAssetsHistoryRequest.Merge(m, src)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_Size() int {
+	return xxx_messageInfo_BatchGetAssetsHistoryRequest.Size(m)
+}
+func (m *BatchGetAssetsHistoryRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchGetAssetsHistoryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetAssetsHistoryRequest proto.InternalMessageInfo
+
+func (m *BatchGetAssetsHistoryRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *BatchGetAssetsHistoryRequest) GetAssetNames() []string {
+	if m != nil {
+		return m.AssetNames
+	}
+	return nil
+}
+
+func (m *BatchGetAssetsHistoryRequest) GetContentType() ContentType {
+	if m != nil {
+		return m.ContentType
+	}
+	return ContentType_CONTENT_TYPE_UNSPECIFIED
+}
+
+func (m *BatchGetAssetsHistoryRequest) GetReadTimeWindow() *TimeWindow {
+	if m != nil {
+		return m.ReadTimeWindow
+	}
+	return nil
+}
+
+// Batch get assets history response.
+type BatchGetAssetsHistoryResponse struct {
+	// A list of assets with valid time windows.
+	Assets               []*TemporalAsset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *BatchGetAssetsHistoryResponse) Reset()         { *m = BatchGetAssetsHistoryResponse{} }
+func (m *BatchGetAssetsHistoryResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchGetAssetsHistoryResponse) ProtoMessage()    {}
+func (*BatchGetAssetsHistoryResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{3}
+}
+
+func (m *BatchGetAssetsHistoryResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BatchGetAssetsHistoryResponse.Unmarshal(m, b)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BatchGetAssetsHistoryResponse.Marshal(b, m, deterministic)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BatchGetAssetsHistoryResponse.Merge(m, src)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_Size() int {
+	return xxx_messageInfo_BatchGetAssetsHistoryResponse.Size(m)
+}
+func (m *BatchGetAssetsHistoryResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_BatchGetAssetsHistoryResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetAssetsHistoryResponse proto.InternalMessageInfo
+
+func (m *BatchGetAssetsHistoryResponse) GetAssets() []*TemporalAsset {
+	if m != nil {
+		return m.Assets
+	}
+	return nil
+}
+
+// Create asset feed request.
+type CreateFeedRequest struct {
+	// Required. The name of the project/folder/organization where this feed
+	// should be created in. It can only be an organization number (such as
+	// "organizations/123"), a folder number (such as "folders/123"), a project ID
+	// (such as "projects/my-project-id")", or a project number (such as
+	// "projects/12345").
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. This is the client-assigned asset feed identifier and it needs to
+	// be unique under a specific parent project/folder/organization.
+	FeedId string `protobuf:"bytes,2,opt,name=feed_id,json=feedId,proto3" json:"feed_id,omitempty"`
+	// The feed details. The field `name` must be empty and it will be generated
+	// in the format of:
+	// projects/project_number/feeds/feed_id
+	// folders/folder_number/feeds/feed_id
+	// organizations/organization_number/feeds/feed_id
+	Feed                 *Feed    `protobuf:"bytes,3,opt,name=feed,proto3" json:"feed,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CreateFeedRequest) Reset()         { *m = CreateFeedRequest{} }
+func (m *CreateFeedRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateFeedRequest) ProtoMessage()    {}
+func (*CreateFeedRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{4}
+}
+
+func (m *CreateFeedRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CreateFeedRequest.Unmarshal(m, b)
+}
+func (m *CreateFeedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CreateFeedRequest.Marshal(b, m, deterministic)
+}
+func (m *CreateFeedRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CreateFeedRequest.Merge(m, src)
+}
+func (m *CreateFeedRequest) XXX_Size() int {
+	return xxx_messageInfo_CreateFeedRequest.Size(m)
+}
+func (m *CreateFeedRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_CreateFeedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateFeedRequest proto.InternalMessageInfo
+
+func (m *CreateFeedRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateFeedRequest) GetFeedId() string {
+	if m != nil {
+		return m.FeedId
+	}
+	return ""
+}
+
+func (m *CreateFeedRequest) GetFeed() *Feed {
+	if m != nil {
+		return m.Feed
+	}
+	return nil
+}
+
+// Get asset feed request.
+type GetFeedRequest struct {
+	// The name of the Feed and it must be in the format of:
+	// projects/project_number/feeds/feed_id
+	// folders/folder_number/feeds/feed_id
+	// organizations/organization_number/feeds/feed_id
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetFeedRequest) Reset()         { *m = GetFeedRequest{} }
+func (m *GetFeedRequest) String() string { return proto.CompactTextString(m) }
+func (*GetFeedRequest) ProtoMessage()    {}
+func (*GetFeedRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{5}
+}
+
+func (m *GetFeedRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetFeedRequest.Unmarshal(m, b)
+}
+func (m *GetFeedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetFeedRequest.Marshal(b, m, deterministic)
+}
+func (m *GetFeedRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetFeedRequest.Merge(m, src)
+}
+func (m *GetFeedRequest) XXX_Size() int {
+	return xxx_messageInfo_GetFeedRequest.Size(m)
+}
+func (m *GetFeedRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetFeedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetFeedRequest proto.InternalMessageInfo
+
+func (m *GetFeedRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// List asset feeds request.
+type ListFeedsRequest struct {
+	// Required. The parent project/folder/organization whose feeds are to be
+	// listed. It can only be using project/folder/organization number (such as
+	// "folders/12345")", or a project ID (such as "projects/my-project-id").
+	Parent               string   `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListFeedsRequest) Reset()         { *m = ListFeedsRequest{} }
+func (m *ListFeedsRequest) String() string { return proto.CompactTextString(m) }
+func (*ListFeedsRequest) ProtoMessage()    {}
+func (*ListFeedsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{6}
+}
+
+func (m *ListFeedsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListFeedsRequest.Unmarshal(m, b)
+}
+func (m *ListFeedsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListFeedsRequest.Marshal(b, m, deterministic)
+}
+func (m *ListFeedsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListFeedsRequest.Merge(m, src)
+}
+func (m *ListFeedsRequest) XXX_Size() int {
+	return xxx_messageInfo_ListFeedsRequest.Size(m)
+}
+func (m *ListFeedsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListFeedsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListFeedsRequest proto.InternalMessageInfo
+
+func (m *ListFeedsRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+type ListFeedsResponse struct {
+	// A list of feeds.
+	Feeds                []*Feed  `protobuf:"bytes,1,rep,name=feeds,proto3" json:"feeds,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListFeedsResponse) Reset()         { *m = ListFeedsResponse{} }
+func (m *ListFeedsResponse) String() string { return proto.CompactTextString(m) }
+func (*ListFeedsResponse) ProtoMessage()    {}
+func (*ListFeedsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{7}
+}
+
+func (m *ListFeedsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListFeedsResponse.Unmarshal(m, b)
+}
+func (m *ListFeedsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListFeedsResponse.Marshal(b, m, deterministic)
+}
+func (m *ListFeedsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListFeedsResponse.Merge(m, src)
+}
+func (m *ListFeedsResponse) XXX_Size() int {
+	return xxx_messageInfo_ListFeedsResponse.Size(m)
+}
+func (m *ListFeedsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListFeedsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListFeedsResponse proto.InternalMessageInfo
+
+func (m *ListFeedsResponse) GetFeeds() []*Feed {
+	if m != nil {
+		return m.Feeds
+	}
+	return nil
+}
+
+// Update asset feed request.
+type UpdateFeedRequest struct {
+	// The new values of feed details. It must match an existing feed and the
+	// field `name` must be in the format of:
+	// projects/project_number/feeds/feed_id or
+	// folders/folder_number/feeds/feed_id or
+	// organizations/organization_number/feeds/feed_id.
+	Feed *Feed `protobuf:"bytes,1,opt,name=feed,proto3" json:"feed,omitempty"`
+	// Only updates the `feed` fields indicated by this mask.
+	// The field mask must not be empty, and it must not contain fields that
+	// are immutable or only set by the server.
+	UpdateMask           *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *UpdateFeedRequest) Reset()         { *m = UpdateFeedRequest{} }
+func (m *UpdateFeedRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdateFeedRequest) ProtoMessage()    {}
+func (*UpdateFeedRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{8}
+}
+
+func (m *UpdateFeedRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UpdateFeedRequest.Unmarshal(m, b)
+}
+func (m *UpdateFeedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UpdateFeedRequest.Marshal(b, m, deterministic)
+}
+func (m *UpdateFeedRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UpdateFeedRequest.Merge(m, src)
+}
+func (m *UpdateFeedRequest) XXX_Size() int {
+	return xxx_messageInfo_UpdateFeedRequest.Size(m)
+}
+func (m *UpdateFeedRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UpdateFeedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UpdateFeedRequest proto.InternalMessageInfo
+
+func (m *UpdateFeedRequest) GetFeed() *Feed {
+	if m != nil {
+		return m.Feed
+	}
+	return nil
+}
+
+func (m *UpdateFeedRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+type DeleteFeedRequest struct {
+	// The name of the feed and it must be in the format of:
+	// projects/project_number/feeds/feed_id
+	// folders/folder_number/feeds/feed_id
+	// organizations/organization_number/feeds/feed_id
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeleteFeedRequest) Reset()         { *m = DeleteFeedRequest{} }
+func (m *DeleteFeedRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteFeedRequest) ProtoMessage()    {}
+func (*DeleteFeedRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{9}
+}
+
+func (m *DeleteFeedRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteFeedRequest.Unmarshal(m, b)
+}
+func (m *DeleteFeedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteFeedRequest.Marshal(b, m, deterministic)
+}
+func (m *DeleteFeedRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteFeedRequest.Merge(m, src)
+}
+func (m *DeleteFeedRequest) XXX_Size() int {
+	return xxx_messageInfo_DeleteFeedRequest.Size(m)
+}
+func (m *DeleteFeedRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteFeedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteFeedRequest proto.InternalMessageInfo
+
+func (m *DeleteFeedRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Output configuration for export assets destination.
+type OutputConfig struct {
+	// Asset export destination.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*OutputConfig_GcsDestination
+	//	*OutputConfig_BigqueryDestination
+	Destination          isOutputConfig_Destination `protobuf_oneof:"destination"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *OutputConfig) Reset()         { *m = OutputConfig{} }
+func (m *OutputConfig) String() string { return proto.CompactTextString(m) }
+func (*OutputConfig) ProtoMessage()    {}
+func (*OutputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{10}
+}
+
+func (m *OutputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OutputConfig.Unmarshal(m, b)
+}
+func (m *OutputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OutputConfig.Marshal(b, m, deterministic)
+}
+func (m *OutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OutputConfig.Merge(m, src)
+}
+func (m *OutputConfig) XXX_Size() int {
+	return xxx_messageInfo_OutputConfig.Size(m)
+}
+func (m *OutputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OutputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OutputConfig proto.InternalMessageInfo
+
+type isOutputConfig_Destination interface {
+	isOutputConfig_Destination()
+}
+
+type OutputConfig_GcsDestination struct {
+	GcsDestination *GcsDestination `protobuf:"bytes,1,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"`
+}
+
+type OutputConfig_BigqueryDestination struct {
+	BigqueryDestination *BigQueryDestination `protobuf:"bytes,2,opt,name=bigquery_destination,json=bigqueryDestination,proto3,oneof"`
+}
+
+func (*OutputConfig_GcsDestination) isOutputConfig_Destination() {}
+
+func (*OutputConfig_BigqueryDestination) isOutputConfig_Destination() {}
+
+func (m *OutputConfig) GetDestination() isOutputConfig_Destination {
+	if m != nil {
+		return m.Destination
+	}
+	return nil
+}
+
+func (m *OutputConfig) GetGcsDestination() *GcsDestination {
+	if x, ok := m.GetDestination().(*OutputConfig_GcsDestination); ok {
+		return x.GcsDestination
+	}
+	return nil
+}
+
+func (m *OutputConfig) GetBigqueryDestination() *BigQueryDestination {
+	if x, ok := m.GetDestination().(*OutputConfig_BigqueryDestination); ok {
+		return x.BigqueryDestination
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OutputConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*OutputConfig_GcsDestination)(nil),
+		(*OutputConfig_BigqueryDestination)(nil),
+	}
+}
+
+// A Cloud Storage location.
+type GcsDestination struct {
+	// Required.
+	//
+	// Types that are valid to be assigned to ObjectUri:
+	//	*GcsDestination_Uri
+	//	*GcsDestination_UriPrefix
+	ObjectUri            isGcsDestination_ObjectUri `protobuf_oneof:"object_uri"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *GcsDestination) Reset()         { *m = GcsDestination{} }
+func (m *GcsDestination) String() string { return proto.CompactTextString(m) }
+func (*GcsDestination) ProtoMessage()    {}
+func (*GcsDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{11}
+}
+
+func (m *GcsDestination) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GcsDestination.Unmarshal(m, b)
+}
+func (m *GcsDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GcsDestination.Marshal(b, m, deterministic)
+}
+func (m *GcsDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GcsDestination.Merge(m, src)
+}
+func (m *GcsDestination) XXX_Size() int {
+	return xxx_messageInfo_GcsDestination.Size(m)
+}
+func (m *GcsDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_GcsDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GcsDestination proto.InternalMessageInfo
+
+type isGcsDestination_ObjectUri interface {
+	isGcsDestination_ObjectUri()
+}
+
+type GcsDestination_Uri struct {
+	Uri string `protobuf:"bytes,1,opt,name=uri,proto3,oneof"`
+}
+
+type GcsDestination_UriPrefix struct {
+	UriPrefix string `protobuf:"bytes,2,opt,name=uri_prefix,json=uriPrefix,proto3,oneof"`
+}
+
+func (*GcsDestination_Uri) isGcsDestination_ObjectUri() {}
+
+func (*GcsDestination_UriPrefix) isGcsDestination_ObjectUri() {}
+
+func (m *GcsDestination) GetObjectUri() isGcsDestination_ObjectUri {
+	if m != nil {
+		return m.ObjectUri
+	}
+	return nil
+}
+
+func (m *GcsDestination) GetUri() string {
+	if x, ok := m.GetObjectUri().(*GcsDestination_Uri); ok {
+		return x.Uri
+	}
+	return ""
+}
+
+func (m *GcsDestination) GetUriPrefix() string {
+	if x, ok := m.GetObjectUri().(*GcsDestination_UriPrefix); ok {
+		return x.UriPrefix
+	}
+	return ""
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*GcsDestination) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*GcsDestination_Uri)(nil),
+		(*GcsDestination_UriPrefix)(nil),
+	}
+}
+
+// A Bigquery destination.
+type BigQueryDestination struct {
+	// Required. The BigQuery dataset in format
+	// "projects/projectId/datasets/datasetId", to which the snapshot result
+	// should be exported. If this dataset does not exist, the export call returns
+	// an error.
+	Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"`
+	// Required. The BigQuery table to which the snapshot result should be
+	// written. If this table does not exist, a new table with the given name
+	// will be created.
+	Table string `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"`
+	// If the destination table already exists and this flag is `TRUE`, the
+	// table will be overwritten by the contents of assets snapshot. If the flag
+	// is not set and the destination table already exists, the export call
+	// returns an error.
+	Force                bool     `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BigQueryDestination) Reset()         { *m = BigQueryDestination{} }
+func (m *BigQueryDestination) String() string { return proto.CompactTextString(m) }
+func (*BigQueryDestination) ProtoMessage()    {}
+func (*BigQueryDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{12}
+}
+
+func (m *BigQueryDestination) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BigQueryDestination.Unmarshal(m, b)
+}
+func (m *BigQueryDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BigQueryDestination.Marshal(b, m, deterministic)
+}
+func (m *BigQueryDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BigQueryDestination.Merge(m, src)
+}
+func (m *BigQueryDestination) XXX_Size() int {
+	return xxx_messageInfo_BigQueryDestination.Size(m)
+}
+func (m *BigQueryDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_BigQueryDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BigQueryDestination proto.InternalMessageInfo
+
+func (m *BigQueryDestination) GetDataset() string {
+	if m != nil {
+		return m.Dataset
+	}
+	return ""
+}
+
+func (m *BigQueryDestination) GetTable() string {
+	if m != nil {
+		return m.Table
+	}
+	return ""
+}
+
+func (m *BigQueryDestination) GetForce() bool {
+	if m != nil {
+		return m.Force
+	}
+	return false
+}
+
+// A Cloud Pubsub destination.
+type PubsubDestination struct {
+	// The name of the Cloud Pub/Sub topic to publish to.
+	// For example: `projects/PROJECT_ID/topics/TOPIC_ID`.
+	Topic                string   `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PubsubDestination) Reset()         { *m = PubsubDestination{} }
+func (m *PubsubDestination) String() string { return proto.CompactTextString(m) }
+func (*PubsubDestination) ProtoMessage()    {}
+func (*PubsubDestination) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{13}
+}
+
+func (m *PubsubDestination) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PubsubDestination.Unmarshal(m, b)
+}
+func (m *PubsubDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PubsubDestination.Marshal(b, m, deterministic)
+}
+func (m *PubsubDestination) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PubsubDestination.Merge(m, src)
+}
+func (m *PubsubDestination) XXX_Size() int {
+	return xxx_messageInfo_PubsubDestination.Size(m)
+}
+func (m *PubsubDestination) XXX_DiscardUnknown() {
+	xxx_messageInfo_PubsubDestination.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PubsubDestination proto.InternalMessageInfo
+
+func (m *PubsubDestination) GetTopic() string {
+	if m != nil {
+		return m.Topic
+	}
+	return ""
+}
+
+// Output configuration for asset feed destination.
+type FeedOutputConfig struct {
+	// Asset feed destination.
+	//
+	// Types that are valid to be assigned to Destination:
+	//	*FeedOutputConfig_PubsubDestination
+	Destination          isFeedOutputConfig_Destination `protobuf_oneof:"destination"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *FeedOutputConfig) Reset()         { *m = FeedOutputConfig{} }
+func (m *FeedOutputConfig) String() string { return proto.CompactTextString(m) }
+func (*FeedOutputConfig) ProtoMessage()    {}
+func (*FeedOutputConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{14}
+}
+
+func (m *FeedOutputConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FeedOutputConfig.Unmarshal(m, b)
+}
+func (m *FeedOutputConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FeedOutputConfig.Marshal(b, m, deterministic)
+}
+func (m *FeedOutputConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FeedOutputConfig.Merge(m, src)
+}
+func (m *FeedOutputConfig) XXX_Size() int {
+	return xxx_messageInfo_FeedOutputConfig.Size(m)
+}
+func (m *FeedOutputConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_FeedOutputConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FeedOutputConfig proto.InternalMessageInfo
+
+type isFeedOutputConfig_Destination interface {
+	isFeedOutputConfig_Destination()
+}
+
+type FeedOutputConfig_PubsubDestination struct {
+	PubsubDestination *PubsubDestination `protobuf:"bytes,1,opt,name=pubsub_destination,json=pubsubDestination,proto3,oneof"`
+}
+
+func (*FeedOutputConfig_PubsubDestination) isFeedOutputConfig_Destination() {}
+
+func (m *FeedOutputConfig) GetDestination() isFeedOutputConfig_Destination {
+	if m != nil {
+		return m.Destination
+	}
+	return nil
+}
+
+func (m *FeedOutputConfig) GetPubsubDestination() *PubsubDestination {
+	if x, ok := m.GetDestination().(*FeedOutputConfig_PubsubDestination); ok {
+		return x.PubsubDestination
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*FeedOutputConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*FeedOutputConfig_PubsubDestination)(nil),
+	}
+}
+
+// An asset feed used to export asset updates to a destinations.
+// An asset feed filter controls what updates are exported.
+// The asset feed must be created within a project, organization, or
+// folder. Supported destinations are:
+// Cloud Pub/Sub topics.
+type Feed struct {
+	// Required. The format will be
+	// projects/{project_number}/feeds/{client-assigned_feed_identifier} or
+	// folders/{folder_number}/feeds/{client-assigned_feed_identifier} or
+	// organizations/{organization_number}/feeds/{client-assigned_feed_identifier}
+	//
+	// The client-assigned feed identifier must be unique within the parent
+	// project/folder/organization.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// A list of the full names of the assets to receive updates. You must specify
+	// either or both of asset_names and asset_types. Only asset updates matching
+	// specified asset_names and asset_types are exported to the feed. For
+	// example:
+	// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
+	// See [Resource
+	// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
+	// for more info.
+	AssetNames []string `protobuf:"bytes,2,rep,name=asset_names,json=assetNames,proto3" json:"asset_names,omitempty"`
+	// A list of types of the assets to receive updates. You must specify either
+	// or both of asset_names and asset_types. Only asset updates matching
+	// specified asset_names and asset_types are exported to the feed.
+	// For example:
+	// "compute.googleapis.com/Disk" See [Introduction to Cloud Asset
+	// Inventory](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview)
+	// for all supported asset types.
+	AssetTypes []string `protobuf:"bytes,3,rep,name=asset_types,json=assetTypes,proto3" json:"asset_types,omitempty"`
+	// Asset content type. If not specified, no content but the asset name and
+	// type will be returned.
+	ContentType ContentType `protobuf:"varint,4,opt,name=content_type,json=contentType,proto3,enum=google.cloud.asset.v1p2beta1.ContentType" json:"content_type,omitempty"`
+	// Required. Feed output configuration defining where the asset updates are
+	// published to.
+	FeedOutputConfig     *FeedOutputConfig `protobuf:"bytes,5,opt,name=feed_output_config,json=feedOutputConfig,proto3" json:"feed_output_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *Feed) Reset()         { *m = Feed{} }
+func (m *Feed) String() string { return proto.CompactTextString(m) }
+func (*Feed) ProtoMessage()    {}
+func (*Feed) Descriptor() ([]byte, []int) {
+	return fileDescriptor_266ed218574f68b8, []int{15}
+}
+
+func (m *Feed) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Feed.Unmarshal(m, b)
+}
+func (m *Feed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Feed.Marshal(b, m, deterministic)
+}
+func (m *Feed) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Feed.Merge(m, src)
+}
+func (m *Feed) XXX_Size() int {
+	return xxx_messageInfo_Feed.Size(m)
+}
+func (m *Feed) XXX_DiscardUnknown() {
+	xxx_messageInfo_Feed.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Feed proto.InternalMessageInfo
+
+func (m *Feed) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Feed) GetAssetNames() []string {
+	if m != nil {
+		return m.AssetNames
+	}
+	return nil
+}
+
+func (m *Feed) GetAssetTypes() []string {
+	if m != nil {
+		return m.AssetTypes
+	}
+	return nil
+}
+
+func (m *Feed) GetContentType() ContentType {
+	if m != nil {
+		return m.ContentType
+	}
+	return ContentType_CONTENT_TYPE_UNSPECIFIED
+}
+
+func (m *Feed) GetFeedOutputConfig() *FeedOutputConfig {
+	if m != nil {
+		return m.FeedOutputConfig
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.cloud.asset.v1p2beta1.ContentType", ContentType_name, ContentType_value)
+	proto.RegisterType((*ExportAssetsRequest)(nil), "google.cloud.asset.v1p2beta1.ExportAssetsRequest")
+	proto.RegisterType((*ExportAssetsResponse)(nil), "google.cloud.asset.v1p2beta1.ExportAssetsResponse")
+	proto.RegisterType((*BatchGetAssetsHistoryRequest)(nil), "google.cloud.asset.v1p2beta1.BatchGetAssetsHistoryRequest")
+	proto.RegisterType((*BatchGetAssetsHistoryResponse)(nil), "google.cloud.asset.v1p2beta1.BatchGetAssetsHistoryResponse")
+	proto.RegisterType((*CreateFeedRequest)(nil), "google.cloud.asset.v1p2beta1.CreateFeedRequest")
+	proto.RegisterType((*GetFeedRequest)(nil), "google.cloud.asset.v1p2beta1.GetFeedRequest")
+	proto.RegisterType((*ListFeedsRequest)(nil), "google.cloud.asset.v1p2beta1.ListFeedsRequest")
+	proto.RegisterType((*ListFeedsResponse)(nil), "google.cloud.asset.v1p2beta1.ListFeedsResponse")
+	proto.RegisterType((*UpdateFeedRequest)(nil), "google.cloud.asset.v1p2beta1.UpdateFeedRequest")
+	proto.RegisterType((*DeleteFeedRequest)(nil), "google.cloud.asset.v1p2beta1.DeleteFeedRequest")
+	proto.RegisterType((*OutputConfig)(nil), "google.cloud.asset.v1p2beta1.OutputConfig")
+	proto.RegisterType((*GcsDestination)(nil), "google.cloud.asset.v1p2beta1.GcsDestination")
+	proto.RegisterType((*BigQueryDestination)(nil), "google.cloud.asset.v1p2beta1.BigQueryDestination")
+	proto.RegisterType((*PubsubDestination)(nil), "google.cloud.asset.v1p2beta1.PubsubDestination")
+	proto.RegisterType((*FeedOutputConfig)(nil), "google.cloud.asset.v1p2beta1.FeedOutputConfig")
+	proto.RegisterType((*Feed)(nil), "google.cloud.asset.v1p2beta1.Feed")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/asset/v1p2beta1/asset_service.proto", fileDescriptor_266ed218574f68b8)
+}
+
+var fileDescriptor_266ed218574f68b8 = []byte{
+	// 1314 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6e, 0xdb, 0x46,
+	0x10, 0x36, 0xe5, 0x9f, 0xd8, 0x23, 0xc5, 0x91, 0xd6, 0x69, 0xa2, 0xaa, 0x0e, 0x2c, 0xb0, 0x29,
+	0x22, 0xab, 0x0d, 0x59, 0xab, 0xe8, 0x0f, 0x1c, 0xf4, 0x20, 0x29, 0x8a, 0x6d, 0x20, 0xb6, 0x54,
+	0xda, 0x69, 0x90, 0xd6, 0x00, 0x4b, 0x51, 0x2b, 0x86, 0x8d, 0xc4, 0x65, 0xc8, 0x65, 0x1c, 0xa3,
+	0xc9, 0xa1, 0xe9, 0x25, 0x40, 0x2f, 0x2d, 0xf2, 0x02, 0x3d, 0xf5, 0xd0, 0x27, 0xe8, 0x1b, 0x14,
+	0xc8, 0xb1, 0xbd, 0xf7, 0xd4, 0x57, 0xe8, 0xa1, 0xb7, 0x62, 0x77, 0x49, 0x8b, 0xfa, 0xb1, 0xe8,
+	0x34, 0x40, 0x6f, 0x9a, 0xdd, 0x99, 0xf9, 0xbe, 0xfd, 0x46, 0x3b, 0xb3, 0x84, 0xf7, 0x2d, 0x42,
+	0xac, 0x1e, 0x56, 0xcd, 0x1e, 0x09, 0x3a, 0xaa, 0xe1, 0xfb, 0x98, 0xaa, 0x8f, 0x36, 0xdc, 0x4a,
+	0x1b, 0x53, 0x63, 0x43, 0xd8, 0xba, 0x8f, 0xbd, 0x47, 0xb6, 0x89, 0x15, 0xd7, 0x23, 0x94, 0xa0,
+	0x55, 0x11, 0xa1, 0xf0, 0x08, 0x85, 0x7b, 0x28, 0x27, 0x11, 0x85, 0x70, 0x57, 0x35, 0x5c, 0x5b,
+	0x35, 0x1c, 0x87, 0x50, 0x83, 0xda, 0xc4, 0xf1, 0x45, 0x6c, 0x61, 0x3d, 0x19, 0x2d, 0x72, 0x7d,
+	0x3b, 0x74, 0xed, 0x11, 0xc7, 0xf2, 0x02, 0xc7, 0xb1, 0x1d, 0x4b, 0x25, 0x2e, 0xf6, 0x86, 0xf2,
+	0xbd, 0x15, 0x3a, 0x71, 0xab, 0x1d, 0x74, 0x55, 0xdc, 0x77, 0xe9, 0x71, 0xb8, 0x59, 0x1c, 0xdd,
+	0xec, 0xda, 0xb8, 0xd7, 0xd1, 0xfb, 0x86, 0xff, 0x20, 0xf4, 0x58, 0x1b, 0xf5, 0xa0, 0x76, 0x1f,
+	0xfb, 0xd4, 0xe8, 0xbb, 0xa1, 0xc3, 0xe5, 0xd8, 0x69, 0xcc, 0x9e, 0x8d, 0x1d, 0x2a, 0x36, 0xe4,
+	0x9f, 0x53, 0xb0, 0xd2, 0x78, 0xec, 0x12, 0x8f, 0x56, 0x39, 0x69, 0x0d, 0x3f, 0x0c, 0xb0, 0x4f,
+	0xd1, 0x25, 0x58, 0x70, 0x0d, 0x0f, 0x3b, 0x34, 0x2f, 0x15, 0xa5, 0xd2, 0x92, 0x16, 0x5a, 0xe8,
+	0x63, 0x58, 0xf2, 0xb0, 0xd1, 0xd1, 0x19, 0x40, 0x3e, 0x55, 0x94, 0x4a, 0xe9, 0x4a, 0x41, 0x09,
+	0x85, 0x8c, 0xd0, 0x95, 0x83, 0x08, 0x5d, 0x5b, 0x64, 0xce, 0xcc, 0x44, 0x6b, 0x90, 0x16, 0x45,
+	0xa0, 0xc7, 0x2e, 0xf6, 0xf3, 0xb3, 0xc5, 0xd9, 0xd2, 0x92, 0x06, 0x7c, 0xe9, 0x80, 0xad, 0xa0,
+	0xdb, 0x90, 0x31, 0x89, 0x43, 0xb1, 0x23, 0x5c, 0xf2, 0x73, 0x45, 0xa9, 0xb4, 0x5c, 0x59, 0x57,
+	0xa6, 0x55, 0x49, 0xa9, 0x8b, 0x08, 0x96, 0x41, 0x4b, 0x9b, 0x03, 0x03, 0x35, 0xe1, 0x3c, 0x09,
+	0xa8, 0x1b, 0x50, 0xdd, 0x24, 0x4e, 0xd7, 0xb6, 0xf2, 0xf3, 0x9c, 0x6b, 0x79, 0x7a, 0xba, 0x26,
+	0x0f, 0xa9, 0xf3, 0x08, 0x2d, 0x43, 0x62, 0x96, 0xfc, 0x93, 0x04, 0x17, 0x87, 0x85, 0xf2, 0x5d,
+	0xe2, 0xf8, 0x78, 0x58, 0x11, 0xe9, 0x15, 0x14, 0x19, 0xa3, 0x98, 0x7a, 0x4d, 0x8a, 0xff, 0x48,
+	0xb0, 0x5a, 0x33, 0xa8, 0x79, 0x7f, 0x0b, 0x87, 0x24, 0xb7, 0x6d, 0x9f, 0x12, 0xef, 0x38, 0xa9,
+	0xa8, 0x27, 0xb5, 0x71, 0x8c, 0x3e, 0xf6, 0xf3, 0xa9, 0x58, 0x6d, 0xf6, 0xd8, 0xca, 0x58, 0x6d,
+	0x66, 0x5f, 0xab, 0x36, 0x1a, 0x64, 0x4f, 0x14, 0xd3, 0x8f, 0x6c, 0xa7, 0x43, 0x8e, 0x78, 0xb5,
+	0xd3, 0x95, 0xd2, 0xf4, 0x8c, 0x4c, 0xb6, 0xbb, 0xdc, 0x5f, 0x5b, 0x8e, 0x64, 0x14, 0xb6, 0xdc,
+	0x81, 0x2b, 0xa7, 0x1c, 0x3d, 0x2c, 0x53, 0x1d, 0x16, 0xc4, 0xb5, 0xcc, 0x4b, 0xc5, 0xd9, 0x52,
+	0xba, 0xf2, 0x6e, 0x02, 0x14, 0xee, 0xbb, 0xc4, 0x33, 0x7a, 0x3c, 0x99, 0x16, 0x86, 0xca, 0x4f,
+	0x20, 0x57, 0xf7, 0xb0, 0x41, 0xf1, 0x2d, 0x8c, 0x3b, 0x49, 0xaa, 0x5e, 0x86, 0x73, 0x5d, 0x8c,
+	0x3b, 0xba, 0xdd, 0xe1, 0x95, 0x5d, 0xd2, 0x16, 0x98, 0xb9, 0xd3, 0x41, 0x1f, 0xc1, 0x1c, 0xfb,
+	0xc5, 0x55, 0x4c, 0x57, 0xe4, 0xe9, 0x44, 0x38, 0x12, 0xf7, 0x97, 0xaf, 0xc2, 0xf2, 0x16, 0xa6,
+	0x71, 0x68, 0x04, 0x73, 0xac, 0x64, 0x21, 0x30, 0xff, 0x2d, 0x97, 0x21, 0x7b, 0xdb, 0xf6, 0xb9,
+	0x5b, 0xd2, 0x6d, 0x96, 0x77, 0x21, 0x17, 0xf3, 0x0d, 0x95, 0xfa, 0x04, 0xe6, 0x19, 0x5c, 0x24,
+	0xd4, 0x59, 0xf8, 0x89, 0x00, 0xf9, 0xb9, 0x04, 0xb9, 0x3b, 0x6e, 0x67, 0x44, 0x9f, 0xe8, 0xb8,
+	0xd2, 0xab, 0x1d, 0x17, 0xdd, 0x80, 0x74, 0xc0, 0x93, 0xf1, 0x4e, 0x77, 0x6a, 0xb3, 0xb9, 0xc5,
+	0x9a, 0xe1, 0xae, 0xe1, 0x3f, 0xd0, 0x40, 0xb8, 0xb3, 0xdf, 0xf2, 0x35, 0xc8, 0xdd, 0xc4, 0x3d,
+	0x3c, 0xcc, 0x64, 0x92, 0x5c, 0x7f, 0x4a, 0x90, 0x89, 0xdf, 0x29, 0x74, 0x17, 0x2e, 0x58, 0xa6,
+	0xaf, 0x77, 0xb0, 0x4f, 0x6d, 0x87, 0x37, 0xe9, 0x90, 0xf9, 0x7b, 0xd3, 0x99, 0x6f, 0x99, 0xfe,
+	0xcd, 0x41, 0xcc, 0xf6, 0x8c, 0xb6, 0x6c, 0x0d, 0xad, 0xa0, 0x2e, 0x5c, 0x6c, 0xdb, 0xd6, 0xc3,
+	0x00, 0x7b, 0xc7, 0x43, 0xd9, 0xc5, 0xc1, 0x36, 0xa6, 0x67, 0xaf, 0xd9, 0xd6, 0x67, 0x2c, 0x72,
+	0x18, 0x62, 0x25, 0x4a, 0x18, 0x5b, 0xae, 0x9d, 0x87, 0x74, 0x2c, 0xbd, 0xbc, 0x0f, 0xcb, 0xc3,
+	0xd4, 0x10, 0x82, 0xd9, 0xc0, 0xb3, 0x85, 0x0a, 0xdb, 0x33, 0x1a, 0x33, 0xd0, 0x1a, 0x40, 0xe0,
+	0xd9, 0xba, 0xeb, 0xe1, 0xae, 0xfd, 0x58, 0xfc, 0x5f, 0xb7, 0x67, 0xb4, 0xa5, 0xc0, 0xb3, 0x5b,
+	0x7c, 0xa9, 0x96, 0x01, 0x20, 0xed, 0xaf, 0xb1, 0x49, 0xf5, 0xc0, 0xb3, 0xe5, 0x2f, 0x61, 0x65,
+	0x02, 0x23, 0x94, 0x87, 0x73, 0x1d, 0x83, 0x1a, 0x3e, 0x8e, 0xfe, 0x68, 0x91, 0x89, 0x2e, 0xc2,
+	0x3c, 0x35, 0xda, 0x3d, 0x1c, 0x5e, 0x05, 0x61, 0xb0, 0xd5, 0x2e, 0xf1, 0x4c, 0xd1, 0x50, 0x16,
+	0x35, 0x61, 0xc8, 0xeb, 0x90, 0x6b, 0x05, 0x6d, 0x3f, 0x68, 0xc7, 0x53, 0xb3, 0x04, 0xc4, 0xb5,
+	0xcd, 0x30, 0xb1, 0x30, 0xe4, 0xef, 0x24, 0xc8, 0xb2, 0x0a, 0x0f, 0x55, 0xf0, 0x2b, 0x40, 0x2e,
+	0x8f, 0x9f, 0x50, 0x44, 0x75, 0xba, 0xcc, 0x63, 0xb8, 0xdb, 0x33, 0x5a, 0xce, 0x1d, 0x5d, 0x1c,
+	0x95, 0xf8, 0x79, 0x0a, 0xe6, 0x18, 0x8b, 0x49, 0x7f, 0xb0, 0xe4, 0xe6, 0xfa, 0x3f, 0x4f, 0xc6,
+	0x43, 0x40, 0xbc, 0x2d, 0x4d, 0x1a, 0x8f, 0x4a, 0xf2, 0xe5, 0x1c, 0x9a, 0x3f, 0xd9, 0xee, 0xc8,
+	0x4a, 0xf9, 0x5b, 0x09, 0xd2, 0x31, 0x68, 0xb4, 0x0a, 0xf9, 0x7a, 0x73, 0xef, 0xa0, 0xb1, 0x77,
+	0xa0, 0x1f, 0xdc, 0x6b, 0x35, 0xf4, 0x3b, 0x7b, 0xfb, 0xad, 0x46, 0x7d, 0xe7, 0xd6, 0x4e, 0xe3,
+	0x66, 0x76, 0x06, 0x65, 0x60, 0x51, 0x6b, 0xec, 0x37, 0xef, 0x68, 0xf5, 0x46, 0x56, 0x42, 0xcb,
+	0x00, 0x3b, 0xd5, 0x5d, 0xbd, 0xd5, 0xbc, 0xbd, 0x53, 0xbf, 0x97, 0x4d, 0xa1, 0x15, 0xb8, 0x30,
+	0xb0, 0xf5, 0xbd, 0xea, 0x6e, 0x23, 0x3b, 0xcb, 0x9c, 0x9a, 0xda, 0x56, 0xe4, 0x34, 0x87, 0x72,
+	0x70, 0xbe, 0x5a, 0xaf, 0x37, 0xf6, 0xf7, 0xa3, 0xa5, 0xf9, 0xca, 0xdf, 0x8b, 0x90, 0xe1, 0x7d,
+	0x7b, 0x5f, 0xbc, 0xf7, 0xd0, 0x8f, 0x12, 0x64, 0xe2, 0xb3, 0x1b, 0x25, 0x5c, 0xb6, 0x09, 0x0f,
+	0xa2, 0xc2, 0x95, 0x28, 0x24, 0xf6, 0x8e, 0x53, 0x9a, 0xd1, 0x3b, 0x4e, 0x56, 0x9f, 0xfd, 0xf1,
+	0xd7, 0x8b, 0xd4, 0xba, 0x7c, 0x35, 0xf6, 0x0c, 0xfc, 0x46, 0x74, 0xd9, 0x4f, 0xcb, 0x6a, 0xf9,
+	0xe9, 0x26, 0x8e, 0xe5, 0xdc, 0x94, 0xca, 0xe8, 0x37, 0x09, 0xde, 0x98, 0x38, 0xb1, 0xd0, 0x66,
+	0x42, 0x27, 0x98, 0x32, 0xe1, 0x0b, 0x37, 0xfe, 0x53, 0xac, 0x68, 0xfc, 0xf2, 0x87, 0xfc, 0x0c,
+	0x2a, 0xba, 0x7e, 0xda, 0x19, 0xda, 0x13, 0xf9, 0x7e, 0x2f, 0x01, 0x0c, 0xa6, 0x22, 0x4a, 0xb8,
+	0x61, 0x63, 0xf3, 0xb3, 0x70, 0x86, 0x89, 0x20, 0x97, 0x38, 0x35, 0x59, 0xbe, 0x72, 0x0a, 0x35,
+	0x95, 0x0f, 0x20, 0xa6, 0xeb, 0x33, 0x09, 0xce, 0x85, 0x53, 0x12, 0x25, 0x75, 0xec, 0xa1, 0x61,
+	0x7a, 0x26, 0x1e, 0xef, 0x70, 0x1e, 0x6b, 0x68, 0x88, 0x07, 0xbb, 0xd8, 0x8c, 0x85, 0x20, 0xa1,
+	0x96, 0x9f, 0xa2, 0x17, 0x12, 0x2c, 0x9d, 0x0c, 0x56, 0x94, 0x70, 0xab, 0x46, 0xa7, 0x75, 0x41,
+	0x3d, 0xb3, 0x7f, 0x58, 0xb8, 0x89, 0xac, 0xc6, 0xd4, 0x41, 0x3f, 0x48, 0x00, 0x83, 0xf1, 0x9c,
+	0x54, 0xa8, 0xb1, 0x41, 0x7e, 0x26, 0x81, 0xae, 0x73, 0x2a, 0xd7, 0x2a, 0x72, 0x9c, 0x0a, 0x83,
+	0x57, 0xc6, 0x54, 0x62, 0xd5, 0x7a, 0x02, 0x30, 0x18, 0xd3, 0x49, 0x8c, 0xc6, 0x06, 0x7a, 0xe1,
+	0xd2, 0xd8, 0x6b, 0xa0, 0xc1, 0xbe, 0x9b, 0x22, 0x41, 0xca, 0xd3, 0xcb, 0x54, 0xd8, 0x7d, 0x59,
+	0x7d, 0x93, 0x43, 0x09, 0x24, 0x91, 0xcb, 0x70, 0x6d, 0x5f, 0x31, 0x49, 0xff, 0xf7, 0xaa, 0x72,
+	0x9f, 0x52, 0xd7, 0xdf, 0x54, 0xd5, 0xa3, 0xa3, 0xa3, 0x91, 0x4d, 0xd5, 0x08, 0xe8, 0x7d, 0xf1,
+	0xf5, 0x77, 0xdd, 0xed, 0x19, 0xb4, 0x4b, 0xbc, 0x7e, 0xed, 0x57, 0x09, 0x8a, 0x26, 0xe9, 0x4f,
+	0x3d, 0x44, 0x2d, 0x17, 0xef, 0x4c, 0x2d, 0x46, 0xbb, 0x25, 0x7d, 0x51, 0x0d, 0x43, 0x2c, 0xd2,
+	0x33, 0x1c, 0x4b, 0x21, 0x9e, 0xa5, 0x5a, 0xd8, 0xe1, 0x87, 0x52, 0x07, 0xc0, 0x93, 0xbf, 0x36,
+	0x6f, 0x70, 0xfb, 0x97, 0xd4, 0xea, 0x96, 0xc8, 0x51, 0xe7, 0xb0, 0x1c, 0x45, 0xf9, 0x7c, 0xc3,
+	0xad, 0xd4, 0x98, 0xd3, 0xcb, 0x68, 0xfb, 0x90, 0x6f, 0x1f, 0xf2, 0xed, 0xc3, 0x93, 0xed, 0xf6,
+	0x02, 0xc7, 0xfa, 0xe0, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x76, 0x29, 0x46, 0x9f, 0x46, 0x0f,
+	0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// AssetServiceClient is the client API for AssetService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type AssetServiceClient interface {
+	// Exports assets with time and resource types to a given Cloud Storage
+	// location. The output format is newline-delimited JSON.
+	// This API implements the [google.longrunning.Operation][google.longrunning.Operation] API allowing you
+	// to keep track of the export.
+	ExportAssets(ctx context.Context, in *ExportAssetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
+	// Batch gets the update history of assets that overlap a time window.
+	// For RESOURCE content, this API outputs history with asset in both
+	// non-delete or deleted status.
+	// For IAM_POLICY content, this API outputs history when the asset and its
+	// attached IAM POLICY both exist. This can create gaps in the output history.
+	BatchGetAssetsHistory(ctx context.Context, in *BatchGetAssetsHistoryRequest, opts ...grpc.CallOption) (*BatchGetAssetsHistoryResponse, error)
+	// Creates a feed in a parent project/folder/organization to listen to its
+	// asset updates.
+	CreateFeed(ctx context.Context, in *CreateFeedRequest, opts ...grpc.CallOption) (*Feed, error)
+	// Gets details about an asset feed.
+	GetFeed(ctx context.Context, in *GetFeedRequest, opts ...grpc.CallOption) (*Feed, error)
+	// Lists all asset feeds in a parent project/folder/organization.
+	ListFeeds(ctx context.Context, in *ListFeedsRequest, opts ...grpc.CallOption) (*ListFeedsResponse, error)
+	// Updates an asset feed configuration.
+	UpdateFeed(ctx context.Context, in *UpdateFeedRequest, opts ...grpc.CallOption) (*Feed, error)
+	// Deletes an asset feed.
+	DeleteFeed(ctx context.Context, in *DeleteFeedRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+}
+
+type assetServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewAssetServiceClient(cc *grpc.ClientConn) AssetServiceClient {
+	return &assetServiceClient{cc}
+}
+
+func (c *assetServiceClient) ExportAssets(ctx context.Context, in *ExportAssetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
+	out := new(longrunning.Operation)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/ExportAssets", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) BatchGetAssetsHistory(ctx context.Context, in *BatchGetAssetsHistoryRequest, opts ...grpc.CallOption) (*BatchGetAssetsHistoryResponse, error) {
+	out := new(BatchGetAssetsHistoryResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/BatchGetAssetsHistory", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) CreateFeed(ctx context.Context, in *CreateFeedRequest, opts ...grpc.CallOption) (*Feed, error) {
+	out := new(Feed)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/CreateFeed", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) GetFeed(ctx context.Context, in *GetFeedRequest, opts ...grpc.CallOption) (*Feed, error) {
+	out := new(Feed)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/GetFeed", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) ListFeeds(ctx context.Context, in *ListFeedsRequest, opts ...grpc.CallOption) (*ListFeedsResponse, error) {
+	out := new(ListFeedsResponse)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/ListFeeds", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) UpdateFeed(ctx context.Context, in *UpdateFeedRequest, opts ...grpc.CallOption) (*Feed, error) {
+	out := new(Feed)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/UpdateFeed", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *assetServiceClient) DeleteFeed(ctx context.Context, in *DeleteFeedRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/google.cloud.asset.v1p2beta1.AssetService/DeleteFeed", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// AssetServiceServer is the server API for AssetService service.
+type AssetServiceServer interface {
+	// Exports assets with time and resource types to a given Cloud Storage
+	// location. The output format is newline-delimited JSON.
+	// This API implements the [google.longrunning.Operation][google.longrunning.Operation] API allowing you
+	// to keep track of the export.
+	ExportAssets(context.Context, *ExportAssetsRequest) (*longrunning.Operation, error)
+	// Batch gets the update history of assets that overlap a time window.
+	// For RESOURCE content, this API outputs history with asset in both
+	// non-delete or deleted status.
+	// For IAM_POLICY content, this API outputs history when the asset and its
+	// attached IAM POLICY both exist. This can create gaps in the output history.
+	BatchGetAssetsHistory(context.Context, *BatchGetAssetsHistoryRequest) (*BatchGetAssetsHistoryResponse, error)
+	// Creates a feed in a parent project/folder/organization to listen to its
+	// asset updates.
+	CreateFeed(context.Context, *CreateFeedRequest) (*Feed, error)
+	// Gets details about an asset feed.
+	GetFeed(context.Context, *GetFeedRequest) (*Feed, error)
+	// Lists all asset feeds in a parent project/folder/organization.
+	ListFeeds(context.Context, *ListFeedsRequest) (*ListFeedsResponse, error)
+	// Updates an asset feed configuration.
+	UpdateFeed(context.Context, *UpdateFeedRequest) (*Feed, error)
+	// Deletes an asset feed.
+	DeleteFeed(context.Context, *DeleteFeedRequest) (*empty.Empty, error)
+}
+
+func RegisterAssetServiceServer(s *grpc.Server, srv AssetServiceServer) {
+	s.RegisterService(&_AssetService_serviceDesc, srv)
+}
+
+func _AssetService_ExportAssets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExportAssetsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).ExportAssets(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/ExportAssets",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).ExportAssets(ctx, req.(*ExportAssetsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_BatchGetAssetsHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BatchGetAssetsHistoryRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).BatchGetAssetsHistory(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/BatchGetAssetsHistory",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).BatchGetAssetsHistory(ctx, req.(*BatchGetAssetsHistoryRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_CreateFeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateFeedRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).CreateFeed(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/CreateFeed",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).CreateFeed(ctx, req.(*CreateFeedRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_GetFeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetFeedRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).GetFeed(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/GetFeed",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).GetFeed(ctx, req.(*GetFeedRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_ListFeeds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListFeedsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).ListFeeds(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/ListFeeds",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).ListFeeds(ctx, req.(*ListFeedsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_UpdateFeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateFeedRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).UpdateFeed(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/UpdateFeed",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).UpdateFeed(ctx, req.(*UpdateFeedRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AssetService_DeleteFeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteFeedRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AssetServiceServer).DeleteFeed(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.asset.v1p2beta1.AssetService/DeleteFeed",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AssetServiceServer).DeleteFeed(ctx, req.(*DeleteFeedRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _AssetService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.asset.v1p2beta1.AssetService",
+	HandlerType: (*AssetServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ExportAssets",
+			Handler:    _AssetService_ExportAssets_Handler,
+		},
+		{
+			MethodName: "BatchGetAssetsHistory",
+			Handler:    _AssetService_BatchGetAssetsHistory_Handler,
+		},
+		{
+			MethodName: "CreateFeed",
+			Handler:    _AssetService_CreateFeed_Handler,
+		},
+		{
+			MethodName: "GetFeed",
+			Handler:    _AssetService_GetFeed_Handler,
+		},
+		{
+			MethodName: "ListFeeds",
+			Handler:    _AssetService_ListFeeds_Handler,
+		},
+		{
+			MethodName: "UpdateFeed",
+			Handler:    _AssetService_UpdateFeed_Handler,
+		},
+		{
+			MethodName: "DeleteFeed",
+			Handler:    _AssetService_DeleteFeed_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/asset/v1p2beta1/asset_service.proto",
+}
diff --git a/googleapis/cloud/asset/v1p2beta1/assets.pb.go b/googleapis/cloud/asset/v1p2beta1/assets.pb.go
new file mode 100644
index 0000000..e215ed6
--- /dev/null
+++ b/googleapis/cloud/asset/v1p2beta1/assets.pb.go
@@ -0,0 +1,408 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/cloud/asset/v1p2beta1/assets.proto
+
+package asset
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	_struct "github.com/golang/protobuf/ptypes/struct"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	v1 "google.golang.org/genproto/googleapis/iam/v1"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Temporal asset. In addition to the asset, the temporal asset includes the
+// status of the asset and valid from and to time of it.
+type TemporalAsset struct {
+	// The time window when the asset data and state was observed.
+	Window *TimeWindow `protobuf:"bytes,1,opt,name=window,proto3" json:"window,omitempty"`
+	// If the asset is deleted or not.
+	Deleted bool `protobuf:"varint,2,opt,name=deleted,proto3" json:"deleted,omitempty"`
+	// Asset.
+	Asset                *Asset   `protobuf:"bytes,3,opt,name=asset,proto3" json:"asset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TemporalAsset) Reset()         { *m = TemporalAsset{} }
+func (m *TemporalAsset) String() string { return proto.CompactTextString(m) }
+func (*TemporalAsset) ProtoMessage()    {}
+func (*TemporalAsset) Descriptor() ([]byte, []int) {
+	return fileDescriptor_723f69529b7a1cc3, []int{0}
+}
+
+func (m *TemporalAsset) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TemporalAsset.Unmarshal(m, b)
+}
+func (m *TemporalAsset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TemporalAsset.Marshal(b, m, deterministic)
+}
+func (m *TemporalAsset) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TemporalAsset.Merge(m, src)
+}
+func (m *TemporalAsset) XXX_Size() int {
+	return xxx_messageInfo_TemporalAsset.Size(m)
+}
+func (m *TemporalAsset) XXX_DiscardUnknown() {
+	xxx_messageInfo_TemporalAsset.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TemporalAsset proto.InternalMessageInfo
+
+func (m *TemporalAsset) GetWindow() *TimeWindow {
+	if m != nil {
+		return m.Window
+	}
+	return nil
+}
+
+func (m *TemporalAsset) GetDeleted() bool {
+	if m != nil {
+		return m.Deleted
+	}
+	return false
+}
+
+func (m *TemporalAsset) GetAsset() *Asset {
+	if m != nil {
+		return m.Asset
+	}
+	return nil
+}
+
+// A time window of (start_time, end_time].
+type TimeWindow struct {
+	// Start time of the time window (exclusive).
+	StartTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+	// End time of the time window (inclusive).
+	// Current timestamp if not specified.
+	EndTime              *timestamp.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *TimeWindow) Reset()         { *m = TimeWindow{} }
+func (m *TimeWindow) String() string { return proto.CompactTextString(m) }
+func (*TimeWindow) ProtoMessage()    {}
+func (*TimeWindow) Descriptor() ([]byte, []int) {
+	return fileDescriptor_723f69529b7a1cc3, []int{1}
+}
+
+func (m *TimeWindow) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TimeWindow.Unmarshal(m, b)
+}
+func (m *TimeWindow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TimeWindow.Marshal(b, m, deterministic)
+}
+func (m *TimeWindow) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TimeWindow.Merge(m, src)
+}
+func (m *TimeWindow) XXX_Size() int {
+	return xxx_messageInfo_TimeWindow.Size(m)
+}
+func (m *TimeWindow) XXX_DiscardUnknown() {
+	xxx_messageInfo_TimeWindow.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TimeWindow proto.InternalMessageInfo
+
+func (m *TimeWindow) GetStartTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *TimeWindow) GetEndTime() *timestamp.Timestamp {
+	if m != nil {
+		return m.EndTime
+	}
+	return nil
+}
+
+// Cloud asset. This includes all Google Cloud Platform resources,
+// Cloud IAM policies, and other non-GCP assets.
+type Asset struct {
+	// The full name of the asset. For example:
+	// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
+	// See [Resource
+	// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
+	// for more information.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Type of the asset. Example: "compute.googleapis.com/Disk".
+	AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"`
+	// Representation of the resource.
+	Resource *Resource `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"`
+	// Representation of the actual Cloud IAM policy set on a cloud resource. For
+	// each resource, there must be at most one Cloud IAM policy set on it.
+	IamPolicy *v1.Policy `protobuf:"bytes,4,opt,name=iam_policy,json=iamPolicy,proto3" json:"iam_policy,omitempty"`
+	// Cloud IAM policy name of the Cloud IAM policy set on a cloud resource. For
+	// each resource, there must be at most one Cloud IAM policy name associated
+	// with it.
+	IamPolicyName []byte `protobuf:"bytes,5,opt,name=iam_policy_name,json=iamPolicyName,proto3" json:"iam_policy_name,omitempty"`
+	// Asset's ancestry path in Cloud Resource Manager (CRM) hierarchy,
+	// represented as a list of relative resource names. Ancestry path starts with
+	// the closest CRM ancestor and ending at a visible root. If the asset is a
+	// CRM project/ folder/organization, this starts from the asset itself.
+	//
+	// Example: ["projects/123456789", "folders/5432", "organizations/1234"]
+	Ancestors            []string `protobuf:"bytes,6,rep,name=ancestors,proto3" json:"ancestors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Asset) Reset()         { *m = Asset{} }
+func (m *Asset) String() string { return proto.CompactTextString(m) }
+func (*Asset) ProtoMessage()    {}
+func (*Asset) Descriptor() ([]byte, []int) {
+	return fileDescriptor_723f69529b7a1cc3, []int{2}
+}
+
+func (m *Asset) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Asset.Unmarshal(m, b)
+}
+func (m *Asset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Asset.Marshal(b, m, deterministic)
+}
+func (m *Asset) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Asset.Merge(m, src)
+}
+func (m *Asset) XXX_Size() int {
+	return xxx_messageInfo_Asset.Size(m)
+}
+func (m *Asset) XXX_DiscardUnknown() {
+	xxx_messageInfo_Asset.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Asset proto.InternalMessageInfo
+
+func (m *Asset) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Asset) GetAssetType() string {
+	if m != nil {
+		return m.AssetType
+	}
+	return ""
+}
+
+func (m *Asset) GetResource() *Resource {
+	if m != nil {
+		return m.Resource
+	}
+	return nil
+}
+
+func (m *Asset) GetIamPolicy() *v1.Policy {
+	if m != nil {
+		return m.IamPolicy
+	}
+	return nil
+}
+
+func (m *Asset) GetIamPolicyName() []byte {
+	if m != nil {
+		return m.IamPolicyName
+	}
+	return nil
+}
+
+func (m *Asset) GetAncestors() []string {
+	if m != nil {
+		return m.Ancestors
+	}
+	return nil
+}
+
+// Representation of a cloud resource.
+type Resource struct {
+	// The API version. Example: "v1".
+	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+	// The URL of the discovery document containing the resource's JSON schema.
+	// For example:
+	// `"https://www.googleapis.com/discovery/v1/apis/compute/v1/rest"`.
+	// It will be left unspecified for resources without a discovery-based API,
+	// such as Cloud Bigtable.
+	DiscoveryDocumentUri string `protobuf:"bytes,2,opt,name=discovery_document_uri,json=discoveryDocumentUri,proto3" json:"discovery_document_uri,omitempty"`
+	// The JSON schema name listed in the discovery document.
+	// Example: "Project". It will be left unspecified for resources (such as
+	// Cloud Bigtable) without a discovery-based API.
+	DiscoveryName string `protobuf:"bytes,3,opt,name=discovery_name,json=discoveryName,proto3" json:"discovery_name,omitempty"`
+	// The REST URL for accessing the resource. An HTTP GET operation using this
+	// URL returns the resource itself.
+	// Example:
+	// `https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123`.
+	// It will be left unspecified for resources without a REST API.
+	ResourceUrl string `protobuf:"bytes,4,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"`
+	// The full name of the immediate parent of this resource. See
+	// [Resource
+	// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
+	// for more information.
+	//
+	// For GCP assets, it is the parent resource defined in the [Cloud IAM policy
+	// hierarchy](https://cloud.google.com/iam/docs/overview#policy_hierarchy).
+	// For example:
+	// `"//cloudresourcemanager.googleapis.com/projects/my_project_123"`.
+	//
+	// For third-party assets, it is up to the users to define.
+	Parent string `protobuf:"bytes,5,opt,name=parent,proto3" json:"parent,omitempty"`
+	// The content of the resource, in which some sensitive fields are scrubbed
+	// away and may not be present.
+	Data *_struct.Struct `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
+	// The actual metadata content for the resource, only visible for internal
+	// users.
+	InternalData         *any.Any `protobuf:"bytes,7,opt,name=internal_data,json=internalData,proto3" json:"internal_data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Resource) Reset()         { *m = Resource{} }
+func (m *Resource) String() string { return proto.CompactTextString(m) }
+func (*Resource) ProtoMessage()    {}
+func (*Resource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_723f69529b7a1cc3, []int{3}
+}
+
+func (m *Resource) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Resource.Unmarshal(m, b)
+}
+func (m *Resource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Resource.Marshal(b, m, deterministic)
+}
+func (m *Resource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resource.Merge(m, src)
+}
+func (m *Resource) XXX_Size() int {
+	return xxx_messageInfo_Resource.Size(m)
+}
+func (m *Resource) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resource.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resource proto.InternalMessageInfo
+
+func (m *Resource) GetVersion() string {
+	if m != nil {
+		return m.Version
+	}
+	return ""
+}
+
+func (m *Resource) GetDiscoveryDocumentUri() string {
+	if m != nil {
+		return m.DiscoveryDocumentUri
+	}
+	return ""
+}
+
+func (m *Resource) GetDiscoveryName() string {
+	if m != nil {
+		return m.DiscoveryName
+	}
+	return ""
+}
+
+func (m *Resource) GetResourceUrl() string {
+	if m != nil {
+		return m.ResourceUrl
+	}
+	return ""
+}
+
+func (m *Resource) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *Resource) GetData() *_struct.Struct {
+	if m != nil {
+		return m.Data
+	}
+	return nil
+}
+
+func (m *Resource) GetInternalData() *any.Any {
+	if m != nil {
+		return m.InternalData
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*TemporalAsset)(nil), "google.cloud.asset.v1p2beta1.TemporalAsset")
+	proto.RegisterType((*TimeWindow)(nil), "google.cloud.asset.v1p2beta1.TimeWindow")
+	proto.RegisterType((*Asset)(nil), "google.cloud.asset.v1p2beta1.Asset")
+	proto.RegisterType((*Resource)(nil), "google.cloud.asset.v1p2beta1.Resource")
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/asset/v1p2beta1/assets.proto", fileDescriptor_723f69529b7a1cc3)
+}
+
+var fileDescriptor_723f69529b7a1cc3 = []byte{
+	// 611 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x51, 0x6b, 0x13, 0x4d,
+	0x14, 0x65, 0xd3, 0x36, 0xcd, 0xde, 0x36, 0xdf, 0x07, 0x43, 0xad, 0x6b, 0x88, 0x18, 0x23, 0x96,
+	0x88, 0xb0, 0x4b, 0x6a, 0x7d, 0x28, 0xbe, 0x98, 0x5a, 0xf0, 0x4d, 0xca, 0xd8, 0x22, 0x48, 0x61,
+	0x99, 0xee, 0x8e, 0x61, 0x60, 0x77, 0x66, 0x99, 0x99, 0x4d, 0xc9, 0x8b, 0xbf, 0x46, 0x7c, 0xf0,
+	0xd9, 0x5f, 0xe1, 0x2f, 0x12, 0x9f, 0x64, 0xef, 0xce, 0xa4, 0xd8, 0x4a, 0x7c, 0xdb, 0x3b, 0xe7,
+	0x9c, 0x7b, 0xcf, 0xb9, 0x33, 0x09, 0x3c, 0x9b, 0x2b, 0x35, 0x2f, 0x78, 0x92, 0x15, 0xaa, 0xce,
+	0x13, 0x66, 0x0c, 0xb7, 0xc9, 0x62, 0x5a, 0x1d, 0x5e, 0x71, 0xcb, 0xa6, 0x6d, 0x6d, 0xe2, 0x4a,
+	0x2b, 0xab, 0xc8, 0xb0, 0xa5, 0xc6, 0x48, 0x8d, 0x11, 0x8a, 0x57, 0xd4, 0x81, 0x43, 0x13, 0x56,
+	0x89, 0x84, 0x49, 0xa9, 0x2c, 0xb3, 0x42, 0x49, 0xa7, 0x1d, 0x0c, 0x1c, 0x2a, 0x58, 0x99, 0x2c,
+	0xa6, 0x49, 0xa5, 0x0a, 0x91, 0x2d, 0x1d, 0xf6, 0xc0, 0x61, 0x58, 0x5d, 0xd5, 0x9f, 0x12, 0x26,
+	0x3d, 0x34, 0xbc, 0x0d, 0x19, 0xab, 0xeb, 0xcc, 0x3a, 0xf4, 0xd1, 0x6d, 0xd4, 0x8a, 0x92, 0x1b,
+	0xcb, 0xca, 0xaa, 0x25, 0x8c, 0xbf, 0x06, 0xd0, 0x3f, 0xe7, 0x65, 0xa5, 0x34, 0x2b, 0x66, 0x8d,
+	0x5f, 0xf2, 0x1a, 0xba, 0xd7, 0x42, 0xe6, 0xea, 0x3a, 0x0a, 0x46, 0xc1, 0x64, 0xe7, 0x70, 0x12,
+	0xaf, 0x0b, 0x15, 0x9f, 0x8b, 0x92, 0x7f, 0x40, 0x3e, 0x75, 0x3a, 0x12, 0xc1, 0x76, 0xce, 0x0b,
+	0x6e, 0x79, 0x1e, 0x75, 0x46, 0xc1, 0xa4, 0x47, 0x7d, 0x49, 0x8e, 0x61, 0x0b, 0xf5, 0xd1, 0x06,
+	0xb6, 0x7e, 0xb2, 0xbe, 0x35, 0xfa, 0xa1, 0xad, 0x62, 0xfc, 0x19, 0xe0, 0x66, 0x14, 0x39, 0x06,
+	0x30, 0x96, 0x69, 0x9b, 0x36, 0x79, 0x9c, 0xd1, 0x81, 0xef, 0xe6, 0xc3, 0xa2, 0x37, 0x0c, 0x4b,
+	0x43, 0x64, 0x37, 0x35, 0x79, 0x09, 0x3d, 0x2e, 0xf3, 0x56, 0xd8, 0xf9, 0xa7, 0x70, 0x9b, 0xcb,
+	0xbc, 0xa9, 0xc6, 0xbf, 0x02, 0xd8, 0x6a, 0x17, 0x44, 0x60, 0x53, 0x32, 0x37, 0x35, 0xa4, 0xf8,
+	0x4d, 0x1e, 0x02, 0xa0, 0xcd, 0xd4, 0x2e, 0xab, 0xb6, 0x6d, 0x48, 0x43, 0x3c, 0x39, 0x5f, 0x56,
+	0x9c, 0x9c, 0x40, 0x4f, 0x73, 0xa3, 0x6a, 0x9d, 0x71, 0x17, 0xfd, 0x60, 0x7d, 0x74, 0xea, 0xd8,
+	0x74, 0xa5, 0x23, 0x47, 0x00, 0x82, 0x95, 0x69, 0xfb, 0x2e, 0xa2, 0x4d, 0xec, 0x72, 0xcf, 0x77,
+	0x11, 0xac, 0x8c, 0x17, 0xd3, 0xf8, 0x0c, 0x41, 0x1a, 0x0a, 0x56, 0xb6, 0x9f, 0xe4, 0x00, 0xfe,
+	0xbf, 0x51, 0xa5, 0xe8, 0x7b, 0x6b, 0x14, 0x4c, 0x76, 0x69, 0x7f, 0xc5, 0x79, 0xd7, 0x04, 0x18,
+	0x42, 0xc8, 0x64, 0xc6, 0x8d, 0x55, 0xda, 0x44, 0xdd, 0xd1, 0x06, 0xfa, 0xf7, 0x07, 0xe3, 0x2f,
+	0x1d, 0xe8, 0x79, 0x4b, 0xcd, 0xf5, 0x2e, 0xb8, 0x36, 0x42, 0x49, 0xb7, 0x02, 0x5f, 0x92, 0x23,
+	0xd8, 0xcf, 0x85, 0xc9, 0xd4, 0x82, 0xeb, 0x65, 0x9a, 0xab, 0xac, 0x2e, 0xb9, 0xb4, 0x69, 0xad,
+	0x85, 0xdb, 0xc8, 0xde, 0x0a, 0x3d, 0x75, 0xe0, 0x85, 0x16, 0xe4, 0x29, 0xfc, 0x77, 0xa3, 0x42,
+	0x87, 0x1b, 0xc8, 0xee, 0xaf, 0x4e, 0xd1, 0xe1, 0x63, 0xd8, 0xf5, 0xbb, 0x48, 0x6b, 0x5d, 0xe0,
+	0x06, 0x42, 0xba, 0xe3, 0xcf, 0x2e, 0x74, 0x41, 0xf6, 0xa1, 0x5b, 0x31, 0xcd, 0xa5, 0xc5, 0x8c,
+	0x21, 0x75, 0x15, 0x79, 0x0e, 0x9b, 0x39, 0xb3, 0x2c, 0xea, 0xe2, 0xd2, 0xee, 0xdf, 0xb9, 0xee,
+	0xf7, 0xf8, 0x93, 0xa1, 0x48, 0x22, 0xc7, 0xd0, 0x17, 0xd2, 0x72, 0x2d, 0x59, 0x91, 0xa2, 0x6a,
+	0x1b, 0x55, 0x7b, 0x77, 0x54, 0x33, 0xb9, 0xa4, 0xbb, 0x9e, 0x7a, 0xca, 0x2c, 0x3b, 0xf9, 0x1e,
+	0xc0, 0x28, 0x53, 0xe5, 0xda, 0xab, 0x3d, 0x01, 0x7c, 0x45, 0x67, 0x4d, 0x97, 0xb3, 0xe0, 0xe3,
+	0xcc, 0x71, 0xe7, 0xaa, 0x60, 0x72, 0x1e, 0x2b, 0x3d, 0x4f, 0xe6, 0x5c, 0xe2, 0x8c, 0xa4, 0x85,
+	0x58, 0x25, 0xcc, 0xdf, 0xff, 0x7b, 0x5e, 0x61, 0xfd, 0x33, 0x08, 0xbe, 0x75, 0x86, 0x6f, 0xdb,
+	0x36, 0x6f, 0x70, 0xe4, 0xec, 0xcf, 0x91, 0x3f, 0x3c, 0x7c, 0x89, 0xf0, 0x25, 0xc2, 0x97, 0x2b,
+	0xf8, 0xaa, 0x8b, 0xe3, 0x5e, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xff, 0x70, 0xd9, 0xe9,
+	0x04, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/dialogflow/v2/session.pb.go b/googleapis/cloud/dialogflow/v2/session.pb.go
index 80ed0fc..8327e98 100644
--- a/googleapis/cloud/dialogflow/v2/session.pb.go
+++ b/googleapis/cloud/dialogflow/v2/session.pb.go
@@ -507,7 +507,7 @@
 	OutputContexts []*Context `protobuf:"bytes,10,rep,name=output_contexts,json=outputContexts,proto3" json:"output_contexts,omitempty"`
 	// The intent that matched the conversational query. Some, not
 	// all fields are filled in this message, including but not limited to:
-	// `name`, `display_name` and `webhook_state`.
+	// `name`, `display_name`, `end_interaction` and `is_fallback`.
 	Intent *Intent `protobuf:"bytes,11,opt,name=intent,proto3" json:"intent,omitempty"`
 	// The intent detection confidence. Values range from 0.0
 	// (completely uncertain) to 1.0 (completely certain).
diff --git a/googleapis/cloud/dialogflow/v2beta1/agent.pb.go b/googleapis/cloud/dialogflow/v2beta1/agent.pb.go
index f71c6d5..77ae0ea 100644
--- a/googleapis/cloud/dialogflow/v2beta1/agent.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/agent.pb.go
@@ -10,6 +10,7 @@
 
 	proto "github.com/golang/protobuf/proto"
 	empty "github.com/golang/protobuf/ptypes/empty"
+	_ "github.com/golang/protobuf/ptypes/struct"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	longrunning "google.golang.org/genproto/googleapis/longrunning"
 	field_mask "google.golang.org/genproto/protobuf/field_mask"
@@ -930,87 +931,88 @@
 }
 
 var fileDescriptor_be44838675479699 = []byte{
-	// 1280 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4d, 0x6f, 0x1b, 0x45,
-	0x18, 0xee, 0x3a, 0x4d, 0x6a, 0xbf, 0xce, 0x87, 0x3b, 0x69, 0xd3, 0xad, 0x4b, 0x54, 0xb3, 0xa5,
-	0x55, 0x9a, 0xb4, 0x5e, 0xe2, 0xb6, 0x02, 0x52, 0x3e, 0xe4, 0xc4, 0x6e, 0x63, 0x29, 0x1f, 0xd6,
-	0xda, 0x89, 0xd4, 0x1e, 0x58, 0x4d, 0xbc, 0x93, 0xcd, 0xd0, 0xdd, 0x9d, 0x65, 0x77, 0xdc, 0x4f,
-	0xe0, 0xc0, 0x81, 0x13, 0x07, 0x24, 0x90, 0x90, 0x90, 0xb8, 0x70, 0x42, 0x1c, 0xf8, 0x21, 0x1c,
-	0xe1, 0xc0, 0x1f, 0xe0, 0x47, 0x70, 0xe0, 0x80, 0x66, 0x76, 0x1d, 0xaf, 0x6d, 0x52, 0x6f, 0x11,
-	0x12, 0xb7, 0xdd, 0xe7, 0x7d, 0xde, 0xf7, 0x7d, 0xe6, 0xdd, 0x99, 0x47, 0xb3, 0xb0, 0x62, 0x33,
-	0x66, 0x3b, 0x44, 0xef, 0x38, 0xac, 0x6b, 0xe9, 0x16, 0xc5, 0x0e, 0xb3, 0x0f, 0x1d, 0xf6, 0x44,
-	0x7f, 0x5c, 0x39, 0x20, 0x1c, 0xaf, 0xea, 0xd8, 0x26, 0x1e, 0x2f, 0xfb, 0x01, 0xe3, 0x0c, 0x5d,
-	0x8e, 0xc8, 0x65, 0x49, 0x2e, 0xf7, 0xc9, 0xe5, 0x98, 0x5c, 0x7c, 0x2d, 0xae, 0x86, 0x7d, 0xaa,
-	0x63, 0xcf, 0x63, 0x1c, 0x73, 0xca, 0xbc, 0x30, 0x4a, 0x2f, 0x5e, 0x89, 0xa3, 0x0e, 0xf3, 0xec,
-	0xa0, 0xeb, 0x79, 0xd4, 0xb3, 0x75, 0xe6, 0x93, 0x60, 0x80, 0x74, 0x29, 0x26, 0xc9, 0xb7, 0x83,
-	0xee, 0xa1, 0x4e, 0x5c, 0x9f, 0x3f, 0x8b, 0x83, 0xa5, 0xe1, 0xe0, 0x21, 0x25, 0x8e, 0x65, 0xba,
-	0x38, 0x7c, 0x14, 0x33, 0x2e, 0x24, 0x14, 0x74, 0x1c, 0x7a, 0xac, 0x5d, 0xfb, 0x6b, 0x0a, 0x26,
-	0xab, 0x62, 0x2d, 0x68, 0x01, 0xa6, 0x7c, 0x1c, 0x10, 0x8f, 0xab, 0x4a, 0x49, 0x59, 0xca, 0x19,
-	0xf1, 0x1b, 0x7a, 0x1d, 0xa6, 0x2d, 0x1a, 0xfa, 0x0e, 0x7e, 0x66, 0x7a, 0xd8, 0x25, 0x6a, 0x46,
-	0x46, 0xf3, 0x31, 0xb6, 0x83, 0x5d, 0x82, 0x2a, 0x70, 0xde, 0x22, 0x87, 0xb8, 0xeb, 0x70, 0xd3,
-	0xc1, 0x9e, 0xdd, 0xc5, 0x36, 0x31, 0x3b, 0xcc, 0x22, 0xea, 0x84, 0xe4, 0xce, 0xc7, 0xc1, 0xad,
-	0x38, 0xb6, 0xc1, 0x2c, 0x82, 0xde, 0x06, 0x35, 0xec, 0xfa, 0x3e, 0x0b, 0x38, 0xb1, 0x06, 0xb3,
-	0x42, 0xf5, 0x74, 0x69, 0x62, 0x29, 0x67, 0x2c, 0x1c, 0xc7, 0x93, 0x89, 0x21, 0xba, 0x04, 0x39,
-	0x4e, 0x5d, 0x62, 0x3e, 0x67, 0x1e, 0x51, 0x27, 0x65, 0x87, 0xac, 0x00, 0x1e, 0x32, 0x8f, 0xa0,
-	0x12, 0xe4, 0x2d, 0x12, 0x76, 0x02, 0xea, 0x8b, 0xe9, 0xa9, 0x53, 0xb1, 0xd8, 0x3e, 0x84, 0x16,
-	0x01, 0xf0, 0x63, 0xcc, 0x71, 0x60, 0x76, 0x03, 0xaa, 0x9e, 0x91, 0x84, 0x5c, 0x84, 0xec, 0x05,
-	0x14, 0x5d, 0x85, 0x59, 0xe2, 0xe1, 0x03, 0x87, 0x98, 0x0e, 0xb3, 0x6d, 0xea, 0xd9, 0x6a, 0xb6,
-	0xa4, 0x2c, 0x65, 0x8d, 0x99, 0x08, 0xdd, 0x8a, 0x40, 0xb4, 0x0b, 0xe0, 0x62, 0xde, 0x39, 0x32,
-	0x5d, 0xb1, 0xce, 0x5c, 0x49, 0x59, 0x9a, 0xad, 0xbc, 0x59, 0x1e, 0xb3, 0x11, 0xca, 0x72, 0xd2,
-	0xe5, 0x6d, 0x91, 0xb8, 0xcd, 0x2c, 0x62, 0xe4, 0xdc, 0xde, 0x23, 0x7a, 0x07, 0xd4, 0x8e, 0x83,
-	0xc3, 0x90, 0x1e, 0xd2, 0x8e, 0xfc, 0xf2, 0x26, 0x3f, 0x0a, 0x48, 0x78, 0xc4, 0x1c, 0x4b, 0x85,
-	0x92, 0xb2, 0x94, 0x31, 0x2e, 0x0c, 0xc6, 0xdb, 0xbd, 0x30, 0x32, 0x20, 0x8f, 0x7d, 0x6a, 0x3e,
-	0x26, 0x41, 0x28, 0xd6, 0x3c, 0x2b, 0xc5, 0xac, 0xa6, 0x14, 0x53, 0xf5, 0xe9, 0x7e, 0x94, 0x68,
-	0x00, 0x3e, 0x7e, 0x46, 0x1f, 0xc0, 0x69, 0x4e, 0x49, 0xa0, 0xce, 0xc9, 0x62, 0x2b, 0x29, 0x8b,
-	0xb5, 0x29, 0x09, 0x0c, 0x99, 0xa8, 0xed, 0x43, 0xee, 0x78, 0x9d, 0xa8, 0x08, 0x0b, 0xdb, 0xd5,
-	0xf6, 0xc6, 0xa6, 0xb9, 0xbd, 0x5b, 0xab, 0x9b, 0x7b, 0x3b, 0xad, 0x66, 0x7d, 0xa3, 0x71, 0xaf,
-	0x51, 0xaf, 0x15, 0x4e, 0xa1, 0xf3, 0x70, 0x36, 0x11, 0xdb, 0x7c, 0xb0, 0x6e, 0x34, 0x6a, 0x05,
-	0x05, 0x2d, 0x00, 0x4a, 0xc0, 0xdb, 0x5b, 0xe6, 0xee, 0xce, 0xd6, 0x83, 0x42, 0x46, 0x73, 0x00,
-	0xfa, 0x92, 0xd1, 0x25, 0xb8, 0x50, 0x6d, 0x36, 0xcc, 0xfd, 0xba, 0xd1, 0x6a, 0xec, 0xee, 0x0c,
-	0x55, 0x46, 0x30, 0x9b, 0x0c, 0xee, 0xaf, 0x16, 0x94, 0x11, 0xac, 0x52, 0xc8, 0xa0, 0x8b, 0x70,
-	0x7e, 0x10, 0x33, 0xd7, 0xeb, 0xed, 0xaa, 0xb9, 0x5a, 0x98, 0xd0, 0x3e, 0x84, 0xd3, 0x62, 0x4d,
-	0xe8, 0x1c, 0x14, 0xda, 0x8d, 0xba, 0x31, 0xd4, 0xe0, 0x2c, 0xcc, 0x48, 0xb4, 0xd5, 0xae, 0xee,
-	0xd4, 0xaa, 0x86, 0x90, 0x3d, 0x0f, 0x73, 0x12, 0xaa, 0xef, 0xb4, 0xeb, 0x46, 0xd3, 0x68, 0xb4,
-	0xea, 0x85, 0x0c, 0x52, 0xe1, 0xdc, 0x10, 0x68, 0x36, 0xb7, 0xf6, 0x5a, 0x85, 0x09, 0xed, 0x3a,
-	0xcc, 0xdd, 0x27, 0x5c, 0x0e, 0xcf, 0x20, 0x1f, 0x77, 0x49, 0x78, 0xe2, 0x39, 0xd4, 0xbe, 0x54,
-	0x60, 0xae, 0x35, 0xc4, 0x7d, 0x17, 0x26, 0xa5, 0x11, 0x49, 0x6a, 0xbe, 0x72, 0x2d, 0xdd, 0x67,
-	0x32, 0xa2, 0x24, 0x74, 0x17, 0xf2, 0x5d, 0xdf, 0xc2, 0x9c, 0x48, 0xa7, 0x90, 0x07, 0x3b, 0x5f,
-	0x29, 0xf6, 0x6a, 0xf4, 0xcc, 0xa4, 0x7c, 0x4f, 0x98, 0xc9, 0x36, 0x0e, 0x1f, 0x19, 0x10, 0xd1,
-	0xc5, 0xb3, 0x76, 0x03, 0x50, 0x8d, 0x38, 0x84, 0x93, 0x54, 0xe2, 0x29, 0xcc, 0xb7, 0x08, 0x0e,
-	0x3a, 0x47, 0x92, 0x1d, 0x8e, 0xa1, 0x8b, 0x23, 0xee, 0x0b, 0x3b, 0x08, 0xe9, 0xf3, 0xc8, 0x70,
-	0x26, 0x8d, 0xac, 0x00, 0x5a, 0xf4, 0x39, 0x11, 0x07, 0x58, 0x06, 0x39, 0x7b, 0x44, 0xbc, 0xd8,
-	0x62, 0x24, 0xbd, 0x2d, 0x00, 0xed, 0x33, 0x38, 0x37, 0xd8, 0x2a, 0xf4, 0x99, 0x17, 0x12, 0xf4,
-	0x3e, 0x4c, 0xc9, 0x65, 0x87, 0xaa, 0x52, 0x9a, 0x78, 0x85, 0x61, 0xc5, 0x59, 0xe8, 0x1a, 0xcc,
-	0x79, 0xe4, 0x29, 0x37, 0x13, 0xbd, 0x23, 0x2b, 0x9c, 0x11, 0x70, 0xf3, 0xb8, 0xff, 0x0a, 0x9c,
-	0x6d, 0x07, 0x98, 0x7a, 0xa9, 0xe6, 0xd2, 0x00, 0x54, 0x7f, 0x2a, 0x4c, 0x2e, 0x0d, 0x5b, 0x8c,
-	0x45, 0x8a, 0x91, 0xce, 0x15, 0x35, 0xcf, 0x4a, 0x60, 0x2f, 0xa0, 0x9a, 0x05, 0xf3, 0x03, 0xa5,
-	0xe2, 0x65, 0x2f, 0x26, 0x73, 0x64, 0xb9, 0xcd, 0x53, 0xfd, 0x2c, 0x74, 0x15, 0x66, 0xa2, 0x70,
-	0x87, 0x79, 0x5c, 0x74, 0x14, 0x65, 0xa7, 0x37, 0x4f, 0x19, 0xd3, 0x12, 0xde, 0x88, 0xd0, 0xf5,
-	0x33, 0xf1, 0x46, 0xd3, 0x5e, 0x00, 0x6a, 0xb8, 0xa9, 0x05, 0x2f, 0x8e, 0x08, 0x7e, 0x79, 0xf3,
-	0x89, 0x97, 0x37, 0xff, 0x04, 0xe6, 0x0d, 0x12, 0x72, 0x16, 0x90, 0xff, 0xa1, 0x7b, 0xe5, 0x77,
-	0x80, 0xa9, 0x68, 0x4f, 0xa1, 0xaf, 0x14, 0xc8, 0xf6, 0xce, 0x2d, 0x1a, 0x6f, 0xfb, 0x43, 0x47,
-	0xbc, 0x98, 0x72, 0xeb, 0x69, 0xcb, 0x9f, 0xff, 0xf6, 0xc7, 0xd7, 0x99, 0x37, 0x90, 0x76, 0x7c,
-	0xed, 0x78, 0x11, 0x2d, 0xed, 0x3d, 0x3f, 0x60, 0x1f, 0x91, 0x0e, 0x0f, 0xf5, 0xe5, 0x4f, 0xa3,
-	0xab, 0x08, 0xfa, 0x5e, 0x81, 0x6c, 0x2b, 0xbd, 0xa4, 0xd6, 0xbf, 0x94, 0xf4, 0x96, 0x94, 0xb4,
-	0xaa, 0x2d, 0xf5, 0x25, 0xc5, 0x57, 0xa1, 0x13, 0x84, 0xad, 0xc5, 0x66, 0xf3, 0x85, 0x02, 0xf9,
-	0x84, 0x61, 0xa0, 0x5b, 0x63, 0x1b, 0x8e, 0xda, 0x4b, 0x71, 0x61, 0xc4, 0x9c, 0xea, 0xe2, 0x1a,
-	0xd4, 0x1b, 0xd4, 0x72, 0x9a, 0x41, 0xfd, 0xac, 0xc0, 0x74, 0xd2, 0x20, 0xd0, 0xed, 0x14, 0xc3,
-	0x1a, 0xb1, 0xae, 0xe2, 0x9d, 0x57, 0xcc, 0x8a, 0x8e, 0xa3, 0xb6, 0x2a, 0x95, 0xae, 0xa0, 0xeb,
-	0xe3, 0x95, 0xae, 0x85, 0xb2, 0x00, 0xfa, 0x46, 0x01, 0xe8, 0x3b, 0x0a, 0xaa, 0x8c, 0x6d, 0x3c,
-	0x62, 0x3f, 0xc5, 0xc5, 0x5e, 0x4e, 0xe2, 0x8e, 0x59, 0xde, 0xed, 0xdd, 0x31, 0xb5, 0x5b, 0x52,
-	0xd4, 0xcd, 0xe4, 0x47, 0x3d, 0x51, 0x14, 0x17, 0xc5, 0xd7, 0x94, 0x65, 0xf4, 0xad, 0x02, 0xf9,
-	0x84, 0xe1, 0xa4, 0xf8, 0xa0, 0xa3, 0x4e, 0x37, 0x4e, 0xd8, 0x6d, 0x29, 0xac, 0xac, 0xa5, 0x99,
-	0x16, 0x91, 0xd5, 0x7b, 0xca, 0x12, 0x26, 0x95, 0x42, 0xd9, 0xa8, 0xa5, 0xfd, 0x97, 0xca, 0xa8,
-	0xdb, 0x53, 0xf6, 0x9d, 0x02, 0xd3, 0x49, 0x07, 0x4b, 0xb1, 0xf7, 0xfe, 0xc1, 0xf0, 0xc6, 0x69,
-	0xbb, 0x23, 0xb5, 0xe9, 0xda, 0x72, 0x0a, 0x6d, 0x41, 0x54, 0x7e, 0x4d, 0x59, 0x2e, 0x3e, 0xfd,
-	0xa5, 0x7a, 0x31, 0x21, 0x20, 0x6a, 0x81, 0x7d, 0x1a, 0x96, 0x3b, 0xcc, 0xfd, 0xb5, 0xfa, 0xe0,
-	0x88, 0x73, 0x3f, 0x5c, 0xd3, 0xf5, 0x27, 0x4f, 0x86, 0x83, 0x3a, 0xee, 0xf2, 0xa3, 0xe8, 0x5f,
-	0xe9, 0xa6, 0xef, 0x60, 0x7e, 0xc8, 0x02, 0xf7, 0xc6, 0x38, 0x7a, 0xbf, 0xd5, 0xfa, 0x8f, 0x0a,
-	0x5c, 0xe9, 0x30, 0x77, 0xdc, 0x2c, 0xd6, 0x41, 0x4e, 0xa1, 0x29, 0xce, 0x7e, 0x53, 0x79, 0xd8,
-	0x88, 0xe9, 0x36, 0x13, 0xbf, 0x0f, 0x65, 0x16, 0xd8, 0xba, 0x4d, 0x3c, 0xe9, 0x0c, 0x7a, 0xbf,
-	0xe1, 0x89, 0xbf, 0x70, 0x77, 0xfb, 0xd0, 0x9f, 0x8a, 0xf2, 0x43, 0x26, 0x53, 0xbb, 0xf7, 0x53,
-	0xe6, 0xf2, 0xfd, 0xa8, 0xe6, 0x86, 0x94, 0x50, 0xeb, 0x4b, 0xd8, 0x8f, 0x92, 0x0e, 0xa6, 0x64,
-	0xfd, 0x5b, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xbc, 0x37, 0x2b, 0x21, 0x0e, 0x00, 0x00,
+	// 1291 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4b, 0x6f, 0xdb, 0x46,
+	0x17, 0x0d, 0xe5, 0xd8, 0x91, 0xae, 0xfc, 0x50, 0xc6, 0x89, 0xc3, 0x28, 0x31, 0xa2, 0x8f, 0xf9,
+	0x12, 0x38, 0x76, 0x42, 0xd6, 0x4a, 0x82, 0xb6, 0x4e, 0x1f, 0x90, 0x2d, 0x25, 0x16, 0xe0, 0x87,
+	0x40, 0xc9, 0x06, 0x92, 0x45, 0x89, 0x31, 0x39, 0xa6, 0xa7, 0x21, 0x39, 0x2c, 0x39, 0xca, 0xb3,
+	0xed, 0xa2, 0x8b, 0xae, 0xba, 0x28, 0xd0, 0x02, 0x05, 0x0a, 0x74, 0xd3, 0x55, 0xd1, 0x45, 0x7f,
+	0x48, 0x97, 0xed, 0xa2, 0x7f, 0xa0, 0x3f, 0xa2, 0x8b, 0x2e, 0x0a, 0x0e, 0x29, 0x8b, 0x92, 0xea,
+	0x88, 0x29, 0x0a, 0x74, 0x47, 0x9e, 0x7b, 0xee, 0xbd, 0x67, 0x2e, 0x67, 0x0e, 0x86, 0xb0, 0x62,
+	0x33, 0x66, 0x3b, 0x44, 0x33, 0x1d, 0xd6, 0xb5, 0x34, 0x8b, 0x62, 0x87, 0xd9, 0x87, 0x0e, 0x7b,
+	0xaa, 0x3d, 0xa9, 0x1e, 0x10, 0x8e, 0x57, 0x35, 0x6c, 0x13, 0x8f, 0xab, 0x7e, 0xc0, 0x38, 0x43,
+	0x57, 0x62, 0xb2, 0x2a, 0xc8, 0x6a, 0x9f, 0xac, 0x26, 0xe4, 0xf2, 0xe5, 0xa4, 0x1a, 0xf6, 0xa9,
+	0x86, 0x3d, 0x8f, 0x71, 0xcc, 0x29, 0xf3, 0xc2, 0x38, 0xbd, 0x7c, 0x35, 0x89, 0x3a, 0xcc, 0xb3,
+	0x83, 0xae, 0xe7, 0x51, 0xcf, 0xd6, 0x98, 0x4f, 0x82, 0x01, 0xd2, 0xa5, 0x84, 0x24, 0xde, 0x0e,
+	0xba, 0x87, 0x1a, 0x71, 0x7d, 0xfe, 0x3c, 0x09, 0x56, 0x86, 0x83, 0x87, 0x94, 0x38, 0x96, 0xe1,
+	0xe2, 0xf0, 0x71, 0xc2, 0xb8, 0x3c, 0xcc, 0x08, 0x79, 0xd0, 0x35, 0x93, 0x05, 0x94, 0x2f, 0xa4,
+	0xf4, 0x99, 0x0e, 0x3d, 0x5e, 0x99, 0xf2, 0xe7, 0x14, 0x4c, 0xd6, 0xa2, 0x95, 0xa2, 0x05, 0x98,
+	0xf2, 0x71, 0x40, 0x3c, 0x2e, 0x4b, 0x15, 0x69, 0xa9, 0xa0, 0x27, 0x6f, 0xe8, 0x7f, 0x30, 0x6d,
+	0xd1, 0xd0, 0x77, 0xf0, 0x73, 0xc3, 0xc3, 0x2e, 0x91, 0x73, 0x22, 0x5a, 0x4c, 0xb0, 0x1d, 0xec,
+	0x12, 0x54, 0x85, 0xf3, 0x16, 0x39, 0xc4, 0x5d, 0x87, 0x1b, 0x0e, 0xf6, 0xec, 0x2e, 0xb6, 0x89,
+	0x61, 0x32, 0x8b, 0xc8, 0x13, 0x82, 0x3b, 0x9f, 0x04, 0xb7, 0x92, 0xd8, 0x06, 0xb3, 0x08, 0x7a,
+	0x0b, 0xe4, 0xb0, 0xeb, 0xfb, 0x2c, 0xe0, 0xc4, 0x1a, 0xcc, 0x0a, 0xe5, 0xd3, 0x95, 0x89, 0xa5,
+	0x82, 0xbe, 0x70, 0x1c, 0x4f, 0x27, 0x86, 0xe8, 0x12, 0x14, 0x38, 0x75, 0x89, 0xf1, 0x82, 0x79,
+	0x44, 0x9e, 0x14, 0x1d, 0xf2, 0x11, 0xf0, 0x88, 0x79, 0x04, 0x55, 0xa0, 0x68, 0x91, 0xd0, 0x0c,
+	0xa8, 0x1f, 0xcd, 0x56, 0x9e, 0x4a, 0xc4, 0xf6, 0x21, 0xb4, 0x08, 0x80, 0x9f, 0x60, 0x8e, 0x03,
+	0xa3, 0x1b, 0x50, 0xf9, 0x8c, 0x20, 0x14, 0x62, 0x64, 0x2f, 0xa0, 0xe8, 0x1a, 0xcc, 0x12, 0x0f,
+	0x1f, 0x38, 0xc4, 0x70, 0x98, 0x6d, 0x53, 0xcf, 0x96, 0xf3, 0x15, 0x69, 0x29, 0xaf, 0xcf, 0xc4,
+	0xe8, 0x56, 0x0c, 0xa2, 0x5d, 0x00, 0x17, 0x73, 0xf3, 0xc8, 0x70, 0xa3, 0x75, 0x16, 0x2a, 0xd2,
+	0xd2, 0x6c, 0xf5, 0x0d, 0x75, 0xcc, 0x36, 0x51, 0xc5, 0xa4, 0xd5, 0xed, 0x28, 0x71, 0x9b, 0x59,
+	0x44, 0x2f, 0xb8, 0xbd, 0x47, 0xf4, 0x36, 0xc8, 0xa6, 0x83, 0xc3, 0x90, 0x1e, 0x52, 0x53, 0xec,
+	0x0b, 0x83, 0x1f, 0x05, 0x24, 0x3c, 0x62, 0x8e, 0x25, 0x43, 0x45, 0x5a, 0xca, 0xe9, 0x17, 0x06,
+	0xe3, 0x9d, 0x5e, 0x18, 0xe9, 0x50, 0xc4, 0x3e, 0x35, 0x9e, 0x90, 0x20, 0x8c, 0xd6, 0x3c, 0x2b,
+	0xc4, 0xac, 0x66, 0x14, 0x53, 0xf3, 0xe9, 0x7e, 0x9c, 0xa8, 0x03, 0x3e, 0x7e, 0x46, 0xef, 0xc3,
+	0x69, 0x4e, 0x49, 0x20, 0xcf, 0x89, 0x62, 0x2b, 0x19, 0x8b, 0x75, 0x28, 0x09, 0x74, 0x91, 0xa8,
+	0xec, 0x43, 0xe1, 0x78, 0x9d, 0xa8, 0x0c, 0x0b, 0xdb, 0xb5, 0xce, 0xc6, 0xa6, 0xb1, 0xbd, 0x5b,
+	0x6f, 0x18, 0x7b, 0x3b, 0xed, 0x56, 0x63, 0xa3, 0x79, 0xbf, 0xd9, 0xa8, 0x97, 0x4e, 0xa1, 0xf3,
+	0x70, 0x36, 0x15, 0xdb, 0x7c, 0xb8, 0xae, 0x37, 0xeb, 0x25, 0x09, 0x2d, 0x00, 0x4a, 0xc1, 0xdb,
+	0x5b, 0xc6, 0xee, 0xce, 0xd6, 0xc3, 0x52, 0x4e, 0x71, 0x00, 0xfa, 0x92, 0xd1, 0x25, 0xb8, 0x50,
+	0x6b, 0x35, 0x8d, 0xfd, 0x86, 0xde, 0x6e, 0xee, 0xee, 0x0c, 0x55, 0x46, 0x30, 0x9b, 0x0e, 0xee,
+	0xaf, 0x96, 0xa4, 0x11, 0xac, 0x5a, 0xca, 0xa1, 0x8b, 0x70, 0x7e, 0x10, 0x33, 0xd6, 0x1b, 0x9d,
+	0x9a, 0xb1, 0x5a, 0x9a, 0x50, 0x3e, 0x80, 0xd3, 0xd1, 0x9a, 0xd0, 0x39, 0x28, 0x75, 0x9a, 0x0d,
+	0x7d, 0xa8, 0xc1, 0x59, 0x98, 0x11, 0x68, 0xbb, 0x53, 0xdb, 0xa9, 0xd7, 0xf4, 0x48, 0xf6, 0x3c,
+	0xcc, 0x09, 0xa8, 0xb1, 0xd3, 0x69, 0xe8, 0x2d, 0xbd, 0xd9, 0x6e, 0x94, 0x72, 0x48, 0x86, 0x73,
+	0x43, 0xa0, 0xd1, 0xda, 0xda, 0x6b, 0x97, 0x26, 0x94, 0x1b, 0x30, 0xf7, 0x80, 0x70, 0x31, 0x3c,
+	0x9d, 0x7c, 0xd4, 0x25, 0xe1, 0x89, 0xe7, 0x50, 0xf9, 0x42, 0x82, 0xb9, 0xf6, 0x10, 0xf7, 0x1d,
+	0x98, 0x14, 0x36, 0x25, 0xa8, 0xc5, 0xea, 0xf5, 0x6c, 0x9f, 0x49, 0x8f, 0x93, 0xd0, 0x3d, 0x28,
+	0x76, 0x7d, 0x0b, 0x73, 0x22, 0x7c, 0x44, 0x1c, 0xec, 0x62, 0xb5, 0xdc, 0xab, 0xd1, 0x33, 0x12,
+	0xf5, 0x7e, 0x64, 0x35, 0xdb, 0x38, 0x7c, 0xac, 0x43, 0x4c, 0x8f, 0x9e, 0x95, 0x9b, 0x80, 0xea,
+	0xc4, 0x21, 0x9c, 0x64, 0x12, 0x4f, 0x61, 0xbe, 0x4d, 0x70, 0x60, 0x1e, 0x09, 0x76, 0x38, 0x86,
+	0x1e, 0x1d, 0x71, 0x3f, 0xb2, 0x83, 0x90, 0xbe, 0x88, 0x0d, 0x67, 0x52, 0xcf, 0x47, 0x40, 0x9b,
+	0xbe, 0x20, 0xd1, 0x01, 0x16, 0x41, 0xce, 0x1e, 0x13, 0x2f, 0xb1, 0x18, 0x41, 0xef, 0x44, 0x80,
+	0xf2, 0x29, 0x9c, 0x1b, 0x6c, 0x15, 0xfa, 0xcc, 0x0b, 0x09, 0x7a, 0x0f, 0xa6, 0xc4, 0xb2, 0x43,
+	0x59, 0xaa, 0x4c, 0xbc, 0xc6, 0xb0, 0x92, 0x2c, 0x74, 0x1d, 0xe6, 0x3c, 0xf2, 0x8c, 0x1b, 0xa9,
+	0xde, 0xb1, 0x15, 0xce, 0x44, 0x70, 0xeb, 0xb8, 0xff, 0x0a, 0x9c, 0xed, 0x04, 0x98, 0x7a, 0x99,
+	0xe6, 0xd2, 0x04, 0xd4, 0x78, 0x16, 0x99, 0x5c, 0x16, 0x76, 0x34, 0x16, 0x21, 0x46, 0x38, 0x57,
+	0xdc, 0x3c, 0x2f, 0x80, 0xbd, 0x80, 0x2a, 0x16, 0xcc, 0x0f, 0x94, 0x4a, 0x96, 0xbd, 0x98, 0xce,
+	0x11, 0xe5, 0x36, 0x4f, 0xf5, 0xb3, 0xd0, 0x35, 0x98, 0x89, 0xc3, 0x26, 0xf3, 0x78, 0xd4, 0x31,
+	0x2a, 0x3b, 0xbd, 0x79, 0x4a, 0x9f, 0x16, 0xf0, 0x46, 0x8c, 0xae, 0x9f, 0x49, 0x36, 0x9a, 0xf2,
+	0x12, 0x50, 0xd3, 0xcd, 0x2c, 0x78, 0x71, 0x44, 0xf0, 0xab, 0x9b, 0x4f, 0xbc, 0xba, 0xf9, 0xc7,
+	0x30, 0xaf, 0x93, 0x90, 0xb3, 0x80, 0xfc, 0x07, 0xdd, 0xab, 0xbf, 0x01, 0x4c, 0xc5, 0x7b, 0x0a,
+	0x7d, 0x29, 0x41, 0xbe, 0x77, 0x6e, 0xd1, 0x78, 0xdb, 0x1f, 0x3a, 0xe2, 0xe5, 0x8c, 0x5b, 0x4f,
+	0x59, 0xfe, 0xec, 0xd7, 0xdf, 0xbf, 0xca, 0xfd, 0x1f, 0x29, 0xc7, 0x97, 0x92, 0x97, 0xf1, 0xd2,
+	0xde, 0xf5, 0x03, 0xf6, 0x21, 0x31, 0x79, 0xa8, 0x2d, 0x7f, 0x12, 0x5f, 0x54, 0xd0, 0x77, 0x12,
+	0xe4, 0xdb, 0xd9, 0x25, 0xb5, 0xff, 0xa1, 0xa4, 0x37, 0x85, 0xa4, 0x55, 0x65, 0xa9, 0x2f, 0x29,
+	0xb9, 0x28, 0x9d, 0x20, 0x6c, 0x2d, 0x31, 0x9b, 0xcf, 0x25, 0x28, 0xa6, 0x0c, 0x03, 0xdd, 0x1e,
+	0xdb, 0x70, 0xd4, 0x5e, 0xca, 0x0b, 0x23, 0xe6, 0xd4, 0x88, 0x2e, 0x49, 0xbd, 0x41, 0x2d, 0x67,
+	0x19, 0xd4, 0x4f, 0x12, 0x4c, 0xa7, 0x0d, 0x02, 0xdd, 0xc9, 0x30, 0xac, 0x11, 0xeb, 0x2a, 0xdf,
+	0x7d, 0xcd, 0xac, 0xf8, 0x38, 0x2a, 0xab, 0x42, 0xe9, 0x0a, 0xba, 0x31, 0x5e, 0xe9, 0x5a, 0x28,
+	0x0a, 0xa0, 0xaf, 0x25, 0x80, 0xbe, 0xa3, 0xa0, 0xea, 0xd8, 0xc6, 0x23, 0xf6, 0x53, 0x5e, 0xec,
+	0xe5, 0xa4, 0x6e, 0xa0, 0xea, 0x6e, 0xef, 0x06, 0xaa, 0xdc, 0x16, 0xa2, 0x6e, 0xa5, 0x3f, 0xea,
+	0x89, 0xa2, 0x78, 0x54, 0x7c, 0x4d, 0x5a, 0x46, 0xdf, 0x48, 0x50, 0x4c, 0x19, 0x4e, 0x86, 0x0f,
+	0x3a, 0xea, 0x74, 0xe3, 0x84, 0xdd, 0x11, 0xc2, 0x54, 0x25, 0xcb, 0xb4, 0x88, 0xa8, 0xde, 0x53,
+	0x96, 0x32, 0xa9, 0x0c, 0xca, 0x46, 0x2d, 0xed, 0xdf, 0x54, 0x46, 0xdd, 0x9e, 0xb2, 0x6f, 0x25,
+	0x98, 0x4e, 0x3b, 0x58, 0x86, 0xbd, 0xf7, 0x37, 0x86, 0x37, 0x4e, 0xdb, 0x5d, 0xa1, 0x4d, 0x53,
+	0x96, 0x33, 0x68, 0x0b, 0xe2, 0xf2, 0x6b, 0xd2, 0x72, 0xf9, 0xd9, 0xcf, 0xb5, 0x8b, 0x29, 0x01,
+	0x71, 0x0b, 0xec, 0xd3, 0x50, 0x35, 0x99, 0xfb, 0x4b, 0xed, 0xe1, 0x11, 0xe7, 0x7e, 0xb8, 0xa6,
+	0x69, 0x4f, 0x9f, 0x0e, 0x07, 0x35, 0xdc, 0xe5, 0x47, 0xf1, 0x9f, 0xd4, 0x2d, 0xdf, 0xc1, 0xfc,
+	0x90, 0x05, 0xee, 0xcd, 0x71, 0xf4, 0x7e, 0xab, 0xf5, 0x1f, 0x24, 0xb8, 0x6a, 0x32, 0x77, 0xdc,
+	0x2c, 0xd6, 0x41, 0x4c, 0xa1, 0x15, 0x9d, 0xfd, 0x96, 0xf4, 0xa8, 0x99, 0xd0, 0x6d, 0x16, 0xfd,
+	0x3e, 0xa8, 0x2c, 0xb0, 0x35, 0x9b, 0x78, 0xc2, 0x19, 0xb4, 0x7e, 0xc3, 0x13, 0x7f, 0xf0, 0xee,
+	0xf5, 0xa1, 0x3f, 0x24, 0xe9, 0xfb, 0x5c, 0xae, 0x7e, 0xff, 0xc7, 0xdc, 0x95, 0x07, 0x71, 0xcd,
+	0x0d, 0x21, 0xa1, 0xde, 0x97, 0xb0, 0x1f, 0x27, 0x1d, 0x4c, 0x89, 0xfa, 0xb7, 0xff, 0x0a, 0x00,
+	0x00, 0xff, 0xff, 0x0b, 0xdb, 0x0b, 0x80, 0x3f, 0x0e, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/cloud/dialogflow/v2beta1/audio_config.pb.go b/googleapis/cloud/dialogflow/v2beta1/audio_config.pb.go
index 195f124..c550ff2 100644
--- a/googleapis/cloud/dialogflow/v2beta1/audio_config.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/audio_config.pb.go
@@ -239,6 +239,75 @@
 	return fileDescriptor_80617ff5f6b0e1c6, []int{3}
 }
 
+// Hints for the speech recognizer to help with recognition in a specific
+// conversation state.
+type SpeechContext struct {
+	// Optional. A list of strings containing words and phrases that the speech
+	// recognizer should recognize with higher likelihood.
+	//
+	// This list can be used to:
+	// * improve accuracy for words and phrases you expect the user to say,
+	//   e.g. typical commands for your Dialogflow agent
+	// * add additional words to the speech recognizer vocabulary
+	// * ...
+	//
+	// See the [Cloud Speech
+	// documentation](https://cloud.google.com/speech-to-text/quotas) for usage
+	// limits.
+	Phrases []string `protobuf:"bytes,1,rep,name=phrases,proto3" json:"phrases,omitempty"`
+	// Optional. Boost for this context compared to other contexts:
+	// * If the boost is positive, Dialogflow will increase the probability that
+	//   the phrases in this context are recognized over similar sounding phrases.
+	// * If the boost is unspecified or non-positive, Dialogflow will not apply
+	//   any boost.
+	//
+	// Dialogflow recommends that you use boosts in the range (0, 20] and that you
+	// find a value that fits your use case with binary search.
+	Boost                float32  `protobuf:"fixed32,2,opt,name=boost,proto3" json:"boost,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SpeechContext) Reset()         { *m = SpeechContext{} }
+func (m *SpeechContext) String() string { return proto.CompactTextString(m) }
+func (*SpeechContext) ProtoMessage()    {}
+func (*SpeechContext) Descriptor() ([]byte, []int) {
+	return fileDescriptor_80617ff5f6b0e1c6, []int{0}
+}
+
+func (m *SpeechContext) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SpeechContext.Unmarshal(m, b)
+}
+func (m *SpeechContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SpeechContext.Marshal(b, m, deterministic)
+}
+func (m *SpeechContext) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SpeechContext.Merge(m, src)
+}
+func (m *SpeechContext) XXX_Size() int {
+	return xxx_messageInfo_SpeechContext.Size(m)
+}
+func (m *SpeechContext) XXX_DiscardUnknown() {
+	xxx_messageInfo_SpeechContext.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SpeechContext proto.InternalMessageInfo
+
+func (m *SpeechContext) GetPhrases() []string {
+	if m != nil {
+		return m.Phrases
+	}
+	return nil
+}
+
+func (m *SpeechContext) GetBoost() float32 {
+	if m != nil {
+		return m.Boost
+	}
+	return 0
+}
+
 // Information for a word recognized by the speech recognizer.
 type SpeechWordInfo struct {
 	// The word this info is for.
@@ -268,7 +337,7 @@
 func (m *SpeechWordInfo) String() string { return proto.CompactTextString(m) }
 func (*SpeechWordInfo) ProtoMessage()    {}
 func (*SpeechWordInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_80617ff5f6b0e1c6, []int{0}
+	return fileDescriptor_80617ff5f6b0e1c6, []int{1}
 }
 
 func (m *SpeechWordInfo) XXX_Unmarshal(b []byte) error {
@@ -345,6 +414,12 @@
 	// documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints)
 	// for more details.
 	PhraseHints []string `protobuf:"bytes,4,rep,name=phrase_hints,json=phraseHints,proto3" json:"phrase_hints,omitempty"`
+	// Optional. Context information to assist speech recognition.
+	//
+	// See [the Cloud Speech
+	// documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints)
+	// for more details.
+	SpeechContexts []*SpeechContext `protobuf:"bytes,11,rep,name=speech_contexts,json=speechContexts,proto3" json:"speech_contexts,omitempty"`
 	// Optional. Which Speech model to select for the given request. Select the
 	// model best suited to your domain to get best results. If a model is not
 	// explicitly specified, then we auto-select a model based on the parameters
@@ -379,7 +454,7 @@
 func (m *InputAudioConfig) String() string { return proto.CompactTextString(m) }
 func (*InputAudioConfig) ProtoMessage()    {}
 func (*InputAudioConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_80617ff5f6b0e1c6, []int{1}
+	return fileDescriptor_80617ff5f6b0e1c6, []int{2}
 }
 
 func (m *InputAudioConfig) XXX_Unmarshal(b []byte) error {
@@ -435,6 +510,13 @@
 	return nil
 }
 
+func (m *InputAudioConfig) GetSpeechContexts() []*SpeechContext {
+	if m != nil {
+		return m.SpeechContexts
+	}
+	return nil
+}
+
 func (m *InputAudioConfig) GetModel() string {
 	if m != nil {
 		return m.Model
@@ -476,7 +558,7 @@
 func (m *VoiceSelectionParams) String() string { return proto.CompactTextString(m) }
 func (*VoiceSelectionParams) ProtoMessage()    {}
 func (*VoiceSelectionParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_80617ff5f6b0e1c6, []int{2}
+	return fileDescriptor_80617ff5f6b0e1c6, []int{3}
 }
 
 func (m *VoiceSelectionParams) XXX_Unmarshal(b []byte) error {
@@ -546,7 +628,7 @@
 func (m *SynthesizeSpeechConfig) String() string { return proto.CompactTextString(m) }
 func (*SynthesizeSpeechConfig) ProtoMessage()    {}
 func (*SynthesizeSpeechConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_80617ff5f6b0e1c6, []int{3}
+	return fileDescriptor_80617ff5f6b0e1c6, []int{4}
 }
 
 func (m *SynthesizeSpeechConfig) XXX_Unmarshal(b []byte) error {
@@ -623,7 +705,7 @@
 func (m *OutputAudioConfig) String() string { return proto.CompactTextString(m) }
 func (*OutputAudioConfig) ProtoMessage()    {}
 func (*OutputAudioConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_80617ff5f6b0e1c6, []int{4}
+	return fileDescriptor_80617ff5f6b0e1c6, []int{5}
 }
 
 func (m *OutputAudioConfig) XXX_Unmarshal(b []byte) error {
@@ -670,6 +752,7 @@
 	proto.RegisterEnum("google.cloud.dialogflow.v2beta1.SpeechModelVariant", SpeechModelVariant_name, SpeechModelVariant_value)
 	proto.RegisterEnum("google.cloud.dialogflow.v2beta1.SsmlVoiceGender", SsmlVoiceGender_name, SsmlVoiceGender_value)
 	proto.RegisterEnum("google.cloud.dialogflow.v2beta1.OutputAudioEncoding", OutputAudioEncoding_name, OutputAudioEncoding_value)
+	proto.RegisterType((*SpeechContext)(nil), "google.cloud.dialogflow.v2beta1.SpeechContext")
 	proto.RegisterType((*SpeechWordInfo)(nil), "google.cloud.dialogflow.v2beta1.SpeechWordInfo")
 	proto.RegisterType((*InputAudioConfig)(nil), "google.cloud.dialogflow.v2beta1.InputAudioConfig")
 	proto.RegisterType((*VoiceSelectionParams)(nil), "google.cloud.dialogflow.v2beta1.VoiceSelectionParams")
@@ -682,72 +765,76 @@
 }
 
 var fileDescriptor_80617ff5f6b0e1c6 = []byte{
-	// 1063 bytes of a gzipped FileDescriptorProto
+	// 1122 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcb, 0x6e, 0xdb, 0x46,
-	0x17, 0xfe, 0x29, 0xd9, 0x49, 0x7c, 0x74, 0x31, 0x33, 0xf1, 0xef, 0xd0, 0xae, 0x2f, 0xb2, 0x9c,
-	0x00, 0x8a, 0x51, 0x48, 0x8d, 0xdc, 0x1b, 0xd0, 0x6e, 0x28, 0x91, 0x96, 0x88, 0xea, 0x56, 0xea,
-	0xe2, 0xb4, 0x5d, 0x0c, 0x46, 0xe2, 0x88, 0x22, 0x4a, 0xcd, 0xa8, 0x24, 0xe5, 0xa0, 0x01, 0xfa,
-	0x08, 0x45, 0xdf, 0x21, 0xe8, 0xaa, 0x8b, 0x3e, 0x41, 0x1f, 0xab, 0x8b, 0x02, 0xdd, 0x14, 0x1c,
-	0x52, 0xb6, 0x22, 0x2b, 0xd5, 0xa6, 0xbb, 0x99, 0xef, 0x9b, 0xef, 0xcc, 0x99, 0xef, 0x9c, 0x23,
-	0x0a, 0xca, 0x36, 0xe7, 0xb6, 0x4b, 0x4b, 0x23, 0x97, 0xcf, 0xad, 0x92, 0xe5, 0x10, 0x97, 0xdb,
-	0x63, 0x97, 0xbf, 0x2e, 0xdd, 0x94, 0x87, 0x34, 0x20, 0x2f, 0x4b, 0x64, 0x6e, 0x39, 0x1c, 0x8f,
-	0x38, 0x1b, 0x3b, 0x76, 0x71, 0xe6, 0xf1, 0x80, 0xa3, 0xd3, 0x48, 0x53, 0x14, 0x9a, 0xe2, 0x9d,
-	0xa6, 0x18, 0x6b, 0x0e, 0x4f, 0xe2, 0xa0, 0xe2, 0xf8, 0x70, 0x3e, 0x2e, 0x59, 0x73, 0x8f, 0x04,
-	0x0e, 0x67, 0x51, 0x80, 0xc3, 0xa3, 0x98, 0x27, 0x33, 0xa7, 0x44, 0x18, 0xe3, 0x81, 0x20, 0xfd,
-	0x88, 0xcd, 0xff, 0x21, 0x41, 0xb6, 0x3b, 0xa3, 0x74, 0x34, 0xb9, 0xe6, 0x9e, 0x65, 0xb0, 0x31,
-	0x47, 0x08, 0xb6, 0x5e, 0x73, 0xcf, 0x52, 0x92, 0x39, 0xa9, 0xb0, 0x63, 0x8a, 0x35, 0xfa, 0x12,
-	0xd2, 0x7e, 0x40, 0xbc, 0x00, 0xf3, 0xf1, 0xd8, 0xa7, 0x81, 0x22, 0xe5, 0xa4, 0x42, 0xaa, 0x7c,
-	0x50, 0x8c, 0x93, 0x5b, 0xdc, 0x5d, 0xd4, 0xe2, 0xbb, 0xcd, 0x94, 0x38, 0xde, 0x16, 0xa7, 0xd1,
-	0xe7, 0x00, 0x94, 0x59, 0x0b, 0x6d, 0x62, 0x93, 0x76, 0x87, 0x32, 0x2b, 0x56, 0x9e, 0x00, 0x08,
-	0x37, 0x2c, 0xca, 0x46, 0x54, 0xd9, 0xca, 0x49, 0x85, 0x84, 0xb9, 0x84, 0xe4, 0xdf, 0x26, 0x41,
-	0x36, 0xd8, 0x6c, 0x1e, 0xa8, 0xa1, 0x73, 0x55, 0x61, 0x1c, 0xea, 0x43, 0x36, 0x32, 0x92, 0xb2,
-	0x11, 0xb7, 0x1c, 0x66, 0x8b, 0x74, 0xb3, 0xe5, 0x62, 0x71, 0x83, 0x97, 0x45, 0x11, 0x45, 0x8f,
-	0x55, 0x66, 0x86, 0x2c, 0x6f, 0xd1, 0x05, 0x3c, 0xf6, 0xc9, 0x74, 0xe6, 0x52, 0xec, 0x91, 0x80,
-	0xe2, 0x09, 0xf5, 0x82, 0x37, 0xe2, 0x31, 0xdb, 0xe6, 0x6e, 0x44, 0x98, 0x24, 0xa0, 0xf5, 0x10,
-	0x46, 0xe7, 0x90, 0x71, 0x09, 0xb3, 0xe7, 0xc4, 0xa6, 0x78, 0xc4, 0x2d, 0x1a, 0x9b, 0x99, 0x5e,
-	0x80, 0x55, 0x6e, 0x51, 0x54, 0x00, 0x99, 0x32, 0x32, 0x74, 0x29, 0x0e, 0x3d, 0xc6, 0x0e, 0x1b,
-	0x73, 0x25, 0x93, 0x93, 0x0a, 0x8f, 0xcc, 0x6c, 0x84, 0xdf, 0x96, 0xe4, 0x0c, 0xd2, 0xb3, 0x89,
-	0x47, 0x7c, 0x8a, 0x27, 0x0e, 0x0b, 0x7c, 0x65, 0x2b, 0x97, 0x2c, 0xec, 0x98, 0xa9, 0x08, 0xab,
-	0x87, 0x10, 0xda, 0x83, 0xed, 0x29, 0xb7, 0xa8, 0xab, 0x3c, 0x14, 0x37, 0x45, 0x1b, 0xf4, 0x0a,
-	0x32, 0x62, 0x81, 0x6f, 0x88, 0xe7, 0x10, 0x16, 0x28, 0x20, 0x9c, 0xb8, 0xdc, 0xe8, 0x44, 0xd4,
-	0x13, 0xcd, 0x50, 0x3b, 0x88, 0xa4, 0x66, 0x7a, 0xba, 0xb4, 0x43, 0x2f, 0x40, 0xf6, 0x1d, 0x66,
-	0xbb, 0x14, 0xcf, 0x83, 0x80, 0x7a, 0x24, 0xac, 0xcf, 0x23, 0x91, 0xfc, 0x6e, 0x84, 0xf7, 0x17,
-	0x70, 0xfe, 0x27, 0xd8, 0x1b, 0x70, 0x67, 0x44, 0xbb, 0xd4, 0xa5, 0xa3, 0xb0, 0xc2, 0x1d, 0xe2,
-	0x91, 0xa9, 0x1f, 0x36, 0x1a, 0x23, 0x53, 0x2a, 0xaa, 0xb3, 0x63, 0x8a, 0x35, 0xfa, 0x1a, 0x52,
-	0xbe, 0x3f, 0x75, 0xb1, 0x4d, 0x99, 0x45, 0x3d, 0x61, 0x6f, 0xb6, 0xfc, 0xd1, 0xe6, 0x74, 0xfd,
-	0xa9, 0x2b, 0xee, 0xa8, 0x09, 0x9d, 0x09, 0x61, 0x90, 0x68, 0x9d, 0xff, 0x53, 0x82, 0xfd, 0xee,
-	0x8f, 0x2c, 0x98, 0x50, 0xdf, 0x79, 0x43, 0xa3, 0x87, 0xc5, 0x9d, 0x72, 0x0e, 0x19, 0x7f, 0x46,
-	0xc9, 0xf7, 0x0e, 0xb3, 0x45, 0x51, 0x45, 0x2a, 0x92, 0x99, 0x5e, 0x80, 0x61, 0x41, 0x43, 0x67,
-	0x67, 0x4e, 0x30, 0x9a, 0x88, 0x64, 0x24, 0x33, 0xda, 0xa0, 0x67, 0x90, 0xbd, 0xe1, 0xee, 0x7c,
-	0x4a, 0xb1, 0x4d, 0x1c, 0x86, 0xad, 0xa1, 0x28, 0xb1, 0x64, 0xa6, 0x23, 0xb4, 0x46, 0x1c, 0xa6,
-	0x0d, 0xd1, 0x87, 0x80, 0xe8, 0x78, 0x4c, 0x47, 0x81, 0x8f, 0x67, 0x1e, 0x1f, 0x3b, 0x2e, 0xc5,
-	0x8e, 0xa5, 0x6c, 0x8b, 0xf2, 0xc9, 0x31, 0xd3, 0x89, 0x08, 0xc3, 0x42, 0x5f, 0xc1, 0xf6, 0x4d,
-	0xf8, 0x08, 0xd1, 0xe8, 0xa9, 0xf2, 0x27, 0x1b, 0x9f, 0xbd, 0xce, 0x56, 0x33, 0x8a, 0x91, 0xff,
-	0x25, 0x01, 0x8f, 0xdb, 0xf3, 0x60, 0x65, 0x36, 0xbe, 0x7b, 0xcf, 0x6c, 0x7c, 0xbc, 0xf1, 0xae,
-	0xa5, 0x58, 0xff, 0xc5, 0x84, 0xfc, 0x00, 0x8a, 0x7f, 0x5b, 0x14, 0xec, 0x8b, 0xaa, 0xc4, 0xbf,
-	0x7c, 0xc2, 0xc9, 0x54, 0xf9, 0xb3, 0xcd, 0x55, 0x5f, 0x5b, 0x55, 0x73, 0xdf, 0x5f, 0x8b, 0x5f,
-	0xfc, 0x2d, 0x41, 0xe6, 0x9d, 0xfc, 0xd1, 0x09, 0x1c, 0xaa, 0x7d, 0xcd, 0x68, 0x63, 0xbd, 0x55,
-	0x6d, 0x6b, 0x46, 0xab, 0x86, 0xfb, 0xad, 0x6e, 0x47, 0xaf, 0x1a, 0x57, 0x86, 0xae, 0xc9, 0xff,
-	0x43, 0x47, 0xa0, 0xac, 0xf0, 0x0d, 0xa3, 0xa5, 0xab, 0x26, 0x7e, 0xf9, 0xa9, 0x2c, 0xa1, 0xa7,
-	0xf0, 0x64, 0x85, 0xbd, 0x6a, 0xa8, 0x55, 0x39, 0x81, 0x14, 0xd8, 0x5b, 0x21, 0x9a, 0xfd, 0x86,
-	0x7a, 0x2d, 0x27, 0xd1, 0x3e, 0xa0, 0x15, 0x46, 0x6d, 0x9a, 0xf2, 0x16, 0x3a, 0x80, 0xff, 0xdf,
-	0xc7, 0xf1, 0x75, 0x45, 0xde, 0x46, 0x1f, 0xc0, 0xd3, 0x15, 0xaa, 0x5d, 0xab, 0xe1, 0x76, 0xa7,
-	0xdf, 0x95, 0x1f, 0xa0, 0x17, 0xf0, 0x7c, 0x85, 0xec, 0x76, 0x74, 0xfd, 0x15, 0xbe, 0x36, 0x7a,
-	0x75, 0x5c, 0xd7, 0x55, 0x4d, 0x37, 0x71, 0xe5, 0x9b, 0x9e, 0x2e, 0x3f, 0xbc, 0xb8, 0x01, 0x74,
-	0x7f, 0xa8, 0xd1, 0x33, 0xc8, 0x85, 0x8a, 0x6a, 0x1d, 0x37, 0xdb, 0x9a, 0xde, 0xc0, 0x03, 0xd5,
-	0x34, 0xd4, 0x56, 0x6f, 0xc5, 0x87, 0x7d, 0x40, 0xfd, 0xae, 0x8e, 0x2b, 0x7a, 0xb7, 0x87, 0xd5,
-	0x81, 0x6a, 0x34, 0xd4, 0x4a, 0x43, 0x97, 0x25, 0x24, 0x43, 0x3a, 0xc4, 0xbb, 0x3d, 0xb5, 0xa5,
-	0xa9, 0xa6, 0x26, 0x27, 0x16, 0x88, 0xde, 0xaa, 0xab, 0xad, 0xaa, 0xae, 0xc9, 0xc9, 0x8b, 0x9f,
-	0x25, 0xd8, 0x5d, 0x19, 0x4f, 0x74, 0x06, 0xc7, 0xdd, 0x6e, 0xb3, 0x81, 0x07, 0x6d, 0xa3, 0xaa,
-	0xe3, 0x9a, 0xde, 0x0a, 0xf3, 0x7c, 0xf7, 0xca, 0x43, 0xd8, 0xbf, 0x7f, 0xa4, 0xa9, 0x8a, 0x6b,
-	0x8f, 0x40, 0xb9, 0xcf, 0x5d, 0xe9, 0x82, 0x4d, 0xa0, 0x63, 0x38, 0xb8, 0xcf, 0xb6, 0xf4, 0x7e,
-	0xcf, 0x54, 0x1b, 0x72, 0xf2, 0xe2, 0x57, 0x09, 0x9e, 0xac, 0xe9, 0x65, 0xf4, 0x1c, 0xce, 0xda,
-	0xfd, 0x5e, 0xa7, 0xdf, 0xc3, 0xff, 0xda, 0x12, 0xe7, 0x70, 0xba, 0xfe, 0xd8, 0x72, 0x67, 0x1c,
-	0xc3, 0xc1, 0xfa, 0x43, 0xcd, 0xce, 0xa5, 0x9c, 0x40, 0x79, 0x38, 0x59, 0x4f, 0xdf, 0x56, 0x36,
-	0x59, 0xf9, 0x5d, 0x82, 0xf3, 0x11, 0x9f, 0x6e, 0x9a, 0x81, 0x8a, 0xbc, 0x34, 0xdd, 0x9d, 0xf0,
-	0x53, 0xda, 0x91, 0xbe, 0x35, 0x62, 0x91, 0xcd, 0xc3, 0xef, 0x4d, 0x91, 0x7b, 0x76, 0xc9, 0xa6,
-	0x4c, 0x7c, 0x68, 0x4b, 0x11, 0x45, 0x66, 0x8e, 0xff, 0xde, 0xbf, 0x21, 0x5f, 0xdc, 0x41, 0x7f,
-	0x49, 0xd2, 0xdb, 0x44, 0x42, 0xbb, 0xfa, 0x2d, 0x71, 0x5a, 0x8b, 0x62, 0x56, 0x45, 0x22, 0xda,
-	0x5d, 0x22, 0x83, 0x48, 0x34, 0x7c, 0x20, 0xe2, 0x5f, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x9d,
-	0xfc, 0x64, 0x4f, 0xe5, 0x08, 0x00, 0x00,
+	0x17, 0xfe, 0x29, 0xd9, 0x71, 0x7c, 0x74, 0x31, 0x33, 0xf1, 0xef, 0xd0, 0xae, 0x2f, 0xb2, 0x9c,
+	0x00, 0x8a, 0x51, 0x48, 0x8d, 0xdc, 0x1b, 0xd0, 0x02, 0x05, 0x25, 0xd2, 0x12, 0x51, 0xdd, 0x4a,
+	0x5d, 0x9c, 0xb6, 0x8b, 0xc1, 0x48, 0x1c, 0x51, 0x44, 0xa9, 0x19, 0x95, 0xa4, 0x9c, 0x36, 0x40,
+	0x1f, 0xa1, 0xe8, 0x3b, 0x14, 0x5d, 0x75, 0xd1, 0x27, 0xe8, 0x63, 0x75, 0x51, 0x20, 0x9b, 0x82,
+	0x43, 0xc9, 0x96, 0x65, 0xa5, 0xca, 0xa2, 0xbb, 0x99, 0xef, 0x9b, 0xef, 0xcc, 0x99, 0x73, 0xbe,
+	0x03, 0x12, 0x8a, 0x36, 0xe7, 0xb6, 0x4b, 0x0b, 0x03, 0x97, 0x4f, 0xad, 0x82, 0xe5, 0x10, 0x97,
+	0xdb, 0x43, 0x97, 0xbf, 0x2a, 0x5c, 0x17, 0xfb, 0x34, 0x20, 0x2f, 0x0a, 0x64, 0x6a, 0x39, 0x1c,
+	0x0f, 0x38, 0x1b, 0x3a, 0x76, 0x7e, 0xe2, 0xf1, 0x80, 0xa3, 0x93, 0x48, 0x93, 0x17, 0x9a, 0xfc,
+	0xad, 0x26, 0x3f, 0xd3, 0x1c, 0x1c, 0xcf, 0x82, 0x8a, 0xe3, 0xfd, 0xe9, 0xb0, 0x60, 0x4d, 0x3d,
+	0x12, 0x38, 0x9c, 0x45, 0x01, 0x0e, 0x0e, 0x67, 0x3c, 0x99, 0x38, 0x05, 0xc2, 0x18, 0x0f, 0x04,
+	0xe9, 0x47, 0x6c, 0xf6, 0x0b, 0x48, 0xb5, 0x27, 0x94, 0x0e, 0x46, 0x65, 0xce, 0x02, 0xfa, 0x43,
+	0x80, 0x14, 0xd8, 0x9a, 0x8c, 0x3c, 0xe2, 0x53, 0x5f, 0x91, 0x32, 0xf1, 0xdc, 0xb6, 0x39, 0xdf,
+	0xa2, 0x5d, 0xd8, 0xec, 0x73, 0xee, 0x07, 0x4a, 0x2c, 0x23, 0xe5, 0x62, 0x66, 0xb4, 0xc9, 0xfe,
+	0x29, 0x41, 0x3a, 0x8a, 0x70, 0xc5, 0x3d, 0xcb, 0x60, 0x43, 0x8e, 0x10, 0x6c, 0xbc, 0xe2, 0x9e,
+	0xa5, 0xc4, 0x33, 0x52, 0x6e, 0xdb, 0x14, 0x6b, 0xf4, 0x39, 0x24, 0xfd, 0x80, 0x78, 0x01, 0xe6,
+	0xc3, 0xa1, 0x4f, 0x03, 0x45, 0xca, 0x48, 0xb9, 0x44, 0x71, 0x3f, 0x3f, 0x7b, 0xdd, 0x3c, 0xf9,
+	0xbc, 0x36, 0x4b, 0xde, 0x4c, 0x88, 0xe3, 0x4d, 0x71, 0x1a, 0x7d, 0x0a, 0x40, 0x99, 0x35, 0xd7,
+	0xc6, 0xd6, 0x69, 0xb7, 0x29, 0xb3, 0x66, 0xca, 0x63, 0x00, 0x51, 0x4e, 0x8b, 0xb2, 0x01, 0x55,
+	0x36, 0x44, 0xe6, 0x0b, 0x48, 0xf6, 0x4d, 0x1c, 0x64, 0x83, 0x4d, 0xa6, 0x81, 0x1a, 0x96, 0xbe,
+	0x2c, 0x2a, 0x8f, 0xba, 0x90, 0x8e, 0x3a, 0x41, 0xd9, 0x80, 0x5b, 0x0e, 0xb3, 0x45, 0xba, 0xe9,
+	0x62, 0x3e, 0xbf, 0xa6, 0x19, 0x79, 0x11, 0x45, 0x9f, 0xa9, 0xcc, 0x14, 0x59, 0xdc, 0xa2, 0x73,
+	0x78, 0xe4, 0x93, 0xf1, 0xc4, 0xa5, 0xd8, 0x23, 0x01, 0xc5, 0x23, 0xea, 0x05, 0xaf, 0xc5, 0x63,
+	0x36, 0xcd, 0x9d, 0x88, 0x30, 0x49, 0x40, 0xab, 0x21, 0x8c, 0xce, 0x20, 0xe5, 0x12, 0x66, 0x4f,
+	0x89, 0x4d, 0xf1, 0x80, 0x5b, 0x74, 0x56, 0xcc, 0xe4, 0x1c, 0x2c, 0x73, 0x8b, 0xa2, 0x1c, 0xc8,
+	0x94, 0x91, 0xbe, 0x4b, 0x71, 0x58, 0x63, 0xec, 0xb0, 0x21, 0x57, 0x52, 0x19, 0x29, 0xf7, 0xd0,
+	0x4c, 0x47, 0xf8, 0x4d, 0x4b, 0x4e, 0x21, 0x19, 0xb5, 0x11, 0x8f, 0x1c, 0x16, 0xf8, 0xca, 0x86,
+	0x68, 0x6d, 0x22, 0xc2, 0xaa, 0x21, 0x84, 0xae, 0x60, 0xc7, 0x17, 0x7d, 0x0c, 0xfd, 0x17, 0x5a,
+	0xc1, 0x57, 0x12, 0x99, 0x78, 0x2e, 0xf1, 0x0e, 0xaf, 0xbe, 0xe3, 0x20, 0x33, 0xed, 0x2f, 0x6e,
+	0x85, 0x6f, 0xc6, 0xdc, 0xa2, 0xae, 0xb2, 0x25, 0x9e, 0x10, 0x6d, 0xd0, 0x4b, 0x48, 0x89, 0x05,
+	0xbe, 0x26, 0x9e, 0x43, 0x58, 0xa0, 0x80, 0x28, 0xf1, 0xc5, 0x3b, 0x5e, 0x56, 0x0f, 0xb5, 0xbd,
+	0x48, 0x6a, 0x26, 0xc7, 0x0b, 0x3b, 0xf4, 0x1c, 0x64, 0xdf, 0x61, 0xb6, 0x4b, 0xf1, 0x34, 0x08,
+	0xa8, 0x47, 0xc2, 0xc6, 0x3f, 0x14, 0x55, 0xd9, 0x89, 0xf0, 0xee, 0x1c, 0xce, 0xfe, 0x04, 0xbb,
+	0x3d, 0xee, 0x0c, 0x68, 0x9b, 0xba, 0x74, 0x10, 0x5a, 0xa7, 0x45, 0x3c, 0x32, 0xf6, 0x43, 0x07,
+	0x33, 0x32, 0xa6, 0xa2, 0xed, 0xdb, 0xa6, 0x58, 0xa3, 0xaf, 0x20, 0xe1, 0xfb, 0x63, 0x17, 0xdb,
+	0x94, 0x59, 0xd4, 0x13, 0x7d, 0x4b, 0x17, 0x3f, 0x58, 0x9f, 0xae, 0x3f, 0x76, 0xc5, 0x1d, 0x15,
+	0xa1, 0x33, 0x21, 0x0c, 0x12, 0xad, 0xb3, 0x7f, 0x49, 0xb0, 0xd7, 0xfe, 0x91, 0x05, 0x23, 0xea,
+	0x3b, 0xaf, 0xe9, 0x4d, 0x15, 0x43, 0x0b, 0x9e, 0x41, 0xca, 0x9f, 0x50, 0xf2, 0x9d, 0xc3, 0x6c,
+	0xe1, 0x16, 0x91, 0x8a, 0x64, 0x26, 0xe7, 0x60, 0xe8, 0x94, 0xb0, 0xb2, 0x13, 0x27, 0x18, 0x8c,
+	0x44, 0x32, 0x92, 0x19, 0x6d, 0xd0, 0x53, 0x48, 0x5f, 0x73, 0x77, 0x3a, 0xa6, 0xd8, 0x26, 0x0e,
+	0xc3, 0x56, 0x5f, 0x78, 0x47, 0x32, 0x93, 0x11, 0x5a, 0x21, 0x0e, 0xd3, 0xfa, 0xe8, 0x7d, 0x40,
+	0x74, 0x38, 0xa4, 0x83, 0xc0, 0xc7, 0x13, 0x8f, 0x0f, 0x1d, 0x97, 0x62, 0xc7, 0x52, 0x36, 0x85,
+	0x2f, 0xe4, 0x19, 0xd3, 0x8a, 0x08, 0xc3, 0x42, 0x5f, 0xc2, 0xe6, 0x75, 0xf8, 0x08, 0x31, 0x41,
+	0x89, 0xe2, 0x47, 0x6b, 0x9f, 0xbd, 0xaa, 0xac, 0x66, 0x14, 0x23, 0xfb, 0x4b, 0x0c, 0x1e, 0x35,
+	0xa7, 0xc1, 0xd2, 0xd0, 0x7d, 0xfb, 0x96, 0xa1, 0xfb, 0x70, 0xed, 0x5d, 0x0b, 0xb1, 0xfe, 0x8b,
+	0xd1, 0xfb, 0x1e, 0x14, 0xff, 0xa6, 0x29, 0xf8, 0x76, 0x26, 0x86, 0x8e, 0x2d, 0x2a, 0x99, 0x28,
+	0x7e, 0xb2, 0xbe, 0xeb, 0x2b, 0xbb, 0x6a, 0xee, 0xf9, 0x2b, 0xf1, 0xf3, 0x37, 0x12, 0xa4, 0xee,
+	0xe4, 0x8f, 0x8e, 0xe1, 0x40, 0xed, 0x6a, 0x46, 0x13, 0xeb, 0x8d, 0x72, 0x53, 0x33, 0x1a, 0x15,
+	0xdc, 0x6d, 0xb4, 0x5b, 0x7a, 0xd9, 0xb8, 0x34, 0x74, 0x4d, 0xfe, 0x1f, 0x3a, 0x04, 0x65, 0x89,
+	0xaf, 0x19, 0x0d, 0x5d, 0x35, 0xf1, 0x8b, 0x8f, 0x65, 0x09, 0x3d, 0x81, 0xc7, 0x4b, 0xec, 0x65,
+	0x4d, 0x2d, 0xcb, 0x31, 0xa4, 0xc0, 0xee, 0x12, 0x51, 0xef, 0xd6, 0xd4, 0x2b, 0x39, 0x8e, 0xf6,
+	0x00, 0x2d, 0x31, 0x6a, 0xdd, 0x94, 0x37, 0xd0, 0x3e, 0xfc, 0xff, 0x3e, 0x8e, 0xaf, 0x4a, 0xf2,
+	0x26, 0x7a, 0x0f, 0x9e, 0x2c, 0x51, 0xcd, 0x4a, 0x05, 0x37, 0x5b, 0xdd, 0xb6, 0xfc, 0x00, 0x3d,
+	0x87, 0x67, 0x4b, 0x64, 0xbb, 0xa5, 0xeb, 0x2f, 0xf1, 0x95, 0xd1, 0xa9, 0xe2, 0xaa, 0xae, 0x6a,
+	0xba, 0x89, 0x4b, 0x5f, 0x77, 0x74, 0x79, 0xeb, 0xfc, 0x1a, 0xd0, 0xfd, 0xa1, 0x46, 0x4f, 0x21,
+	0x13, 0x2a, 0xca, 0x55, 0x5c, 0x6f, 0x6a, 0x7a, 0x0d, 0xf7, 0x54, 0xd3, 0x50, 0x1b, 0x9d, 0xa5,
+	0x3a, 0xec, 0x01, 0xea, 0xb6, 0x75, 0x5c, 0xd2, 0xdb, 0x1d, 0xac, 0xf6, 0x54, 0xa3, 0xa6, 0x96,
+	0x6a, 0xba, 0x2c, 0x21, 0x19, 0x92, 0x21, 0xde, 0xee, 0xa8, 0x0d, 0x4d, 0x35, 0x35, 0x39, 0x36,
+	0x47, 0xf4, 0x46, 0x55, 0x6d, 0x94, 0x75, 0x4d, 0x8e, 0x9f, 0xff, 0x2c, 0xc1, 0xce, 0xd2, 0x78,
+	0xa2, 0x53, 0x38, 0x6a, 0xb7, 0xeb, 0x35, 0xdc, 0x6b, 0x1a, 0x65, 0x1d, 0x57, 0xf4, 0x46, 0x98,
+	0xe7, 0xdd, 0x2b, 0x0f, 0x60, 0xef, 0xfe, 0x91, 0xba, 0x2a, 0xae, 0x3d, 0x04, 0xe5, 0x3e, 0x77,
+	0xa9, 0x0b, 0x36, 0x86, 0x8e, 0x60, 0xff, 0x3e, 0xdb, 0xd0, 0xbb, 0x1d, 0x53, 0xad, 0xc9, 0xf1,
+	0xf3, 0xdf, 0x24, 0x78, 0xbc, 0xc2, 0xcb, 0xe8, 0x19, 0x9c, 0x36, 0xbb, 0x9d, 0x56, 0xb7, 0x83,
+	0xff, 0xd5, 0x12, 0x67, 0x70, 0xb2, 0xfa, 0xd8, 0xa2, 0x33, 0x8e, 0x60, 0x7f, 0xf5, 0xa1, 0x7a,
+	0xeb, 0x42, 0x8e, 0xa1, 0x2c, 0x1c, 0xaf, 0xa6, 0x6f, 0x3a, 0x1b, 0x2f, 0xfd, 0x21, 0xc1, 0xd9,
+	0x80, 0x8f, 0xd7, 0xcd, 0x40, 0x49, 0x5e, 0x98, 0xee, 0x56, 0xf8, 0x8d, 0x6e, 0x49, 0xdf, 0x18,
+	0x33, 0x91, 0xcd, 0xc3, 0x0f, 0x59, 0x9e, 0x7b, 0x76, 0xc1, 0xa6, 0x4c, 0x7c, 0xc1, 0x0b, 0x11,
+	0x45, 0x26, 0x8e, 0xff, 0xd6, 0x1f, 0xa4, 0xcf, 0x6e, 0xa1, 0xbf, 0x25, 0xe9, 0xd7, 0x58, 0x4c,
+	0xbb, 0xfc, 0x3d, 0x76, 0x52, 0x89, 0x62, 0x96, 0x45, 0x22, 0xda, 0x6d, 0x22, 0xbd, 0x48, 0xd4,
+	0x7f, 0x20, 0xe2, 0x5f, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0x81, 0xe2, 0x86, 0xee, 0x7f, 0x09,
+	0x00, 0x00,
 }
diff --git a/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go b/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go
index 842fdcb..dc74ee8 100644
--- a/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go
@@ -10,6 +10,7 @@
 
 	proto "github.com/golang/protobuf/proto"
 	empty "github.com/golang/protobuf/ptypes/empty"
+	_ "github.com/golang/protobuf/ptypes/struct"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	longrunning "google.golang.org/genproto/googleapis/longrunning"
 	field_mask "google.golang.org/genproto/protobuf/field_mask"
@@ -1085,88 +1086,88 @@
 }
 
 var fileDescriptor_270276916589f9d5 = []byte{
-	// 1283 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xdf, 0x6f, 0xdb, 0xd4,
-	0x17, 0x9f, 0xd3, 0xac, 0x6a, 0x4f, 0xda, 0x6f, 0xb3, 0xbb, 0xad, 0xcd, 0x37, 0x63, 0xb4, 0xb8,
-	0x12, 0xaa, 0x0a, 0xb3, 0xb7, 0x4c, 0xfc, 0x4a, 0x55, 0x50, 0xda, 0xa4, 0x5b, 0x58, 0x9b, 0x44,
-	0x6e, 0x3b, 0x31, 0x5e, 0x2c, 0x37, 0xb9, 0x4d, 0x4d, 0x9d, 0x7b, 0x4d, 0x7c, 0xb3, 0x36, 0x43,
-	0xe3, 0x81, 0xff, 0x00, 0xf1, 0x86, 0x78, 0x42, 0xbc, 0x00, 0xe2, 0x3f, 0x40, 0xbc, 0xf0, 0xc4,
-	0x9e, 0x10, 0xfc, 0x0b, 0x88, 0xff, 0x00, 0x89, 0x47, 0xe4, 0x6b, 0x3b, 0x76, 0x1c, 0x07, 0xc7,
-	0xb0, 0x4d, 0xbc, 0xe5, 0xfe, 0x38, 0xe7, 0x7c, 0x3e, 0xe7, 0x9c, 0x7b, 0x3f, 0xd7, 0x81, 0x5b,
-	0x6d, 0x4a, 0xdb, 0x06, 0x96, 0x9b, 0x06, 0xed, 0xb5, 0xe4, 0x96, 0xae, 0x19, 0xb4, 0x7d, 0x6c,
-	0xd0, 0x33, 0xf9, 0x61, 0xe1, 0x08, 0x33, 0xed, 0x96, 0x8c, 0x09, 0xd3, 0x59, 0x5f, 0x65, 0x7d,
-	0x13, 0x4b, 0x66, 0x97, 0x32, 0x8a, 0x96, 0x1d, 0x13, 0x89, 0x9b, 0x48, 0xbe, 0x89, 0xe4, 0x9a,
-	0xe4, 0x5f, 0x70, 0x7d, 0x6a, 0xa6, 0x2e, 0x6b, 0x84, 0x50, 0xa6, 0x31, 0x9d, 0x12, 0xcb, 0x31,
-	0xcf, 0xaf, 0xba, 0xab, 0x06, 0x25, 0xed, 0x6e, 0x8f, 0x10, 0x9d, 0xb4, 0x65, 0x6a, 0xe2, 0xee,
-	0xd0, 0xa6, 0x6b, 0xee, 0x26, 0x3e, 0x3a, 0xea, 0x1d, 0xcb, 0xb8, 0x63, 0xb2, 0xbe, 0xbb, 0xb8,
-	0x12, 0x5e, 0x3c, 0xd6, 0xb1, 0xd1, 0x52, 0x3b, 0x9a, 0x75, 0xea, 0xee, 0x58, 0x0a, 0x20, 0x68,
-	0x1a, 0x3a, 0x26, 0xcc, 0x59, 0x10, 0x3f, 0x4f, 0x03, 0x54, 0x38, 0xa3, 0x83, 0xbe, 0x89, 0x11,
-	0x82, 0x34, 0xd1, 0x3a, 0x38, 0x27, 0xac, 0x08, 0x6b, 0xb3, 0x0a, 0xff, 0x8d, 0x5e, 0x82, 0xb9,
-	0x96, 0x6e, 0x99, 0x86, 0xd6, 0x57, 0xf9, 0x5a, 0x8a, 0xaf, 0x65, 0xdc, 0xb9, 0x9a, 0xbd, 0xa5,
-	0x0c, 0xe9, 0x53, 0x9d, 0xb4, 0x72, 0x53, 0x2b, 0xc2, 0xda, 0xff, 0x0a, 0x37, 0xa5, 0x98, 0x84,
-	0x48, 0x7e, 0x44, 0xe9, 0x9e, 0x4e, 0x5a, 0x0a, 0xb7, 0x46, 0x1d, 0xb8, 0xac, 0xf5, 0x18, 0x55,
-	0xf1, 0xb9, 0xa9, 0x11, 0x4b, 0xa7, 0x44, 0xed, 0xd0, 0x16, 0xce, 0xa5, 0xb9, 0xd3, 0xcd, 0x24,
-	0x4e, 0x4b, 0x3d, 0x46, 0x2b, 0x9e, 0x97, 0x3d, 0xda, 0xc2, 0xca, 0x25, 0x2d, 0x3c, 0x85, 0x6a,
-	0x30, 0xc3, 0x6b, 0xa9, 0x63, 0x2b, 0x37, 0xbd, 0x32, 0xb5, 0x96, 0x29, 0x14, 0x92, 0xc4, 0x70,
-	0x7e, 0x2a, 0x03, 0x1f, 0xf9, 0x22, 0x4c, 0x3b, 0x73, 0xe8, 0x0a, 0x5c, 0x7c, 0xa8, 0x19, 0x3d,
-	0x2f, 0x8d, 0xce, 0x00, 0xe5, 0x61, 0xc6, 0xea, 0x13, 0x4a, 0xfa, 0x1d, 0x2b, 0x97, 0x5a, 0x99,
-	0x5a, 0x9b, 0x55, 0x06, 0x63, 0xf1, 0x2d, 0x48, 0xdb, 0x89, 0x40, 0x57, 0x20, 0x7b, 0xaf, 0x5a,
-	0x2b, 0xab, 0x87, 0xb5, 0xfd, 0x46, 0x65, 0xbb, 0xba, 0x53, 0xad, 0x94, 0xb3, 0x17, 0xd0, 0x1c,
-	0xcc, 0xf0, 0xd9, 0xbd, 0x52, 0x23, 0x2b, 0xa0, 0x79, 0x98, 0xe5, 0xa3, 0xdd, 0xea, 0xfe, 0x41,
-	0x36, 0x25, 0x3e, 0x80, 0x4b, 0x23, 0x74, 0xd1, 0x2a, 0x2c, 0x97, 0x0e, 0x0f, 0xea, 0x6a, 0xe5,
-	0xbd, 0x46, 0xa9, 0xb6, 0x5f, 0xad, 0xd7, 0xd4, 0xbd, 0x7a, 0xb9, 0x12, 0x72, 0xbb, 0x0c, 0xd7,
-	0xa2, 0x36, 0x95, 0x2b, 0x3b, 0xa5, 0xc3, 0xdd, 0x83, 0xac, 0x20, 0x7e, 0x2a, 0xc0, 0xe2, 0xae,
-	0x6e, 0x31, 0x9f, 0xb5, 0xa5, 0xe0, 0x0f, 0x7b, 0xd8, 0x62, 0x68, 0x11, 0xa6, 0x4d, 0xad, 0x8b,
-	0x09, 0x73, 0x39, 0xba, 0x23, 0xb4, 0x0a, 0xf3, 0x86, 0x46, 0xda, 0x3d, 0xad, 0x8d, 0xd5, 0xa6,
-	0x5d, 0x3d, 0xa7, 0x5b, 0xe6, 0xbc, 0xc9, 0x6d, 0x1b, 0xdd, 0x35, 0x98, 0x35, 0xed, 0x0d, 0x96,
-	0xfe, 0x08, 0xf3, 0x9e, 0xb9, 0xa8, 0xcc, 0xd8, 0x13, 0xfb, 0xfa, 0x23, 0x8c, 0xae, 0x03, 0xf0,
-	0x45, 0x46, 0x4f, 0x31, 0xe1, 0xc5, 0x9f, 0x55, 0xf8, 0xf6, 0x03, 0x7b, 0xc2, 0xc6, 0xb4, 0x34,
-	0x82, 0xc9, 0x32, 0x29, 0xb1, 0xec, 0x8a, 0xce, 0x05, 0x4e, 0xa7, 0x95, 0x13, 0x78, 0x55, 0x5f,
-	0x49, 0x50, 0x55, 0x25, 0x83, 0x7d, 0xbf, 0xe8, 0x65, 0x58, 0x20, 0xf8, 0x9c, 0xa9, 0x01, 0x3c,
-	0x0e, 0x9d, 0x79, 0x7b, 0xba, 0x31, 0xc0, 0x54, 0x87, 0x2b, 0x77, 0x70, 0x00, 0x91, 0x97, 0xa4,
-	0xa8, 0xd3, 0x34, 0x49, 0x82, 0xc4, 0xaf, 0x04, 0x58, 0xda, 0xee, 0x62, 0x8d, 0xe1, 0x51, 0xa7,
-	0xe3, 0x32, 0xbf, 0x0b, 0x99, 0x00, 0x79, 0xee, 0x36, 0x21, 0x77, 0xf0, 0xb9, 0x8f, 0xc2, 0x9c,
-	0x8a, 0x80, 0xf9, 0x93, 0x00, 0x4b, 0x87, 0x66, 0x2b, 0x12, 0x66, 0x08, 0x8e, 0xf0, 0x94, 0xe1,
-	0x44, 0xb5, 0xd5, 0x06, 0x64, 0x7a, 0x1c, 0x0d, 0xbf, 0xf9, 0x38, 0xe2, 0x4c, 0x21, 0xef, 0x85,
-	0xf4, 0x2e, 0x47, 0x69, 0xc7, 0xbe, 0x1c, 0xf7, 0x34, 0xeb, 0x54, 0x01, 0x67, 0xbb, 0xfd, 0x5b,
-	0xbc, 0x01, 0x4b, 0x65, 0x6c, 0xe0, 0x28, 0x2a, 0x11, 0x65, 0x14, 0x7f, 0x4e, 0xc1, 0xf5, 0x2d,
-	0x8d, 0x35, 0x4f, 0xc2, 0xfc, 0x63, 0x4f, 0xc8, 0x6d, 0xb8, 0x1a, 0x48, 0x8c, 0x7a, 0x64, 0x3b,
-	0x51, 0x7b, 0x5d, 0xdd, 0xa1, 0x74, 0xf7, 0x82, 0x82, 0x7c, 0xde, 0x4e, 0x84, 0xae, 0x8e, 0x4e,
-	0x21, 0x37, 0x6a, 0xa4, 0x13, 0x43, 0x27, 0xd8, 0xe5, 0x99, 0xe4, 0xd2, 0xe5, 0x6e, 0xef, 0x5e,
-	0x50, 0xae, 0x86, 0x22, 0x55, 0xb9, 0xc3, 0xd1, 0x64, 0xa7, 0xe3, 0x93, 0x7d, 0x31, 0x49, 0xb2,
-	0xb7, 0x2e, 0xc3, 0xa5, 0x11, 0x3a, 0xa2, 0x09, 0x2f, 0x8e, 0xcb, 0xe8, 0xb3, 0x39, 0xdf, 0x62,
-	0xd3, 0xad, 0x61, 0xb8, 0xf0, 0xb1, 0x35, 0x5c, 0x1f, 0xc6, 0x6f, 0x77, 0x84, 0x77, 0xa7, 0x2f,
-	0xf8, 0x01, 0x6c, 0x69, 0xb4, 0xc4, 0xaf, 0x05, 0xc8, 0xf3, 0x28, 0x81, 0x03, 0xad, 0xc7, 0x87,
-	0x08, 0xaa, 0x53, 0xea, 0xdf, 0xab, 0xd3, 0x64, 0x07, 0xfa, 0x77, 0x0f, 0x6b, 0xa0, 0x06, 0xff,
-	0x51, 0xac, 0xe1, 0x06, 0x4c, 0x27, 0x3a, 0xed, 0x1f, 0xbb, 0x3c, 0x03, 0x95, 0xd7, 0x27, 0x12,
-	0x37, 0xb7, 0xec, 0x5c, 0xd1, 0xbd, 0x92, 0xbb, 0x4d, 0x79, 0x9f, 0xcf, 0x4d, 0x96, 0x68, 0x0d,
-	0x16, 0x42, 0xc7, 0xf1, 0x69, 0x37, 0x77, 0xe1, 0x8f, 0x05, 0xc8, 0x04, 0x5a, 0x1a, 0x7d, 0x2f,
-	0xc0, 0x42, 0x48, 0x38, 0xd1, 0x1b, 0xb1, 0xde, 0xa3, 0xe5, 0x3f, 0xff, 0x66, 0x72, 0x43, 0xe7,
-	0x0c, 0x8b, 0xaf, 0x7f, 0xf2, 0xeb, 0x6f, 0x9f, 0xa5, 0x6e, 0x22, 0x69, 0xf0, 0xa0, 0xfe, 0xc8,
-	0xc9, 0xee, 0xa6, 0xd9, 0xa5, 0x1f, 0xe0, 0x26, 0xb3, 0xe4, 0x75, 0x59, 0x6b, 0x63, 0xc2, 0x1e,
-	0xcb, 0x41, 0x2d, 0xfe, 0x56, 0x80, 0xf9, 0x21, 0x91, 0x45, 0xaf, 0xc5, 0x62, 0x88, 0x12, 0xe5,
-	0x7c, 0x92, 0x8c, 0x46, 0xa1, 0xb5, 0x0f, 0xfb, 0x08, 0xd6, 0x20, 0x54, 0x79, 0xfd, 0x31, 0xfa,
-	0x41, 0x80, 0x6c, 0x58, 0xc0, 0x51, 0x7c, 0xd2, 0xc6, 0x68, 0x7e, 0x32, 0xcc, 0xdb, 0x1c, 0xf3,
-	0xa6, 0x98, 0x30, 0xc3, 0xc5, 0xa0, 0x5e, 0xa3, 0x27, 0x02, 0x64, 0xc3, 0x17, 0xf1, 0x04, 0x04,
-	0xc6, 0xbc, 0x06, 0x92, 0x11, 0xa8, 0x73, 0x02, 0xd5, 0x42, 0xd1, 0x27, 0x10, 0xfc, 0xe8, 0x9a,
-	0xa4, 0x00, 0xc3, 0x64, 0xbe, 0x10, 0x20, 0x1b, 0xbe, 0xe3, 0x27, 0x20, 0x33, 0xe6, 0x3d, 0x90,
-	0x5f, 0x1c, 0xb9, 0x64, 0x2a, 0xf6, 0xc7, 0x98, 0xd7, 0x2c, 0xeb, 0xff, 0xa0, 0x59, 0x16, 0xa3,
-	0x95, 0x0f, 0xbd, 0x1d, 0x0b, 0xf2, 0x6f, 0x1f, 0x21, 0xf9, 0xeb, 0x9e, 0x7d, 0xe0, 0xe3, 0x52,
-	0xaa, 0x7b, 0x1f, 0x97, 0x62, 0x85, 0x23, 0x7e, 0x47, 0x2c, 0x26, 0x6c, 0x95, 0x23, 0x3f, 0x68,
-	0x51, 0x58, 0xf7, 0x09, 0x8c, 0x08, 0xe9, 0xa4, 0x04, 0xc6, 0x29, 0xf0, 0x33, 0x25, 0xe0, 0x04,
-	0xb5, 0x09, 0xfc, 0x28, 0xc0, 0xe5, 0x08, 0x8d, 0x46, 0x1b, 0x93, 0xa1, 0x8f, 0x54, 0xf6, 0x38,
-	0xe8, 0x0d, 0x0e, 0xfd, 0x5d, 0xb1, 0x12, 0x0b, 0x3d, 0xd4, 0x2f, 0xb2, 0xa7, 0x93, 0x0e, 0x0b,
-	0x27, 0xf8, 0x10, 0x8b, 0x61, 0xf5, 0x9e, 0x94, 0x45, 0xa4, 0xe6, 0x3f, 0x2f, 0x16, 0x7e, 0x33,
-	0x0d, 0x58, 0x0c, 0x6b, 0xf3, 0xa4, 0x2c, 0x22, 0x15, 0xfd, 0x79, 0xb1, 0x18, 0x74, 0x54, 0xfe,
-	0xfc, 0x49, 0xe9, 0xff, 0x01, 0x88, 0x4e, 0x74, 0xcd, 0xd4, 0x2d, 0xa9, 0x49, 0x3b, 0xbf, 0x94,
-	0x1e, 0x9c, 0x30, 0x66, 0x5a, 0x45, 0x59, 0x3e, 0x3b, 0x0b, 0x2f, 0xca, 0x5a, 0x8f, 0x9d, 0x38,
-	0x7f, 0x3f, 0xdd, 0x30, 0x0d, 0x8d, 0x1d, 0xd3, 0x6e, 0xe7, 0xd5, 0xb8, 0xed, 0x7e, 0xa8, 0xad,
-	0xef, 0x04, 0x58, 0x6d, 0xd2, 0x4e, 0x5c, 0xb6, 0xb6, 0x02, 0x0f, 0x90, 0x86, 0x7d, 0x8f, 0x35,
-	0x84, 0xf7, 0xab, 0xae, 0x4d, 0x9b, 0xda, 0x8f, 0x15, 0x89, 0x76, 0xdb, 0x72, 0x1b, 0x13, 0x7e,
-	0xcb, 0xc9, 0x7e, 0xd4, 0xb1, 0x7f, 0x8d, 0x6d, 0xf8, 0x53, 0x7f, 0x0a, 0xc2, 0x97, 0xa9, 0x54,
-	0x79, 0xe7, 0x9b, 0xd4, 0xf2, 0x1d, 0xc7, 0xe7, 0x36, 0xc7, 0x51, 0xf6, 0x71, 0xdc, 0x77, 0x8c,
-	0x8e, 0xa6, 0xb9, 0xff, 0xdb, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x51, 0xe1, 0x90, 0x7e, 0x79,
-	0x13, 0x00, 0x00,
+	// 1290 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x5f, 0x6f, 0xdb, 0x54,
+	0x14, 0x9f, 0xd3, 0xac, 0x6a, 0x4f, 0x5a, 0x9a, 0xdd, 0x6d, 0x6d, 0xc8, 0x36, 0x5a, 0x5c, 0x09,
+	0x55, 0x85, 0xd9, 0x5b, 0x26, 0xfe, 0x65, 0x1a, 0x28, 0x6d, 0xd2, 0x2d, 0xac, 0x4d, 0x22, 0xb7,
+	0x9d, 0x18, 0x2f, 0x96, 0x9b, 0xdc, 0x66, 0xa6, 0xce, 0xbd, 0x26, 0xbe, 0xde, 0x96, 0xa1, 0xf1,
+	0xc0, 0x37, 0x40, 0xbc, 0x21, 0x9e, 0x10, 0x2f, 0x80, 0xf8, 0x06, 0x88, 0x17, 0x9e, 0xd8, 0x13,
+	0x82, 0xaf, 0x80, 0xf8, 0x06, 0x48, 0x3c, 0x22, 0x5f, 0xdb, 0xb1, 0xe3, 0x38, 0x38, 0x86, 0x6d,
+	0xe2, 0x2d, 0xf7, 0xcf, 0x39, 0xe7, 0xf7, 0x3b, 0xe7, 0xdc, 0xfb, 0xbb, 0x0e, 0x5c, 0xed, 0x52,
+	0xda, 0x35, 0xb0, 0xdc, 0x36, 0xa8, 0xdd, 0x91, 0x3b, 0xba, 0x66, 0xd0, 0xee, 0xb1, 0x41, 0x1f,
+	0xc8, 0xf7, 0x4b, 0x47, 0x98, 0x69, 0x57, 0x65, 0x4c, 0x98, 0xce, 0x06, 0x2a, 0x1b, 0x98, 0x58,
+	0x32, 0xfb, 0x94, 0x51, 0xb4, 0xea, 0x9a, 0x48, 0xdc, 0x44, 0x0a, 0x4c, 0x24, 0xcf, 0xa4, 0x78,
+	0xd1, 0xf3, 0xa9, 0x99, 0xba, 0xac, 0x11, 0x42, 0x99, 0xc6, 0x74, 0x4a, 0x2c, 0xd7, 0xbc, 0xb8,
+	0xee, 0xad, 0x1a, 0x94, 0x74, 0xfb, 0x36, 0x21, 0x3a, 0xe9, 0xca, 0xd4, 0xc4, 0xfd, 0x91, 0x4d,
+	0x17, 0xbc, 0x4d, 0x7c, 0x74, 0x64, 0x1f, 0xcb, 0xb8, 0x67, 0xb2, 0x81, 0xb7, 0xb8, 0x16, 0x5d,
+	0x3c, 0xd6, 0xb1, 0xd1, 0x51, 0x7b, 0x9a, 0x75, 0xe2, 0xed, 0xb8, 0x18, 0xdd, 0x61, 0xb1, 0xbe,
+	0xdd, 0x66, 0xde, 0xea, 0x4a, 0x08, 0x5f, 0xdb, 0xd0, 0x31, 0xf1, 0x16, 0xc4, 0x2f, 0xb2, 0x00,
+	0x35, 0xce, 0xf7, 0x60, 0x60, 0x62, 0x84, 0x20, 0x4b, 0xb4, 0x1e, 0x2e, 0x08, 0x6b, 0xc2, 0xc6,
+	0xbc, 0xc2, 0x7f, 0xa3, 0x97, 0x61, 0xa1, 0xa3, 0x5b, 0xa6, 0xa1, 0x0d, 0x54, 0xbe, 0x96, 0xe1,
+	0x6b, 0x39, 0x6f, 0xae, 0xe1, 0x6c, 0xa9, 0x42, 0xf6, 0x44, 0x27, 0x9d, 0xc2, 0xcc, 0x9a, 0xb0,
+	0xf1, 0x42, 0xe9, 0x8a, 0x94, 0x90, 0x2e, 0x29, 0x88, 0x28, 0xdd, 0xd6, 0x49, 0x47, 0xe1, 0xd6,
+	0xa8, 0x07, 0x67, 0x35, 0x9b, 0x51, 0x15, 0x3f, 0x34, 0x35, 0x62, 0xe9, 0x94, 0xa8, 0x3d, 0xda,
+	0xc1, 0x85, 0x2c, 0x77, 0x7a, 0x23, 0x8d, 0xd3, 0x8a, 0xcd, 0x68, 0xcd, 0xf7, 0xb2, 0x47, 0x3b,
+	0x58, 0x39, 0xa3, 0x45, 0xa7, 0x50, 0x03, 0xe6, 0x78, 0xa5, 0x75, 0x6c, 0x15, 0x66, 0xd7, 0x66,
+	0x36, 0x72, 0xa5, 0x52, 0x9a, 0x18, 0xee, 0x4f, 0x65, 0xe8, 0xa3, 0x58, 0x86, 0x59, 0x77, 0x0e,
+	0x9d, 0x83, 0xd3, 0xf7, 0x35, 0xc3, 0xf6, 0xd3, 0xe8, 0x0e, 0x50, 0x11, 0xe6, 0xac, 0x01, 0xa1,
+	0x64, 0xd0, 0xb3, 0x0a, 0x99, 0xb5, 0x99, 0x8d, 0x79, 0x65, 0x38, 0x16, 0xdf, 0x86, 0xac, 0x93,
+	0x08, 0x74, 0x0e, 0xf2, 0xb7, 0xeb, 0x8d, 0xaa, 0x7a, 0xd8, 0xd8, 0x6f, 0xd5, 0xb6, 0xeb, 0x3b,
+	0xf5, 0x5a, 0x35, 0x7f, 0x0a, 0x2d, 0xc0, 0x1c, 0x9f, 0xdd, 0xab, 0xb4, 0xf2, 0x02, 0x5a, 0x84,
+	0x79, 0x3e, 0xda, 0xad, 0xef, 0x1f, 0xe4, 0x33, 0xe2, 0x5d, 0x38, 0x33, 0x46, 0x17, 0xad, 0xc3,
+	0x6a, 0xe5, 0xf0, 0xa0, 0xa9, 0xd6, 0xde, 0x6f, 0x55, 0x1a, 0xfb, 0xf5, 0x66, 0x43, 0xdd, 0x6b,
+	0x56, 0x6b, 0x11, 0xb7, 0xab, 0x70, 0x21, 0x6e, 0x53, 0xb5, 0xb6, 0x53, 0x39, 0xdc, 0x3d, 0xc8,
+	0x0b, 0xe2, 0x67, 0x02, 0x2c, 0xef, 0xea, 0x16, 0x0b, 0x58, 0x5b, 0x0a, 0xfe, 0xc8, 0xc6, 0x16,
+	0x43, 0xcb, 0x30, 0x6b, 0x6a, 0x7d, 0x4c, 0x98, 0xc7, 0xd1, 0x1b, 0xa1, 0x75, 0x58, 0x34, 0x34,
+	0xd2, 0xb5, 0xb5, 0x2e, 0x56, 0xdb, 0x4e, 0xf5, 0xdc, 0x6e, 0x59, 0xf0, 0x27, 0xb7, 0x1d, 0x74,
+	0x17, 0x60, 0xde, 0x74, 0x36, 0x58, 0xfa, 0x23, 0xcc, 0x7b, 0xe6, 0xb4, 0x32, 0xe7, 0x4c, 0xec,
+	0xeb, 0x8f, 0x30, 0xba, 0x04, 0xc0, 0x17, 0x19, 0x3d, 0xc1, 0x84, 0x17, 0x7f, 0x5e, 0xe1, 0xdb,
+	0x0f, 0x9c, 0x09, 0x07, 0xd3, 0xca, 0x18, 0x26, 0xcb, 0xa4, 0xc4, 0x72, 0x2a, 0xba, 0x10, 0x3a,
+	0xbb, 0x56, 0x41, 0xe0, 0x55, 0x7d, 0x35, 0x45, 0x55, 0x95, 0x1c, 0x0e, 0xfc, 0xa2, 0x57, 0x60,
+	0x89, 0xe0, 0x87, 0x4c, 0x0d, 0xe1, 0x71, 0xe9, 0x2c, 0x3a, 0xd3, 0xad, 0x21, 0xa6, 0x26, 0x9c,
+	0xbb, 0x89, 0x43, 0x88, 0xfc, 0x24, 0xc5, 0x9d, 0xa6, 0x69, 0x12, 0x24, 0x7e, 0x2d, 0xc0, 0xca,
+	0x76, 0x1f, 0x6b, 0x0c, 0x8f, 0x3b, 0x9d, 0x94, 0xf9, 0x5d, 0xc8, 0x85, 0xc8, 0x73, 0xb7, 0x29,
+	0xb9, 0x43, 0xc0, 0x7d, 0x1c, 0xe6, 0x4c, 0x0c, 0xcc, 0x9f, 0x05, 0x58, 0x39, 0x34, 0x3b, 0xb1,
+	0x30, 0x23, 0x70, 0x84, 0xa7, 0x0c, 0x27, 0xae, 0xad, 0xae, 0x43, 0xce, 0xe6, 0x68, 0xf8, 0xbd,
+	0xc8, 0x11, 0xe7, 0x4a, 0x45, 0x3f, 0xa4, 0x7f, 0x31, 0x4a, 0x3b, 0xce, 0xd5, 0xb9, 0xa7, 0x59,
+	0x27, 0x0a, 0xb8, 0xdb, 0x9d, 0xdf, 0xe2, 0x65, 0x58, 0xa9, 0x62, 0x03, 0xc7, 0x51, 0x89, 0x29,
+	0xa3, 0xf8, 0x4b, 0x06, 0x2e, 0x6d, 0x69, 0xac, 0x7d, 0x2f, 0xca, 0x3f, 0xf1, 0x84, 0x5c, 0x83,
+	0xf3, 0xa1, 0xc4, 0xa8, 0x47, 0x8e, 0x13, 0xd5, 0xee, 0xeb, 0x2e, 0xa5, 0x5b, 0xa7, 0x14, 0x14,
+	0xf0, 0x76, 0x23, 0xf4, 0x75, 0x74, 0x02, 0x85, 0x71, 0x23, 0x9d, 0x18, 0x3a, 0xc1, 0x1e, 0xcf,
+	0x34, 0x97, 0x2e, 0x77, 0x7b, 0xeb, 0x94, 0x72, 0x3e, 0x12, 0xa9, 0xce, 0x1d, 0x8e, 0x27, 0x3b,
+	0x9b, 0x9c, 0xec, 0xd3, 0x69, 0x92, 0xbd, 0x75, 0x16, 0xce, 0x8c, 0xd1, 0x11, 0x4d, 0x78, 0x69,
+	0x52, 0x46, 0x9f, 0xcd, 0xf9, 0x16, 0xdb, 0x5e, 0x0d, 0xa3, 0x85, 0x4f, 0xac, 0xe1, 0xe6, 0x28,
+	0x7e, 0xa7, 0x23, 0xfc, 0x3b, 0x7d, 0x29, 0x08, 0xe0, 0x48, 0xa3, 0x25, 0x7e, 0x23, 0x40, 0x91,
+	0x47, 0x09, 0x1d, 0x68, 0x3d, 0x39, 0x44, 0x58, 0x9d, 0x32, 0xff, 0x5d, 0x9d, 0xa6, 0x3b, 0xd0,
+	0x7f, 0xf8, 0x58, 0x43, 0x35, 0xf8, 0x9f, 0x62, 0x8d, 0x36, 0x60, 0x36, 0xd5, 0x69, 0xff, 0xc4,
+	0xe3, 0x19, 0xaa, 0xbc, 0x3e, 0x95, 0xb8, 0x79, 0x65, 0xe7, 0x8a, 0xee, 0x97, 0xdc, 0x6b, 0xca,
+	0x3b, 0x7c, 0x6e, 0xba, 0x44, 0x6b, 0xb0, 0x14, 0x39, 0x8e, 0x4f, 0xbb, 0xb9, 0x4b, 0x7f, 0x2e,
+	0x41, 0x2e, 0xd4, 0xd2, 0xe8, 0x07, 0x01, 0x96, 0x22, 0xc2, 0x89, 0xde, 0x4c, 0xf4, 0x1e, 0x2f,
+	0xff, 0xc5, 0xb7, 0xd2, 0x1b, 0xba, 0x67, 0x58, 0x7c, 0xe3, 0xd3, 0xdf, 0x7e, 0xff, 0x3c, 0x73,
+	0x05, 0x49, 0xc3, 0xe7, 0xf6, 0xc7, 0x6e, 0x76, 0x6f, 0x98, 0x7d, 0xfa, 0x21, 0x6e, 0x33, 0x4b,
+	0xde, 0x94, 0xb5, 0x2e, 0x26, 0xec, 0xb1, 0x1c, 0xd6, 0xe2, 0xef, 0x04, 0x58, 0x1c, 0x11, 0x59,
+	0xf4, 0x7a, 0x22, 0x86, 0x38, 0x51, 0x2e, 0xa6, 0xc9, 0x68, 0x1c, 0x5a, 0xe7, 0xb0, 0x8f, 0x61,
+	0x0d, 0x43, 0x95, 0x37, 0x1f, 0xa3, 0x1f, 0x05, 0xc8, 0x47, 0x05, 0x1c, 0x25, 0x27, 0x6d, 0x82,
+	0xe6, 0xa7, 0xc3, 0xbc, 0xcd, 0x31, 0xdf, 0x10, 0x53, 0x66, 0xb8, 0x1c, 0xd6, 0x6b, 0xf4, 0x44,
+	0x80, 0x7c, 0xf4, 0x22, 0x9e, 0x82, 0xc0, 0x84, 0xd7, 0x40, 0x3a, 0x02, 0x4d, 0x4e, 0xa0, 0x5e,
+	0x2a, 0x07, 0x04, 0xc2, 0x9f, 0x64, 0xd3, 0x14, 0x60, 0x94, 0xcc, 0x97, 0x02, 0xe4, 0xa3, 0x77,
+	0xfc, 0x14, 0x64, 0x26, 0xbc, 0x07, 0x8a, 0xcb, 0x63, 0x97, 0x4c, 0xcd, 0xf9, 0x54, 0xf3, 0x9b,
+	0x65, 0xf3, 0x5f, 0x34, 0xcb, 0x72, 0xbc, 0xf2, 0xa1, 0x77, 0x12, 0x41, 0xfe, 0xe3, 0x23, 0xa4,
+	0x78, 0xc9, 0xb7, 0x0f, 0x7d, 0x7a, 0x4a, 0x4d, 0xff, 0xd3, 0x53, 0xac, 0x71, 0xc4, 0xef, 0x8a,
+	0xe5, 0x94, 0xad, 0x72, 0x14, 0x04, 0x2d, 0x0b, 0x9b, 0x01, 0x81, 0x31, 0x21, 0x9d, 0x96, 0xc0,
+	0x24, 0x05, 0x7e, 0xa6, 0x04, 0xdc, 0xa0, 0x0e, 0x81, 0x9f, 0x04, 0x38, 0x1b, 0xa3, 0xd1, 0xe8,
+	0xfa, 0x74, 0xe8, 0x63, 0x95, 0x3d, 0x09, 0x7a, 0x8b, 0x43, 0x7f, 0x4f, 0xac, 0x25, 0x42, 0x8f,
+	0xf4, 0x8b, 0xec, 0xeb, 0xa4, 0xcb, 0xc2, 0x0d, 0x3e, 0xc2, 0x62, 0x54, 0xbd, 0xa7, 0x65, 0x11,
+	0xab, 0xf9, 0xcf, 0x8b, 0x45, 0xd0, 0x4c, 0x43, 0x16, 0xa3, 0xda, 0x3c, 0x2d, 0x8b, 0x58, 0x45,
+	0x7f, 0x5e, 0x2c, 0x86, 0x1d, 0x55, 0x7c, 0xf8, 0xa4, 0xf2, 0x62, 0x08, 0xa2, 0x1b, 0x5d, 0x33,
+	0x75, 0x4b, 0x6a, 0xd3, 0xde, 0xaf, 0x95, 0xbb, 0xf7, 0x18, 0x33, 0xad, 0xb2, 0x2c, 0x3f, 0x78,
+	0x10, 0x5d, 0x94, 0x35, 0x9b, 0xdd, 0x73, 0xff, 0x9c, 0xba, 0x6c, 0x1a, 0x1a, 0x3b, 0xa6, 0xfd,
+	0xde, 0x6b, 0x49, 0xdb, 0x83, 0x50, 0x5b, 0xdf, 0x0b, 0xb0, 0xde, 0xa6, 0xbd, 0xa4, 0x6c, 0x6d,
+	0x85, 0x1e, 0x20, 0x2d, 0xe7, 0x1e, 0x6b, 0x09, 0x1f, 0xd4, 0x3d, 0x9b, 0x2e, 0x75, 0x1e, 0x2b,
+	0x12, 0xed, 0x77, 0xe5, 0x2e, 0x26, 0xfc, 0x96, 0x93, 0x83, 0xa8, 0x13, 0xff, 0x38, 0xbb, 0x1e,
+	0x4c, 0xfd, 0x25, 0x08, 0x5f, 0x65, 0x32, 0xd5, 0x9d, 0x6f, 0x33, 0xab, 0x37, 0x5d, 0x9f, 0xdb,
+	0x1c, 0x47, 0x35, 0xc0, 0x71, 0xc7, 0x35, 0x3a, 0x9a, 0xe5, 0xfe, 0xaf, 0xfd, 0x1d, 0x00, 0x00,
+	0xff, 0xff, 0xf4, 0x32, 0xb3, 0xf4, 0x97, 0x13, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/cloud/dialogflow/v2beta1/session.pb.go b/googleapis/cloud/dialogflow/v2beta1/session.pb.go
index dd60528..26a21b7 100644
--- a/googleapis/cloud/dialogflow/v2beta1/session.pb.go
+++ b/googleapis/cloud/dialogflow/v2beta1/session.pb.go
@@ -577,7 +577,7 @@
 	OutputContexts []*Context `protobuf:"bytes,10,rep,name=output_contexts,json=outputContexts,proto3" json:"output_contexts,omitempty"`
 	// The intent that matched the conversational query. Some, not
 	// all fields are filled in this message, including but not limited to:
-	// `name`, `display_name` and `webhook_state`.
+	// `name`, `display_name`, `end_interaction` and `is_fallback`.
 	Intent *Intent `protobuf:"bytes,11,opt,name=intent,proto3" json:"intent,omitempty"`
 	// The intent detection confidence. Values range from 0.0
 	// (completely uncertain) to 1.0 (completely certain).
diff --git a/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go b/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go
index 77132bd..06bd4d3 100644
--- a/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go
+++ b/googleapis/cloud/securitycenter/v1/securitycenter_service.pb.go
@@ -354,8 +354,20 @@
 	//
 	// The following field and operator combinations are supported:
 	// name | '='
-	// update_time | '>', '<', '>=', '<=', '='
-	// create_time | '>', '<', '>=', '<=', '='
+	// update_time | '=', '>', '<', '>=', '<='
+	//
+	//   Usage: This should be milliseconds since epoch or an RFC3339 string.
+	//   Examples:
+	//     "update_time = \"2019-06-10T16:07:18-07:00\""
+	//     "update_time = 1560208038000"
+	//
+	// create_time |  '=', '>', '<', '>=', '<='
+	//
+	//   Usage: This should be milliseconds since epoch or an RFC3339 string.
+	//   Examples:
+	//     "create_time = \"2019-06-10T16:07:18-07:00\""
+	//     "create_time = 1560208038000"
+	//
 	// iam_policy.policy_blob | '=', ':'
 	// resource_properties | '=', ':', '>', '<', '>=', '<='
 	// security_marks | '=', ':'
@@ -610,7 +622,13 @@
 	// state | '=', ':'
 	// category | '=', ':'
 	// external_uri | '=', ':'
-	// event_time | `>`, `<`, `>=`, `<=`
+	// event_time | `=`, `>`, `<`, `>=`, `<=`
+	//
+	//   Usage: This should be milliseconds since epoch or an RFC3339 string.
+	//   Examples:
+	//     "event_time = \"2019-06-10T16:07:18-07:00\""
+	//     "event_time = 1560208038000"
+	//
 	// security_marks | '=', ':'
 	// source_properties | '=', ':', `>`, `<`, `>=`, `<=`
 	//
@@ -1017,7 +1035,20 @@
 	//
 	// The following are the allowed field and operator combinations:
 	// name | `=`
-	// update_time | `>`, `<`, `>=`, `<=`
+	// update_time | `=`, `>`, `<`, `>=`, `<=`
+	//
+	//   Usage: This should be milliseconds since epoch or an RFC3339 string.
+	//   Examples:
+	//     "update_time = \"2019-06-10T16:07:18-07:00\""
+	//     "update_time = 1560208038000"
+	//
+	// create_time | `=`, `>`, `<`, `>=`, `<=`
+	//
+	//   Usage: This should be milliseconds since epoch or an RFC3339 string.
+	//   Examples:
+	//     "create_time = \"2019-06-10T16:07:18-07:00\""
+	//     "create_time = 1560208038000"
+	//
 	// iam_policy.policy_blob | '=', ':'
 	// resource_properties | '=', ':', `>`, `<`, `>=`, `<=`
 	// security_marks | '=', ':'
@@ -1334,7 +1365,13 @@
 	// state | '=', ':'
 	// category | '=', ':'
 	// external_uri | '=', ':'
-	// event_time | `>`, `<`, `>=`, `<=`
+	// event_time | `=`, `>`, `<`, `>=`, `<=`
+	//
+	//   Usage: This should be milliseconds since epoch or an RFC3339 string.
+	//   Examples:
+	//     "event_time = \"2019-06-10T16:07:18-07:00\""
+	//     "event_time = 1560208038000"
+	//
 	// security_marks | '=', ':'
 	// source_properties | '=', ':', `>`, `<`, `>=`, `<=`
 	//
diff --git a/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go b/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go
index 107ce1c..a63e671 100644
--- a/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go
+++ b/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go
@@ -188,7 +188,7 @@
 }
 
 func (RecognitionMetadata_InteractionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{5, 0}
+	return fileDescriptor_6adcab595cc29495, []int{6, 0}
 }
 
 // Enumerates the types of capture settings describing an audio file.
@@ -226,7 +226,7 @@
 }
 
 func (RecognitionMetadata_MicrophoneDistance) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{5, 1}
+	return fileDescriptor_6adcab595cc29495, []int{6, 1}
 }
 
 // The original media the speech was recorded on.
@@ -258,7 +258,7 @@
 }
 
 func (RecognitionMetadata_OriginalMediaType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{5, 2}
+	return fileDescriptor_6adcab595cc29495, []int{6, 2}
 }
 
 // The type of device the speech was recorded with.
@@ -306,7 +306,7 @@
 }
 
 func (RecognitionMetadata_RecordingDeviceType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{5, 3}
+	return fileDescriptor_6adcab595cc29495, []int{6, 3}
 }
 
 // Indicates the type of speech event.
@@ -340,7 +340,7 @@
 }
 
 func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{11, 0}
+	return fileDescriptor_6adcab595cc29495, []int{12, 0}
 }
 
 // The top-level message sent by the client for the `Recognize` method.
@@ -697,18 +697,22 @@
 	// *Optional* If 'true', enables speaker detection for each recognized word in
 	// the top alternative of the recognition result using a speaker_tag provided
 	// in the WordInfo.
-	// Note: When this is true, we send all the words from the beginning of the
+	// Note: Use diarization_config instead.
+	EnableSpeakerDiarization bool `protobuf:"varint,16,opt,name=enable_speaker_diarization,json=enableSpeakerDiarization,proto3" json:"enable_speaker_diarization,omitempty"` // Deprecated: Do not use.
+	// *Optional*
+	// If set, specifies the estimated number of speakers in the conversation.
+	// Defaults to '2'. Ignored unless enable_speaker_diarization is set to true.
+	// Note: Use diarization_config instead.
+	DiarizationSpeakerCount int32 `protobuf:"varint,17,opt,name=diarization_speaker_count,json=diarizationSpeakerCount,proto3" json:"diarization_speaker_count,omitempty"` // Deprecated: Do not use.
+	// *Optional* Config to enable speaker diarization and set additional
+	// parameters to make diarization better suited for your application.
+	// Note: When this is enabled, we send all the words from the beginning of the
 	// audio for the top alternative in every consecutive STREAMING responses.
 	// This is done in order to improve our speaker tags as our models learn to
 	// identify the speakers in the conversation over time.
 	// For non-streaming requests, the diarization results will be provided only
 	// in the top alternative of the FINAL SpeechRecognitionResult.
-	EnableSpeakerDiarization bool `protobuf:"varint,16,opt,name=enable_speaker_diarization,json=enableSpeakerDiarization,proto3" json:"enable_speaker_diarization,omitempty"`
-	// *Optional*
-	// If set, specifies the estimated number of speakers in the conversation.
-	// If not set, defaults to '2'.
-	// Ignored unless enable_speaker_diarization is set to true."
-	DiarizationSpeakerCount int32 `protobuf:"varint,17,opt,name=diarization_speaker_count,json=diarizationSpeakerCount,proto3" json:"diarization_speaker_count,omitempty"`
+	DiarizationConfig *SpeakerDiarizationConfig `protobuf:"bytes,19,opt,name=diarization_config,json=diarizationConfig,proto3" json:"diarization_config,omitempty"`
 	// *Optional* Metadata regarding this request.
 	Metadata *RecognitionMetadata `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"`
 	// *Optional* Which model to select for the given request. Select the model
@@ -867,6 +871,7 @@
 	return false
 }
 
+// Deprecated: Do not use.
 func (m *RecognitionConfig) GetEnableSpeakerDiarization() bool {
 	if m != nil {
 		return m.EnableSpeakerDiarization
@@ -874,6 +879,7 @@
 	return false
 }
 
+// Deprecated: Do not use.
 func (m *RecognitionConfig) GetDiarizationSpeakerCount() int32 {
 	if m != nil {
 		return m.DiarizationSpeakerCount
@@ -881,6 +887,13 @@
 	return 0
 }
 
+func (m *RecognitionConfig) GetDiarizationConfig() *SpeakerDiarizationConfig {
+	if m != nil {
+		return m.DiarizationConfig
+	}
+	return nil
+}
+
 func (m *RecognitionConfig) GetMetadata() *RecognitionMetadata {
 	if m != nil {
 		return m.Metadata
@@ -902,6 +915,73 @@
 	return false
 }
 
+// *Optional* Config to enable speaker diarization.
+type SpeakerDiarizationConfig struct {
+	// *Optional* If 'true', enables speaker detection for each recognized word in
+	// the top alternative of the recognition result using a speaker_tag provided
+	// in the WordInfo.
+	EnableSpeakerDiarization bool `protobuf:"varint,1,opt,name=enable_speaker_diarization,json=enableSpeakerDiarization,proto3" json:"enable_speaker_diarization,omitempty"`
+	// *Optional*
+	// Minimum number of speakers in the conversation. This range gives you more
+	// flexibility by allowing the system to automatically determine the correct
+	// number of speakers. If not set, the default value is 2.
+	MinSpeakerCount int32 `protobuf:"varint,2,opt,name=min_speaker_count,json=minSpeakerCount,proto3" json:"min_speaker_count,omitempty"`
+	// *Optional*
+	// Maximum number of speakers in the conversation. This range gives you more
+	// flexibility by allowing the system to automatically determine the correct
+	// number of speakers. If not set, the default value is 6.
+	MaxSpeakerCount      int32    `protobuf:"varint,3,opt,name=max_speaker_count,json=maxSpeakerCount,proto3" json:"max_speaker_count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SpeakerDiarizationConfig) Reset()         { *m = SpeakerDiarizationConfig{} }
+func (m *SpeakerDiarizationConfig) String() string { return proto.CompactTextString(m) }
+func (*SpeakerDiarizationConfig) ProtoMessage()    {}
+func (*SpeakerDiarizationConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6adcab595cc29495, []int{5}
+}
+
+func (m *SpeakerDiarizationConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SpeakerDiarizationConfig.Unmarshal(m, b)
+}
+func (m *SpeakerDiarizationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SpeakerDiarizationConfig.Marshal(b, m, deterministic)
+}
+func (m *SpeakerDiarizationConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SpeakerDiarizationConfig.Merge(m, src)
+}
+func (m *SpeakerDiarizationConfig) XXX_Size() int {
+	return xxx_messageInfo_SpeakerDiarizationConfig.Size(m)
+}
+func (m *SpeakerDiarizationConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_SpeakerDiarizationConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SpeakerDiarizationConfig proto.InternalMessageInfo
+
+func (m *SpeakerDiarizationConfig) GetEnableSpeakerDiarization() bool {
+	if m != nil {
+		return m.EnableSpeakerDiarization
+	}
+	return false
+}
+
+func (m *SpeakerDiarizationConfig) GetMinSpeakerCount() int32 {
+	if m != nil {
+		return m.MinSpeakerCount
+	}
+	return 0
+}
+
+func (m *SpeakerDiarizationConfig) GetMaxSpeakerCount() int32 {
+	if m != nil {
+		return m.MaxSpeakerCount
+	}
+	return 0
+}
+
 // Description of audio data to be recognized.
 type RecognitionMetadata struct {
 	// The use case most closely describing the audio content to be recognized.
@@ -941,7 +1021,7 @@
 func (m *RecognitionMetadata) String() string { return proto.CompactTextString(m) }
 func (*RecognitionMetadata) ProtoMessage()    {}
 func (*RecognitionMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{5}
+	return fileDescriptor_6adcab595cc29495, []int{6}
 }
 
 func (m *RecognitionMetadata) XXX_Unmarshal(b []byte) error {
@@ -1059,7 +1139,7 @@
 func (m *SpeechContext) String() string { return proto.CompactTextString(m) }
 func (*SpeechContext) ProtoMessage()    {}
 func (*SpeechContext) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{6}
+	return fileDescriptor_6adcab595cc29495, []int{7}
 }
 
 func (m *SpeechContext) XXX_Unmarshal(b []byte) error {
@@ -1115,7 +1195,7 @@
 func (m *RecognitionAudio) String() string { return proto.CompactTextString(m) }
 func (*RecognitionAudio) ProtoMessage()    {}
 func (*RecognitionAudio) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{7}
+	return fileDescriptor_6adcab595cc29495, []int{8}
 }
 
 func (m *RecognitionAudio) XXX_Unmarshal(b []byte) error {
@@ -1197,7 +1277,7 @@
 func (m *RecognizeResponse) String() string { return proto.CompactTextString(m) }
 func (*RecognizeResponse) ProtoMessage()    {}
 func (*RecognizeResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{8}
+	return fileDescriptor_6adcab595cc29495, []int{9}
 }
 
 func (m *RecognizeResponse) XXX_Unmarshal(b []byte) error {
@@ -1243,7 +1323,7 @@
 func (m *LongRunningRecognizeResponse) String() string { return proto.CompactTextString(m) }
 func (*LongRunningRecognizeResponse) ProtoMessage()    {}
 func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{9}
+	return fileDescriptor_6adcab595cc29495, []int{10}
 }
 
 func (m *LongRunningRecognizeResponse) XXX_Unmarshal(b []byte) error {
@@ -1291,7 +1371,7 @@
 func (m *LongRunningRecognizeMetadata) String() string { return proto.CompactTextString(m) }
 func (*LongRunningRecognizeMetadata) ProtoMessage()    {}
 func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{10}
+	return fileDescriptor_6adcab595cc29495, []int{11}
 }
 
 func (m *LongRunningRecognizeMetadata) XXX_Unmarshal(b []byte) error {
@@ -1402,7 +1482,7 @@
 func (m *StreamingRecognizeResponse) String() string { return proto.CompactTextString(m) }
 func (*StreamingRecognizeResponse) ProtoMessage()    {}
 func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{11}
+	return fileDescriptor_6adcab595cc29495, []int{12}
 }
 
 func (m *StreamingRecognizeResponse) XXX_Unmarshal(b []byte) error {
@@ -1485,7 +1565,7 @@
 func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) }
 func (*StreamingRecognitionResult) ProtoMessage()    {}
 func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{12}
+	return fileDescriptor_6adcab595cc29495, []int{13}
 }
 
 func (m *StreamingRecognitionResult) XXX_Unmarshal(b []byte) error {
@@ -1573,7 +1653,7 @@
 func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) }
 func (*SpeechRecognitionResult) ProtoMessage()    {}
 func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{13}
+	return fileDescriptor_6adcab595cc29495, []int{14}
 }
 
 func (m *SpeechRecognitionResult) XXX_Unmarshal(b []byte) error {
@@ -1640,7 +1720,7 @@
 func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) }
 func (*SpeechRecognitionAlternative) ProtoMessage()    {}
 func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{14}
+	return fileDescriptor_6adcab595cc29495, []int{15}
 }
 
 func (m *SpeechRecognitionAlternative) XXX_Unmarshal(b []byte) error {
@@ -1723,7 +1803,7 @@
 func (m *WordInfo) String() string { return proto.CompactTextString(m) }
 func (*WordInfo) ProtoMessage()    {}
 func (*WordInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6adcab595cc29495, []int{15}
+	return fileDescriptor_6adcab595cc29495, []int{16}
 }
 
 func (m *WordInfo) XXX_Unmarshal(b []byte) error {
@@ -1791,6 +1871,7 @@
 	proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognizeRequest")
 	proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognitionConfig")
 	proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.RecognitionConfig")
+	proto.RegisterType((*SpeakerDiarizationConfig)(nil), "google.cloud.speech.v1p1beta1.SpeakerDiarizationConfig")
 	proto.RegisterType((*RecognitionMetadata)(nil), "google.cloud.speech.v1p1beta1.RecognitionMetadata")
 	proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1p1beta1.SpeechContext")
 	proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1p1beta1.RecognitionAudio")
@@ -1809,145 +1890,149 @@
 }
 
 var fileDescriptor_6adcab595cc29495 = []byte{
-	// 2193 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0xdb, 0xc6,
-	0x15, 0x37, 0x48, 0x51, 0x22, 0x9f, 0xfe, 0x41, 0x2b, 0x27, 0xa2, 0x65, 0x25, 0x76, 0xe0, 0x49,
-	0xec, 0xa6, 0x19, 0xca, 0x56, 0x32, 0x69, 0xec, 0xb4, 0x69, 0x29, 0x00, 0x32, 0x31, 0x43, 0x12,
-	0x9c, 0x25, 0x65, 0xd7, 0xb9, 0xec, 0xac, 0x88, 0x25, 0x85, 0x29, 0x09, 0xa0, 0xc0, 0xd2, 0xb5,
-	0x7c, 0xec, 0x17, 0xe8, 0xa1, 0x9d, 0xde, 0x7a, 0x6a, 0xce, 0xfd, 0x00, 0xbd, 0xa4, 0x97, 0x5e,
-	0x7a, 0xe9, 0xa1, 0xb7, 0x9e, 0x7a, 0xe8, 0x87, 0xe8, 0x4c, 0x7b, 0xe8, 0xec, 0x2e, 0x40, 0x81,
-	0xa4, 0x6c, 0xd9, 0x9a, 0x66, 0xa6, 0x37, 0xec, 0xef, 0xfd, 0xd9, 0xf7, 0xde, 0xbe, 0x7d, 0xfb,
-	0x1e, 0xe0, 0xfe, 0x30, 0x0c, 0x87, 0x23, 0xb6, 0xdf, 0x1f, 0x85, 0x13, 0x6f, 0x3f, 0x89, 0x18,
-	0xeb, 0x9f, 0xee, 0x3f, 0x7f, 0x10, 0x3d, 0x38, 0x61, 0x9c, 0x3e, 0x50, 0x30, 0x51, 0x70, 0x2d,
-	0x8a, 0x43, 0x1e, 0xa2, 0xf7, 0x94, 0x44, 0x4d, 0x92, 0x6a, 0x29, 0x69, 0x2a, 0xb1, 0xbb, 0x97,
-	0x2a, 0xa4, 0x91, 0xbf, 0x4f, 0x83, 0x20, 0xe4, 0x94, 0xfb, 0x61, 0x90, 0x28, 0xe1, 0xdd, 0x3b,
-	0x29, 0x75, 0x14, 0x06, 0xc3, 0x78, 0x12, 0x04, 0x7e, 0x30, 0xdc, 0x0f, 0x23, 0x16, 0xcf, 0x30,
-	0xdd, 0x48, 0x99, 0xe4, 0xea, 0x64, 0x32, 0xd8, 0xa7, 0xc1, 0x59, 0x4a, 0x7a, 0x7f, 0x9e, 0xe4,
-	0x4d, 0x94, 0x6c, 0x4a, 0xbf, 0x39, 0x4f, 0x67, 0xe3, 0x88, 0x67, 0xc2, 0xb7, 0xe6, 0x89, 0xdc,
-	0x1f, 0xb3, 0x84, 0xd3, 0x71, 0x94, 0x32, 0xec, 0xa4, 0x0c, 0x71, 0xd4, 0xdf, 0x4f, 0x38, 0xe5,
-	0x93, 0xd4, 0x22, 0xe3, 0xf7, 0x1a, 0xe8, 0x98, 0xf5, 0xc3, 0x61, 0xe0, 0xbf, 0x64, 0x98, 0xfd,
-	0x7c, 0xc2, 0x12, 0x8e, 0x1a, 0xb0, 0xdc, 0x0f, 0x83, 0x81, 0x3f, 0xac, 0x6a, 0xb7, 0xb5, 0x7b,
-	0xab, 0x07, 0xf7, 0x6b, 0xaf, 0x8d, 0x4c, 0x2d, 0x55, 0x20, 0xac, 0x35, 0xa5, 0x1c, 0x4e, 0xe5,
-	0x91, 0x0d, 0x25, 0x3a, 0xf1, 0xfc, 0xb0, 0x5a, 0x90, 0x8a, 0xf6, 0xdf, 0x5c, 0x51, 0x5d, 0x88,
-	0x61, 0x25, 0x6d, 0xfc, 0x41, 0x83, 0x9b, 0xcd, 0x30, 0x18, 0x62, 0x15, 0xd8, 0xff, 0x7f, 0x83,
-	0xbf, 0xd5, 0xe0, 0x46, 0x97, 0xc7, 0x8c, 0x8e, 0x2f, 0x32, 0x77, 0x00, 0x7a, 0x92, 0x11, 0xc9,
-	0x8c, 0xe1, 0x0f, 0x2f, 0xd9, 0x6f, 0x5e, 0xe7, 0xb9, 0x07, 0x8d, 0x6b, 0x78, 0x73, 0xaa, 0x54,
-	0x41, 0xe8, 0x43, 0x58, 0x97, 0xe6, 0x88, 0x3d, 0x38, 0x0b, 0xb8, 0x74, 0x6a, 0xad, 0x71, 0x0d,
-	0xaf, 0x49, 0xd8, 0x54, 0xe8, 0xe1, 0x36, 0x6c, 0x9d, 0x9b, 0x13, 0x2b, 0x1b, 0x8d, 0x3f, 0x6a,
-	0xb0, 0xfb, 0xea, 0xdd, 0xfe, 0x87, 0x11, 0xff, 0x1e, 0xe8, 0x89, 0x1f, 0x0c, 0x47, 0x8c, 0x4c,
-	0x38, 0x67, 0x31, 0x0d, 0xfa, 0x4c, 0xda, 0x59, 0xc6, 0x9b, 0x0a, 0x3f, 0xce, 0x60, 0x74, 0x17,
-	0x36, 0xfd, 0x80, 0xb3, 0xd8, 0x1f, 0x93, 0x98, 0x25, 0x93, 0x11, 0x4f, 0xaa, 0x45, 0xc9, 0xb9,
-	0x91, 0xc2, 0x58, 0xa1, 0xc6, 0x7f, 0xca, 0xb0, 0xb5, 0x68, 0xf3, 0xd7, 0x50, 0x66, 0x41, 0x3f,
-	0xf4, 0xfc, 0x40, 0x59, 0xbd, 0x71, 0xf0, 0xd5, 0xdb, 0x5a, 0x5d, 0x93, 0xa7, 0x6c, 0xa7, 0x5a,
-	0xf0, 0x54, 0x1f, 0xfa, 0x18, 0xb6, 0x12, 0x3a, 0x8e, 0x46, 0x8c, 0xc4, 0x94, 0x33, 0x72, 0xca,
-	0x62, 0xfe, 0x52, 0xba, 0x51, 0xc2, 0x9b, 0x8a, 0x80, 0x29, 0x67, 0x0d, 0x01, 0xa3, 0x1a, 0x6c,
-	0xa7, 0xc7, 0x72, 0x4a, 0x83, 0x80, 0x8d, 0x48, 0x3f, 0x9c, 0x04, 0xbc, 0xba, 0x22, 0xb9, 0xb7,
-	0xd4, 0xd1, 0x28, 0x8a, 0x29, 0x08, 0xa8, 0x07, 0x77, 0x59, 0x40, 0x4f, 0x46, 0x8c, 0x24, 0x2c,
-	0xa2, 0x52, 0x7f, 0x7c, 0x6e, 0x18, 0x89, 0x58, 0x9c, 0x69, 0xaa, 0xae, 0xc9, 0x70, 0xdc, 0x51,
-	0xec, 0xdd, 0x94, 0x3b, 0xe7, 0x45, 0x87, 0xc5, 0xa9, 0x6a, 0x74, 0x07, 0xd6, 0x47, 0x34, 0x18,
-	0x4e, 0xe8, 0x90, 0x91, 0x7e, 0xe8, 0x31, 0x19, 0xca, 0x0a, 0x5e, 0xcb, 0x40, 0x33, 0xf4, 0x18,
-	0xfa, 0x21, 0xec, 0xd2, 0x11, 0x67, 0x71, 0x40, 0xb9, 0xff, 0x9c, 0x91, 0x19, 0x81, 0xa4, 0x8a,
-	0x6e, 0x17, 0xef, 0x55, 0x70, 0x35, 0xc7, 0xd1, 0xcc, 0x09, 0x27, 0xe2, 0x68, 0xc7, 0xf4, 0x05,
-	0xc9, 0xd1, 0x93, 0xea, 0x92, 0x8a, 0xc9, 0x98, 0xbe, 0xa8, 0xe7, 0x60, 0xc1, 0x1a, 0xc5, 0xe1,
-	0x80, 0x06, 0x3e, 0x3f, 0x23, 0x03, 0x5f, 0x90, 0xaa, 0x25, 0x95, 0x05, 0x53, 0xfc, 0x48, 0xc2,
-	0xe8, 0x18, 0x36, 0xd5, 0x41, 0xa9, 0xb4, 0x7e, 0xc1, 0x93, 0xea, 0xf2, 0xed, 0xe2, 0xbd, 0xd5,
-	0x83, 0x4f, 0x2e, 0xbb, 0x3c, 0x12, 0x30, 0x95, 0x10, 0xde, 0x48, 0xf2, 0xcb, 0x04, 0xfd, 0x00,
-	0xaa, 0x69, 0x94, 0x7f, 0x11, 0xc6, 0x1e, 0x11, 0x15, 0x94, 0x84, 0x83, 0x41, 0xc2, 0x78, 0x52,
-	0x2d, 0x4b, 0x4b, 0xde, 0x51, 0xf4, 0xa7, 0x61, 0xec, 0xf5, 0xfc, 0x31, 0x73, 0x15, 0x11, 0x7d,
-	0x06, 0xef, 0xe6, 0x05, 0x65, 0x5a, 0x7b, 0x4c, 0xa4, 0xf1, 0xa6, 0x14, 0xbb, 0x7e, 0x2e, 0x66,
-	0x4e, 0x69, 0xe8, 0x27, 0xb0, 0x97, 0x4a, 0xd1, 0x09, 0x0f, 0xc7, 0x94, 0xfb, 0x7d, 0x12, 0x4d,
-	0x82, 0x3e, 0x9f, 0xc8, 0xaa, 0x5f, 0x5d, 0x95, 0xb2, 0xbb, 0x8a, 0xa7, 0x9e, 0xb1, 0x74, 0xce,
-	0x39, 0xc4, 0xd9, 0x64, 0x69, 0x11, 0x31, 0xfa, 0x33, 0x16, 0x13, 0xcf, 0xa7, 0xb1, 0xff, 0x52,
-	0xc9, 0xeb, 0x52, 0x3e, 0x75, 0xa9, 0xab, 0x18, 0xac, 0x73, 0x3a, 0x7a, 0x04, 0x37, 0x72, 0xec,
-	0x53, 0x15, 0x2a, 0x15, 0xb7, 0xe4, 0x21, 0xed, 0xe4, 0x18, 0x52, 0x0d, 0x2a, 0x21, 0xdb, 0x50,
-	0x1e, 0x33, 0x4e, 0x3d, 0xca, 0x69, 0xb5, 0x22, 0xaf, 0xff, 0xc1, 0x9b, 0x5f, 0xa4, 0x56, 0x2a,
-	0x89, 0xa7, 0x3a, 0xd0, 0x75, 0x28, 0x8d, 0x43, 0x8f, 0x8d, 0xaa, 0xeb, 0x32, 0x05, 0xd5, 0x02,
-	0x7d, 0x00, 0x6b, 0x93, 0x84, 0x11, 0x16, 0x9c, 0x8a, 0xcb, 0xef, 0x55, 0x37, 0xa4, 0x47, 0xab,
-	0x93, 0x84, 0xd9, 0x29, 0x64, 0xfc, 0x46, 0x83, 0xf5, 0x99, 0x1b, 0x89, 0xaa, 0x70, 0xdd, 0x6e,
-	0x9b, 0xae, 0xe5, 0xb4, 0x1f, 0x93, 0xe3, 0x76, 0xb7, 0x63, 0x9b, 0xce, 0x91, 0x63, 0x5b, 0xfa,
-	0x35, 0xb4, 0x06, 0xe5, 0xa6, 0xd3, 0xb6, 0xeb, 0xf8, 0xc1, 0xe7, 0xba, 0x86, 0xca, 0xb0, 0x74,
-	0xd4, 0xac, 0x9b, 0x7a, 0x01, 0x55, 0xa0, 0xd4, 0x3a, 0x6e, 0xd6, 0x9f, 0xea, 0x45, 0xb4, 0x02,
-	0xc5, 0x7a, 0x0b, 0xeb, 0x4b, 0x08, 0x60, 0xb9, 0xde, 0xc2, 0xe4, 0xe9, 0xa1, 0x5e, 0x12, 0x72,
-	0xee, 0xe3, 0xc7, 0xc4, 0xed, 0x1c, 0x77, 0xf5, 0x65, 0xb4, 0x0b, 0xef, 0x76, 0x3b, 0xb6, 0xfd,
-	0x53, 0xf2, 0xd4, 0xe9, 0x35, 0x48, 0xc3, 0xae, 0x5b, 0x36, 0x26, 0x87, 0xcf, 0x7a, 0xb6, 0xbe,
-	0x22, 0xc4, 0x5b, 0x9d, 0x4f, 0xf5, 0xb2, 0xf1, 0xef, 0x0a, 0x6c, 0x5f, 0xe0, 0x31, 0x1a, 0x83,
-	0x2e, 0x0b, 0x15, 0xed, 0xcb, 0x98, 0xf3, 0xb3, 0x88, 0xa5, 0x85, 0xe8, 0xf0, 0xed, 0xe3, 0x57,
-	0x73, 0xce, 0x55, 0xf5, 0xce, 0x22, 0x86, 0x37, 0xfd, 0x59, 0x00, 0x7d, 0x05, 0x7b, 0x7e, 0xe0,
-	0x4d, 0x12, 0x1e, 0x9f, 0x91, 0x80, 0xfa, 0xfd, 0x44, 0x5e, 0x5b, 0x12, 0x0e, 0x88, 0x7a, 0xe2,
-	0xc4, 0x85, 0x5f, 0xc7, 0xd5, 0x8c, 0xa7, 0x2d, 0x58, 0xc4, 0xc5, 0x75, 0x07, 0x32, 0xa6, 0xe8,
-	0x39, 0x6c, 0x8f, 0xfd, 0x7e, 0x1c, 0x46, 0xa7, 0x61, 0xc0, 0x88, 0xe7, 0x27, 0x5c, 0x16, 0xe7,
-	0x25, 0x69, 0xb1, 0x7d, 0x05, 0x8b, 0x5b, 0x53, 0x6d, 0x56, 0xaa, 0x0c, 0xa3, 0xf1, 0x02, 0x86,
-	0x38, 0x6c, 0x87, 0xb1, 0x3f, 0xf4, 0x03, 0x3a, 0x22, 0x63, 0xe6, 0xf9, 0x54, 0x45, 0xaa, 0x24,
-	0xf7, 0xb5, 0xae, 0xb0, 0xaf, 0x9b, 0x6a, 0x6b, 0x09, 0x65, 0x32, 0x56, 0x5b, 0xe1, 0x3c, 0x84,
-	0x5e, 0xc2, 0x3b, 0xa2, 0xaa, 0xc6, 0x22, 0x8d, 0x88, 0xc7, 0x9e, 0xfb, 0x7d, 0xa6, 0xf6, 0x5d,
-	0x96, 0xfb, 0x1e, 0x5d, 0x61, 0x5f, 0x9c, 0xe9, 0xb3, 0xa4, 0x3a, 0xb9, 0xf3, 0x76, 0xbc, 0x08,
-	0xa2, 0x83, 0x0b, 0xf6, 0x0e, 0xe8, 0x98, 0xc9, 0x37, 0xa1, 0xb2, 0x20, 0xd3, 0xa6, 0x63, 0x86,
-	0x3e, 0x01, 0x74, 0x1e, 0x25, 0x51, 0xac, 0xa4, 0xb1, 0x65, 0x29, 0xa0, 0x4f, 0xdd, 0xf3, 0xc7,
-	0x6a, 0x87, 0x3b, 0xb0, 0x1e, 0x9e, 0x0c, 0x26, 0x49, 0x9f, 0x72, 0xe6, 0x11, 0xdf, 0x93, 0xf7,
-	0xb6, 0x88, 0xd7, 0xce, 0x41, 0xc7, 0x43, 0xb7, 0x60, 0x55, 0x3d, 0x4c, 0x3c, 0x8c, 0xfc, 0x7e,
-	0x15, 0xa4, 0x2e, 0x90, 0x50, 0x4f, 0x20, 0xc6, 0x9f, 0x35, 0xd8, 0x9c, 0x4b, 0x3b, 0x74, 0x1b,
-	0xf6, 0x9c, 0x76, 0xcf, 0xc6, 0x75, 0xb3, 0xe7, 0xb8, 0x6d, 0xd2, 0x7b, 0xd6, 0xb1, 0xe7, 0x6e,
-	0xde, 0x06, 0x80, 0xe5, 0x74, 0xcd, 0xe3, 0x6e, 0xd7, 0x71, 0xdb, 0xba, 0x86, 0x74, 0x58, 0xeb,
-	0x60, 0xbb, 0x6b, 0xb7, 0x7b, 0x75, 0x21, 0xa2, 0x17, 0x04, 0x47, 0xa7, 0xe1, 0xb6, 0x6d, 0x62,
-	0xd6, 0x9b, 0x4d, 0xbd, 0x88, 0xd6, 0xa1, 0xf2, 0xc4, 0x75, 0x4c, 0xbb, 0x55, 0x77, 0x9a, 0xfa,
-	0x12, 0xba, 0x09, 0x3b, 0x1d, 0xec, 0x1e, 0xd9, 0x52, 0x41, 0xbd, 0xd9, 0x7c, 0x46, 0x3a, 0xd8,
-	0xb5, 0x8e, 0x4d, 0xdb, 0xd2, 0x4b, 0x42, 0x9b, 0xe4, 0x25, 0x5d, 0xbb, 0x8e, 0xcd, 0x86, 0xbe,
-	0x8c, 0xb6, 0x60, 0x5d, 0x21, 0xa6, 0xdb, 0x6a, 0xd5, 0xdb, 0x96, 0xbe, 0x22, 0x14, 0x5a, 0x8e,
-	0x99, 0xee, 0x57, 0x36, 0x3c, 0x40, 0x8b, 0xb9, 0x88, 0xee, 0xc0, 0xad, 0x96, 0x63, 0x62, 0x57,
-	0x99, 0x62, 0x39, 0xdd, 0x5e, 0xbd, 0x6d, 0xce, 0x3b, 0xb3, 0x0e, 0x15, 0x51, 0x44, 0x8e, 0x1c,
-	0xbb, 0x69, 0xe9, 0x9a, 0xa8, 0x0e, 0x2d, 0xc7, 0x52, 0xab, 0x82, 0x58, 0x1d, 0x65, 0xb4, 0xa2,
-	0xd1, 0x86, 0xad, 0x85, 0xcc, 0x13, 0x9b, 0xb8, 0xd8, 0x79, 0xec, 0xb4, 0xeb, 0x4d, 0xd2, 0xb2,
-	0x2d, 0xa7, 0x7e, 0x51, 0xc4, 0x2a, 0x50, 0xaa, 0x1f, 0x5b, 0x8e, 0xab, 0x6b, 0xe2, 0xf3, 0x89,
-	0x63, 0xd9, 0xae, 0x5e, 0x30, 0xbe, 0xd1, 0x54, 0x59, 0x99, 0xcf, 0x9e, 0x0f, 0xe1, 0x03, 0x6c,
-	0x9b, 0x2e, 0x96, 0x45, 0xcf, 0xb2, 0x9f, 0x08, 0xd7, 0x2f, 0x3e, 0x86, 0x6e, 0xab, 0x8e, 0x7b,
-	0xd2, 0x3d, 0x5d, 0x43, 0xcb, 0x50, 0xe8, 0x98, 0xf9, 0xe0, 0x8b, 0xf2, 0xa8, 0x17, 0xd1, 0x2a,
-	0xac, 0x3c, 0xb1, 0x1b, 0x8e, 0xd9, 0xb4, 0xf5, 0x25, 0x51, 0x4f, 0xdd, 0x5e, 0xc3, 0xc6, 0xc4,
-	0x3d, 0xee, 0x59, 0xae, 0x8b, 0x53, 0xfd, 0x7a, 0x09, 0xed, 0xc0, 0xb6, 0xa2, 0x38, 0xed, 0x3c,
-	0x61, 0xd9, 0xf8, 0x31, 0xac, 0xcf, 0xbc, 0xb4, 0xa8, 0x0a, 0x2b, 0xd1, 0x69, 0x4c, 0x13, 0x96,
-	0x54, 0x35, 0xd9, 0x31, 0x64, 0x4b, 0x51, 0xf8, 0x4f, 0xc2, 0x30, 0xe1, 0xb2, 0xa6, 0x14, 0xb0,
-	0x5a, 0x18, 0x78, 0x3a, 0x92, 0x4c, 0xfb, 0x6a, 0xb4, 0x0b, 0x2b, 0x59, 0x13, 0xab, 0xa5, 0x4d,
-	0x6c, 0x06, 0x20, 0x04, 0xc5, 0x49, 0xec, 0xcb, 0x6e, 0xab, 0xd2, 0xb8, 0x86, 0xc5, 0xe2, 0x70,
-	0x03, 0x54, 0x8f, 0x4b, 0x92, 0x70, 0x12, 0xf7, 0x99, 0xc1, 0xa6, 0x0d, 0xa1, 0x68, 0xc3, 0x93,
-	0x28, 0x0c, 0x12, 0x86, 0x3a, 0xb0, 0x92, 0xf5, 0x91, 0x05, 0xd9, 0x41, 0x7c, 0xfe, 0x46, 0x1d,
-	0x44, 0xce, 0x38, 0xd5, 0x70, 0xe2, 0x4c, 0x8d, 0x11, 0xc1, 0xde, 0xc5, 0x73, 0xca, 0x77, 0xb6,
-	0xe3, 0x5f, 0xb4, 0x8b, 0xb7, 0x9c, 0x3e, 0x3a, 0xaa, 0xb3, 0x1a, 0xc6, 0x2c, 0x49, 0x44, 0xab,
-	0xd8, 0xcf, 0x42, 0x58, 0x92, 0x9d, 0x95, 0xc4, 0x3b, 0x0a, 0x46, 0x0f, 0x01, 0x12, 0x4e, 0x63,
-	0x2e, 0x9b, 0x9f, 0x74, 0x02, 0xda, 0xcd, 0x0c, 0xcc, 0x66, 0xcb, 0x5a, 0x2f, 0x9b, 0x2d, 0x71,
-	0x45, 0x72, 0x8b, 0x35, 0xb2, 0x40, 0x1f, 0xd1, 0x84, 0x93, 0x49, 0xe4, 0x89, 0xfe, 0x54, 0x2a,
-	0x28, 0x5e, 0xaa, 0x60, 0x43, 0xc8, 0x1c, 0x4b, 0x11, 0x01, 0x1a, 0xff, 0x28, 0x2c, 0x0e, 0x1d,
-	0xb9, 0xe8, 0xdd, 0x83, 0x12, 0x8b, 0xe3, 0x30, 0x4e, 0x67, 0x0e, 0x94, 0x69, 0x8e, 0xa3, 0x7e,
-	0xad, 0x2b, 0xa7, 0x5a, 0xac, 0x18, 0x50, 0x77, 0x3e, 0xce, 0x57, 0x19, 0xac, 0xe6, 0x42, 0x8d,
-	0x26, 0xb0, 0x95, 0x36, 0x9e, 0xec, 0x39, 0x0b, 0xb8, 0x2a, 0xb8, 0xea, 0x35, 0x74, 0xde, 0x52,
-	0xfd, 0xb9, 0x53, 0xe9, 0x09, 0xdb, 0x42, 0xa3, 0x7a, 0xc6, 0x93, 0x59, 0xc0, 0x68, 0xc2, 0xe6,
-	0x1c, 0x0f, 0xda, 0x83, 0xaa, 0xe8, 0x42, 0xcc, 0x06, 0xb1, 0x9f, 0xd8, 0xed, 0xde, 0xdc, 0x45,
-	0xbf, 0x09, 0x3b, 0x76, 0xdb, 0x22, 0xee, 0x11, 0xe9, 0x3a, 0xed, 0xc7, 0x4d, 0x9b, 0x1c, 0xf7,
-	0x44, 0x7d, 0x6e, 0x9b, 0xb6, 0xae, 0x19, 0xdf, 0x16, 0x2e, 0x9e, 0xeb, 0x94, 0xb3, 0x88, 0xc0,
-	0xda, 0x4c, 0xbb, 0xae, 0xc9, 0xe8, 0x7d, 0xf9, 0xb6, 0x59, 0x9a, 0xeb, 0xed, 0xf1, 0x8c, 0x42,
-	0x74, 0x03, 0xca, 0x7e, 0x42, 0x06, 0xa2, 0x28, 0xa6, 0x63, 0xde, 0x8a, 0x9f, 0x1c, 0x89, 0x25,
-	0xda, 0x03, 0x91, 0x50, 0x27, 0xfe, 0xc8, 0xe7, 0x67, 0x32, 0x79, 0x0a, 0xf8, 0x1c, 0x40, 0x75,
-	0xd8, 0x54, 0x07, 0x41, 0x58, 0xa0, 0xda, 0x73, 0x19, 0xfb, 0xd5, 0x83, 0x1b, 0x0b, 0x09, 0x66,
-	0xa5, 0xbf, 0x4e, 0xf0, 0xba, 0x92, 0xb0, 0x03, 0xd9, 0xb0, 0x8b, 0xf7, 0x2d, 0x1b, 0xb9, 0x38,
-	0x1d, 0xca, 0x86, 0xa2, 0x84, 0x21, 0x85, 0x7a, 0x74, 0xb8, 0x38, 0x13, 0x2d, 0x2f, 0xce, 0x44,
-	0xc6, 0x9f, 0x34, 0xd8, 0x79, 0xc5, 0xb5, 0xfc, 0xee, 0xc3, 0x37, 0xe7, 0x42, 0xe1, 0x72, 0x17,
-	0x4a, 0x17, 0xb8, 0xf0, 0x3b, 0x0d, 0xf6, 0x5e, 0xb7, 0x29, 0x7a, 0x1f, 0x80, 0xc7, 0x34, 0x48,
-	0xfa, 0xb1, 0x1f, 0xa9, 0x72, 0x51, 0xc1, 0x39, 0x44, 0xd0, 0x73, 0x73, 0x4e, 0x41, 0x9e, 0x55,
-	0x0e, 0x41, 0x3f, 0x82, 0x92, 0x18, 0x86, 0xc4, 0x7c, 0x2e, 0x02, 0x70, 0xf7, 0x92, 0x00, 0x88,
-	0xd9, 0xc8, 0x09, 0x06, 0x21, 0x56, 0x52, 0xc6, 0x5f, 0x35, 0x28, 0x67, 0x18, 0xfa, 0x62, 0xa6,
-	0x2a, 0x69, 0x97, 0x9d, 0x79, 0xae, 0x28, 0x7d, 0x26, 0x06, 0x7e, 0x2f, 0x5f, 0xcd, 0x5e, 0x23,
-	0xb7, 0xc2, 0xd2, 0x2c, 0x41, 0xb0, 0x24, 0xac, 0x48, 0xe7, 0x61, 0xf9, 0x3d, 0xe7, 0xef, 0xd2,
-	0x82, 0xbf, 0xb7, 0x60, 0x35, 0x9b, 0xa0, 0x72, 0x99, 0x95, 0x42, 0x3d, 0x3a, 0x3c, 0xf8, 0x7b,
-	0x11, 0x96, 0x55, 0xc4, 0xd1, 0x6f, 0x35, 0xa8, 0x4c, 0xcb, 0x00, 0x7a, 0xc3, 0x3f, 0x4c, 0xd3,
-	0x9f, 0x47, 0xbb, 0xf7, 0xdf, 0x5c, 0x40, 0x55, 0x18, 0xe3, 0xa3, 0x5f, 0xfe, 0xed, 0x9f, 0xbf,
-	0x2e, 0xdc, 0x36, 0x6e, 0xe6, 0x7e, 0x7f, 0x2a, 0xb1, 0x47, 0x71, 0xc6, 0xfc, 0x48, 0xfb, 0x18,
-	0x7d, 0xa3, 0xc1, 0xf5, 0x8b, 0x9e, 0x12, 0xf4, 0xe8, 0x92, 0x2d, 0x5f, 0xf3, 0x6b, 0x6e, 0xf7,
-	0xbd, 0x4c, 0x36, 0xf7, 0x63, 0xb4, 0xe6, 0x66, 0x3f, 0x46, 0x8d, 0x07, 0xd2, 0xb6, 0xef, 0x1b,
-	0x1f, 0x2d, 0xda, 0x96, 0x13, 0x98, 0x31, 0xf3, 0x57, 0x1a, 0xa0, 0xc5, 0x7a, 0x8a, 0xbe, 0xb8,
-	0x42, 0x09, 0x56, 0x26, 0x3e, 0xbc, 0x72, 0xf1, 0x36, 0xae, 0xdd, 0xd3, 0xee, 0x6b, 0x87, 0x2f,
-	0xe1, 0x83, 0x7e, 0x38, 0x7e, 0xbd, 0x96, 0xc3, 0x55, 0x75, 0xfc, 0x1d, 0x91, 0x78, 0x1d, 0xed,
-	0x6b, 0x33, 0xe5, 0x1e, 0x86, 0xe2, 0x66, 0xd6, 0xc2, 0x78, 0xb8, 0x3f, 0x64, 0x81, 0x4c, 0xcb,
-	0x7d, 0x45, 0xa2, 0x91, 0x9f, 0xbc, 0xe2, 0xef, 0xf5, 0x97, 0x0a, 0xf8, 0x97, 0xa6, 0x9d, 0x2c,
-	0x4b, 0x91, 0x4f, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x29, 0x57, 0xc0, 0xb5, 0xef, 0x16, 0x00,
-	0x00,
+	// 2267 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xbf, 0x73, 0xdb, 0xc8,
+	0xf5, 0x37, 0x48, 0x51, 0x22, 0x9f, 0x7e, 0x41, 0x2b, 0xdf, 0x09, 0x96, 0x75, 0x67, 0x1b, 0x9e,
+	0x3b, 0xfb, 0xeb, 0xef, 0x0d, 0x65, 0xeb, 0x6e, 0xee, 0xce, 0xbe, 0xc4, 0x39, 0x0a, 0x80, 0x4c,
+	0xcc, 0x90, 0x04, 0x67, 0x49, 0xd9, 0xf1, 0x35, 0x3b, 0x2b, 0x62, 0x49, 0x61, 0x42, 0x02, 0x08,
+	0x00, 0x3a, 0x96, 0xcb, 0xfc, 0x03, 0x29, 0x92, 0x49, 0x97, 0x2a, 0x57, 0x67, 0x52, 0xa7, 0xb9,
+	0x34, 0x69, 0xd2, 0xa4, 0x48, 0x97, 0x2a, 0x45, 0xca, 0xfc, 0x01, 0x99, 0x49, 0x93, 0xd9, 0x5d,
+	0x80, 0x04, 0x49, 0xd9, 0xb2, 0x35, 0xb9, 0x99, 0x74, 0xdc, 0xcf, 0x7b, 0x9f, 0xb7, 0x6f, 0xdf,
+	0x3e, 0xbe, 0x7d, 0x0f, 0x70, 0x7f, 0x10, 0x04, 0x83, 0x21, 0xdb, 0xef, 0x0d, 0x83, 0xb1, 0xbb,
+	0x1f, 0x87, 0x8c, 0xf5, 0x4e, 0xf7, 0x5f, 0x3c, 0x08, 0x1f, 0x9c, 0xb0, 0x84, 0x3e, 0x90, 0x30,
+	0x91, 0x70, 0x35, 0x8c, 0x82, 0x24, 0x40, 0x1f, 0x48, 0x46, 0x55, 0x88, 0xaa, 0xa9, 0x68, 0xc2,
+	0xd8, 0xdd, 0x4b, 0x0d, 0xd2, 0xd0, 0xdb, 0xa7, 0xbe, 0x1f, 0x24, 0x34, 0xf1, 0x02, 0x3f, 0x96,
+	0xe4, 0xdd, 0xdb, 0xa9, 0x74, 0x18, 0xf8, 0x83, 0x68, 0xec, 0xfb, 0x9e, 0x3f, 0xd8, 0x0f, 0x42,
+	0x16, 0xcd, 0x28, 0x5d, 0x4b, 0x95, 0xc4, 0xea, 0x64, 0xdc, 0xdf, 0xa7, 0xfe, 0x59, 0x2a, 0xfa,
+	0x70, 0x5e, 0xe4, 0x8e, 0x25, 0x37, 0x95, 0x5f, 0x9f, 0x97, 0xb3, 0x51, 0x98, 0x64, 0xe4, 0x1b,
+	0xf3, 0xc2, 0xc4, 0x1b, 0xb1, 0x38, 0xa1, 0xa3, 0x30, 0x55, 0xd8, 0x49, 0x15, 0xa2, 0xb0, 0xb7,
+	0x1f, 0x27, 0x34, 0x19, 0xa7, 0x1e, 0xe9, 0xbf, 0x55, 0x40, 0xc5, 0xac, 0x17, 0x0c, 0x7c, 0xef,
+	0x15, 0xc3, 0xec, 0xa7, 0x63, 0x16, 0x27, 0xa8, 0x0e, 0xcb, 0xbd, 0xc0, 0xef, 0x7b, 0x03, 0x4d,
+	0xb9, 0xa9, 0xdc, 0x5d, 0x3d, 0xb8, 0x5f, 0x7d, 0x63, 0x64, 0xaa, 0xa9, 0x01, 0xee, 0xad, 0x21,
+	0x78, 0x38, 0xe5, 0x23, 0x0b, 0x4a, 0x74, 0xec, 0x7a, 0x81, 0x56, 0x10, 0x86, 0xf6, 0xdf, 0xde,
+	0x50, 0x8d, 0xd3, 0xb0, 0x64, 0xeb, 0xbf, 0x53, 0xe0, 0x7a, 0x23, 0xf0, 0x07, 0x58, 0x06, 0xf6,
+	0x7f, 0xdf, 0xe1, 0xef, 0x14, 0xb8, 0xd6, 0x49, 0x22, 0x46, 0x47, 0xe7, 0xb9, 0xdb, 0x07, 0x35,
+	0xce, 0x84, 0x64, 0xc6, 0xf1, 0x87, 0x17, 0xec, 0x37, 0x6f, 0x73, 0x7a, 0x82, 0xfa, 0x15, 0xbc,
+	0x39, 0x31, 0x2a, 0x21, 0xf4, 0x11, 0xac, 0x0b, 0x77, 0xf8, 0x1e, 0x09, 0xf3, 0x13, 0x71, 0xa8,
+	0xb5, 0xfa, 0x15, 0xbc, 0x26, 0x60, 0x43, 0xa2, 0x87, 0xdb, 0xb0, 0x35, 0x75, 0x27, 0x92, 0x3e,
+	0xea, 0x7f, 0x50, 0x60, 0xf7, 0xf5, 0xbb, 0xfd, 0x17, 0x23, 0xfe, 0x7f, 0xa0, 0xc6, 0x9e, 0x3f,
+	0x18, 0x32, 0x32, 0x4e, 0x12, 0x16, 0x51, 0xbf, 0xc7, 0x84, 0x9f, 0x65, 0xbc, 0x29, 0xf1, 0xe3,
+	0x0c, 0x46, 0x77, 0x60, 0xd3, 0xf3, 0x13, 0x16, 0x79, 0x23, 0x12, 0xb1, 0x78, 0x3c, 0x4c, 0x62,
+	0xad, 0x28, 0x34, 0x37, 0x52, 0x18, 0x4b, 0x54, 0xff, 0x67, 0x05, 0xb6, 0x16, 0x7d, 0xfe, 0x06,
+	0xca, 0xcc, 0xef, 0x05, 0xae, 0xe7, 0x4b, 0xaf, 0x37, 0x0e, 0x1e, 0xbf, 0xab, 0xd7, 0x55, 0x71,
+	0xcb, 0x56, 0x6a, 0x05, 0x4f, 0xec, 0xa1, 0x7b, 0xb0, 0x15, 0xd3, 0x51, 0x38, 0x64, 0x24, 0xa2,
+	0x09, 0x23, 0xa7, 0x2c, 0x4a, 0x5e, 0x89, 0x63, 0x94, 0xf0, 0xa6, 0x14, 0x60, 0x9a, 0xb0, 0x3a,
+	0x87, 0x51, 0x15, 0xb6, 0xd3, 0x6b, 0x39, 0xa5, 0xbe, 0xcf, 0x86, 0xa4, 0x17, 0x8c, 0xfd, 0x44,
+	0x5b, 0x11, 0xda, 0x5b, 0xf2, 0x6a, 0xa4, 0xc4, 0xe0, 0x02, 0xd4, 0x85, 0x3b, 0xcc, 0xa7, 0x27,
+	0x43, 0x46, 0x62, 0x16, 0x52, 0x61, 0x3f, 0x9a, 0x3a, 0x46, 0x42, 0x16, 0x65, 0x96, 0xb4, 0x35,
+	0x11, 0x8e, 0xdb, 0x52, 0xbd, 0x93, 0x6a, 0xe7, 0x4e, 0xd1, 0x66, 0x51, 0x6a, 0x1a, 0xdd, 0x86,
+	0xf5, 0x21, 0xf5, 0x07, 0x63, 0x3a, 0x60, 0xa4, 0x17, 0xb8, 0x4c, 0x84, 0xb2, 0x82, 0xd7, 0x32,
+	0xd0, 0x08, 0x5c, 0x86, 0x7e, 0x00, 0xbb, 0x74, 0x98, 0xb0, 0xc8, 0xa7, 0x89, 0xf7, 0x82, 0x91,
+	0x19, 0x42, 0xac, 0xa1, 0x9b, 0xc5, 0xbb, 0x15, 0xac, 0xe5, 0x34, 0x1a, 0x39, 0x72, 0xcc, 0xaf,
+	0x76, 0x44, 0x5f, 0x92, 0x9c, 0x3c, 0xd6, 0x96, 0x64, 0x4c, 0x46, 0xf4, 0x65, 0x2d, 0x07, 0x73,
+	0xd5, 0x30, 0x0a, 0xfa, 0xd4, 0xf7, 0x92, 0x33, 0xd2, 0xf7, 0xb8, 0x48, 0x2b, 0xc9, 0x2c, 0x98,
+	0xe0, 0x47, 0x02, 0x46, 0xc7, 0xb0, 0x29, 0x2f, 0x4a, 0xa6, 0xf5, 0xcb, 0x24, 0xd6, 0x96, 0x6f,
+	0x16, 0xef, 0xae, 0x1e, 0x7c, 0x72, 0xd1, 0x9f, 0x47, 0x00, 0x86, 0x24, 0xe1, 0x8d, 0x38, 0xbf,
+	0x8c, 0xd1, 0x17, 0xa0, 0xa5, 0x51, 0xfe, 0x59, 0x10, 0xb9, 0x84, 0x57, 0x50, 0x12, 0xf4, 0xfb,
+	0x31, 0x4b, 0x62, 0xad, 0x2c, 0x3c, 0x79, 0x4f, 0xca, 0x9f, 0x05, 0x91, 0xdb, 0xf5, 0x46, 0xcc,
+	0x91, 0x42, 0xf4, 0x19, 0xbc, 0x9f, 0x27, 0x8a, 0xb4, 0x76, 0x19, 0x4f, 0xe3, 0x4d, 0x41, 0xbb,
+	0x3a, 0xa5, 0x19, 0x13, 0x19, 0xfa, 0x1a, 0xf6, 0x52, 0x16, 0x1d, 0x27, 0xc1, 0x88, 0x26, 0x5e,
+	0x8f, 0x84, 0x63, 0xbf, 0x97, 0x8c, 0x45, 0xd5, 0xd7, 0x56, 0x05, 0x77, 0x57, 0xea, 0xd4, 0x32,
+	0x95, 0xf6, 0x54, 0x03, 0x7d, 0x0d, 0xbb, 0x59, 0x5a, 0x84, 0x8c, 0xfe, 0x84, 0x45, 0xc4, 0xf5,
+	0x68, 0xe4, 0xbd, 0x92, 0x7c, 0x95, 0xf3, 0x0f, 0x0b, 0x9a, 0x82, 0xd3, 0x63, 0x75, 0xa4, 0x92,
+	0x39, 0xd5, 0x41, 0x8f, 0xe1, 0x5a, 0x8e, 0x32, 0x31, 0x23, 0xd3, 0x71, 0x8b, 0x5f, 0x94, 0x30,
+	0xb0, 0x93, 0x53, 0x4a, 0xad, 0xc8, 0xc4, 0xec, 0x03, 0xca, 0xf3, 0xd3, 0x82, 0xb0, 0x2d, 0x0a,
+	0xc2, 0x17, 0x17, 0x5f, 0xc6, 0x9c, 0x3b, 0x69, 0x5d, 0xd8, 0x72, 0xe7, 0x21, 0xd4, 0x82, 0xf2,
+	0x88, 0x25, 0xd4, 0xa5, 0x09, 0xd5, 0x2a, 0xc2, 0xfa, 0xc1, 0xdb, 0xff, 0x71, 0x9b, 0x29, 0x13,
+	0x4f, 0x6c, 0xa0, 0xab, 0x50, 0x1a, 0x05, 0x2e, 0x1b, 0x6a, 0xeb, 0x22, 0xe5, 0xe5, 0x02, 0xdd,
+	0x82, 0xb5, 0x71, 0xcc, 0x08, 0xf3, 0x4f, 0x79, 0xb1, 0x71, 0xb5, 0x0d, 0x71, 0x03, 0xab, 0xe3,
+	0x98, 0x59, 0x29, 0xa4, 0xff, 0x4a, 0x81, 0xf5, 0x99, 0x0a, 0x80, 0x34, 0xb8, 0x6a, 0xb5, 0x0c,
+	0xc7, 0xb4, 0x5b, 0x4f, 0xc8, 0x71, 0xab, 0xd3, 0xb6, 0x0c, 0xfb, 0xc8, 0xb6, 0x4c, 0xf5, 0x0a,
+	0x5a, 0x83, 0x72, 0xc3, 0x6e, 0x59, 0x35, 0xfc, 0xe0, 0x73, 0x55, 0x41, 0x65, 0x58, 0x3a, 0x6a,
+	0xd4, 0x0c, 0xb5, 0x80, 0x2a, 0x50, 0x6a, 0x1e, 0x37, 0x6a, 0xcf, 0xd4, 0x22, 0x5a, 0x81, 0x62,
+	0xad, 0x89, 0xd5, 0x25, 0x04, 0xb0, 0x5c, 0x6b, 0x62, 0xf2, 0xec, 0x50, 0x2d, 0x71, 0x9e, 0xf3,
+	0xe4, 0x09, 0x71, 0xda, 0xc7, 0x1d, 0x75, 0x19, 0xed, 0xc2, 0xfb, 0x9d, 0xb6, 0x65, 0xfd, 0x98,
+	0x3c, 0xb3, 0xbb, 0x75, 0x52, 0xb7, 0x6a, 0xa6, 0x85, 0xc9, 0xe1, 0xf3, 0xae, 0xa5, 0xae, 0x70,
+	0x7a, 0xb3, 0xfd, 0xa9, 0x5a, 0xd6, 0x7f, 0xaf, 0x80, 0xf6, 0xba, 0x78, 0xf2, 0xbf, 0xf0, 0x1b,
+	0xd2, 0x44, 0x11, 0x87, 0x7c, 0x7d, 0x8a, 0xdc, 0x83, 0xad, 0x91, 0x37, 0x9f, 0x1a, 0x69, 0x5d,
+	0x1b, 0x79, 0xb3, 0xe9, 0xc0, 0x75, 0xe9, 0xcb, 0x39, 0xdd, 0xe2, 0xe4, 0xff, 0x9e, 0xd7, 0xd5,
+	0xff, 0x5d, 0x81, 0xed, 0x73, 0x2e, 0x09, 0x8d, 0x40, 0x15, 0xb5, 0x9c, 0xf6, 0x44, 0x4a, 0x25,
+	0x67, 0x21, 0x4b, 0x6b, 0xf5, 0xe1, 0xbb, 0x5f, 0x79, 0xd5, 0x9e, 0x9a, 0xea, 0x9e, 0x85, 0x0c,
+	0x6f, 0x7a, 0xb3, 0x00, 0x7a, 0x0c, 0x7b, 0x9e, 0xef, 0x8e, 0xe3, 0x24, 0x3a, 0x23, 0x3e, 0xf5,
+	0x7a, 0xb1, 0xa8, 0x6c, 0x24, 0xe8, 0x13, 0xd9, 0x05, 0x70, 0xef, 0xd7, 0xb1, 0x96, 0xe9, 0xb4,
+	0xb8, 0x0a, 0xaf, 0x6d, 0x4e, 0x5f, 0xa4, 0x01, 0x7a, 0x01, 0xdb, 0x23, 0xaf, 0x17, 0x05, 0xe1,
+	0x69, 0xe0, 0x33, 0xe2, 0x7a, 0x71, 0x22, 0xde, 0xaf, 0x25, 0xe1, 0xb1, 0x75, 0x09, 0x8f, 0x9b,
+	0x13, 0x6b, 0x66, 0x6a, 0x0c, 0xa3, 0xd1, 0x02, 0x86, 0x12, 0xd8, 0x0e, 0x22, 0x6f, 0xe0, 0xf9,
+	0x74, 0x48, 0x46, 0xcc, 0xf5, 0xa8, 0x8c, 0x54, 0x49, 0xec, 0x6b, 0x5e, 0x62, 0x5f, 0x27, 0xb5,
+	0xd6, 0xe4, 0xc6, 0x44, 0xac, 0xb6, 0x82, 0x79, 0x08, 0xbd, 0x82, 0xf7, 0xf8, 0xc3, 0x13, 0xf1,
+	0xcc, 0x27, 0x2e, 0x7b, 0xe1, 0xf5, 0x98, 0xdc, 0x77, 0x59, 0xec, 0x7b, 0x74, 0x89, 0x7d, 0x71,
+	0x66, 0xcf, 0x14, 0xe6, 0xc4, 0xce, 0xdb, 0xd1, 0x22, 0x88, 0x0e, 0xce, 0xd9, 0xdb, 0xa7, 0x23,
+	0x26, 0x9e, 0xcd, 0xca, 0x02, 0xa7, 0x45, 0x47, 0x0c, 0x7d, 0x02, 0x68, 0x1a, 0x25, 0x5e, 0xcf,
+	0x85, 0xb3, 0x65, 0x41, 0x50, 0x27, 0xc7, 0xf3, 0x46, 0x72, 0x87, 0xdb, 0xb0, 0x1e, 0x9c, 0xf4,
+	0xc7, 0x71, 0x8f, 0x26, 0xcc, 0x25, 0x9e, 0x2b, 0x4a, 0x4d, 0x11, 0xaf, 0x4d, 0x41, 0xdb, 0x45,
+	0x37, 0x60, 0x55, 0xbe, 0xdd, 0x49, 0x10, 0x7a, 0x3d, 0x0d, 0x84, 0x2d, 0x10, 0x50, 0x97, 0x23,
+	0xfa, 0x9f, 0x14, 0xd8, 0x9c, 0x4b, 0x3b, 0x74, 0x13, 0xf6, 0xec, 0x56, 0xd7, 0xc2, 0x35, 0xa3,
+	0x6b, 0x3b, 0x2d, 0xd2, 0x7d, 0xde, 0xb6, 0xe6, 0x8a, 0xc5, 0x06, 0x80, 0x69, 0x77, 0x8c, 0xe3,
+	0x4e, 0xc7, 0x76, 0x5a, 0xaa, 0x82, 0x54, 0x58, 0x6b, 0x63, 0xab, 0x63, 0xb5, 0xba, 0x35, 0x4e,
+	0x51, 0x0b, 0x5c, 0xa3, 0x5d, 0x77, 0x5a, 0x16, 0x31, 0x6a, 0x8d, 0x86, 0x5a, 0x44, 0xeb, 0x50,
+	0x79, 0xea, 0xd8, 0x86, 0xd5, 0xac, 0xd9, 0x0d, 0x75, 0x09, 0x5d, 0x87, 0x9d, 0x36, 0x76, 0x8e,
+	0x2c, 0x61, 0xa0, 0xd6, 0x68, 0x3c, 0x27, 0x6d, 0xec, 0x98, 0xc7, 0x86, 0x65, 0xaa, 0x25, 0x6e,
+	0x4d, 0xe8, 0x92, 0x8e, 0x55, 0xc3, 0x46, 0x5d, 0x5d, 0x46, 0x5b, 0xb0, 0x2e, 0x11, 0xc3, 0x69,
+	0x36, 0x6b, 0x2d, 0x53, 0x5d, 0xe1, 0x06, 0x4d, 0xdb, 0x48, 0xf7, 0x2b, 0xeb, 0x2e, 0xa0, 0xc5,
+	0x5c, 0x44, 0xb7, 0xe1, 0x46, 0xd3, 0x36, 0xb0, 0x23, 0x5d, 0x31, 0xed, 0x4e, 0xb7, 0xd6, 0x32,
+	0xe6, 0x0f, 0xb3, 0x0e, 0x15, 0x5e, 0xf7, 0x8e, 0x6c, 0xab, 0x61, 0xaa, 0x0a, 0x2f, 0x68, 0x4d,
+	0xdb, 0x94, 0xab, 0x02, 0x5f, 0x1d, 0x65, 0xb2, 0xa2, 0xde, 0x82, 0xad, 0x85, 0xcc, 0xe3, 0x9b,
+	0x38, 0xd8, 0x7e, 0x62, 0xb7, 0x6a, 0x0d, 0xd2, 0xb4, 0x4c, 0xbb, 0x76, 0x5e, 0xc4, 0x2a, 0x50,
+	0xaa, 0x1d, 0x9b, 0xb6, 0xa3, 0x2a, 0xfc, 0xe7, 0x53, 0xdb, 0xb4, 0x1c, 0xb5, 0xa0, 0x7f, 0xab,
+	0xc8, 0xb2, 0x32, 0x9f, 0x3d, 0x1f, 0xc1, 0x2d, 0x6c, 0x19, 0x0e, 0x16, 0x75, 0xda, 0xb4, 0x9e,
+	0xf2, 0xa3, 0x9f, 0x7f, 0x0d, 0x9d, 0x66, 0x0d, 0x77, 0xc5, 0xf1, 0x54, 0x05, 0x2d, 0x43, 0xa1,
+	0x6d, 0xe4, 0x83, 0xcf, 0x2b, 0xba, 0x5a, 0x44, 0xab, 0xb0, 0xf2, 0xd4, 0xaa, 0xdb, 0x46, 0xc3,
+	0x52, 0x97, 0xf8, 0x13, 0xe0, 0x74, 0xeb, 0x16, 0x26, 0xce, 0x71, 0xd7, 0x74, 0x1c, 0x9c, 0xda,
+	0x57, 0x4b, 0x68, 0x07, 0xb6, 0xa5, 0xc4, 0x6e, 0xe5, 0x05, 0xcb, 0xfa, 0x8f, 0x60, 0x7d, 0xa6,
+	0x19, 0x41, 0x1a, 0xac, 0x84, 0xa7, 0x11, 0x8d, 0x59, 0xac, 0x29, 0xa2, 0xa9, 0xca, 0x96, 0xfc,
+	0xad, 0x3a, 0x09, 0x82, 0x38, 0x11, 0x35, 0xa5, 0x80, 0xe5, 0x42, 0xc7, 0x93, 0xa9, 0x6d, 0x32,
+	0x7a, 0xa0, 0x5d, 0x58, 0xc9, 0xfa, 0x7c, 0x25, 0xed, 0xf3, 0x33, 0x00, 0x21, 0x28, 0x8e, 0x23,
+	0x4f, 0x14, 0xee, 0x4a, 0xfd, 0x0a, 0xe6, 0x8b, 0xc3, 0x0d, 0x90, 0x63, 0x00, 0x89, 0x83, 0x71,
+	0xd4, 0x63, 0x3a, 0x9b, 0xf4, 0xcc, 0x7c, 0x52, 0x89, 0xc3, 0xc0, 0x8f, 0x19, 0x6a, 0xc3, 0x4a,
+	0xd6, 0x6a, 0x17, 0x44, 0x93, 0xf5, 0xf9, 0x5b, 0x35, 0x59, 0x39, 0xe7, 0x64, 0x4f, 0x8e, 0x33,
+	0x33, 0x7a, 0x08, 0x7b, 0xe7, 0x8f, 0x72, 0xdf, 0xdb, 0x8e, 0x7f, 0x56, 0xce, 0xdf, 0x72, 0xf2,
+	0xe8, 0xc8, 0xe6, 0x73, 0x10, 0xb1, 0x38, 0xe6, 0xdd, 0x74, 0x2f, 0x0b, 0x61, 0x49, 0x34, 0x9f,
+	0x02, 0x6f, 0x4b, 0x18, 0x3d, 0x04, 0x88, 0x13, 0x1a, 0x25, 0xa2, 0x3f, 0x4c, 0x87, 0xc4, 0xdd,
+	0xcc, 0xc1, 0x6c, 0xfc, 0xae, 0x76, 0xb3, 0xf1, 0x1b, 0x57, 0x84, 0x36, 0x5f, 0x23, 0x13, 0xd4,
+	0x21, 0x8d, 0x13, 0x32, 0x0e, 0x5d, 0xde, 0xc2, 0x0b, 0x03, 0xc5, 0x0b, 0x0d, 0x6c, 0x70, 0xce,
+	0xb1, 0xa0, 0x70, 0x50, 0xff, 0x7b, 0x61, 0x71, 0x2e, 0xcb, 0x45, 0xef, 0x2e, 0x94, 0x58, 0x14,
+	0x05, 0x51, 0x3a, 0x96, 0xa1, 0xcc, 0x72, 0x14, 0xf6, 0xaa, 0x1d, 0x31, 0xf8, 0x63, 0xa9, 0x80,
+	0x3a, 0xf3, 0x71, 0xbe, 0xcc, 0xec, 0x39, 0x17, 0x6a, 0x34, 0x86, 0xad, 0xb4, 0x37, 0x67, 0x2f,
+	0x98, 0x9f, 0xc8, 0x82, 0x2b, 0x5f, 0x43, 0xfb, 0x1d, 0xcd, 0x4f, 0x0f, 0x95, 0xde, 0xb0, 0xc5,
+	0x2d, 0xca, 0x67, 0x3c, 0x9e, 0x05, 0xf4, 0x06, 0x6c, 0xce, 0xe9, 0xa0, 0x3d, 0xd0, 0x78, 0xe3,
+	0x64, 0xd4, 0x89, 0xf5, 0xd4, 0x6a, 0x75, 0xe7, 0xfe, 0xe8, 0xd7, 0x61, 0xc7, 0x6a, 0x99, 0xc4,
+	0x39, 0x22, 0x1d, 0xbb, 0xf5, 0xa4, 0x61, 0x91, 0xe3, 0x2e, 0xaf, 0xcf, 0x2d, 0xc3, 0x52, 0x15,
+	0xfd, 0xbb, 0xc2, 0xf9, 0xa3, 0xaf, 0x3c, 0x2c, 0x22, 0xb0, 0x36, 0x33, 0xd1, 0x28, 0x22, 0x7a,
+	0x5f, 0xbd, 0x6b, 0x96, 0xe6, 0xc6, 0x1f, 0x3c, 0x63, 0x10, 0x5d, 0x83, 0xb2, 0x17, 0x93, 0x3e,
+	0x2f, 0x8a, 0xe9, 0x24, 0xbc, 0xe2, 0xc5, 0x47, 0x7c, 0x89, 0xf6, 0x80, 0x27, 0xd4, 0x89, 0x37,
+	0xf4, 0x92, 0x33, 0x91, 0x3c, 0x05, 0x3c, 0x05, 0x50, 0x0d, 0x36, 0xe5, 0x45, 0x10, 0xe6, 0xcb,
+	0x09, 0x46, 0xc4, 0x7e, 0xf5, 0xe0, 0xda, 0x42, 0x82, 0x99, 0xe9, 0xd7, 0x25, 0xbc, 0x2e, 0x19,
+	0x96, 0x2f, 0x66, 0x1a, 0xfe, 0xbe, 0x65, 0x53, 0x69, 0x42, 0x07, 0xa2, 0xa1, 0x28, 0x61, 0x48,
+	0xa1, 0x2e, 0x1d, 0x2c, 0x8e, 0x8d, 0xcb, 0x8b, 0x63, 0xa3, 0xfe, 0x47, 0x05, 0x76, 0x5e, 0xf3,
+	0xb7, 0xfc, 0xfe, 0xc3, 0x37, 0x77, 0x84, 0xc2, 0xc5, 0x47, 0x28, 0x9d, 0x73, 0x84, 0xdf, 0x28,
+	0xb0, 0xf7, 0xa6, 0x4d, 0xd1, 0x87, 0x00, 0x49, 0x44, 0xfd, 0xb8, 0x17, 0x79, 0xa1, 0x2c, 0x17,
+	0x15, 0x9c, 0x43, 0xb8, 0x3c, 0x37, 0x0a, 0x16, 0xc4, 0x5d, 0xe5, 0x10, 0xf4, 0x43, 0x28, 0xf1,
+	0x79, 0x31, 0xd6, 0x8a, 0x22, 0x00, 0x77, 0x2e, 0x08, 0x00, 0x1f, 0x1f, 0x6d, 0xbf, 0x1f, 0x60,
+	0xc9, 0xd2, 0xff, 0xa2, 0x40, 0x39, 0xc3, 0xd0, 0x97, 0x33, 0x55, 0x49, 0xb9, 0xe8, 0xce, 0x73,
+	0x45, 0xe9, 0x33, 0x28, 0x4f, 0x72, 0xa5, 0x70, 0x11, 0x6f, 0x85, 0xa5, 0x59, 0x82, 0x60, 0x89,
+	0x7b, 0x91, 0x7e, 0x32, 0x10, 0xbf, 0xe7, 0xce, 0xbb, 0xb4, 0x70, 0xde, 0x1b, 0xb0, 0x9a, 0x4d,
+	0x06, 0xb9, 0xcc, 0x4a, 0xa1, 0x2e, 0x1d, 0x1c, 0xfc, 0xad, 0x08, 0xcb, 0x32, 0xe2, 0xe8, 0xd7,
+	0x0a, 0x54, 0x26, 0x65, 0x00, 0xbd, 0xe5, 0x47, 0xb8, 0xc9, 0xf7, 0xb5, 0xdd, 0xfb, 0x6f, 0x4f,
+	0x90, 0x15, 0x46, 0xff, 0xf8, 0xe7, 0x7f, 0xfd, 0xc7, 0x2f, 0x0b, 0x37, 0xf5, 0xeb, 0xb9, 0x2f,
+	0xc4, 0x92, 0xf6, 0x28, 0xca, 0x94, 0x1f, 0x29, 0xf7, 0xd0, 0xb7, 0x0a, 0x5c, 0x3d, 0xef, 0x29,
+	0x41, 0x8f, 0x2e, 0xd8, 0xf2, 0x0d, 0x5f, 0x2f, 0x77, 0x3f, 0xc8, 0xb8, 0xb9, 0x6f, 0xc7, 0x55,
+	0x27, 0xfb, 0x76, 0xac, 0x3f, 0x10, 0xbe, 0xfd, 0xbf, 0xfe, 0xf1, 0xa2, 0x6f, 0x39, 0xc2, 0x8c,
+	0x9b, 0xbf, 0x50, 0x00, 0x2d, 0xd6, 0x53, 0xf4, 0xe5, 0x25, 0x4a, 0xb0, 0x74, 0xf1, 0xe1, 0xa5,
+	0x8b, 0xb7, 0x7e, 0xe5, 0xae, 0x72, 0x5f, 0x39, 0x7c, 0x05, 0xb7, 0x7a, 0xc1, 0xe8, 0xcd, 0x56,
+	0x0e, 0x57, 0xe5, 0xf5, 0xb7, 0x79, 0xe2, 0xb5, 0x95, 0x6f, 0x8c, 0x54, 0x7b, 0x10, 0xf0, 0x7f,
+	0x66, 0x35, 0x88, 0x06, 0xfb, 0x03, 0xe6, 0x8b, 0xb4, 0xdc, 0x97, 0x22, 0x1a, 0x7a, 0xf1, 0x6b,
+	0x3e, 0xf0, 0x7f, 0x25, 0x81, 0x7f, 0x29, 0xca, 0xc9, 0xb2, 0xa0, 0x7c, 0xfa, 0x9f, 0x00, 0x00,
+	0x00, 0xff, 0xff, 0x46, 0x9e, 0x44, 0xe6, 0x12, 0x18, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/cloud/talent/v4beta1/batch.pb.go b/googleapis/cloud/talent/v4beta1/batch.pb.go
index f7c59c6..aad790e 100644
--- a/googleapis/cloud/talent/v4beta1/batch.pb.go
+++ b/googleapis/cloud/talent/v4beta1/batch.pb.go
@@ -39,11 +39,13 @@
 	// The batch operation is done and no item has been successfully processed.
 	BatchOperationMetadata_FAILED BatchOperationMetadata_State = 4
 	// The batch operation is in the process of cancelling after
-	// [google.longrunning.Operation.CancelOperation] is called.
+	// [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+	// is called.
 	BatchOperationMetadata_CANCELLING BatchOperationMetadata_State = 5
 	// The batch operation is done after
-	// [google.longrunning.Operation.CancelOperation] is called. Any items
-	// processed before cancelling are returned in the response.
+	// [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+	// is called. Any items processed before cancelling are returned in the
+	// response.
 	BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 6
 )
 
@@ -189,8 +191,11 @@
 
 // Output only.
 //
-// The result of [BatchCreateJobs][] or [BatchUpdateJobs][] APIs. It's used to
-// replace
+// The result of
+// [JobService.BatchCreateJobs][google.cloud.talent.v4beta1.JobService.BatchCreateJobs]
+// or
+// [JobService.BatchUpdateJobs][google.cloud.talent.v4beta1.JobService.BatchUpdateJobs]
+// APIs. It's used to replace
 // [google.longrunning.Operation.response][google.longrunning.Operation.response]
 // in case of success.
 type JobOperationResult struct {
diff --git a/googleapis/cloud/talent/v4beta1/company.pb.go b/googleapis/cloud/talent/v4beta1/company.pb.go
index 31e9fcc..6e4cb37 100644
--- a/googleapis/cloud/talent/v4beta1/company.pb.go
+++ b/googleapis/cloud/talent/v4beta1/company.pb.go
@@ -38,7 +38,7 @@
 	// Tenant id is optional and the default tenant is used if unspecified, for
 	// example, "projects/api-test-project/companies/bar".
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// Required. The display name of the company, for example, "Google, LLC".
+	// Required. The display name of the company, for example, "Google LLC".
 	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
 	// Required. Client side company identifier, used to uniquely identify the
 	// company.
diff --git a/googleapis/cloud/talent/v4beta1/event.pb.go b/googleapis/cloud/talent/v4beta1/event.pb.go
index 7ab34da..16de450 100644
--- a/googleapis/cloud/talent/v4beta1/event.pb.go
+++ b/googleapis/cloud/talent/v4beta1/event.pb.go
@@ -219,7 +219,8 @@
 	// a CTS API request's result set, the
 	// [ClientEvent.request_id][google.cloud.talent.v4beta1.ClientEvent.request_id]
 	// should be populated.  If the VIEW happens for some other reason, the
-	// [requestId] should not be populated.
+	// [request_id][google.cloud.talent.v4beta1.ClientEvent.request_id] should
+	// not be populated.
 	//
 	// This event requires a valid recruiter and one valid ID in profiles.
 	//
diff --git a/googleapis/cloud/talent/v4beta1/filters.pb.go b/googleapis/cloud/talent/v4beta1/filters.pb.go
index 2be05b4..1bc58af 100644
--- a/googleapis/cloud/talent/v4beta1/filters.pb.go
+++ b/googleapis/cloud/talent/v4beta1/filters.pb.go
@@ -330,7 +330,7 @@
 	// Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
 	// nesting (for example, "((A AND B AND C) OR NOT D) AND E"), a maximum of 100
 	// comparisons or functions are allowed in the expression. The expression
-	// must be < 3000 bytes in length.
+	// must be < 6000 bytes in length.
 	//
 	// Sample Query:
 	// `(LOWER(driving_license)="class \"a\"" OR EMPTY(driving_license)) AND
@@ -638,9 +638,16 @@
 	// indicate the candidate's potential qualification / interest / close ability
 	// for a specific job.
 	CandidateAvailabilityFilter *CandidateAvailabilityFilter `protobuf:"bytes,16,opt,name=candidate_availability_filter,json=candidateAvailabilityFilter,proto3" json:"candidate_availability_filter,omitempty"`
-	XXX_NoUnkeyedLiteral        struct{}                     `json:"-"`
-	XXX_unrecognized            []byte                       `json:"-"`
-	XXX_sizecache               int32                        `json:"-"`
+	// Optional. Person name filter specifies person name of profiles to match on.
+	//
+	// If multiple person name filters are specified, profiles that match any
+	// person name filters are retrieved.
+	//
+	// For example, search for profiles of candidates with name "John Smith".
+	PersonNameFilters    []*PersonNameFilter `protobuf:"bytes,17,rep,name=person_name_filters,json=personNameFilters,proto3" json:"person_name_filters,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
 }
 
 func (m *ProfileQuery) Reset()         { *m = ProfileQuery{} }
@@ -766,6 +773,13 @@
 	return nil
 }
 
+func (m *ProfileQuery) GetPersonNameFilters() []*PersonNameFilter {
+	if m != nil {
+		return m.PersonNameFilters
+	}
+	return nil
+}
+
 // Input only.
 //
 // Geographic region of the search.
@@ -1697,6 +1711,54 @@
 	return false
 }
 
+// Input only.
+//
+// Filter on person name.
+type PersonNameFilter struct {
+	// Required. The person name. For example, "John Smith".
+	//
+	// Can be any combination of [PersonName.structured_name.given_name][],
+	// [PersonName.structured_name.middle_initial][],
+	// [PersonName.structured_name.family_name][], and
+	// [PersonName.formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name].
+	PersonName           string   `protobuf:"bytes,1,opt,name=person_name,json=personName,proto3" json:"person_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PersonNameFilter) Reset()         { *m = PersonNameFilter{} }
+func (m *PersonNameFilter) String() string { return proto.CompactTextString(m) }
+func (*PersonNameFilter) ProtoMessage()    {}
+func (*PersonNameFilter) Descriptor() ([]byte, []int) {
+	return fileDescriptor_89d33ae01ee514a8, []int{15}
+}
+
+func (m *PersonNameFilter) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PersonNameFilter.Unmarshal(m, b)
+}
+func (m *PersonNameFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PersonNameFilter.Marshal(b, m, deterministic)
+}
+func (m *PersonNameFilter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PersonNameFilter.Merge(m, src)
+}
+func (m *PersonNameFilter) XXX_Size() int {
+	return xxx_messageInfo_PersonNameFilter.Size(m)
+}
+func (m *PersonNameFilter) XXX_DiscardUnknown() {
+	xxx_messageInfo_PersonNameFilter.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PersonNameFilter proto.InternalMessageInfo
+
+func (m *PersonNameFilter) GetPersonName() string {
+	if m != nil {
+		return m.PersonName
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterEnum("google.cloud.talent.v4beta1.LocationFilter_TelecommutePreference", LocationFilter_TelecommutePreference_name, LocationFilter_TelecommutePreference_value)
 	proto.RegisterEnum("google.cloud.talent.v4beta1.CompensationFilter_FilterType", CompensationFilter_FilterType_name, CompensationFilter_FilterType_value)
@@ -1718,6 +1780,7 @@
 	proto.RegisterType((*ApplicationJobFilter)(nil), "google.cloud.talent.v4beta1.ApplicationJobFilter")
 	proto.RegisterType((*TimeFilter)(nil), "google.cloud.talent.v4beta1.TimeFilter")
 	proto.RegisterType((*CandidateAvailabilityFilter)(nil), "google.cloud.talent.v4beta1.CandidateAvailabilityFilter")
+	proto.RegisterType((*PersonNameFilter)(nil), "google.cloud.talent.v4beta1.PersonNameFilter")
 }
 
 func init() {
@@ -1725,133 +1788,136 @@
 }
 
 var fileDescriptor_89d33ae01ee514a8 = []byte{
-	// 2043 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0x23, 0x47,
-	0x15, 0x8e, 0x24, 0xaf, 0xd7, 0x3a, 0xb2, 0x64, 0x6d, 0xef, 0xda, 0xab, 0xd8, 0x9b, 0xac, 0x51,
-	0x12, 0x30, 0xc9, 0x22, 0x67, 0x0d, 0x04, 0x08, 0x05, 0x89, 0x2c, 0x8d, 0x59, 0xb9, 0x74, 0xcb,
-	0x58, 0xca, 0xb2, 0xa1, 0x8a, 0xa6, 0x35, 0xd3, 0x92, 0xdb, 0x3b, 0x9a, 0x9e, 0xcc, 0xb4, 0xd6,
-	0x16, 0xf0, 0xc2, 0x03, 0xfc, 0x08, 0x28, 0x5e, 0xf2, 0xce, 0x13, 0x0f, 0x54, 0xf1, 0x83, 0xf8,
-	0x1d, 0x54, 0xf7, 0xf4, 0x48, 0x33, 0xbe, 0x8c, 0x1d, 0x8a, 0x27, 0xcf, 0xb9, 0x7d, 0x7d, 0x74,
-	0x4e, 0x9f, 0x4b, 0x1b, 0xbe, 0x3f, 0xe1, 0x7c, 0xe2, 0xd0, 0x7d, 0xcb, 0xe1, 0x33, 0x7b, 0x5f,
-	0x10, 0x87, 0xba, 0x62, 0xff, 0xcd, 0x8f, 0x46, 0x54, 0x90, 0xe7, 0xfb, 0x63, 0xe6, 0x08, 0xea,
-	0x07, 0x35, 0xcf, 0xe7, 0x82, 0xa3, 0x9d, 0x50, 0xb5, 0xa6, 0x54, 0x6b, 0xa1, 0x6a, 0x4d, 0xab,
-	0x6e, 0x3f, 0xd1, 0x38, 0xc4, 0x63, 0xfb, 0xc4, 0x75, 0xb9, 0x20, 0x82, 0x71, 0x57, 0x9b, 0x6e,
-	0xff, 0x20, 0xed, 0x14, 0xe2, 0x79, 0x0e, 0xb3, 0x94, 0xbe, 0x56, 0xdf, 0x4b, 0x53, 0xb7, 0xf8,
-	0x74, 0xba, 0xd0, 0xfc, 0x20, 0x4d, 0xf3, 0x8c, 0x8f, 0xb4, 0x5a, 0xea, 0xaf, 0xf4, 0x7c, 0x3e,
-	0x66, 0x0e, 0xd5, 0xaa, 0xef, 0x6a, 0x55, 0x45, 0x8d, 0x66, 0xe3, 0x7d, 0x7b, 0xe6, 0xc7, 0x7d,
-	0x7b, 0x7a, 0x59, 0x2e, 0xd8, 0x94, 0x06, 0x82, 0x4c, 0xbd, 0x9b, 0x00, 0xce, 0x7d, 0xe2, 0x79,
-	0x8b, 0x30, 0x6e, 0x6f, 0x69, 0xb9, 0x98, 0x7b, 0x74, 0xdf, 0x26, 0x22, 0x3a, 0xb8, 0x12, 0xe7,
-	0x3b, 0x44, 0x38, 0xee, 0x44, 0x4b, 0x76, 0xe2, 0x12, 0x79, 0x1c, 0x1f, 0xdb, 0x64, 0x1e, 0x0a,
-	0xab, 0xff, 0x5a, 0x85, 0xb5, 0x63, 0x3e, 0xfa, 0x62, 0x46, 0xfd, 0x39, 0x7a, 0x04, 0xf7, 0xbe,
-	0x96, 0x1f, 0x95, 0xcc, 0x6e, 0x66, 0x2f, 0x6f, 0x86, 0x04, 0x7a, 0x02, 0x79, 0x8b, 0x4f, 0x3d,
-	0xe2, 0x32, 0x1a, 0x54, 0xb2, 0xbb, 0xb9, 0xbd, 0xbc, 0xb9, 0x64, 0xa0, 0x2f, 0xa1, 0xec, 0xf0,
-	0x30, 0xfc, 0x58, 0x27, 0xbc, 0x92, 0xdb, 0xcd, 0xed, 0x15, 0x0e, 0x3e, 0xaa, 0xa5, 0x64, 0xbc,
-	0xd6, 0xd6, 0x46, 0x47, 0xca, 0xc6, 0xdc, 0x70, 0x12, 0x74, 0x80, 0x7a, 0x50, 0x3a, 0xe3, 0x23,
-	0x6c, 0x11, 0x41, 0x27, 0xdc, 0x97, 0x47, 0xaf, 0xec, 0xe6, 0xf6, 0x4a, 0x07, 0x7b, 0xa9, 0xa8,
-	0xc7, 0x7c, 0xd4, 0x08, 0x2d, 0xe6, 0x66, 0xf1, 0x6c, 0x41, 0x48, 0x47, 0xbf, 0x80, 0x92, 0xcc,
-	0xfd, 0x4c, 0x50, 0xed, 0x67, 0xe5, 0xde, 0x6e, 0x66, 0xaf, 0x70, 0xf0, 0x61, 0x2a, 0x60, 0x23,
-	0x34, 0xd1, 0x5e, 0x16, 0xad, 0x38, 0x89, 0x0e, 0x60, 0x33, 0x0c, 0xc4, 0x1c, 0xdb, 0x2c, 0xf0,
-	0x1c, 0x32, 0xc7, 0x2e, 0x99, 0xd2, 0xa0, 0xb2, 0xaa, 0xa2, 0xf4, 0x50, 0x0b, 0x9b, 0xa1, 0xac,
-	0x2b, 0x45, 0xe8, 0x77, 0xa0, 0xd8, 0xd4, 0x0d, 0xe2, 0x31, 0xab, 0xdc, 0x57, 0xbe, 0xec, 0xdf,
-	0xe6, 0xcb, 0xc2, 0x4e, 0x3b, 0x84, 0xac, 0x2b, 0x3c, 0xf4, 0x09, 0x3c, 0xb6, 0x66, 0x81, 0xe0,
-	0x53, 0x4c, 0x84, 0xf0, 0xd9, 0x28, 0xf6, 0x8b, 0xd7, 0x54, 0x5e, 0x37, 0x43, 0x71, 0x3d, 0x92,
-	0x6a, 0xbb, 0x1a, 0x3c, 0xb4, 0x59, 0x40, 0x46, 0x0e, 0xc5, 0x81, 0x47, 0x1d, 0x07, 0x5b, 0xa7,
-	0xd4, 0x7a, 0x5d, 0xc9, 0xef, 0x66, 0xf6, 0xd6, 0xcc, 0x07, 0x5a, 0x74, 0x22, 0x25, 0x0d, 0x29,
-	0x90, 0x99, 0xa7, 0x53, 0xcf, 0xe1, 0xf3, 0x29, 0x75, 0x05, 0x96, 0xb7, 0x2b, 0xa8, 0x80, 0xca,
-	0x51, 0x7a, 0xe6, 0x8d, 0x85, 0xd1, 0x60, 0xee, 0x51, 0x73, 0x83, 0x26, 0xe8, 0x00, 0x7d, 0x00,
-	0x25, 0x87, 0xb8, 0x93, 0x19, 0x99, 0x50, 0x6c, 0x71, 0x9b, 0x06, 0x95, 0x82, 0x0a, 0x67, 0x31,
-	0xe2, 0x36, 0x24, 0x13, 0xbd, 0x02, 0xe4, 0xcd, 0x46, 0x0e, 0x0b, 0x4e, 0xb1, 0xbc, 0xd4, 0xd8,
-	0x27, 0xee, 0x84, 0x56, 0xd6, 0x55, 0x1c, 0xd3, 0x1d, 0x18, 0x44, 0x25, 0x67, 0x4a, 0x13, 0xb3,
-	0xac, 0x61, 0x24, 0x5b, 0x71, 0xd0, 0x7b, 0x50, 0xa4, 0x17, 0x96, 0x33, 0xb3, 0xa9, 0x8d, 0xcf,
-	0xf8, 0x28, 0xa8, 0x14, 0x95, 0x03, 0xeb, 0x11, 0xf3, 0x98, 0x8f, 0x82, 0xea, 0x7f, 0xf2, 0xb0,
-	0xde, 0x0f, 0x6b, 0x3f, 0xad, 0x7a, 0xae, 0xab, 0x8f, 0xec, 0xff, 0xa1, 0x3e, 0x5e, 0xc2, 0x03,
-	0x59, 0x1f, 0x82, 0x09, 0x87, 0x7e, 0xab, 0xc2, 0x3b, 0xe6, 0xa3, 0x81, 0x34, 0x8a, 0x80, 0xcf,
-	0x12, 0x74, 0xb0, 0x4c, 0x2b, 0xf5, 0x17, 0xb8, 0x2b, 0x77, 0xc0, 0x35, 0xb4, 0x51, 0x84, 0x4b,
-	0x13, 0xb4, 0xcc, 0xd7, 0x03, 0x6a, 0xcf, 0x2e, 0x45, 0xe2, 0x9e, 0x02, 0x7e, 0x96, 0x0e, 0x1c,
-	0x59, 0x69, 0xe4, 0x32, 0x4d, 0x32, 0x02, 0xd4, 0x81, 0x62, 0xf0, 0x9a, 0x39, 0xce, 0x02, 0x76,
-	0x55, 0xc1, 0xa6, 0xb7, 0x8a, 0x13, 0x69, 0xa1, 0x21, 0xd7, 0x83, 0x25, 0x11, 0xa0, 0x09, 0x6c,
-	0x9d, 0x73, 0xff, 0x35, 0xa6, 0x17, 0x1e, 0xf5, 0x19, 0x75, 0x2d, 0xba, 0xac, 0x52, 0x89, 0xfb,
-	0x3c, 0x15, 0xf7, 0x25, 0xf7, 0x5f, 0x1b, 0x0b, 0x4b, 0x7d, 0xc0, 0xa3, 0xf3, 0x6b, 0xb8, 0xe8,
-	0x18, 0xd6, 0xd5, 0xd5, 0x8d, 0xdc, 0x5e, 0x53, 0xf0, 0xdf, 0xbb, 0xf5, 0xf2, 0x6a, 0xd0, 0x82,
-	0x58, 0x7c, 0x07, 0xa8, 0x0e, 0xa5, 0x53, 0xe6, 0xab, 0xea, 0xd5, 0xce, 0xe6, 0x55, 0x29, 0x6c,
-	0x47, 0x68, 0xd1, 0x40, 0xa9, 0x1d, 0x72, 0xee, 0x7c, 0x49, 0x9c, 0x19, 0x35, 0x8b, 0xda, 0x42,
-	0xbb, 0xe3, 0x40, 0x25, 0x36, 0x4c, 0xb1, 0x1c, 0x2e, 0x0b, 0xd7, 0x40, 0xb9, 0x76, 0x90, 0xea,
-	0x5a, 0x7d, 0x69, 0xdc, 0x24, 0x8b, 0x9e, 0xb9, 0x45, 0xae, 0x63, 0x07, 0xe8, 0xcf, 0x19, 0xf8,
-	0x4e, 0xfc, 0x38, 0x3e, 0x13, 0x16, 0x9f, 0x52, 0xec, 0x72, 0x41, 0x83, 0xc5, 0xb9, 0x05, 0x75,
-	0xee, 0xa7, 0x77, 0x3d, 0xb7, 0x17, 0x82, 0x74, 0x25, 0x86, 0x3e, 0xff, 0x5d, 0x92, 0x26, 0x0e,
-	0x10, 0x83, 0xc7, 0x71, 0x37, 0x64, 0x51, 0x45, 0x87, 0x17, 0xef, 0x90, 0xee, 0xd8, 0xe1, 0xc7,
-	0x7c, 0xa4, 0xcf, 0xdc, 0x24, 0xd7, 0x70, 0x83, 0xb4, 0xce, 0xbc, 0x91, 0xd6, 0x99, 0xff, 0x08,
-	0xef, 0x58, 0xc4, 0xb5, 0x99, 0xca, 0x08, 0x79, 0x43, 0x98, 0x43, 0x46, 0xcc, 0x61, 0x62, 0x1e,
-	0x59, 0x97, 0x55, 0xaa, 0x7f, 0x9a, 0x3e, 0x3d, 0x22, 0x84, 0x7a, 0x0c, 0x40, 0xfb, 0xbb, 0x63,
-	0xdd, 0x2c, 0xac, 0xfe, 0x23, 0x07, 0xa5, 0x64, 0x37, 0x42, 0x15, 0xb8, 0x4f, 0x6c, 0xdb, 0xa7,
-	0x41, 0xa0, 0x9b, 0x5d, 0x44, 0xa2, 0xa7, 0x50, 0xf0, 0xe9, 0x44, 0x06, 0x52, 0xb6, 0xee, 0x4a,
-	0x56, 0x49, 0x21, 0x64, 0xc9, 0xbe, 0x8d, 0x9e, 0xc1, 0x7d, 0x87, 0x08, 0xec, 0xb8, 0x93, 0x4a,
-	0x4e, 0x79, 0xfd, 0x30, 0xf2, 0x5a, 0x4e, 0x90, 0x5a, 0x9b, 0x88, 0xb6, 0x3b, 0x31, 0x57, 0x1d,
-	0xf5, 0x17, 0x7d, 0x08, 0x72, 0xf0, 0x08, 0x22, 0x6b, 0x90, 0xb9, 0x78, 0xca, 0x1c, 0xb5, 0x08,
-	0x64, 0xf6, 0x32, 0xe6, 0x46, 0x24, 0x68, 0xb9, 0x1d, 0xc9, 0x46, 0x17, 0xb0, 0x25, 0xa8, 0x43,
-	0xa3, 0x21, 0xef, 0xf9, 0x74, 0x4c, 0x7d, 0x59, 0x6d, 0x6a, 0xd0, 0x97, 0x0e, 0xea, 0xdf, 0xa2,
-	0xdf, 0xd6, 0x06, 0x4b, 0xa4, 0xfe, 0x02, 0xc8, 0xdc, 0x14, 0xd7, 0xb1, 0x65, 0x38, 0x5c, 0x3a,
-	0x21, 0x82, 0xda, 0x95, 0x55, 0x35, 0x2d, 0x23, 0xb2, 0xea, 0xc3, 0xe6, 0xb5, 0x48, 0xe8, 0xbb,
-	0x50, 0x1d, 0x18, 0x6d, 0xa3, 0xd1, 0xeb, 0x74, 0x86, 0x03, 0x03, 0xf7, 0x4d, 0xe3, 0xc8, 0x30,
-	0x8d, 0x6e, 0xc3, 0xc0, 0xc3, 0xee, 0x49, 0xdf, 0x68, 0xb4, 0x8e, 0x5a, 0x46, 0xb3, 0xfc, 0x16,
-	0xaa, 0xc0, 0xa3, 0xb8, 0x9e, 0xf1, 0xeb, 0x46, 0x7b, 0xd8, 0x34, 0x9a, 0xe5, 0x0c, 0x7a, 0x0c,
-	0x0f, 0xe3, 0x92, 0x7a, 0xbb, 0xdd, 0x7b, 0x69, 0x34, 0xcb, 0xd9, 0xea, 0x9f, 0x56, 0x00, 0x5d,
-	0x5d, 0x15, 0x50, 0x17, 0x56, 0x64, 0x84, 0x55, 0xc2, 0x4a, 0xb7, 0x54, 0xd4, 0x55, 0xf3, 0x5a,
-	0xf8, 0x47, 0x4d, 0x6c, 0x85, 0x83, 0x06, 0x70, 0x6f, 0xe6, 0x32, 0x11, 0x4e, 0xb3, 0xd2, 0xc1,
-	0x2f, 0xef, 0x0c, 0xd8, 0x72, 0xc7, 0x3c, 0xc1, 0x18, 0xba, 0x4c, 0x98, 0x21, 0x18, 0x1a, 0xc2,
-	0xbd, 0x70, 0x90, 0x87, 0x97, 0xe3, 0xb3, 0xff, 0x1d, 0x35, 0x1c, 0xee, 0x21, 0x1a, 0xa2, 0xf0,
-	0x31, 0x73, 0xd5, 0xf0, 0x56, 0x03, 0x1d, 0x9f, 0x33, 0x71, 0x8a, 0x67, 0x6e, 0xe0, 0x51, 0x8b,
-	0x8d, 0x19, 0xb5, 0x71, 0x62, 0x27, 0x0b, 0x3d, 0x58, 0x51, 0xa9, 0xfc, 0x48, 0xdb, 0xc9, 0x99,
-	0xff, 0x92, 0x89, 0xd3, 0xe1, 0xd2, 0xe8, 0xca, 0x69, 0xd5, 0xbf, 0x64, 0x00, 0x96, 0x81, 0x42,
-	0x3b, 0xf0, 0xf8, 0xa8, 0xd5, 0x1e, 0x18, 0x26, 0x1e, 0xbc, 0xea, 0x5f, 0xce, 0x6c, 0x11, 0xf2,
-	0xc3, 0x6e, 0x6b, 0x80, 0x7b, 0xdd, 0xf6, 0xab, 0x72, 0x06, 0x3d, 0x84, 0x0d, 0x45, 0xd6, 0xbb,
-	0x4d, 0x5c, 0xef, 0xf4, 0x86, 0xdd, 0x41, 0x39, 0x8b, 0xb6, 0x61, 0xab, 0xde, 0xed, 0x0e, 0xeb,
-	0xed, 0xd6, 0x57, 0x46, 0x13, 0x1f, 0xd6, 0x4f, 0x8c, 0x48, 0x96, 0x93, 0xe0, 0x31, 0xd9, 0xa0,
-	0x37, 0xa8, 0xb7, 0x23, 0xe1, 0x4a, 0xf5, 0x9b, 0x15, 0x28, 0x26, 0x56, 0xd7, 0xf8, 0xfa, 0x3b,
-	0xa5, 0xe2, 0x94, 0xdb, 0xfa, 0x22, 0xdc, 0x69, 0xfd, 0xed, 0x28, 0x8b, 0xc5, 0xfa, 0x1b, 0x92,
-	0xe8, 0x73, 0x78, 0x10, 0x08, 0xe2, 0x0b, 0x6c, 0x71, 0xee, 0xdb, 0xcc, 0x25, 0x42, 0x3d, 0x10,
-	0x6e, 0x2c, 0xea, 0xb2, 0xd2, 0x6e, 0x2c, 0x95, 0xd1, 0x21, 0x6c, 0x08, 0x9f, 0xbc, 0xa1, 0x0e,
-	0x8e, 0x9e, 0x49, 0x3a, 0xef, 0x6f, 0x5f, 0x99, 0x5a, 0x4d, 0xad, 0x60, 0x96, 0x42, 0x8b, 0x88,
-	0x46, 0x9f, 0xc2, 0xdb, 0xc4, 0x71, 0xf8, 0x39, 0x66, 0x53, 0xcf, 0xa7, 0x16, 0x0b, 0x28, 0xd6,
-	0xcd, 0x48, 0xb7, 0x8a, 0x35, 0xf3, 0xb1, 0x52, 0x68, 0x45, 0xf2, 0x7a, 0x24, 0x46, 0xbf, 0x81,
-	0x75, 0x9f, 0x13, 0x1b, 0x0b, 0x9f, 0x8c, 0xc7, 0xcc, 0xd2, 0x8d, 0xe2, 0x93, 0xbb, 0xbf, 0x08,
-	0x6a, 0x26, 0x27, 0xf6, 0x20, 0xb4, 0x7e, 0xf1, 0x96, 0x59, 0xf0, 0x97, 0x24, 0xfa, 0x0c, 0x4a,
-	0x36, 0xf5, 0x88, 0x2f, 0x66, 0x3e, 0x55, 0x2b, 0xaa, 0x6a, 0x0e, 0x85, 0x83, 0xad, 0x44, 0x6c,
-	0xe4, 0x3c, 0xef, 0x8d, 0x9b, 0x64, 0xfe, 0xe2, 0x2d, 0xb3, 0xb8, 0xd0, 0x97, 0xdc, 0x6a, 0x1b,
-	0x0a, 0x31, 0x78, 0xf4, 0x04, 0x2a, 0x66, 0xaf, 0xde, 0xc4, 0x03, 0xb3, 0x7e, 0x74, 0xd4, 0x6a,
-	0x5c, 0xba, 0x4e, 0x65, 0x58, 0x8f, 0x04, 0x47, 0xa6, 0x61, 0x94, 0x33, 0xf2, 0x82, 0x1d, 0x0e,
-	0x4f, 0x5e, 0xe1, 0x17, 0xbd, 0xa1, 0x59, 0xce, 0x1e, 0x96, 0xa1, 0xa4, 0x7f, 0x26, 0xe6, 0x9e,
-	0x8c, 0x5c, 0xf5, 0x57, 0x50, 0x4a, 0x2e, 0x83, 0x68, 0x07, 0xf2, 0x8b, 0xa5, 0x52, 0x77, 0xf6,
-	0xb5, 0x68, 0x3f, 0x8c, 0x77, 0xb9, 0x6c, 0xb2, 0xcb, 0xfd, 0x02, 0x0a, 0xb1, 0x6d, 0x4a, 0x2e,
-	0xc2, 0x6a, 0x9f, 0x8a, 0x16, 0x61, 0x45, 0xa4, 0x98, 0xff, 0x3b, 0x0b, 0xa5, 0xe4, 0xf6, 0x88,
-	0xb6, 0x61, 0x2d, 0xda, 0x1f, 0x23, 0x3f, 0x22, 0x1a, 0x99, 0xb0, 0x32, 0x8d, 0x66, 0xcb, 0x6d,
-	0x7d, 0x27, 0x09, 0x7b, 0x89, 0xec, 0x70, 0x9b, 0x9a, 0x0a, 0x2b, 0xee, 0x5c, 0x2e, 0xe9, 0xdc,
-	0xdf, 0x33, 0x80, 0xae, 0x9a, 0xa1, 0xf7, 0x61, 0xd7, 0xe8, 0xf4, 0xdb, 0xbd, 0x57, 0x86, 0x89,
-	0x75, 0x8d, 0x77, 0x7a, 0xcd, 0xcb, 0x35, 0x2e, 0xeb, 0xb7, 0xdd, 0xc6, 0xa1, 0x66, 0xc7, 0xe8,
-	0x0e, 0xb0, 0x69, 0x34, 0x7a, 0x66, 0xf3, 0xa4, 0x9c, 0x41, 0xef, 0xc1, 0xd3, 0xc6, 0xd0, 0x34,
-	0x25, 0xf3, 0xaa, 0x3c, 0xec, 0x0a, 0x59, 0xb4, 0x0b, 0x4f, 0xfa, 0xf5, 0x93, 0x9b, 0x35, 0x72,
-	0xd5, 0x7f, 0x66, 0x60, 0xe3, 0xd2, 0x86, 0x8c, 0xb6, 0x60, 0x35, 0xb0, 0x4e, 0x39, 0x8f, 0x32,
-	0xa0, 0x29, 0xf4, 0x3e, 0x94, 0xc6, 0x8c, 0x3a, 0x36, 0xe6, 0x63, 0x1c, 0x88, 0x99, 0x3d, 0xd7,
-	0xf3, 0x79, 0x5d, 0x71, 0x7b, 0xe3, 0x13, 0xc9, 0x43, 0x2f, 0xa0, 0x60, 0xd3, 0x89, 0x4f, 0xa9,
-	0x7a, 0xd3, 0xa9, 0x78, 0x94, 0x6e, 0x59, 0x4a, 0x9b, 0x4a, 0x5f, 0x0d, 0x07, 0xb0, 0x17, 0xdf,
-	0x29, 0x73, 0xf1, 0xaf, 0x19, 0x78, 0x74, 0xdd, 0xa2, 0x8c, 0x3e, 0x87, 0xd2, 0x94, 0xb9, 0xb1,
-	0xd5, 0x5b, 0xfd, 0x84, 0xd4, 0x86, 0x50, 0x9c, 0x32, 0x77, 0x89, 0xa3, 0x10, 0xc8, 0x45, 0x1c,
-	0x21, 0x7b, 0x3b, 0x02, 0xb9, 0x58, 0x22, 0x54, 0xcf, 0x61, 0xf3, 0xda, 0x55, 0x16, 0x7d, 0x0c,
-	0x10, 0x36, 0x3c, 0xb9, 0x29, 0x69, 0xc7, 0x1e, 0x24, 0xaa, 0x59, 0x2a, 0x9b, 0x79, 0xa5, 0x24,
-	0x3f, 0xd1, 0x33, 0x58, 0xa3, 0xae, 0x1d, 0xea, 0x67, 0x6f, 0xd2, 0xbf, 0x4f, 0x5d, 0x5b, 0x7e,
-	0x54, 0x7f, 0x0b, 0xef, 0xa4, 0xee, 0xb2, 0xf2, 0x61, 0x9a, 0x58, 0x93, 0x75, 0x7e, 0xd7, 0x79,
-	0x4c, 0x35, 0xa5, 0xd0, 0xfe, 0x00, 0x8f, 0xae, 0x5b, 0x57, 0xd1, 0x33, 0x40, 0xb2, 0xec, 0x7d,
-	0xfa, 0xf5, 0x8c, 0x05, 0x4c, 0x8d, 0x40, 0x66, 0xeb, 0xbb, 0x51, 0x3e, 0xe3, 0x23, 0x73, 0x29,
-	0x68, 0xd9, 0xc9, 0x26, 0x91, 0xbb, 0xb9, 0x49, 0xac, 0x24, 0x0f, 0xff, 0x5b, 0x16, 0x60, 0xf9,
-	0x78, 0x41, 0x3f, 0x8b, 0x62, 0xa9, 0x3a, 0x63, 0xe6, 0x86, 0xb7, 0xca, 0xf2, 0xa9, 0x1e, 0x06,
-	0x55, 0xd2, 0xe8, 0xc7, 0x61, 0x50, 0x95, 0x61, 0xf6, 0x56, 0x43, 0x19, 0x5d, 0x65, 0xd6, 0x07,
-	0xd0, 0xaf, 0x2d, 0xea, 0xd8, 0xfa, 0x5a, 0x3f, 0xbf, 0xe3, 0x5b, 0x4b, 0x7f, 0x52, 0xc7, 0x36,
-	0xf3, 0x22, 0xfa, 0xac, 0xb6, 0x20, 0xbf, 0xe0, 0xcb, 0x5a, 0x1f, 0xb4, 0x3a, 0x06, 0x3e, 0x6a,
-	0x19, 0xed, 0xe6, 0xa5, 0x3e, 0xb0, 0x01, 0x85, 0x86, 0x69, 0xd4, 0x07, 0x06, 0x96, 0x2a, 0xe5,
-	0x8c, 0x64, 0x0c, 0xfb, 0xcd, 0x05, 0x23, 0x5b, 0xfd, 0x09, 0xec, 0xa4, 0x2c, 0xe8, 0xf1, 0xb0,
-	0x66, 0x12, 0x61, 0x3d, 0xfc, 0x3d, 0x3c, 0xb5, 0xf8, 0x34, 0xed, 0x67, 0x1c, 0xae, 0xeb, 0xf7,
-	0x47, 0x5f, 0x06, 0xa7, 0x9f, 0xf9, 0xaa, 0xae, 0x95, 0x27, 0xdc, 0x21, 0xee, 0xa4, 0xc6, 0xfd,
-	0xc9, 0xfe, 0x84, 0xba, 0x2a, 0x74, 0xfb, 0xa1, 0x88, 0x78, 0x2c, 0xb8, 0xf6, 0xbf, 0x9d, 0x3f,
-	0x0f, 0xc9, 0x6f, 0xb2, 0xb9, 0xc6, 0xe0, 0x64, 0xb4, 0xaa, 0x6c, 0x7e, 0xf8, 0xdf, 0x00, 0x00,
-	0x00, 0xff, 0xff, 0x3c, 0xf5, 0x35, 0x7a, 0x06, 0x16, 0x00, 0x00,
+	// 2091 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4d, 0x77, 0x23, 0x47,
+	0xd5, 0x1e, 0x49, 0x1e, 0x8f, 0x7d, 0x65, 0xc9, 0x72, 0x79, 0xec, 0x51, 0xec, 0x49, 0xc6, 0xaf,
+	0x92, 0xbc, 0x98, 0x64, 0x22, 0x67, 0x1c, 0x08, 0x10, 0x0e, 0x24, 0xb2, 0xd4, 0x66, 0xe4, 0xa3,
+	0xaf, 0xb4, 0xa5, 0x0c, 0x13, 0x0e, 0x14, 0xa5, 0xee, 0x92, 0x5c, 0x9e, 0x56, 0x57, 0xa7, 0xbb,
+	0x34, 0x1e, 0x01, 0x1b, 0x16, 0xf0, 0x23, 0xe0, 0xb0, 0xc9, 0x9e, 0x15, 0x0b, 0xce, 0x61, 0xcf,
+	0xff, 0xe2, 0x54, 0x75, 0xb5, 0xd4, 0xed, 0x8f, 0xb6, 0xc3, 0x61, 0xe5, 0xbe, 0x5f, 0x4f, 0x5d,
+	0xdd, 0xaa, 0x7b, 0xeb, 0x29, 0xc3, 0xf7, 0xc7, 0x9c, 0x8f, 0x1d, 0x7a, 0x60, 0x39, 0x7c, 0x6a,
+	0x1f, 0x08, 0xe2, 0x50, 0x57, 0x1c, 0xbc, 0xfe, 0xc1, 0x90, 0x0a, 0xf2, 0xec, 0x60, 0xc4, 0x1c,
+	0x41, 0xfd, 0xa0, 0xea, 0xf9, 0x5c, 0x70, 0xb4, 0x1b, 0xba, 0x56, 0x95, 0x6b, 0x35, 0x74, 0xad,
+	0x6a, 0xd7, 0x9d, 0xc7, 0x1a, 0x87, 0x78, 0xec, 0x80, 0xb8, 0x2e, 0x17, 0x44, 0x30, 0xee, 0xea,
+	0xd0, 0x9d, 0x8f, 0xd2, 0x56, 0x21, 0x9e, 0xe7, 0x30, 0x4b, 0xf9, 0x6b, 0xf7, 0xfd, 0x34, 0x77,
+	0x8b, 0x4f, 0x26, 0x73, 0xcf, 0xf7, 0xd3, 0x3c, 0xcf, 0xf9, 0x50, 0xbb, 0xa5, 0xfe, 0x4a, 0xcf,
+	0xe7, 0x23, 0xe6, 0x50, 0xed, 0xfa, 0x8e, 0x76, 0x55, 0xd2, 0x70, 0x3a, 0x3a, 0xb0, 0xa7, 0x7e,
+	0x3c, 0xb7, 0x27, 0x97, 0xed, 0x82, 0x4d, 0x68, 0x20, 0xc8, 0xc4, 0xbb, 0x09, 0xe0, 0xc2, 0x27,
+	0x9e, 0x37, 0x2f, 0xe3, 0xce, 0xb6, 0xb6, 0x8b, 0x99, 0x47, 0x0f, 0x6c, 0x22, 0xa2, 0x85, 0xcb,
+	0x71, 0xbd, 0x43, 0x84, 0xe3, 0x8e, 0xb5, 0x65, 0x37, 0x6e, 0x91, 0xcb, 0xf1, 0x91, 0x4d, 0x66,
+	0xa1, 0xb1, 0xf2, 0xcf, 0x65, 0x58, 0x39, 0xe1, 0xc3, 0x2f, 0xa7, 0xd4, 0x9f, 0xa1, 0x87, 0x70,
+	0xff, 0x1b, 0xf9, 0x51, 0xce, 0xec, 0x65, 0xf6, 0x57, 0xcd, 0x50, 0x40, 0x8f, 0x61, 0xd5, 0xe2,
+	0x13, 0x8f, 0xb8, 0x8c, 0x06, 0xe5, 0xec, 0x5e, 0x6e, 0x7f, 0xd5, 0x5c, 0x28, 0xd0, 0x57, 0x50,
+	0x72, 0x78, 0x58, 0x7e, 0xac, 0x37, 0xbc, 0x9c, 0xdb, 0xcb, 0xed, 0xe7, 0x0f, 0x3f, 0xac, 0xa6,
+	0xec, 0x78, 0xb5, 0xa5, 0x83, 0x8e, 0x55, 0x8c, 0xb9, 0xee, 0x24, 0xe4, 0x00, 0x75, 0xa1, 0x78,
+	0xce, 0x87, 0xd8, 0x22, 0x82, 0x8e, 0xb9, 0x2f, 0x97, 0x5e, 0xda, 0xcb, 0xed, 0x17, 0x0f, 0xf7,
+	0x53, 0x51, 0x4f, 0xf8, 0xb0, 0x1e, 0x46, 0xcc, 0xcc, 0xc2, 0xf9, 0x5c, 0x90, 0x89, 0x7e, 0x09,
+	0x45, 0xb9, 0xf7, 0x53, 0x41, 0x75, 0x9e, 0xe5, 0xfb, 0x7b, 0x99, 0xfd, 0xfc, 0xe1, 0x07, 0xa9,
+	0x80, 0xf5, 0x30, 0x44, 0x67, 0x59, 0xb0, 0xe2, 0x22, 0x3a, 0x84, 0xad, 0xb0, 0x10, 0x33, 0x6c,
+	0xb3, 0xc0, 0x73, 0xc8, 0x0c, 0xbb, 0x64, 0x42, 0x83, 0xf2, 0xb2, 0xaa, 0xd2, 0xa6, 0x36, 0x36,
+	0x42, 0x5b, 0x47, 0x9a, 0xd0, 0x6f, 0x41, 0xa9, 0xa9, 0x1b, 0xc4, 0x6b, 0x56, 0x7e, 0xa0, 0x72,
+	0x39, 0xb8, 0x2d, 0x97, 0x79, 0x9c, 0x4e, 0x08, 0x59, 0x57, 0x74, 0xe8, 0x53, 0x78, 0x64, 0x4d,
+	0x03, 0xc1, 0x27, 0x98, 0x08, 0xe1, 0xb3, 0x61, 0xec, 0x17, 0xaf, 0xa8, 0x7d, 0xdd, 0x0a, 0xcd,
+	0xb5, 0xc8, 0xaa, 0xe3, 0xaa, 0xb0, 0x69, 0xb3, 0x80, 0x0c, 0x1d, 0x8a, 0x03, 0x8f, 0x3a, 0x0e,
+	0xb6, 0xce, 0xa8, 0xf5, 0xaa, 0xbc, 0xba, 0x97, 0xd9, 0x5f, 0x31, 0x37, 0xb4, 0xe9, 0x54, 0x5a,
+	0xea, 0xd2, 0x20, 0x77, 0x9e, 0x4e, 0x3c, 0x87, 0xcf, 0x26, 0xd4, 0x15, 0x58, 0x9e, 0xae, 0xa0,
+	0x0c, 0x6a, 0x8f, 0xd2, 0x77, 0xde, 0x98, 0x07, 0xf5, 0x67, 0x1e, 0x35, 0xd7, 0x69, 0x42, 0x0e,
+	0xd0, 0xfb, 0x50, 0x74, 0x88, 0x3b, 0x9e, 0x92, 0x31, 0xc5, 0x16, 0xb7, 0x69, 0x50, 0xce, 0xab,
+	0x72, 0x16, 0x22, 0x6d, 0x5d, 0x2a, 0xd1, 0x4b, 0x40, 0xde, 0x74, 0xe8, 0xb0, 0xe0, 0x0c, 0xcb,
+	0x43, 0x8d, 0x7d, 0xe2, 0x8e, 0x69, 0x79, 0x4d, 0xd5, 0x31, 0x3d, 0x81, 0x7e, 0xd4, 0x72, 0xa6,
+	0x0c, 0x31, 0x4b, 0x1a, 0x46, 0xaa, 0x95, 0x06, 0xbd, 0x0b, 0x05, 0xfa, 0xc6, 0x72, 0xa6, 0x36,
+	0xb5, 0xf1, 0x39, 0x1f, 0x06, 0xe5, 0x82, 0x4a, 0x60, 0x2d, 0x52, 0x9e, 0xf0, 0x61, 0x50, 0xf9,
+	0x37, 0xc0, 0x5a, 0x2f, 0xec, 0xfd, 0xb4, 0xee, 0xb9, 0xae, 0x3f, 0xb2, 0xff, 0x83, 0xfe, 0x78,
+	0x01, 0x1b, 0xb2, 0x3f, 0x04, 0x13, 0x0e, 0xfd, 0x4e, 0x8d, 0x77, 0xc2, 0x87, 0x7d, 0x19, 0x14,
+	0x01, 0x9f, 0x27, 0xe4, 0x60, 0xb1, 0xad, 0xd4, 0x9f, 0xe3, 0x2e, 0xdd, 0x01, 0xd7, 0xd0, 0x41,
+	0x11, 0x2e, 0x4d, 0xc8, 0x72, 0xbf, 0x36, 0xa8, 0x3d, 0xbd, 0x54, 0x89, 0xfb, 0x0a, 0xf8, 0x69,
+	0x3a, 0x70, 0x14, 0xa5, 0x91, 0x4b, 0x34, 0xa9, 0x08, 0x50, 0x1b, 0x0a, 0xc1, 0x2b, 0xe6, 0x38,
+	0x73, 0xd8, 0x65, 0x05, 0x9b, 0x3e, 0x2a, 0x4e, 0x65, 0x84, 0x86, 0x5c, 0x0b, 0x16, 0x42, 0x80,
+	0xc6, 0xb0, 0x7d, 0xc1, 0xfd, 0x57, 0x98, 0xbe, 0xf1, 0xa8, 0xcf, 0xa8, 0x6b, 0xd1, 0x45, 0x97,
+	0x4a, 0xdc, 0x67, 0xa9, 0xb8, 0x2f, 0xb8, 0xff, 0xca, 0x98, 0x47, 0xea, 0x05, 0x1e, 0x5e, 0x5c,
+	0xa3, 0x45, 0x27, 0xb0, 0xa6, 0x8e, 0x6e, 0x94, 0xf6, 0x8a, 0x82, 0xff, 0xde, 0xad, 0x87, 0x57,
+	0x83, 0xe6, 0xc5, 0xfc, 0x3b, 0x40, 0x35, 0x28, 0x9e, 0x31, 0x5f, 0x75, 0xaf, 0x4e, 0x76, 0x55,
+	0xb5, 0xc2, 0x4e, 0x84, 0x16, 0x5d, 0x28, 0xd5, 0x23, 0xce, 0x9d, 0xaf, 0x88, 0x33, 0xa5, 0x66,
+	0x41, 0x47, 0xe8, 0x74, 0x1c, 0x28, 0xc7, 0x2e, 0x53, 0x2c, 0x2f, 0x97, 0x79, 0x6a, 0xa0, 0x52,
+	0x3b, 0x4c, 0x4d, 0xad, 0xb6, 0x08, 0x6e, 0x90, 0xf9, 0xcc, 0xdc, 0x26, 0xd7, 0xa9, 0x03, 0xf4,
+	0xa7, 0x0c, 0xfc, 0x5f, 0x7c, 0x39, 0x3e, 0x15, 0x16, 0x9f, 0x50, 0xec, 0x72, 0x41, 0x83, 0xf9,
+	0xba, 0x79, 0xb5, 0xee, 0x67, 0x77, 0x5d, 0xb7, 0x1b, 0x82, 0x74, 0x24, 0x86, 0x5e, 0xff, 0x1d,
+	0x92, 0x66, 0x0e, 0x10, 0x83, 0x47, 0xf1, 0x34, 0x64, 0x53, 0x45, 0x8b, 0x17, 0xee, 0xb0, 0xdd,
+	0xb1, 0xc5, 0x4f, 0xf8, 0x50, 0xaf, 0xb9, 0x45, 0xae, 0xd1, 0x06, 0x69, 0x93, 0x79, 0x3d, 0x6d,
+	0x32, 0xff, 0x01, 0xde, 0xb6, 0x88, 0x6b, 0x33, 0xb5, 0x23, 0xe4, 0x35, 0x61, 0x0e, 0x19, 0x32,
+	0x87, 0x89, 0x59, 0x14, 0x5d, 0x52, 0x5b, 0xfd, 0xe3, 0xf4, 0xdb, 0x23, 0x42, 0xa8, 0xc5, 0x00,
+	0x74, 0xbe, 0xbb, 0xd6, 0xcd, 0x46, 0xf4, 0x6b, 0xd8, 0x94, 0xfc, 0x83, 0xbb, 0xea, 0x72, 0x9b,
+	0x17, 0x67, 0x43, 0x15, 0xe7, 0xa3, 0xd4, 0x35, 0x7b, 0x2a, 0x4e, 0x5e, 0x7c, 0x7a, 0xa1, 0x0d,
+	0xef, 0x92, 0x26, 0xa8, 0xfc, 0x3d, 0x07, 0xc5, 0xe4, 0xb0, 0x43, 0x65, 0x78, 0x40, 0x6c, 0xdb,
+	0xa7, 0x41, 0xa0, 0x67, 0x69, 0x24, 0xa2, 0x27, 0x90, 0xf7, 0xe9, 0x58, 0xee, 0x93, 0xbc, 0x19,
+	0xca, 0x59, 0x65, 0x85, 0x50, 0x25, 0xaf, 0x05, 0xf4, 0x14, 0x1e, 0x38, 0x44, 0x60, 0xc7, 0x1d,
+	0x97, 0x73, 0xaa, 0x28, 0x9b, 0x51, 0x82, 0xf2, 0x82, 0xaa, 0xb6, 0x88, 0x68, 0xb9, 0x63, 0x73,
+	0xd9, 0x51, 0x7f, 0xd1, 0x07, 0x20, 0xef, 0x35, 0x41, 0x64, 0x8b, 0x33, 0x17, 0x4f, 0x98, 0xa3,
+	0x78, 0x46, 0x66, 0x3f, 0x63, 0xae, 0x47, 0x86, 0xa6, 0xdb, 0x96, 0x6a, 0xf4, 0x06, 0xb6, 0x05,
+	0x75, 0x68, 0xc4, 0x21, 0x3c, 0x9f, 0x8e, 0xa8, 0x2f, 0x9b, 0x59, 0xf1, 0x88, 0xe2, 0x61, 0xed,
+	0x3b, 0x8c, 0xf3, 0x6a, 0x7f, 0x81, 0xd4, 0x9b, 0x03, 0x99, 0x5b, 0xe2, 0x3a, 0xb5, 0x2c, 0x87,
+	0x4b, 0xc7, 0x44, 0x50, 0xbb, 0xbc, 0xac, 0x2e, 0xe3, 0x48, 0xac, 0xf8, 0xb0, 0x75, 0x2d, 0x12,
+	0xfa, 0x7f, 0xa8, 0xf4, 0x8d, 0x96, 0x51, 0xef, 0xb6, 0xdb, 0x83, 0xbe, 0x81, 0x7b, 0xa6, 0x71,
+	0x6c, 0x98, 0x46, 0xa7, 0x6e, 0xe0, 0x41, 0xe7, 0xb4, 0x67, 0xd4, 0x9b, 0xc7, 0x4d, 0xa3, 0x51,
+	0xba, 0x87, 0xca, 0xf0, 0x30, 0xee, 0x67, 0xfc, 0xb2, 0xde, 0x1a, 0x34, 0x8c, 0x46, 0x29, 0x83,
+	0x1e, 0xc1, 0x66, 0xdc, 0x52, 0x6b, 0xb5, 0xba, 0x2f, 0x8c, 0x46, 0x29, 0x5b, 0xf9, 0xe3, 0x12,
+	0xa0, 0xab, 0x4c, 0x04, 0x75, 0x60, 0x49, 0x56, 0x58, 0x6d, 0x58, 0xf1, 0x96, 0x86, 0xbd, 0x1a,
+	0x5e, 0x0d, 0xff, 0x28, 0x42, 0xa0, 0x70, 0x50, 0x1f, 0xee, 0x4f, 0x5d, 0x26, 0xc2, 0xcb, 0xb2,
+	0x78, 0xf8, 0xf3, 0x3b, 0x03, 0x36, 0xdd, 0x11, 0x4f, 0x28, 0x06, 0x2e, 0x13, 0x66, 0x08, 0x86,
+	0x06, 0x70, 0x3f, 0xe4, 0x09, 0xe1, 0xe1, 0xf8, 0xfc, 0xbf, 0x47, 0x0d, 0xb9, 0x43, 0x88, 0x86,
+	0x28, 0x7c, 0xcc, 0x5c, 0xc5, 0x0d, 0x14, 0x5f, 0xc0, 0x17, 0x4c, 0x9c, 0xe1, 0xa9, 0x1b, 0x78,
+	0xd4, 0x62, 0x23, 0x46, 0x6d, 0x9c, 0xa0, 0x7c, 0x61, 0x06, 0x4b, 0x6a, 0x2b, 0x3f, 0xd4, 0x71,
+	0x92, 0x52, 0xbc, 0x60, 0xe2, 0x6c, 0xb0, 0x08, 0xba, 0xb2, 0x5a, 0xe5, 0xcf, 0x19, 0x80, 0x45,
+	0xa1, 0xd0, 0x2e, 0x3c, 0x3a, 0x6e, 0xb6, 0xfa, 0x86, 0x89, 0xfb, 0x2f, 0x7b, 0x97, 0x77, 0xb6,
+	0x00, 0xab, 0x83, 0x4e, 0xb3, 0x8f, 0xbb, 0x9d, 0xd6, 0xcb, 0x52, 0x06, 0x6d, 0xc2, 0xba, 0x12,
+	0x6b, 0x9d, 0x06, 0xae, 0xb5, 0xbb, 0x83, 0x4e, 0xbf, 0x94, 0x45, 0x3b, 0xb0, 0x5d, 0xeb, 0x74,
+	0x06, 0xb5, 0x56, 0xf3, 0x6b, 0xa3, 0x81, 0x8f, 0x6a, 0xa7, 0x46, 0x64, 0xcb, 0x49, 0xf0, 0x98,
+	0xad, 0xdf, 0xed, 0xd7, 0x5a, 0x91, 0x71, 0xa9, 0xf2, 0xed, 0x12, 0x14, 0x12, 0xcc, 0x38, 0xce,
+	0xae, 0x27, 0x54, 0x9c, 0x71, 0x5b, 0x1f, 0x84, 0x3b, 0xb1, 0xeb, 0xb6, 0x8a, 0x98, 0xb3, 0xeb,
+	0x50, 0x44, 0x5f, 0xc0, 0x46, 0x20, 0x88, 0x2f, 0xb0, 0xc5, 0xb9, 0x6f, 0x33, 0x97, 0x08, 0xf5,
+	0xfe, 0xb8, 0xb1, 0xa9, 0x4b, 0xca, 0xbb, 0xbe, 0x70, 0x46, 0x47, 0xb0, 0x2e, 0x7c, 0xf2, 0x9a,
+	0x3a, 0x38, 0x7a, 0x85, 0xe9, 0x7d, 0x7f, 0xeb, 0xca, 0xa5, 0xd8, 0xd0, 0x0e, 0x66, 0x31, 0x8c,
+	0x88, 0x64, 0xf4, 0x19, 0xbc, 0x45, 0x1c, 0x87, 0x5f, 0x60, 0x36, 0xf1, 0x7c, 0x6a, 0xb1, 0x80,
+	0x62, 0x3d, 0x8c, 0xf4, 0xa8, 0x58, 0x31, 0x1f, 0x29, 0x87, 0x66, 0x64, 0xaf, 0x45, 0x66, 0xf4,
+	0x2b, 0x58, 0xf3, 0x39, 0xb1, 0xb1, 0xf0, 0xc9, 0x68, 0xc4, 0x2c, 0x3d, 0x28, 0x3e, 0xbd, 0xfb,
+	0x83, 0xa3, 0x6a, 0x72, 0x62, 0xf7, 0xc3, 0xe8, 0xe7, 0xf7, 0xcc, 0xbc, 0xbf, 0x10, 0xd1, 0xe7,
+	0x50, 0xb4, 0xa9, 0x47, 0x7c, 0x31, 0xf5, 0xa9, 0x62, 0xc0, 0x6a, 0x38, 0xe4, 0x0f, 0xb7, 0x13,
+	0xb5, 0x91, 0x74, 0xa1, 0x3b, 0x6a, 0x90, 0xd9, 0xf3, 0x7b, 0x66, 0x61, 0xee, 0x2f, 0xb5, 0x95,
+	0x16, 0xe4, 0x63, 0xf0, 0xe8, 0x31, 0x94, 0xcd, 0x6e, 0xad, 0x81, 0xfb, 0x66, 0xed, 0xf8, 0xb8,
+	0x59, 0xbf, 0x74, 0x9c, 0x4a, 0xb0, 0x16, 0x19, 0x8e, 0x4d, 0xc3, 0x28, 0x65, 0xe4, 0x01, 0x3b,
+	0x1a, 0x9c, 0xbe, 0xc4, 0xcf, 0xbb, 0x03, 0xb3, 0x94, 0x3d, 0x2a, 0x41, 0x51, 0xff, 0x4c, 0xcc,
+	0x3d, 0x59, 0xb9, 0xca, 0x2f, 0xa0, 0x98, 0xe4, 0x9a, 0x68, 0x17, 0x56, 0xe7, 0x9c, 0x55, 0x4f,
+	0xf6, 0x95, 0x88, 0x7e, 0xc6, 0xa7, 0x5c, 0x36, 0x39, 0xe5, 0x7e, 0x06, 0xf9, 0x18, 0x59, 0x93,
+	0x3c, 0x5b, 0xd1, 0xb5, 0x88, 0x67, 0x2b, 0x21, 0x25, 0xfc, 0x5f, 0x59, 0x28, 0x26, 0xc9, 0x29,
+	0xda, 0x81, 0x95, 0x88, 0x9e, 0x46, 0x79, 0x44, 0x32, 0x32, 0x61, 0x69, 0x12, 0xdd, 0x2d, 0xb7,
+	0xcd, 0x9d, 0x24, 0xec, 0x25, 0xb1, 0xcd, 0x6d, 0x6a, 0x2a, 0xac, 0x78, 0x72, 0xb9, 0x64, 0x72,
+	0x7f, 0xcb, 0x00, 0xba, 0x1a, 0x86, 0xde, 0x83, 0x3d, 0xa3, 0xdd, 0x6b, 0x75, 0x5f, 0x1a, 0x26,
+	0xd6, 0x3d, 0xde, 0xee, 0x36, 0x2e, 0xf7, 0xb8, 0xec, 0xdf, 0x56, 0x0b, 0x87, 0x9e, 0x6d, 0xa3,
+	0xd3, 0xc7, 0xa6, 0x51, 0xef, 0x9a, 0x8d, 0xd3, 0x52, 0x06, 0xbd, 0x0b, 0x4f, 0xea, 0x03, 0xd3,
+	0x94, 0xca, 0xab, 0xf6, 0x70, 0x2a, 0x64, 0xd1, 0x1e, 0x3c, 0xee, 0xd5, 0x4e, 0x6f, 0xf6, 0xc8,
+	0x55, 0xfe, 0x91, 0x81, 0xf5, 0x4b, 0x04, 0x1c, 0x6d, 0xc3, 0x72, 0x60, 0x9d, 0x71, 0x1e, 0xed,
+	0x80, 0x96, 0xd0, 0x7b, 0x50, 0x1c, 0x31, 0xea, 0xd8, 0x98, 0x8f, 0x70, 0x20, 0xa6, 0xf6, 0x4c,
+	0xdf, 0xcf, 0x6b, 0x4a, 0xdb, 0x1d, 0x9d, 0x4a, 0x1d, 0x7a, 0x0e, 0x79, 0x9b, 0x8e, 0x7d, 0x4a,
+	0xd5, 0x93, 0x51, 0xd5, 0xa3, 0x78, 0x0b, 0xe7, 0x6d, 0x28, 0x7f, 0x75, 0x39, 0x80, 0x3d, 0xff,
+	0x4e, 0xb9, 0x17, 0xff, 0x92, 0x81, 0x87, 0xd7, 0xf1, 0x70, 0xf4, 0x05, 0x14, 0x27, 0xcc, 0x8d,
+	0x31, 0x7b, 0xf5, 0x13, 0x52, 0x07, 0x42, 0x61, 0xc2, 0xdc, 0x05, 0x8e, 0x42, 0x20, 0x6f, 0xe2,
+	0x08, 0xd9, 0xdb, 0x11, 0xc8, 0x9b, 0x05, 0x42, 0xe5, 0x02, 0xb6, 0xae, 0x65, 0xca, 0xe8, 0x63,
+	0x80, 0x70, 0xe0, 0x49, 0x22, 0xa6, 0x13, 0xdb, 0x48, 0x74, 0xb3, 0x74, 0x36, 0x57, 0x95, 0x93,
+	0xfc, 0x44, 0x4f, 0x61, 0x85, 0xba, 0x76, 0xe8, 0x9f, 0xbd, 0xc9, 0xff, 0x01, 0x75, 0x6d, 0xf9,
+	0x51, 0xf9, 0x0d, 0xbc, 0x9d, 0x4a, 0x95, 0xe5, 0xbb, 0x37, 0xc1, 0xc2, 0xf5, 0xfe, 0xae, 0xf1,
+	0x98, 0x6b, 0x4a, 0xa3, 0xfd, 0x1e, 0x1e, 0x5e, 0xc7, 0x86, 0xd1, 0x53, 0x40, 0xb2, 0xed, 0x7d,
+	0xfa, 0xcd, 0x94, 0x05, 0x4c, 0x5d, 0x81, 0xcc, 0xd6, 0x67, 0xa3, 0x74, 0xce, 0x87, 0xe6, 0xc2,
+	0xd0, 0xb4, 0x93, 0x43, 0x22, 0x77, 0xf3, 0x90, 0x58, 0x4a, 0x2e, 0xfe, 0xd7, 0x2c, 0xc0, 0xe2,
+	0x6d, 0x84, 0x7e, 0x12, 0xd5, 0x52, 0x4d, 0xc6, 0xcc, 0x0d, 0x4f, 0xa1, 0xc5, 0x7f, 0x02, 0xc2,
+	0xa2, 0x4a, 0x19, 0xfd, 0x30, 0x2c, 0xaa, 0x0a, 0xcc, 0xde, 0x1a, 0x28, 0xab, 0xab, 0xc2, 0x7a,
+	0x00, 0xfa, 0x31, 0x47, 0x1d, 0x5b, 0x1f, 0xeb, 0x67, 0x77, 0x7c, 0xca, 0xe9, 0x4f, 0xea, 0xd8,
+	0xe6, 0xaa, 0x88, 0x3e, 0x2b, 0x4d, 0x58, 0x9d, 0xeb, 0x65, 0xaf, 0xf7, 0x9b, 0x6d, 0x03, 0x1f,
+	0x37, 0x8d, 0x56, 0xe3, 0xd2, 0x1c, 0x58, 0x87, 0x7c, 0xdd, 0x34, 0x6a, 0x7d, 0x03, 0x4b, 0x97,
+	0x52, 0x46, 0x2a, 0x06, 0xbd, 0xc6, 0x5c, 0x91, 0xad, 0xfc, 0x08, 0x76, 0x53, 0xf8, 0x7f, 0xbc,
+	0xac, 0x99, 0x64, 0x59, 0x3f, 0x81, 0xd2, 0x65, 0x12, 0x2f, 0x49, 0x78, 0xec, 0x41, 0xa0, 0x0f,
+	0x09, 0x2c, 0x98, 0xfd, 0xd1, 0xef, 0xe0, 0x89, 0xc5, 0x27, 0x69, 0xbf, 0xfd, 0x68, 0x4d, 0xd3,
+	0xff, 0x9e, 0xac, 0x68, 0x2f, 0xf3, 0x75, 0x4d, 0x3b, 0x8f, 0xb9, 0x43, 0xdc, 0x71, 0x95, 0xfb,
+	0xe3, 0x83, 0x31, 0x75, 0x55, 0xbd, 0x0f, 0x42, 0x13, 0xf1, 0x58, 0x70, 0xed, 0x7f, 0x60, 0x7f,
+	0x1a, 0x8a, 0xdf, 0x66, 0x73, 0xf5, 0xfe, 0xe9, 0x70, 0x59, 0xc5, 0x7c, 0xf2, 0x9f, 0x00, 0x00,
+	0x00, 0xff, 0xff, 0x4b, 0x81, 0xe6, 0x2e, 0x9a, 0x16, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/talent/v4beta1/job_service.pb.go b/googleapis/cloud/talent/v4beta1/job_service.pb.go
index a3df0bd..e6d7db8 100644
--- a/googleapis/cloud/talent/v4beta1/job_service.pb.go
+++ b/googleapis/cloud/talent/v4beta1/job_service.pb.go
@@ -1536,9 +1536,10 @@
 	// If
 	// [update_mask][google.cloud.talent.v4beta1.BatchUpdateJobsRequest.update_mask]
 	// is provided, The [Job][google.cloud.talent.v4beta1.Job] inside
-	// [JobResult][] will only contains fields that is updated, plus the Id of the
-	// Job. Otherwise,  [Job][google.cloud.talent.v4beta1.Job] will include all
-	// fields, which can yield a very large response.
+	// [JobResult][google.cloud.talent.v4beta1.JobOperationResult.JobResult]
+	// will only contains fields that is updated, plus the Id of the Job.
+	// Otherwise,  [Job][google.cloud.talent.v4beta1.Job] will include all fields,
+	// which can yield a very large response.
 	UpdateMask           *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
 	XXX_unrecognized     []byte                `json:"-"`
@@ -1617,134 +1618,133 @@
 }
 
 var fileDescriptor_0dfa8e10f7799e35 = []byte{
-	// 2025 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4b, 0x73, 0x1b, 0xc7,
-	0xf1, 0xff, 0x2f, 0xf8, 0x02, 0x1b, 0x22, 0xb1, 0x1c, 0xd2, 0x22, 0x0c, 0xda, 0x7f, 0x53, 0xab,
-	0x48, 0x61, 0x28, 0x13, 0xb0, 0x61, 0xa7, 0x52, 0x91, 0xca, 0x95, 0x80, 0xc0, 0xd2, 0x84, 0x02,
-	0x90, 0xcc, 0x82, 0x94, 0x14, 0x1e, 0xb4, 0x5e, 0x00, 0x03, 0x70, 0xc9, 0xc5, 0xce, 0x7a, 0x77,
-	0x40, 0x8a, 0x76, 0x74, 0x49, 0xbe, 0x40, 0xaa, 0x72, 0x4c, 0x95, 0x0f, 0xc9, 0x35, 0x87, 0x1c,
-	0x72, 0x4b, 0x2a, 0x55, 0xa9, 0xca, 0x29, 0x97, 0x54, 0xc5, 0xc7, 0x54, 0x6e, 0xf9, 0x06, 0xf9,
-	0x02, 0xa9, 0x79, 0xec, 0xe2, 0x41, 0x08, 0x0f, 0xa9, 0x74, 0xc3, 0x74, 0xff, 0xba, 0xa7, 0xbb,
-	0xa7, 0xa7, 0xa7, 0x7b, 0x01, 0x3b, 0x2d, 0x42, 0x5a, 0x0e, 0xce, 0xd6, 0x1d, 0xd2, 0x69, 0x64,
-	0xa9, 0xe5, 0x60, 0x97, 0x66, 0x2f, 0x3f, 0xad, 0x61, 0x6a, 0x7d, 0x9c, 0x3d, 0x27, 0x35, 0x33,
-	0xc0, 0xfe, 0xa5, 0x5d, 0xc7, 0x19, 0xcf, 0x27, 0x94, 0xa0, 0x0d, 0x01, 0xcf, 0x70, 0x78, 0x46,
-	0xc0, 0x33, 0x12, 0x9e, 0x7e, 0x4f, 0xea, 0xb2, 0x3c, 0x3b, 0x6b, 0xb9, 0x2e, 0xa1, 0x16, 0xb5,
-	0x89, 0x1b, 0x08, 0xd1, 0xf4, 0x7a, 0x0f, 0xb7, 0xee, 0xd8, 0x4c, 0x50, 0x30, 0xbe, 0x3b, 0xca,
-	0x84, 0x9a, 0x45, 0xeb, 0x67, 0x12, 0xb8, 0x35, 0x0a, 0x58, 0x27, 0xed, 0x36, 0x71, 0x25, 0xf2,
-	0x7b, 0xa3, 0x90, 0x4d, 0xdb, 0xa1, 0xd8, 0x0f, 0xcd, 0x7a, 0x30, 0x0a, 0x7a, 0x66, 0x07, 0x94,
-	0xb4, 0x7c, 0xab, 0x2d, 0xc1, 0xf7, 0xc6, 0x44, 0x4b, 0xc2, 0xee, 0x4a, 0x98, 0x43, 0xdc, 0x96,
-	0xdf, 0x71, 0x5d, 0xdb, 0x6d, 0x65, 0x89, 0x87, 0xfd, 0xbe, 0x78, 0xfc, 0xbf, 0x04, 0xf1, 0x55,
-	0xad, 0xd3, 0xcc, 0x36, 0x3a, 0x02, 0x20, 0xf9, 0x1b, 0x83, 0x7c, 0xdc, 0xf6, 0xe8, 0xb5, 0x64,
-	0x6e, 0x0e, 0x32, 0x9b, 0x36, 0x76, 0x1a, 0x66, 0xdb, 0x0a, 0x2e, 0x04, 0x42, 0x7b, 0x0e, 0x6a,
-	0xc1, 0xc7, 0x16, 0xc5, 0x8f, 0x49, 0xcd, 0xc0, 0x5f, 0x76, 0x70, 0x40, 0xd1, 0x6d, 0x98, 0xf7,
-	0x2c, 0x1f, 0xbb, 0x34, 0xa5, 0x6c, 0x2a, 0x5b, 0x8b, 0x86, 0x5c, 0xa1, 0x1c, 0xcc, 0x9c, 0x93,
-	0x5a, 0x2a, 0xb6, 0xa9, 0x6c, 0x25, 0x72, 0x9b, 0x99, 0x11, 0x67, 0x9c, 0x61, 0xda, 0x18, 0x58,
-	0xbb, 0x0b, 0x4b, 0x9f, 0x63, 0xda, 0xa3, 0x1c, 0xc1, 0xac, 0x6b, 0xb5, 0xb1, 0x54, 0xcd, 0x7f,
-	0x6b, 0xbf, 0x54, 0x40, 0x3d, 0xf1, 0x1a, 0xfd, 0x56, 0xc8, 0xdd, 0x94, 0x29, 0x76, 0x43, 0x8f,
-	0x20, 0xd1, 0xe1, 0x7a, 0xb8, 0x8b, 0xd2, 0xd2, 0x74, 0x28, 0x1b, 0x46, 0x21, 0xb3, 0xc7, 0xa2,
-	0x50, 0xb1, 0x82, 0x0b, 0x03, 0x04, 0x9c, 0xfd, 0xd6, 0xee, 0x83, 0x5a, 0xc4, 0x0e, 0xee, 0x33,
-	0x62, 0x98, 0xb5, 0xfb, 0x70, 0x7b, 0x97, 0xa5, 0x5b, 0x04, 0x0e, 0xc6, 0x05, 0xee, 0x36, 0xcc,
-	0x8b, 0x6c, 0xe2, 0x16, 0x2d, 0x1a, 0x72, 0xa5, 0xfd, 0x45, 0x81, 0x64, 0xd9, 0x0e, 0xe8, 0x1b,
-	0xe8, 0x40, 0xef, 0x03, 0x78, 0x56, 0x0b, 0x9b, 0x94, 0x5c, 0x60, 0x37, 0x35, 0xc3, 0x79, 0x8b,
-	0x8c, 0x72, 0xcc, 0x08, 0x68, 0x03, 0xf8, 0xc2, 0x0c, 0xec, 0xaf, 0x70, 0x6a, 0x76, 0x53, 0xd9,
-	0x9a, 0x33, 0xe2, 0x8c, 0x50, 0xb5, 0xbf, 0xc2, 0xe8, 0x47, 0x10, 0x67, 0x77, 0xf7, 0xd2, 0xc6,
-	0x57, 0xa9, 0xb9, 0x4d, 0x65, 0x6b, 0x39, 0xf7, 0x9d, 0x71, 0x71, 0x7e, 0x62, 0xe3, 0x2b, 0x63,
-	0xe1, 0x5c, 0xfc, 0xd0, 0xfe, 0xa4, 0x80, 0xda, 0x75, 0x20, 0xf0, 0x88, 0x1b, 0x60, 0xf4, 0x29,
-	0xcc, 0x9e, 0x93, 0x5a, 0x90, 0x52, 0x36, 0x67, 0x26, 0x3a, 0x39, 0x8e, 0x46, 0xf7, 0x21, 0xe9,
-	0xe2, 0x17, 0xd4, 0xec, 0x71, 0x46, 0x38, 0xba, 0xc4, 0xc8, 0x47, 0x91, 0x43, 0x25, 0x88, 0xb7,
-	0x31, 0xb5, 0x1a, 0x16, 0xb5, 0xb8, 0xb7, 0x89, 0xdc, 0xce, 0xc8, 0x1d, 0x42, 0xb3, 0x2a, 0x52,
-	0xc8, 0x88, 0xc4, 0xb5, 0x6f, 0x12, 0xb0, 0x52, 0xc5, 0x96, 0x5f, 0x3f, 0x9b, 0xe4, 0x00, 0x4e,
-	0x21, 0x11, 0x70, 0xb0, 0xd9, 0x26, 0x0d, 0xcc, 0x8d, 0x5b, 0xce, 0xfd, 0x70, 0xe4, 0xde, 0x37,
-	0x94, 0x4b, 0x4a, 0x85, 0x34, 0xb0, 0x01, 0x41, 0xf4, 0x1b, 0x3d, 0x05, 0xd5, 0x17, 0x08, 0x73,
-	0xc0, 0xb9, 0x0f, 0xc7, 0x38, 0xc7, 0x85, 0x22, 0xdf, 0x92, 0x7e, 0x3f, 0x01, 0xed, 0xc2, 0x22,
-	0x3b, 0xe1, 0x2f, 0x3b, 0xd8, 0xbf, 0xe6, 0xc7, 0x9f, 0xc8, 0xdd, 0x1b, 0x77, 0x20, 0x3f, 0x65,
-	0x60, 0x83, 0x65, 0x06, 0xff, 0x85, 0x1e, 0xc0, 0x0a, 0x76, 0xad, 0x9a, 0x83, 0xcd, 0x9a, 0x4f,
-	0xac, 0x06, 0x66, 0x75, 0x8a, 0xa7, 0x4b, 0xdc, 0x50, 0x05, 0x63, 0x37, 0xa2, 0xa3, 0xcf, 0x60,
-	0x83, 0xd9, 0x60, 0xfb, 0xd8, 0xf4, 0x7c, 0x5c, 0xb7, 0x03, 0x6c, 0xfa, 0x38, 0xe8, 0x38, 0x54,
-	0x64, 0xe0, 0x3c, 0x17, 0x4b, 0x49, 0xc8, 0x91, 0x40, 0x18, 0x1c, 0xc0, 0x33, 0xf2, 0x19, 0xac,
-	0x44, 0xc5, 0x94, 0x5b, 0x6d, 0xe3, 0x20, 0xb5, 0xc0, 0x13, 0xe9, 0xc1, 0x48, 0xbb, 0xf7, 0x43,
-	0x29, 0x61, 0xbd, 0x7a, 0xd6, 0xbb, 0xb6, 0x71, 0xd0, 0x97, 0xeb, 0xf1, 0xd7, 0xc8, 0x75, 0x96,
-	0x17, 0xa4, 0xd9, 0x0c, 0x30, 0x4d, 0x2d, 0xf2, 0x6b, 0x24, 0x57, 0xfd, 0x37, 0x0c, 0x06, 0x6e,
-	0x58, 0xff, 0xed, 0x4c, 0x0c, 0xde, 0xce, 0x77, 0x21, 0x4e, 0xfc, 0x06, 0xf6, 0xcd, 0xda, 0x75,
-	0xea, 0x16, 0x67, 0x2e, 0xf0, 0xf5, 0xee, 0x35, 0x7a, 0x01, 0xef, 0x34, 0xec, 0x4b, 0xec, 0x07,
-	0x76, 0xd3, 0xae, 0xf3, 0x82, 0x6f, 0x3a, 0xf8, 0x12, 0x3b, 0xa9, 0x25, 0x6e, 0x7c, 0x61, 0xca,
-	0xc4, 0x2b, 0xf6, 0xeb, 0x2a, 0x33, 0x55, 0xc6, 0x5a, 0x63, 0x08, 0x15, 0x79, 0xb0, 0x5a, 0xef,
-	0x04, 0x94, 0xb4, 0x4d, 0xdf, 0x72, 0x2f, 0x6c, 0xb7, 0x65, 0xda, 0x6e, 0x93, 0xa4, 0x96, 0x79,
-	0xf6, 0xfc, 0x78, 0xca, 0x7d, 0x0b, 0x5c, 0x93, 0x21, 0x14, 0x95, 0xdc, 0x26, 0x31, 0x56, 0xea,
-	0x83, 0x24, 0x94, 0x63, 0xbe, 0x06, 0x3c, 0xc5, 0x2e, 0xf0, 0xf5, 0x15, 0xf1, 0xd9, 0x13, 0x45,
-	0xeb, 0x67, 0x29, 0x95, 0xa7, 0xcb, 0xaa, 0x64, 0xfe, 0x44, 0xf0, 0x2a, 0x8c, 0x95, 0xfe, 0x63,
-	0x0c, 0x56, 0x6e, 0x28, 0x47, 0x5f, 0x83, 0x6a, 0xb7, 0x3d, 0xe2, 0x53, 0xcb, 0xad, 0x63, 0x19,
-	0x30, 0x85, 0x07, 0xec, 0xe8, 0x4d, 0x0d, 0xcf, 0x94, 0x22, 0xc5, 0x22, 0x7a, 0x49, 0xbb, 0x9f,
-	0x80, 0x76, 0x00, 0x85, 0x11, 0xc3, 0x2f, 0x3c, 0x1f, 0x07, 0x81, 0x4d, 0xc2, 0x2a, 0xb6, 0x22,
-	0x39, 0x7a, 0xc4, 0xd0, 0x02, 0x48, 0x0e, 0xa8, 0x44, 0x9b, 0xf0, 0x5e, 0xa9, 0x72, 0x74, 0x68,
-	0x1c, 0xe7, 0x0f, 0x0a, 0xba, 0x59, 0xd6, 0x9f, 0xe8, 0x65, 0xf3, 0xe4, 0xa0, 0x7a, 0xa4, 0x17,
-	0x4a, 0x7b, 0x25, 0xbd, 0xa8, 0xfe, 0x1f, 0x8a, 0xc3, 0xec, 0xc1, 0xe1, 0x81, 0xae, 0x2a, 0x68,
-	0x01, 0x66, 0xca, 0x87, 0x4f, 0xd5, 0x18, 0x23, 0x55, 0x4a, 0xe5, 0xa2, 0x3a, 0x83, 0x00, 0xe6,
-	0x2b, 0x7a, 0xb1, 0x74, 0x52, 0x51, 0x67, 0x19, 0x75, 0xbf, 0xf4, 0xf9, 0xbe, 0x3a, 0x87, 0x12,
-	0xb0, 0xa0, 0x3f, 0x3b, 0x36, 0xf4, 0x8a, 0xae, 0xce, 0x6b, 0x06, 0x40, 0xb7, 0x06, 0xa1, 0x0d,
-	0x58, 0xaf, 0xea, 0x79, 0xa3, 0xb0, 0x6f, 0x56, 0x0e, 0x8b, 0xfa, 0xc0, 0x56, 0xcb, 0x00, 0x8f,
-	0x0f, 0x77, 0x4d, 0x01, 0x50, 0x15, 0xb4, 0x0e, 0xab, 0x7b, 0x7a, 0xfe, 0xf8, 0xc4, 0xd0, 0x8b,
-	0x66, 0x0f, 0x23, 0xa6, 0x3d, 0x85, 0xb5, 0x61, 0xe9, 0x85, 0xee, 0xc1, 0x9d, 0x62, 0xe9, 0x89,
-	0x6e, 0x54, 0x4b, 0x7b, 0xa5, 0x42, 0xfe, 0xb8, 0x74, 0x78, 0x30, 0xd4, 0xa5, 0x5b, 0x10, 0x2f,
-	0x96, 0xaa, 0xf9, 0xdd, 0xb2, 0x5e, 0x54, 0x15, 0xe6, 0x43, 0xb5, 0x54, 0x39, 0x2a, 0xeb, 0x6a,
-	0x4c, 0xfb, 0x47, 0x1c, 0x50, 0xef, 0xc9, 0xc8, 0x07, 0xe6, 0x0b, 0x58, 0xe2, 0xe9, 0xc1, 0x02,
-	0xdd, 0xf3, 0xd2, 0x3c, 0x9a, 0xf8, 0x84, 0x85, 0x9e, 0x4c, 0x45, 0x2a, 0x61, 0x8f, 0xd0, 0xad,
-	0x76, 0x77, 0x11, 0x20, 0x1b, 0xd6, 0xfb, 0xcb, 0xd0, 0xb5, 0xac, 0x62, 0x41, 0x2a, 0xc6, 0xf7,
-	0xfa, 0x78, 0x9a, 0x62, 0xc4, 0x25, 0x8d, 0x77, 0xce, 0x86, 0x50, 0x87, 0xbe, 0x7b, 0x33, 0xc3,
-	0xde, 0xbd, 0x23, 0x50, 0x1d, 0x22, 0x0b, 0x81, 0x6c, 0x4d, 0x53, 0xb3, 0xdc, 0x96, 0xd1, 0x05,
-	0xbd, 0x2c, 0x85, 0x8c, 0x64, 0x28, 0xbe, 0x27, 0xa4, 0xd1, 0x47, 0xb0, 0x86, 0x03, 0x6a, 0xb7,
-	0x2d, 0x8a, 0x1b, 0x26, 0x25, 0xd4, 0x72, 0x44, 0x0d, 0x9b, 0xe3, 0x35, 0x0c, 0x45, 0xbc, 0x63,
-	0xc6, 0x0a, 0xab, 0x59, 0x0f, 0x6e, 0x9e, 0xe3, 0x16, 0x69, 0xc4, 0xee, 0x7d, 0x9a, 0x17, 0xde,
-	0xe8, 0x69, 0x46, 0x8f, 0x20, 0x2d, 0x1f, 0x1b, 0xdc, 0x90, 0x07, 0xc0, 0x4e, 0xda, 0xac, 0x93,
-	0x8e, 0x4b, 0x79, 0xfd, 0x9e, 0x33, 0xd6, 0x23, 0x04, 0x0f, 0x28, 0x3b, 0xb8, 0x02, 0x63, 0xa3,
-	0x53, 0x50, 0x03, 0x0f, 0x3b, 0x8e, 0x59, 0x27, 0xbe, 0x8f, 0xeb, 0xcc, 0x67, 0x5e, 0xb3, 0x13,
-	0xb9, 0xec, 0xe8, 0x14, 0x61, 0x42, 0xb6, 0xdb, 0x2a, 0x44, 0x62, 0x46, 0x92, 0x2b, 0xea, 0x12,
-	0xd2, 0xdf, 0xc4, 0x20, 0xd1, 0x93, 0x37, 0xaf, 0xd5, 0xa5, 0x7e, 0x00, 0x09, 0x3e, 0x32, 0x75,
-	0xda, 0x6d, 0xcb, 0xbf, 0x96, 0x05, 0x02, 0xce, 0x49, 0xad, 0x2a, 0x28, 0x68, 0x1b, 0x56, 0x18,
-	0x80, 0xda, 0xd4, 0xc1, 0x66, 0xe0, 0xda, 0x9e, 0x87, 0xa9, 0xcc, 0x8a, 0xe4, 0x39, 0xa9, 0x1d,
-	0x33, 0x7a, 0x55, 0x90, 0x51, 0x06, 0x56, 0x65, 0x5b, 0x42, 0x59, 0x1a, 0x85, 0xe8, 0x59, 0x51,
-	0x75, 0x04, 0xeb, 0x18, 0xbf, 0xa0, 0x21, 0xfe, 0x39, 0xdc, 0x62, 0x33, 0x50, 0x87, 0x62, 0x51,
-	0xd6, 0xe7, 0xb8, 0xe5, 0x53, 0xdf, 0x9d, 0x82, 0xd0, 0xc1, 0x2b, 0x7a, 0xa2, 0xde, 0x5d, 0xa4,
-	0x7f, 0xa3, 0x40, 0xa2, 0x87, 0x89, 0xf6, 0xe1, 0x16, 0xf3, 0x25, 0x4c, 0x3e, 0x19, 0xa9, 0x09,
-	0x73, 0x96, 0xc5, 0x29, 0x5c, 0xa0, 0x5d, 0x48, 0x52, 0xdf, 0xba, 0xc4, 0x8e, 0x19, 0x8e, 0x40,
-	0xb2, 0xc1, 0x7f, 0xf7, 0x46, 0x83, 0x5f, 0x94, 0x00, 0x63, 0x59, 0x48, 0x84, 0x6b, 0xad, 0x29,
-	0x7b, 0xf7, 0x68, 0xe6, 0x19, 0xdb, 0xf6, 0x85, 0xdd, 0x6c, 0x6c, 0x9a, 0x6e, 0x56, 0xfb, 0x9d,
-	0x22, 0x37, 0x8a, 0xc6, 0x9a, 0xb7, 0xb3, 0xd1, 0xe0, 0xc4, 0x33, 0x33, 0xcd, 0xc4, 0xb3, 0x7d,
-	0x09, 0x0b, 0xb2, 0xcd, 0x41, 0x29, 0x58, 0x63, 0x35, 0xfd, 0x49, 0x49, 0x7f, 0x3a, 0x50, 0x9e,
-	0xd7, 0x40, 0x8d, 0x38, 0xa5, 0xa2, 0x79, 0x78, 0x50, 0xfe, 0x99, 0xaa, 0xf4, 0x51, 0x2b, 0xa5,
-	0x83, 0x52, 0x25, 0x5f, 0x56, 0x63, 0x08, 0xc1, 0x72, 0x44, 0xad, 0x56, 0xf2, 0xe5, 0xb2, 0x3a,
-	0x83, 0x56, 0x60, 0x29, 0xa2, 0xed, 0x9d, 0x94, 0xcb, 0xea, 0x6c, 0xee, 0x57, 0x2b, 0x00, 0x8f,
-	0x49, 0xad, 0x2a, 0xbe, 0x19, 0xa0, 0x3f, 0x2b, 0xb0, 0x18, 0x1d, 0x08, 0x1a, 0x5d, 0x33, 0x06,
-	0x87, 0xd5, 0xf4, 0xd8, 0x40, 0x69, 0xcf, 0x7f, 0xf1, 0xed, 0x7f, 0x7e, 0x1d, 0x7b, 0xa6, 0x3d,
-	0x88, 0x46, 0xf0, 0xaf, 0x45, 0xc8, 0x3f, 0xf3, 0x7c, 0x72, 0x8e, 0xeb, 0x34, 0xc8, 0x6e, 0x67,
-	0x29, 0x76, 0x2d, 0x97, 0xfd, 0x7a, 0xc9, 0x06, 0xf4, 0xe0, 0xa1, 0xb2, 0x7d, 0x7a, 0x5f, 0xbb,
-	0x33, 0x42, 0x22, 0xc2, 0xa1, 0x3f, 0x28, 0x30, 0x2f, 0x66, 0x5c, 0xb4, 0x3d, 0xd2, 0x98, 0xbe,
-	0x41, 0x78, 0x02, 0xc3, 0x9f, 0x71, 0xc3, 0x0d, 0xd4, 0x63, 0x38, 0x1b, 0x40, 0x87, 0x9a, 0xcd,
-	0xad, 0xc9, 0x6e, 0xbf, 0x3c, 0xbd, 0x8b, 0xee, 0xbc, 0x1a, 0x2e, 0x41, 0xe8, 0x6f, 0x0a, 0x2c,
-	0x46, 0x99, 0x39, 0x26, 0xe2, 0x83, 0x83, 0xf9, 0x04, 0x86, 0x37, 0xb9, 0xe1, 0x5f, 0xe4, 0xb2,
-	0x5d, 0x4b, 0xce, 0x49, 0x2d, 0x33, 0xd6, 0x78, 0x16, 0xf5, 0xed, 0xdc, 0xbd, 0xd1, 0x52, 0x5d,
-	0x2c, 0xfa, 0xbd, 0x02, 0x8b, 0xd1, 0x14, 0x3e, 0xc6, 0x8d, 0xc1, 0xd1, 0x3e, 0x7d, 0xfb, 0xc6,
-	0x25, 0xd1, 0xdb, 0x1e, 0xbd, 0x0e, 0xa3, 0xbe, 0x3d, 0x5d, 0xd4, 0xb7, 0x27, 0x88, 0xfa, 0x5f,
-	0x15, 0x88, 0x87, 0xd3, 0x32, 0x1a, 0x3d, 0xd8, 0x0d, 0x7c, 0x15, 0x48, 0xef, 0x4c, 0x88, 0x16,
-	0xd5, 0x79, 0x58, 0xe6, 0x8c, 0x4d, 0xf9, 0xfe, 0xcc, 0x79, 0x45, 0xbe, 0xa3, 0x6f, 0x15, 0x48,
-	0x0e, 0x7c, 0xfd, 0x40, 0x9f, 0x8c, 0x34, 0x6e, 0xf8, 0xb7, 0x92, 0x57, 0x86, 0x3f, 0xe0, 0xa6,
-	0xb7, 0xb5, 0x1f, 0x4c, 0x73, 0x5b, 0x6b, 0xdd, 0x3d, 0x58, 0x0e, 0x65, 0xb5, 0x9d, 0xf1, 0x37,
-	0xb7, 0x47, 0x06, 0xfd, 0x4b, 0x09, 0xdb, 0x62, 0xee, 0x50, 0x66, 0xba, 0x59, 0x21, 0x9d, 0x9d,
-	0xf2, 0xf5, 0xd4, 0x1c, 0xee, 0x64, 0x53, 0xcb, 0x4d, 0xe3, 0xa4, 0x78, 0xcb, 0x99, 0x7f, 0x3b,
-	0xda, 0xd6, 0x78, 0xff, 0x22, 0x38, 0xfa, 0xaf, 0xd2, 0xdb, 0x46, 0xef, 0x11, 0x3f, 0xef, 0x60,
-	0x9f, 0xbe, 0x7d, 0x2f, 0x7f, 0xce, 0xbd, 0xbc, 0xd4, 0x1e, 0x4e, 0xef, 0x65, 0x68, 0x24, 0xf3,
-	0xf6, 0xfb, 0xda, 0x47, 0x93, 0x7a, 0xdb, 0x23, 0x86, 0xfe, 0x1d, 0x66, 0x6a, 0xf7, 0xad, 0x9f,
-	0x24, 0x53, 0x6f, 0x74, 0x06, 0xe9, 0xf7, 0x43, 0xa1, 0x9e, 0xef, 0xb4, 0x99, 0xc3, 0xf0, 0x3b,
-	0xad, 0x76, 0xc9, 0xbd, 0xf4, 0x5e, 0x23, 0x61, 0xc5, 0x56, 0xcc, 0xc5, 0xdc, 0xc4, 0x09, 0x1b,
-	0xc9, 0x74, 0xfd, 0xeb, 0xb6, 0x18, 0x93, 0xf8, 0x77, 0xa3, 0x21, 0x79, 0x7b, 0xfe, 0x89, 0xad,
-	0xa6, 0xf3, 0x2f, 0x92, 0x49, 0x3b, 0x7f, 0xcf, 0xaf, 0x32, 0xba, 0xb4, 0xce, 0xf2, 0xec, 0x20,
-	0x53, 0x27, 0xed, 0x7f, 0xe6, 0xab, 0x67, 0x94, 0x7a, 0xc1, 0xc3, 0x6c, 0xf6, 0xea, 0xea, 0x6a,
-	0x80, 0x99, 0xb5, 0x3a, 0xf4, 0x4c, 0x7c, 0x76, 0xdf, 0xf1, 0x1c, 0x8b, 0x36, 0x89, 0xdf, 0xfe,
-	0x70, 0x1c, 0x9c, 0x6d, 0xb2, 0xfb, 0x12, 0x3e, 0xa8, 0x93, 0xf6, 0xa8, 0xf0, 0xed, 0x26, 0xbb,
-	0x2d, 0xcb, 0x11, 0xab, 0x59, 0x47, 0xca, 0x69, 0x5e, 0xe2, 0x5b, 0xc4, 0xb1, 0xdc, 0x56, 0x86,
-	0xf8, 0xad, 0x6c, 0x0b, 0xbb, 0xbc, 0xa2, 0x65, 0xbb, 0x5b, 0x0d, 0xfd, 0x1f, 0xe0, 0x91, 0x58,
-	0xfe, 0x36, 0x36, 0x53, 0x38, 0xae, 0xd6, 0xe6, 0xb9, 0xcc, 0x27, 0xff, 0x0b, 0x00, 0x00, 0xff,
-	0xff, 0xad, 0x87, 0x4e, 0x68, 0x68, 0x19, 0x00, 0x00,
+	// 2016 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcd, 0x6f, 0x1b, 0xd7,
+	0x11, 0xef, 0x52, 0x5f, 0xd4, 0xd0, 0x12, 0x57, 0x4f, 0x8a, 0xc5, 0x50, 0x49, 0x23, 0xaf, 0x6b,
+	0x43, 0x95, 0x23, 0x32, 0x61, 0x52, 0x14, 0xb5, 0x11, 0xb4, 0x14, 0xb9, 0x8a, 0xe8, 0x92, 0x92,
+	0xba, 0x94, 0x6c, 0x57, 0x07, 0x6f, 0x96, 0xe4, 0x23, 0xb5, 0xd2, 0x72, 0xdf, 0x66, 0xf7, 0x51,
+	0xb2, 0x92, 0xfa, 0xd2, 0xfe, 0x03, 0x05, 0x7a, 0x2c, 0x90, 0x43, 0x7b, 0xed, 0xa1, 0x87, 0xde,
+	0x5a, 0x14, 0x28, 0xd0, 0x53, 0x2f, 0x05, 0x9a, 0x63, 0xd1, 0x5b, 0xff, 0x83, 0xfe, 0x03, 0xc5,
+	0xfb, 0xd8, 0xe5, 0x87, 0x68, 0x7e, 0xd8, 0xf0, 0x8d, 0x6f, 0xe6, 0x37, 0xf3, 0x66, 0xe6, 0xcd,
+	0x9b, 0x37, 0xb3, 0x84, 0x9d, 0x16, 0x21, 0x2d, 0x07, 0x67, 0xeb, 0x0e, 0xe9, 0x34, 0xb2, 0xd4,
+	0x72, 0xb0, 0x4b, 0xb3, 0x97, 0x9f, 0xd6, 0x30, 0xb5, 0x3e, 0xce, 0x9e, 0x93, 0x9a, 0x19, 0x60,
+	0xff, 0xd2, 0xae, 0xe3, 0x8c, 0xe7, 0x13, 0x4a, 0xd0, 0x86, 0x80, 0x67, 0x38, 0x3c, 0x23, 0xe0,
+	0x19, 0x09, 0x4f, 0xbf, 0x27, 0x75, 0x59, 0x9e, 0x9d, 0xb5, 0x5c, 0x97, 0x50, 0x8b, 0xda, 0xc4,
+	0x0d, 0x84, 0x68, 0x7a, 0xbd, 0x87, 0x5b, 0x77, 0x6c, 0x26, 0x28, 0x18, 0x5b, 0xa3, 0x4c, 0xa8,
+	0x93, 0x76, 0x9b, 0xb8, 0x12, 0xf9, 0xfd, 0x51, 0xc8, 0xa6, 0xed, 0x50, 0xec, 0x87, 0xbb, 0x3d,
+	0x18, 0x05, 0x3d, 0xb3, 0x03, 0x4a, 0x5a, 0xbe, 0xd5, 0x96, 0xe0, 0x7b, 0x63, 0x82, 0x20, 0x61,
+	0x77, 0x25, 0xcc, 0x21, 0x6e, 0xcb, 0xef, 0xb8, 0xae, 0xed, 0xb6, 0xb2, 0xc4, 0xc3, 0x7e, 0x9f,
+	0x9b, 0xdf, 0x95, 0x20, 0xbe, 0xaa, 0x75, 0x9a, 0xd9, 0x46, 0x47, 0x00, 0x24, 0x7f, 0x63, 0x90,
+	0x8f, 0xdb, 0x1e, 0xbd, 0x96, 0xcc, 0xcd, 0x41, 0x66, 0xd3, 0xc6, 0x4e, 0xc3, 0x6c, 0x5b, 0xc1,
+	0x85, 0x40, 0x68, 0xcf, 0x41, 0x2d, 0xf8, 0xd8, 0xa2, 0xf8, 0x31, 0xa9, 0x19, 0xf8, 0xcb, 0x0e,
+	0x0e, 0x28, 0xba, 0x0d, 0xf3, 0x9e, 0xe5, 0x63, 0x97, 0xa6, 0x94, 0x4d, 0x65, 0x6b, 0xd1, 0x90,
+	0x2b, 0x94, 0x83, 0x99, 0x73, 0x52, 0x4b, 0xc5, 0x36, 0x95, 0xad, 0x44, 0x6e, 0x33, 0x33, 0xe2,
+	0xe8, 0x32, 0x4c, 0x1b, 0x03, 0x6b, 0x77, 0x61, 0xe9, 0x73, 0x4c, 0x7b, 0x94, 0x23, 0x98, 0x75,
+	0xad, 0x36, 0x96, 0xaa, 0xf9, 0x6f, 0xed, 0x57, 0x0a, 0xa8, 0x27, 0x5e, 0xa3, 0xdf, 0x0a, 0xb9,
+	0x9b, 0x32, 0xc5, 0x6e, 0xe8, 0x11, 0x24, 0x3a, 0x5c, 0x0f, 0x77, 0x51, 0x5a, 0x9a, 0x0e, 0x65,
+	0xc3, 0x28, 0x64, 0xf6, 0x58, 0x14, 0x2a, 0x56, 0x70, 0x61, 0x80, 0x80, 0xb3, 0xdf, 0xda, 0x7d,
+	0x50, 0x8b, 0xd8, 0xc1, 0x7d, 0x46, 0x0c, 0xb3, 0x76, 0x1f, 0x6e, 0xef, 0x5a, 0xb4, 0x7e, 0x16,
+	0x81, 0x83, 0x71, 0x81, 0xbb, 0x0d, 0xf3, 0x22, 0x9b, 0xb8, 0x45, 0x8b, 0x86, 0x5c, 0x69, 0x7f,
+	0x55, 0x20, 0x59, 0xb6, 0x03, 0xfa, 0x06, 0x3a, 0xd0, 0xfb, 0x00, 0x9e, 0xd5, 0xc2, 0x26, 0x25,
+	0x17, 0xd8, 0x4d, 0xcd, 0x70, 0xde, 0x22, 0xa3, 0x1c, 0x33, 0x02, 0xda, 0x00, 0xbe, 0x30, 0x03,
+	0xfb, 0x2b, 0x9c, 0x9a, 0xdd, 0x54, 0xb6, 0xe6, 0x8c, 0x38, 0x23, 0x54, 0xed, 0xaf, 0x30, 0xfa,
+	0x31, 0xc4, 0xd9, 0x95, 0xbc, 0xb4, 0xf1, 0x55, 0x6a, 0x6e, 0x53, 0xd9, 0x5a, 0xce, 0x7d, 0x6f,
+	0x5c, 0x9c, 0x9f, 0xd8, 0xf8, 0xca, 0x58, 0x38, 0x17, 0x3f, 0xb4, 0x3f, 0x2b, 0xa0, 0x76, 0x1d,
+	0x08, 0x3c, 0xe2, 0x06, 0x18, 0x7d, 0x0a, 0xb3, 0xe7, 0xa4, 0x16, 0xa4, 0x94, 0xcd, 0x99, 0x89,
+	0x4e, 0x8e, 0xa3, 0xd1, 0x7d, 0x48, 0xba, 0xf8, 0x05, 0x35, 0x7b, 0x9c, 0x11, 0x8e, 0x2e, 0x31,
+	0xf2, 0x51, 0xe4, 0x50, 0x09, 0xe2, 0x6d, 0x4c, 0xad, 0x86, 0x45, 0x2d, 0xee, 0x6d, 0x22, 0xb7,
+	0x33, 0x72, 0x87, 0xd0, 0xac, 0x8a, 0x14, 0x32, 0x22, 0x71, 0xed, 0x9b, 0x04, 0xac, 0x54, 0xb1,
+	0xe5, 0xd7, 0xcf, 0x26, 0x39, 0x80, 0x53, 0x48, 0x04, 0x1c, 0x6c, 0xb6, 0x49, 0x03, 0x73, 0xe3,
+	0x96, 0x73, 0x3f, 0x1a, 0xb9, 0xf7, 0x0d, 0xe5, 0x92, 0x52, 0x21, 0x0d, 0x6c, 0x40, 0x10, 0xfd,
+	0x46, 0x4f, 0x41, 0xf5, 0x05, 0xc2, 0x1c, 0x70, 0xee, 0xc3, 0x31, 0xce, 0x71, 0xa1, 0xc8, 0xb7,
+	0xa4, 0xdf, 0x4f, 0x40, 0xbb, 0xb0, 0xc8, 0x4e, 0xf8, 0xcb, 0x0e, 0xf6, 0xaf, 0xf9, 0xf1, 0x27,
+	0x72, 0xf7, 0xc6, 0x1d, 0xc8, 0xcf, 0x18, 0xd8, 0x60, 0x99, 0xc1, 0x7f, 0xa1, 0x07, 0xb0, 0x82,
+	0x5d, 0xab, 0xe6, 0x60, 0xb3, 0xe6, 0x13, 0xab, 0x81, 0x59, 0x9d, 0xe2, 0xe9, 0x12, 0x37, 0x54,
+	0xc1, 0xd8, 0x8d, 0xe8, 0xe8, 0x33, 0xd8, 0x60, 0x36, 0xd8, 0x3e, 0x36, 0x3d, 0x1f, 0xd7, 0xed,
+	0x00, 0x9b, 0x3e, 0x0e, 0x3a, 0x0e, 0x15, 0x19, 0x38, 0xcf, 0xc5, 0x52, 0x12, 0x72, 0x24, 0x10,
+	0x06, 0x07, 0xf0, 0x8c, 0x7c, 0x06, 0x2b, 0x51, 0x31, 0xe5, 0x56, 0xdb, 0x38, 0x48, 0x2d, 0xf0,
+	0x44, 0x7a, 0x30, 0xd2, 0xee, 0xfd, 0x50, 0x4a, 0x58, 0xaf, 0x9e, 0xf5, 0xae, 0x6d, 0x1c, 0xf4,
+	0xe5, 0x7a, 0xfc, 0x35, 0x72, 0x9d, 0xe5, 0x05, 0x69, 0x36, 0x03, 0x4c, 0x53, 0x8b, 0xfc, 0x1a,
+	0xc9, 0x55, 0xff, 0x0d, 0x83, 0x81, 0x1b, 0xd6, 0x7f, 0x3b, 0x13, 0x83, 0xb7, 0xf3, 0x5d, 0x88,
+	0x13, 0xbf, 0x81, 0x7d, 0xb3, 0x76, 0x9d, 0xba, 0xc5, 0x99, 0x0b, 0x7c, 0xbd, 0x7b, 0x8d, 0x5e,
+	0xc0, 0x3b, 0x0d, 0xfb, 0x12, 0xfb, 0x81, 0xdd, 0xb4, 0xeb, 0xbc, 0xe0, 0x9b, 0x0e, 0xbe, 0xc4,
+	0x4e, 0x6a, 0x89, 0x1b, 0x5f, 0x98, 0x32, 0xf1, 0x8a, 0xfd, 0xba, 0xca, 0x4c, 0x95, 0xb1, 0xd6,
+	0x18, 0x42, 0x45, 0x1e, 0xac, 0xd6, 0x3b, 0x01, 0x25, 0x6d, 0xd3, 0xb7, 0xdc, 0x0b, 0xdb, 0x6d,
+	0x99, 0xb6, 0xdb, 0x24, 0xa9, 0x65, 0x9e, 0x3d, 0x3f, 0x99, 0x72, 0xdf, 0x02, 0xd7, 0x64, 0x08,
+	0x45, 0x25, 0xb7, 0x49, 0x8c, 0x95, 0xfa, 0x20, 0x09, 0xe5, 0x98, 0xaf, 0x01, 0x4f, 0xb1, 0x0b,
+	0x7c, 0x7d, 0x45, 0x7c, 0xf6, 0x44, 0xd1, 0xfa, 0x59, 0x4a, 0xe5, 0xe9, 0xb2, 0x2a, 0x99, 0x3f,
+	0x15, 0xbc, 0x0a, 0x63, 0xa5, 0xff, 0x14, 0x83, 0x95, 0x1b, 0xca, 0xd1, 0xd7, 0xa0, 0xda, 0x6d,
+	0x8f, 0xf8, 0xd4, 0x72, 0xeb, 0x58, 0x06, 0x4c, 0xe1, 0x01, 0x3b, 0x7a, 0x53, 0xc3, 0x33, 0xa5,
+	0x48, 0xb1, 0x88, 0x5e, 0xd2, 0xee, 0x27, 0xa0, 0x1d, 0x40, 0x61, 0xc4, 0xf0, 0x0b, 0xcf, 0xc7,
+	0x41, 0x60, 0x93, 0xb0, 0x8a, 0xad, 0x48, 0x8e, 0x1e, 0x31, 0xb4, 0x00, 0x92, 0x03, 0x2a, 0xd1,
+	0x26, 0xbc, 0x57, 0xaa, 0x1c, 0x1d, 0x1a, 0xc7, 0xf9, 0x83, 0x82, 0x6e, 0x96, 0xf5, 0x27, 0x7a,
+	0xd9, 0x3c, 0x39, 0xa8, 0x1e, 0xe9, 0x85, 0xd2, 0x5e, 0x49, 0x2f, 0xaa, 0xdf, 0x41, 0x71, 0x98,
+	0x3d, 0x38, 0x3c, 0xd0, 0x55, 0x05, 0x2d, 0xc0, 0x4c, 0xf9, 0xf0, 0xa9, 0x1a, 0x63, 0xa4, 0x4a,
+	0xa9, 0x5c, 0x54, 0x67, 0x10, 0xc0, 0x7c, 0x45, 0x2f, 0x96, 0x4e, 0x2a, 0xea, 0x2c, 0xa3, 0xee,
+	0x97, 0x3e, 0xdf, 0x57, 0xe7, 0x50, 0x02, 0x16, 0xf4, 0x67, 0xc7, 0x86, 0x5e, 0xd1, 0xd5, 0x79,
+	0xcd, 0x00, 0xe8, 0xd6, 0x20, 0xb4, 0x01, 0xeb, 0x55, 0x3d, 0x6f, 0x14, 0xf6, 0xcd, 0xca, 0x61,
+	0x51, 0x1f, 0xd8, 0x6a, 0x19, 0xe0, 0xf1, 0xe1, 0xae, 0x29, 0x00, 0xaa, 0x82, 0xd6, 0x61, 0x75,
+	0x4f, 0xcf, 0x1f, 0x9f, 0x18, 0x7a, 0xd1, 0xec, 0x61, 0xc4, 0xb4, 0xa7, 0xb0, 0x36, 0x2c, 0xbd,
+	0xd0, 0x3d, 0xb8, 0x53, 0x2c, 0x3d, 0xd1, 0x8d, 0x6a, 0x69, 0xaf, 0x54, 0xc8, 0x1f, 0x97, 0x0e,
+	0x0f, 0x86, 0xba, 0x74, 0x0b, 0xe2, 0xc5, 0x52, 0x35, 0xbf, 0x5b, 0xd6, 0x8b, 0xaa, 0xc2, 0x7c,
+	0xa8, 0x96, 0x2a, 0x47, 0x65, 0x5d, 0x8d, 0x69, 0xff, 0x8c, 0x03, 0xea, 0x3d, 0x19, 0xf9, 0xc0,
+	0x7c, 0x01, 0x4b, 0x3c, 0x3d, 0x58, 0xa0, 0x7b, 0x5e, 0x9a, 0x47, 0x13, 0x9f, 0xb0, 0xd0, 0x93,
+	0xa9, 0x48, 0x25, 0xec, 0x11, 0xba, 0xd5, 0xee, 0x2e, 0x02, 0x64, 0xc3, 0x7a, 0x7f, 0x19, 0xba,
+	0x96, 0x55, 0x2c, 0x48, 0xc5, 0xf8, 0x5e, 0x1f, 0x4f, 0x53, 0x8c, 0xb8, 0xa4, 0xf1, 0xce, 0xd9,
+	0x10, 0xea, 0xd0, 0x77, 0x6f, 0x66, 0xd8, 0xbb, 0x77, 0x04, 0xaa, 0x43, 0x64, 0x21, 0x90, 0xad,
+	0x69, 0x6a, 0x96, 0xdb, 0x32, 0xba, 0xa0, 0x97, 0xa5, 0x90, 0x91, 0x0c, 0xc5, 0xf7, 0x84, 0x34,
+	0xfa, 0x08, 0xd6, 0x70, 0x40, 0xed, 0xb6, 0x45, 0x71, 0xc3, 0xa4, 0x84, 0x5a, 0x8e, 0xa8, 0x61,
+	0x73, 0xbc, 0x86, 0xa1, 0x88, 0x77, 0xcc, 0x58, 0x61, 0x35, 0xeb, 0xc1, 0xcd, 0x73, 0xdc, 0x22,
+	0x8d, 0xd8, 0xbd, 0x4f, 0xf3, 0xc2, 0x1b, 0x3d, 0xcd, 0xe8, 0x11, 0xa4, 0xe5, 0x63, 0x83, 0x1b,
+	0xf2, 0x00, 0xd8, 0x49, 0x9b, 0x75, 0xd2, 0x71, 0x29, 0xaf, 0xdf, 0x73, 0xc6, 0x7a, 0x84, 0xe0,
+	0x01, 0x65, 0x07, 0x57, 0x60, 0x6c, 0x74, 0x0a, 0x6a, 0xe0, 0x61, 0xc7, 0x31, 0xeb, 0xc4, 0xf7,
+	0x71, 0x9d, 0xf9, 0xcc, 0x6b, 0x76, 0x22, 0x97, 0x1d, 0x9d, 0x22, 0x4c, 0xc8, 0x76, 0x5b, 0x85,
+	0x48, 0xcc, 0x48, 0x72, 0x45, 0x5d, 0x42, 0xfa, 0x9b, 0x18, 0x24, 0x7a, 0xf2, 0xe6, 0xb5, 0xba,
+	0xd4, 0x0f, 0x20, 0xc1, 0x27, 0xa1, 0x4e, 0xbb, 0x6d, 0xf9, 0xd7, 0xb2, 0x40, 0xc0, 0x39, 0xa9,
+	0x55, 0x05, 0x05, 0x6d, 0xc3, 0x0a, 0x03, 0x50, 0x9b, 0x3a, 0xd8, 0x0c, 0x5c, 0xdb, 0xf3, 0x30,
+	0x95, 0x59, 0x91, 0x3c, 0x27, 0xb5, 0x63, 0x46, 0xaf, 0x0a, 0x32, 0xca, 0xc0, 0xaa, 0x6c, 0x4b,
+	0x28, 0x4b, 0xa3, 0x10, 0x3d, 0x2b, 0xaa, 0x8e, 0x60, 0x1d, 0xe3, 0x17, 0x34, 0xc4, 0x3f, 0x87,
+	0x5b, 0x6c, 0x06, 0xea, 0x50, 0x2c, 0xca, 0xfa, 0x1c, 0xb7, 0x7c, 0xea, 0xbb, 0x53, 0x10, 0x3a,
+	0x78, 0x45, 0x4f, 0xd4, 0xbb, 0x8b, 0xf4, 0x6f, 0x15, 0x48, 0xf4, 0x30, 0xd1, 0x3e, 0xdc, 0x62,
+	0xbe, 0x84, 0xc9, 0x27, 0x23, 0x35, 0x61, 0xce, 0xb2, 0x38, 0x85, 0x0b, 0xb4, 0x0b, 0x49, 0xea,
+	0x5b, 0x97, 0xd8, 0x31, 0xc3, 0x11, 0x48, 0x36, 0xf8, 0xef, 0xde, 0x68, 0xf0, 0x8b, 0x12, 0x60,
+	0x2c, 0x0b, 0x89, 0x70, 0xad, 0x35, 0x65, 0xef, 0x1e, 0xcd, 0x3c, 0x63, 0xdb, 0xbe, 0xb0, 0x9b,
+	0x8d, 0x4d, 0xd3, 0xcd, 0x6a, 0xbf, 0x57, 0xe4, 0x46, 0xd1, 0x58, 0xf3, 0x76, 0x36, 0x1a, 0x9c,
+	0x78, 0x66, 0xa6, 0x99, 0x78, 0xb6, 0x2f, 0x61, 0x41, 0xb6, 0x39, 0x28, 0x05, 0x6b, 0xac, 0xa6,
+	0x3f, 0x29, 0xe9, 0x4f, 0x07, 0xca, 0xf3, 0x1a, 0xa8, 0x11, 0xa7, 0x54, 0x34, 0x0f, 0x0f, 0xca,
+	0x3f, 0x57, 0x95, 0x3e, 0x6a, 0xa5, 0x74, 0x50, 0xaa, 0xe4, 0xcb, 0x6a, 0x0c, 0x21, 0x58, 0x8e,
+	0xa8, 0xd5, 0x4a, 0xbe, 0x5c, 0x56, 0x67, 0xd0, 0x0a, 0x2c, 0x45, 0xb4, 0xbd, 0x93, 0x72, 0x59,
+	0x9d, 0xcd, 0xfd, 0x7a, 0x05, 0xe0, 0x31, 0xa9, 0x55, 0xc5, 0xa7, 0x00, 0xf4, 0x17, 0x05, 0x16,
+	0xa3, 0x03, 0x41, 0xa3, 0x6b, 0xc6, 0xe0, 0xb0, 0x9a, 0x1e, 0x1b, 0x28, 0xed, 0xf9, 0x2f, 0xbf,
+	0xfd, 0xef, 0x6f, 0x62, 0xcf, 0xb4, 0x07, 0xd1, 0x08, 0xfe, 0xb5, 0x08, 0xf9, 0x67, 0x9e, 0x4f,
+	0xce, 0x71, 0x9d, 0x06, 0xd9, 0xed, 0x2c, 0xc5, 0xae, 0xe5, 0xb2, 0x5f, 0x2f, 0xd9, 0x80, 0x1e,
+	0x3c, 0x54, 0xb6, 0x4f, 0xef, 0x6b, 0x77, 0x46, 0x48, 0x44, 0x38, 0xf4, 0x47, 0x05, 0xe6, 0xc5,
+	0x8c, 0x8b, 0xb6, 0x47, 0x1a, 0xd3, 0x37, 0x08, 0x4f, 0x60, 0xf8, 0x33, 0x6e, 0xb8, 0x81, 0x7a,
+	0x0c, 0x67, 0x03, 0xe8, 0x50, 0xb3, 0xb9, 0x35, 0xd9, 0xed, 0x97, 0xa7, 0x77, 0xd1, 0x9d, 0x57,
+	0xc3, 0x25, 0x08, 0xfd, 0x5d, 0x81, 0xc5, 0x28, 0x33, 0xc7, 0x44, 0x7c, 0x70, 0x30, 0x9f, 0xc0,
+	0xf0, 0x26, 0x37, 0xfc, 0x8b, 0x5c, 0xb6, 0x6b, 0xc9, 0x39, 0xa9, 0x65, 0xc6, 0x1a, 0xcf, 0xa2,
+	0xbe, 0x9d, 0xbb, 0x37, 0x5a, 0xaa, 0x8b, 0x45, 0x7f, 0x50, 0x60, 0x31, 0x9a, 0xc2, 0xc7, 0xb8,
+	0x31, 0x38, 0xda, 0xa7, 0x6f, 0xdf, 0xb8, 0x24, 0x7a, 0xdb, 0xa3, 0xd7, 0x61, 0xd4, 0xb7, 0xa7,
+	0x8b, 0xfa, 0xf6, 0x04, 0x51, 0xff, 0x9b, 0x02, 0xf1, 0x70, 0x5a, 0x46, 0xa3, 0x07, 0xbb, 0x81,
+	0xaf, 0x02, 0xe9, 0x9d, 0x09, 0xd1, 0xa2, 0x3a, 0x0f, 0xcb, 0x9c, 0xb1, 0x29, 0xdf, 0x9f, 0x39,
+	0xaf, 0xc8, 0x77, 0xf4, 0xad, 0x02, 0xc9, 0x81, 0xaf, 0x1f, 0xe8, 0x93, 0x91, 0xc6, 0x0d, 0xff,
+	0x56, 0xf2, 0xca, 0xf0, 0x07, 0xdc, 0xf4, 0xb6, 0xf6, 0xc3, 0x69, 0x6e, 0x6b, 0xad, 0xbb, 0x07,
+	0xcb, 0xa1, 0xac, 0xb6, 0x33, 0xfe, 0xe6, 0xf6, 0xc8, 0xa0, 0x7f, 0x2b, 0x61, 0x5b, 0xcc, 0x1d,
+	0xca, 0x4c, 0x37, 0x2b, 0xa4, 0xb3, 0x53, 0xbe, 0x9e, 0x9a, 0xc3, 0x9d, 0x6c, 0x6a, 0xb9, 0x69,
+	0x9c, 0x14, 0x6f, 0x39, 0xf3, 0x6f, 0x47, 0xdb, 0x1a, 0xef, 0x5f, 0x04, 0x47, 0xff, 0x53, 0x7a,
+	0xdb, 0xe8, 0x3d, 0xe2, 0xe7, 0x1d, 0xec, 0xd3, 0xb7, 0xef, 0xe5, 0x2f, 0xb8, 0x97, 0x97, 0xda,
+	0xc3, 0xe9, 0xbd, 0x0c, 0x8d, 0x64, 0xde, 0xfe, 0x40, 0xfb, 0x68, 0x52, 0x6f, 0x7b, 0xc4, 0xd0,
+	0x7f, 0xc2, 0x4c, 0xed, 0xbe, 0xf5, 0x93, 0x64, 0xea, 0x8d, 0xce, 0x20, 0xfd, 0x7e, 0x28, 0xd4,
+	0xf3, 0x9d, 0x36, 0x73, 0x18, 0x7e, 0xa7, 0xd5, 0x2e, 0xb9, 0x97, 0xde, 0x6b, 0x24, 0xac, 0xd8,
+	0x8a, 0xb9, 0x98, 0x9b, 0x38, 0x61, 0x23, 0x99, 0xae, 0x7f, 0xdd, 0x16, 0x63, 0x12, 0xff, 0x6e,
+	0x34, 0x24, 0x6f, 0xcf, 0x3f, 0xb1, 0xd5, 0x74, 0xfe, 0x45, 0x32, 0x69, 0xe7, 0x1f, 0xf9, 0x55,
+	0x46, 0x97, 0xd6, 0x59, 0x9e, 0x1d, 0x64, 0xea, 0xa4, 0xfd, 0xaf, 0x7c, 0xf5, 0x8c, 0x52, 0x2f,
+	0x78, 0x98, 0xcd, 0x5e, 0x5d, 0x5d, 0x0d, 0x30, 0xb3, 0x56, 0x87, 0x9e, 0x89, 0xcf, 0xee, 0x3b,
+	0x9e, 0x63, 0xd1, 0x26, 0xf1, 0xdb, 0x1f, 0x8e, 0x83, 0xb3, 0x4d, 0x76, 0x5f, 0xc2, 0x07, 0x75,
+	0xd2, 0x1e, 0x15, 0xbe, 0xdd, 0x64, 0xb7, 0x65, 0x39, 0x62, 0x35, 0xeb, 0x48, 0x39, 0xcd, 0x4b,
+	0x7c, 0x8b, 0x38, 0x96, 0xdb, 0xca, 0x10, 0xbf, 0x95, 0x6d, 0x61, 0x97, 0x57, 0xb4, 0x6c, 0x77,
+	0xab, 0xa1, 0xff, 0x03, 0x3c, 0x12, 0xcb, 0xdf, 0xc5, 0x66, 0x0a, 0xc7, 0xd5, 0xda, 0x3c, 0x97,
+	0xf9, 0xe4, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x68, 0x28, 0x11, 0x54, 0x3f, 0x19, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/cloud/talent/v4beta1/profile.pb.go b/googleapis/cloud/talent/v4beta1/profile.pb.go
index 506b6b5..69d08d4 100644
--- a/googleapis/cloud/talent/v4beta1/profile.pb.go
+++ b/googleapis/cloud/talent/v4beta1/profile.pb.go
@@ -210,6 +210,8 @@
 	// [EmploymentRecord.is_current][google.cloud.talent.v4beta1.EmploymentRecord.is_current]
 	// for the current employment if possible. If not, it's inferred from user
 	// inputs.
+	//
+	// The limitation for max number of employment records is 50.
 	EmploymentRecords []*EmploymentRecord `protobuf:"bytes,17,rep,name=employment_records,json=employmentRecords,proto3" json:"employment_records,omitempty"`
 	// Optional. The education history record of the candidate. It's highly
 	// recommended to input this information as accurately as possible to help
@@ -223,16 +225,24 @@
 	// [EducationRecord.is_current][google.cloud.talent.v4beta1.EducationRecord.is_current]
 	// for the current education if possible. If not, it's inferred from user
 	// inputs.
+	//
+	// The limitation for max number of education records is 10.
 	EducationRecords []*EducationRecord `protobuf:"bytes,18,rep,name=education_records,json=educationRecords,proto3" json:"education_records,omitempty"`
 	// Optional. The skill set of the candidate. It's highly recommended to
 	// provide as much information as possible to help improve the search quality.
+	//
+	// The limitation for max number of skills is 100.
 	Skills []*Skill `protobuf:"bytes,19,rep,name=skills,proto3" json:"skills,omitempty"`
 	// Optional. The individual or collaborative activities which the candidate
 	// has participated in, for example, open-source projects, class assignments
 	// that aren't listed in
 	// [employment_records][google.cloud.talent.v4beta1.Profile.employment_records].
+	//
+	// The limitation for max number of activities is 50.
 	Activities []*Activity `protobuf:"bytes,20,rep,name=activities,proto3" json:"activities,omitempty"`
 	// Optional. The publications published by the candidate.
+	//
+	// The limitation for max number of publications is 50.
 	Publications []*Publication `protobuf:"bytes,21,rep,name=publications,proto3" json:"publications,omitempty"`
 	// Optional. The patents acquired by the candidate.
 	Patents []*Patent `protobuf:"bytes,22,rep,name=patents,proto3" json:"patents,omitempty"`
@@ -1552,8 +1562,12 @@
 	// Optional. A list of team members involved in this activity.
 	//
 	// Number of characters allowed is 100.
+	//
+	// The limitation for max number of team members is 50.
 	TeamMembers []string `protobuf:"bytes,6,rep,name=team_members,json=teamMembers,proto3" json:"team_members,omitempty"`
 	// Optional. A list of skills used in this activity.
+	//
+	// The limitation for max number of skills used is 50.
 	SkillsUsed []*Skill `protobuf:"bytes,7,rep,name=skills_used,json=skillsUsed,proto3" json:"skills_used,omitempty"`
 	// Output only. Activity name snippet shows how the
 	// [display_name][google.cloud.talent.v4beta1.Activity.display_name] is
diff --git a/googleapis/cloud/talent/v4beta1/profile_service.pb.go b/googleapis/cloud/talent/v4beta1/profile_service.pb.go
index e516af3..3acb460 100644
--- a/googleapis/cloud/talent/v4beta1/profile_service.pb.go
+++ b/googleapis/cloud/talent/v4beta1/profile_service.pb.go
@@ -543,9 +543,11 @@
 	// [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])
 	HistogramQueries []*HistogramQuery `protobuf:"bytes,10,rep,name=histogram_queries,json=histogramQueries,proto3" json:"histogram_queries,omitempty"`
 	// Optional. An id that uniquely identifies the result set of a
-	// [SearchProfiles][] call.  The id should be retrieved from the
+	// [SearchProfiles][google.cloud.talent.v4beta1.ProfileService.SearchProfiles]
+	// call. The id should be retrieved from the
 	// [SearchProfilesResponse][google.cloud.talent.v4beta1.SearchProfilesResponse]
-	// message returned from a previous invocation of [SearchProfiles][].
+	// message returned from a previous invocation of
+	// [SearchProfiles][google.cloud.talent.v4beta1.ProfileService.SearchProfiles].
 	//
 	// A result set is an ordered list of search results.
 	//
@@ -558,8 +560,10 @@
 	// If this field is set, the service will ignore the resource and
 	// [profile_query][google.cloud.talent.v4beta1.SearchProfilesRequest.profile_query]
 	// values, and simply retrieve a page of results from the corresponding result
-	// set.  In this case, one and only one of [page_token] or [offset] must be
-	// set.
+	// set.  In this case, one and only one of
+	// [page_token][google.cloud.talent.v4beta1.SearchProfilesRequest.page_token]
+	// or [offset][google.cloud.talent.v4beta1.SearchProfilesRequest.offset] must
+	// be set.
 	//
 	// A typical use case is to invoke
 	// [SearchProfilesRequest][google.cloud.talent.v4beta1.SearchProfilesRequest]
@@ -568,7 +572,21 @@
 	// in
 	// [SearchProfilesResponse][google.cloud.talent.v4beta1.SearchProfilesResponse]
 	// to page through the results.
-	ResultSetId          string   `protobuf:"bytes,12,opt,name=result_set_id,json=resultSetId,proto3" json:"result_set_id,omitempty"`
+	ResultSetId string `protobuf:"bytes,12,opt,name=result_set_id,json=resultSetId,proto3" json:"result_set_id,omitempty"`
+	// Optional. This flag is used to indicate whether the service will attempt to
+	// understand synonyms and terms related to the search query or treat the
+	// query "as is" when it generates a set of results. By default this flag is
+	// set to false, thus allowing expanded results to also be returned. For
+	// example a search for "software engineer" might also return candidates who
+	// have experience in jobs similar to software engineer positions. By setting
+	// this flag to true, the service will only attempt to deliver candidates has
+	// software engineer in his/her global fields by treating "software engineer"
+	// as a keyword.
+	//
+	// It is recommended to provide a feature in the UI (such as a checkbox) to
+	// allow recruiters to set this flag to true if they intend to search for
+	// longer boolean strings.
+	StrictKeywordsSearch bool     `protobuf:"varint,13,opt,name=strict_keywords_search,json=strictKeywordsSearch,proto3" json:"strict_keywords_search,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -676,6 +694,13 @@
 	return ""
 }
 
+func (m *SearchProfilesRequest) GetStrictKeywordsSearch() bool {
+	if m != nil {
+		return m.StrictKeywordsSearch
+	}
+	return false
+}
+
 // Response of SearchProfiles method.
 type SearchProfilesResponse struct {
 	// An estimation of the number of profiles that match the specified query.
@@ -863,79 +888,81 @@
 }
 
 var fileDescriptor_d2b7b5f4d4d7ea55 = []byte{
-	// 1145 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
-	0x14, 0xd7, 0x26, 0x6e, 0xe2, 0x4c, 0xea, 0x26, 0x99, 0xa4, 0xe9, 0xe2, 0x82, 0xb0, 0x2c, 0x04,
-	0xae, 0xdb, 0xec, 0x36, 0x6e, 0xa5, 0xa0, 0x14, 0x2a, 0x92, 0xf0, 0xaf, 0x12, 0x45, 0xc1, 0x0e,
-	0x02, 0xf5, 0xb2, 0x1a, 0xaf, 0x9f, 0xed, 0x6d, 0x76, 0x77, 0xb6, 0x3b, 0xe3, 0x04, 0x07, 0x55,
-	0x02, 0x6e, 0x9c, 0x23, 0x4e, 0xdc, 0x2a, 0xb8, 0x71, 0xe3, 0x5b, 0x70, 0x84, 0xaf, 0xc0, 0x95,
-	0xef, 0x80, 0xe6, 0x8f, 0x37, 0xfe, 0xb3, 0x5a, 0xdb, 0x88, 0x9b, 0x67, 0xde, 0xfc, 0xde, 0xfb,
-	0xcd, 0xef, 0xbd, 0x7d, 0x6f, 0x8c, 0x76, 0x3b, 0x94, 0x76, 0x7c, 0xb0, 0x5d, 0x9f, 0xf6, 0x5a,
-	0x36, 0x27, 0x3e, 0x84, 0xdc, 0x3e, 0x7b, 0xd8, 0x04, 0x4e, 0x76, 0xed, 0x28, 0xa6, 0x6d, 0xcf,
-	0x07, 0x87, 0x41, 0x7c, 0xe6, 0xb9, 0x60, 0x45, 0x31, 0xe5, 0x14, 0xdf, 0x56, 0x10, 0x4b, 0x42,
-	0x2c, 0x05, 0xb1, 0x34, 0xa4, 0xf8, 0xba, 0xf6, 0x47, 0x22, 0xcf, 0x26, 0x61, 0x48, 0x39, 0xe1,
-	0x1e, 0x0d, 0x99, 0x82, 0x16, 0x6f, 0x0d, 0x59, 0x5d, 0xdf, 0x13, 0x40, 0x65, 0xa8, 0x64, 0xd1,
-	0x70, 0x69, 0x10, 0xd0, 0x50, 0x9f, 0xbc, 0x93, 0x75, 0xb2, 0xed, 0xf9, 0x1c, 0xe2, 0x41, 0xb4,
-	0xbb, 0x59, 0x47, 0xbb, 0x1e, 0xe3, 0xb4, 0x13, 0x93, 0x60, 0x16, 0xbf, 0x5a, 0x08, 0x7d, 0x54,
-	0x0b, 0x60, 0xcb, 0x55, 0xb3, 0xd7, 0xb6, 0x21, 0x88, 0x78, 0x5f, 0x1b, 0x4b, 0xe3, 0xc6, 0xb6,
-	0x07, 0x7e, 0xcb, 0x09, 0x08, 0x3b, 0x55, 0x27, 0xca, 0xaf, 0x0c, 0xb4, 0xf9, 0x99, 0xc7, 0xf8,
-	0xb1, 0x72, 0xca, 0xea, 0xf0, 0xa2, 0x07, 0x8c, 0xe3, 0x6d, 0xb4, 0x14, 0x91, 0x18, 0x42, 0x6e,
-	0x1a, 0x25, 0xa3, 0xb2, 0x52, 0xd7, 0x2b, 0xfc, 0x06, 0x42, 0x11, 0xe9, 0x80, 0xc3, 0xe9, 0x29,
-	0x84, 0xe6, 0x82, 0xb4, 0xad, 0x88, 0x9d, 0x13, 0xb1, 0x81, 0x6f, 0x23, 0xb9, 0x70, 0x98, 0x77,
-	0x01, 0xe6, 0x62, 0xc9, 0xa8, 0x5c, 0xab, 0xe7, 0xc5, 0x46, 0xc3, 0xbb, 0x00, 0xbc, 0x87, 0x56,
-	0x62, 0x20, 0x2a, 0xbc, 0x99, 0x2b, 0x19, 0x95, 0xd5, 0x5a, 0xd1, 0xd2, 0xf9, 0x1b, 0x30, 0xb4,
-	0x3e, 0x16, 0x0c, 0x9f, 0x12, 0x76, 0x5a, 0xcf, 0x8b, 0xc3, 0xe2, 0x57, 0xf9, 0x3b, 0x03, 0x6d,
-	0x8d, 0x92, 0x64, 0x11, 0x0d, 0x19, 0xe0, 0x0f, 0x50, 0x5e, 0xab, 0xc1, 0x4c, 0xa3, 0xb4, 0x58,
-	0x59, 0xad, 0xbd, 0x65, 0x65, 0x14, 0x84, 0xa5, 0x1d, 0xd4, 0x13, 0x14, 0x7e, 0x1b, 0xad, 0x85,
-	0xf0, 0x0d, 0x77, 0x26, 0x2e, 0x55, 0x10, 0xdb, 0xc7, 0x83, 0x8b, 0x95, 0x43, 0xb4, 0x75, 0x14,
-	0x03, 0xe1, 0x30, 0x70, 0x31, 0x45, 0xa7, 0xc7, 0x68, 0x59, 0xc7, 0x90, 0xfe, 0x66, 0x25, 0x36,
-	0x00, 0x95, 0xdf, 0x41, 0x1b, 0x9f, 0x00, 0x1f, 0x0b, 0x86, 0x51, 0x2e, 0x24, 0x01, 0xe8, 0x50,
-	0xf2, 0x77, 0xf9, 0xd2, 0x40, 0x5b, 0x5f, 0x46, 0xad, 0x49, 0x66, 0x43, 0x0c, 0x8c, 0xff, 0xc0,
-	0x00, 0x3f, 0x42, 0xab, 0x3d, 0xe9, 0x57, 0xe5, 0x6b, 0x61, 0x6a, 0xbe, 0x90, 0x3a, 0x2e, 0x33,
-	0x56, 0x45, 0x5b, 0x1f, 0x82, 0x0f, 0x13, 0xa4, 0xd2, 0x6e, 0xf0, 0x6b, 0x0e, 0xdd, 0x6c, 0x00,
-	0x89, 0xdd, 0xee, 0xac, 0x45, 0xf8, 0x15, 0x5a, 0x8f, 0xd5, 0x11, 0x27, 0x00, 0x4e, 0x5a, 0x84,
-	0x13, 0xcd, 0xef, 0x5e, 0xe6, 0x1d, 0xb5, 0xdf, 0xa7, 0x1a, 0x53, 0x5f, 0x8b, 0x47, 0x37, 0xf0,
-	0xe7, 0xa8, 0x30, 0x68, 0x33, 0x2f, 0x7a, 0x10, 0xf7, 0x65, 0x09, 0xaf, 0xd6, 0xee, 0xcc, 0xa2,
-	0xdc, 0x17, 0x02, 0x50, 0xbf, 0x1e, 0x0d, 0xad, 0x46, 0x3f, 0x87, 0xdc, 0xd8, 0xe7, 0x30, 0xfa,
-	0x29, 0x5d, 0x1b, 0xff, 0x94, 0xb6, 0xd1, 0x12, 0x6d, 0xb7, 0x19, 0x70, 0x73, 0x49, 0x02, 0xf5,
-	0x0a, 0x5b, 0x68, 0xb3, 0xe5, 0x31, 0xd2, 0x14, 0xad, 0x30, 0x02, 0xdf, 0x77, 0xdc, 0x2e, 0xb8,
-	0xa7, 0xe6, 0x72, 0xc9, 0xa8, 0xe4, 0xeb, 0x1b, 0xda, 0xd4, 0x10, 0x96, 0x23, 0x61, 0xc0, 0xaf,
-	0xa1, 0x3c, 0x8d, 0x5b, 0x10, 0x3b, 0xcd, 0xbe, 0x99, 0x97, 0x41, 0x96, 0xe5, 0xfa, 0xb0, 0x2f,
-	0x5c, 0xb9, 0x84, 0x89, 0x96, 0x1a, 0x32, 0x8f, 0x7b, 0x67, 0xe0, 0x30, 0x1a, 0x73, 0x73, 0x45,
-	0xb9, 0x12, 0xa6, 0xc6, 0xc0, 0xd2, 0xa0, 0x31, 0xc7, 0x5f, 0xa3, 0x8d, 0xa4, 0x53, 0x49, 0x81,
-	0x3c, 0x60, 0x26, 0x92, 0xdf, 0xdd, 0xdd, 0x4c, 0x89, 0x3e, 0x1d, 0xa0, 0x94, 0x48, 0xeb, 0xdd,
-	0xe1, 0xb5, 0x07, 0x0c, 0x97, 0x51, 0x21, 0x06, 0xd6, 0xf3, 0xb9, 0xc3, 0x80, 0x3b, 0x5e, 0xcb,
-	0xbc, 0x2e, 0x99, 0xae, 0xaa, 0xcd, 0x06, 0xf0, 0x27, 0xad, 0xf2, 0x8f, 0x39, 0xb4, 0x3d, 0x5e,
-	0x27, 0xba, 0x0f, 0xdc, 0x47, 0x5b, 0xc0, 0xb8, 0x17, 0x10, 0x0e, 0x2d, 0x87, 0x53, 0x4e, 0x7c,
-	0x25, 0xb9, 0x28, 0x9b, 0xc5, 0x3a, 0x4e, 0x6c, 0x27, 0xc2, 0x24, 0xc5, 0x7f, 0x86, 0xd6, 0xb5,
-	0x7a, 0x34, 0x8e, 0xc1, 0x15, 0x73, 0x41, 0x97, 0x90, 0x9d, 0x79, 0x13, 0x29, 0xac, 0x17, 0x76,
-	0x8e, 0x12, 0x58, 0x7d, 0x4d, 0x3a, 0xba, 0xda, 0xc0, 0x4f, 0x50, 0x3e, 0x29, 0x4b, 0x55, 0x40,
-	0x3b, 0x53, 0xca, 0x52, 0x5d, 0x23, 0xa9, 0xcb, 0x04, 0x9e, 0xd6, 0x9e, 0x72, 0x29, 0xed, 0x09,
-	0x7b, 0xe8, 0xd6, 0x68, 0x66, 0xfa, 0x8e, 0x92, 0x8e, 0x99, 0xd7, 0x64, 0x7e, 0x76, 0xe7, 0xc9,
-	0x8f, 0x44, 0xd6, 0x6f, 0x76, 0x53, 0x76, 0x19, 0x76, 0xd0, 0x26, 0xeb, 0x05, 0x01, 0x89, 0xbd,
-	0x0b, 0x68, 0x39, 0x49, 0xfb, 0x5d, 0x92, 0x61, 0xac, 0x6c, 0xf1, 0x12, 0xdc, 0xa0, 0x2d, 0x60,
-	0x36, 0xbe, 0x95, 0x52, 0x0b, 0xcb, 0x93, 0xb5, 0xf0, 0x93, 0x81, 0x36, 0x26, 0xbc, 0xfd, 0x0f,
-	0xe3, 0xe0, 0x31, 0x5a, 0x56, 0x8c, 0xfa, 0xf3, 0xb5, 0x6d, 0x0d, 0xaa, 0xfd, 0x93, 0x47, 0x37,
-	0xf4, 0x66, 0x43, 0xbd, 0x53, 0xf0, 0x6f, 0x06, 0xba, 0x3e, 0x3c, 0xbc, 0xf0, 0xfd, 0x4c, 0x97,
-	0x29, 0xc3, 0xb8, 0xb8, 0x3b, 0x07, 0x42, 0x95, 0x52, 0x79, 0xef, 0x87, 0xbf, 0xfe, 0xbe, 0x5c,
-	0xd8, 0xc5, 0x76, 0xf2, 0x6c, 0xf8, 0x56, 0x35, 0xcf, 0xf7, 0xa3, 0x98, 0x3e, 0x07, 0x97, 0x33,
-	0xbb, 0x6a, 0x73, 0x08, 0x49, 0x28, 0x7e, 0xbd, 0xb4, 0x13, 0x05, 0x7e, 0x31, 0x50, 0x61, 0x64,
-	0xd2, 0xe1, 0xec, 0xe8, 0x69, 0x53, 0xb1, 0x38, 0x93, 0x6a, 0xe5, 0x7d, 0xc9, 0xf1, 0x61, 0x79,
-	0x5e, 0x8e, 0xfb, 0x46, 0x15, 0xff, 0x6c, 0x20, 0x74, 0x35, 0x20, 0x71, 0x76, 0xdd, 0x4d, 0x4c,
-	0xd2, 0x19, 0x09, 0xa6, 0x88, 0x28, 0x26, 0x56, 0x2a, 0xbd, 0x84, 0x9d, 0x5d, 0x7d, 0x29, 0x72,
-	0x5e, 0x18, 0x19, 0xca, 0x53, 0x44, 0x4c, 0x1b, 0xe0, 0x33, 0x72, 0x3c, 0x94, 0x1c, 0xdf, 0xab,
-	0xed, 0x0d, 0x89, 0xa8, 0x1f, 0x88, 0x33, 0x71, 0x15, 0x62, 0x5e, 0x1a, 0xa8, 0x30, 0x32, 0xae,
-	0xa7, 0xd0, 0x4d, 0x1b, 0xed, 0xc5, 0xed, 0x89, 0xa7, 0xc1, 0x47, 0xe2, 0x25, 0x3a, 0x10, 0xb1,
-	0x3a, 0xb7, 0x88, 0xbf, 0x1b, 0xe8, 0xc6, 0x68, 0xbf, 0xc7, 0xb5, 0xec, 0xf6, 0x92, 0xf6, 0x88,
-	0x28, 0x3e, 0x98, 0x0b, 0xa3, 0x3f, 0x9f, 0x77, 0x25, 0xe9, 0x5a, 0x79, 0x67, 0xb6, 0xd2, 0xdc,
-	0x67, 0xd2, 0xcd, 0xbe, 0x51, 0x2d, 0xfa, 0x7f, 0x1c, 0x6c, 0x3e, 0xa7, 0x4d, 0xa6, 0xa3, 0x92,
-	0xc8, 0x63, 0x96, 0x4b, 0x83, 0x3f, 0x0f, 0x1a, 0x5d, 0xce, 0x23, 0xb6, 0x6f, 0xdb, 0xe7, 0xe7,
-	0xe7, 0x63, 0x46, 0x9b, 0xf4, 0x78, 0x57, 0x3d, 0xf6, 0x77, 0x22, 0x9f, 0xf0, 0x36, 0x8d, 0x83,
-	0x7b, 0xd3, 0x8e, 0x8b, 0x20, 0x87, 0xdf, 0x1b, 0xe8, 0x4d, 0x97, 0x06, 0x59, 0x57, 0x3c, 0xdc,
-	0x1c, 0x6d, 0x48, 0xc7, 0x22, 0x3d, 0xc7, 0xc6, 0xb3, 0x03, 0x8d, 0xe9, 0x50, 0x9f, 0x84, 0x1d,
-	0x8b, 0xc6, 0x1d, 0xbb, 0x03, 0xa1, 0x4c, 0x9e, 0x7d, 0x15, 0x2f, 0xf5, 0x2f, 0xc8, 0x23, 0xb5,
-	0x7c, 0xb5, 0xb0, 0x78, 0x74, 0xd2, 0x68, 0x2e, 0x49, 0xcc, 0x83, 0x7f, 0x03, 0x00, 0x00, 0xff,
-	0xff, 0x87, 0xd6, 0xb3, 0xe6, 0xbe, 0x0d, 0x00, 0x00,
+	// 1177 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcf, 0x6f, 0x1b, 0xc5,
+	0x17, 0xd7, 0x26, 0x6e, 0xe2, 0x4c, 0xe2, 0x26, 0x99, 0xb8, 0xe9, 0x7e, 0xdd, 0x2f, 0xc2, 0x5a,
+	0x21, 0x70, 0xdd, 0x66, 0xb7, 0x71, 0x23, 0x05, 0xa5, 0x50, 0x91, 0x84, 0x5f, 0x15, 0x14, 0x05,
+	0x3b, 0x08, 0xd4, 0xcb, 0x6a, 0xbc, 0x1e, 0xdb, 0xdb, 0xec, 0xee, 0x6c, 0x67, 0xc6, 0x09, 0x0e,
+	0xaa, 0x04, 0xdc, 0x38, 0x47, 0x9c, 0xb8, 0x55, 0x1c, 0xb9, 0xf1, 0x5f, 0x70, 0x84, 0x23, 0x57,
+	0xae, 0xfc, 0x0f, 0x68, 0x7e, 0x78, 0xe3, 0x1f, 0xab, 0xb5, 0x8d, 0xb8, 0xed, 0xbc, 0x37, 0x9f,
+	0xf7, 0x3e, 0xf3, 0xde, 0x9b, 0xf7, 0x66, 0xc1, 0x6e, 0x87, 0x90, 0x4e, 0x80, 0x1d, 0x2f, 0x20,
+	0xbd, 0x96, 0xc3, 0x51, 0x80, 0x23, 0xee, 0x9c, 0xef, 0x35, 0x31, 0x47, 0xbb, 0x4e, 0x4c, 0x49,
+	0xdb, 0x0f, 0xb0, 0xcb, 0x30, 0x3d, 0xf7, 0x3d, 0x6c, 0xc7, 0x94, 0x70, 0x02, 0xef, 0x28, 0x88,
+	0x2d, 0x21, 0xb6, 0x82, 0xd8, 0x1a, 0x52, 0xfa, 0xbf, 0xb6, 0x87, 0x62, 0xdf, 0x41, 0x51, 0x44,
+	0x38, 0xe2, 0x3e, 0x89, 0x98, 0x82, 0x96, 0x6e, 0x0f, 0x69, 0xbd, 0xc0, 0x17, 0x40, 0xa5, 0xa8,
+	0x64, 0xd1, 0xf0, 0x48, 0x18, 0x92, 0x48, 0xef, 0xbc, 0x9b, 0xb5, 0xb3, 0xed, 0x07, 0x1c, 0xd3,
+	0x81, 0xb7, 0x7b, 0x59, 0x5b, 0xbb, 0x3e, 0xe3, 0xa4, 0x43, 0x51, 0x38, 0x8b, 0x5d, 0x1d, 0x08,
+	0xbd, 0x55, 0x07, 0xc0, 0x91, 0xab, 0x66, 0xaf, 0xed, 0xe0, 0x30, 0xe6, 0x7d, 0xad, 0x2c, 0x8f,
+	0x2b, 0xdb, 0x3e, 0x0e, 0x5a, 0x6e, 0x88, 0xd8, 0x99, 0xda, 0x61, 0xbd, 0x32, 0xc0, 0xd6, 0xa7,
+	0x3e, 0xe3, 0x27, 0xca, 0x28, 0xab, 0xe3, 0x17, 0x3d, 0xcc, 0x38, 0xdc, 0x06, 0x4b, 0x31, 0xa2,
+	0x38, 0xe2, 0xa6, 0x51, 0x36, 0x2a, 0x2b, 0x75, 0xbd, 0x82, 0xaf, 0x01, 0x10, 0xa3, 0x0e, 0x76,
+	0x39, 0x39, 0xc3, 0x91, 0xb9, 0x20, 0x75, 0x2b, 0x42, 0x72, 0x2a, 0x04, 0xf0, 0x0e, 0x90, 0x0b,
+	0x97, 0xf9, 0x97, 0xd8, 0x5c, 0x2c, 0x1b, 0x95, 0x1b, 0xf5, 0xbc, 0x10, 0x34, 0xfc, 0x4b, 0x0c,
+	0xf7, 0xc1, 0x0a, 0xc5, 0x48, 0xb9, 0x37, 0x73, 0x65, 0xa3, 0xb2, 0x5a, 0x2b, 0xd9, 0x3a, 0x7f,
+	0x03, 0x86, 0xf6, 0x87, 0x82, 0xe1, 0x53, 0xc4, 0xce, 0xea, 0x79, 0xb1, 0x59, 0x7c, 0x59, 0xdf,
+	0x1a, 0xa0, 0x38, 0x4a, 0x92, 0xc5, 0x24, 0x62, 0x18, 0xbe, 0x07, 0xf2, 0x3a, 0x1a, 0xcc, 0x34,
+	0xca, 0x8b, 0x95, 0xd5, 0xda, 0x1b, 0x76, 0x46, 0x41, 0xd8, 0xda, 0x40, 0x3d, 0x41, 0xc1, 0x37,
+	0xc1, 0x7a, 0x84, 0xbf, 0xe6, 0xee, 0xc4, 0xa1, 0x0a, 0x42, 0x7c, 0x32, 0x38, 0x98, 0x15, 0x81,
+	0xe2, 0x31, 0xc5, 0x88, 0xe3, 0x81, 0x89, 0x29, 0x71, 0x7a, 0x0c, 0x96, 0xb5, 0x0f, 0x69, 0x6f,
+	0x56, 0x62, 0x03, 0x90, 0xf5, 0x16, 0xd8, 0xfc, 0x08, 0xf3, 0x31, 0x67, 0x10, 0xe4, 0x22, 0x14,
+	0x62, 0xed, 0x4a, 0x7e, 0x5b, 0x57, 0x06, 0x28, 0x7e, 0x11, 0xb7, 0x26, 0x99, 0x0d, 0x31, 0x30,
+	0xfe, 0x05, 0x03, 0xf8, 0x08, 0xac, 0xf6, 0xa4, 0x5d, 0x95, 0xaf, 0x85, 0xa9, 0xf9, 0x02, 0x6a,
+	0xbb, 0xcc, 0x58, 0x15, 0x14, 0xdf, 0xc7, 0x01, 0x9e, 0x20, 0x95, 0x76, 0x82, 0x3f, 0x73, 0xe0,
+	0x56, 0x03, 0x23, 0xea, 0x75, 0x67, 0x2d, 0xc2, 0x2f, 0xc1, 0x06, 0x55, 0x5b, 0xdc, 0x10, 0x73,
+	0xd4, 0x42, 0x1c, 0x69, 0x7e, 0xf7, 0x33, 0xcf, 0xa8, 0xed, 0x3e, 0xd5, 0x98, 0xfa, 0x3a, 0x1d,
+	0x15, 0xc0, 0xcf, 0x40, 0x61, 0xd0, 0x66, 0x5e, 0xf4, 0x30, 0xed, 0xcb, 0x12, 0x5e, 0xad, 0xdd,
+	0x9d, 0x25, 0x72, 0x9f, 0x0b, 0x40, 0x7d, 0x2d, 0x1e, 0x5a, 0x8d, 0x5e, 0x87, 0xdc, 0xd8, 0x75,
+	0x18, 0xbd, 0x4a, 0x37, 0xc6, 0xaf, 0xd2, 0x36, 0x58, 0x22, 0xed, 0x36, 0xc3, 0xdc, 0x5c, 0x92,
+	0x40, 0xbd, 0x82, 0x36, 0xd8, 0x6a, 0xf9, 0x0c, 0x35, 0x45, 0x2b, 0x8c, 0x71, 0x10, 0xb8, 0x5e,
+	0x17, 0x7b, 0x67, 0xe6, 0x72, 0xd9, 0xa8, 0xe4, 0xeb, 0x9b, 0x5a, 0xd5, 0x10, 0x9a, 0x63, 0xa1,
+	0x80, 0xff, 0x03, 0x79, 0x42, 0x5b, 0x98, 0xba, 0xcd, 0xbe, 0x99, 0x97, 0x4e, 0x96, 0xe5, 0xfa,
+	0xa8, 0x2f, 0x4c, 0x79, 0x88, 0x89, 0x96, 0x1a, 0x31, 0x9f, 0xfb, 0xe7, 0xd8, 0x65, 0x84, 0x72,
+	0x73, 0x45, 0x99, 0x12, 0xaa, 0xc6, 0x40, 0xd3, 0x20, 0x94, 0xc3, 0xaf, 0xc0, 0x66, 0xd2, 0xa9,
+	0x64, 0x80, 0x7c, 0xcc, 0x4c, 0x20, 0xef, 0xdd, 0xbd, 0xcc, 0x10, 0x7d, 0x3c, 0x40, 0xa9, 0x20,
+	0x6d, 0x74, 0x87, 0xd7, 0x3e, 0x66, 0xd0, 0x02, 0x05, 0x8a, 0x59, 0x2f, 0xe0, 0x2e, 0xc3, 0xdc,
+	0xf5, 0x5b, 0xe6, 0x9a, 0x64, 0xba, 0xaa, 0x84, 0x0d, 0xcc, 0x9f, 0xb4, 0xe0, 0x1e, 0xd8, 0x66,
+	0x9c, 0xfa, 0x1e, 0x77, 0xcf, 0x70, 0xff, 0x82, 0xd0, 0x16, 0x73, 0x99, 0x2c, 0x1b, 0xb3, 0x20,
+	0x09, 0x17, 0x95, 0xf6, 0x13, 0xad, 0x54, 0x25, 0x65, 0xfd, 0x90, 0x03, 0xdb, 0xe3, 0xd5, 0xa5,
+	0xbb, 0xc7, 0x03, 0x50, 0xc4, 0x8c, 0xfb, 0x21, 0xe2, 0xb8, 0xe5, 0x72, 0xc2, 0x51, 0xa0, 0x12,
+	0x25, 0x8a, 0x6d, 0xb1, 0x0e, 0x13, 0xdd, 0xa9, 0x50, 0xc9, 0x94, 0x3d, 0x03, 0x1b, 0x3a, 0xe6,
+	0x84, 0x52, 0xec, 0x89, 0x69, 0xa2, 0x0b, 0xcf, 0xc9, 0x3c, 0xbf, 0x4c, 0x87, 0x1f, 0x75, 0x8e,
+	0x13, 0x58, 0x7d, 0x5d, 0x1a, 0xba, 0x16, 0xc0, 0x27, 0x20, 0x9f, 0x14, 0xb3, 0x2a, 0xbb, 0x9d,
+	0x29, 0xc5, 0xac, 0x8e, 0x91, 0x54, 0x73, 0x02, 0x4f, 0x6b, 0x6a, 0xb9, 0x94, 0xa6, 0x06, 0x7d,
+	0x70, 0x7b, 0x34, 0x9f, 0x7d, 0x57, 0x05, 0x9c, 0x99, 0x37, 0x64, 0x56, 0x77, 0xe7, 0xc9, 0xaa,
+	0x44, 0xd6, 0x6f, 0x75, 0x53, 0xa4, 0x0c, 0xba, 0x60, 0x8b, 0xf5, 0xc2, 0x10, 0x51, 0xff, 0x12,
+	0xb7, 0xdc, 0xa4, 0x69, 0x2f, 0x49, 0x37, 0x76, 0x76, 0xf0, 0x12, 0xdc, 0xa0, 0x99, 0x40, 0x36,
+	0x2e, 0x4a, 0xa9, 0xa0, 0xe5, 0x89, 0x0a, 0xb2, 0x7e, 0x34, 0xc0, 0xe6, 0x84, 0xb5, 0xff, 0x60,
+	0x88, 0x3c, 0x06, 0xcb, 0x8a, 0x51, 0x7f, 0xbe, 0x66, 0xaf, 0x41, 0xb5, 0xbf, 0xf3, 0xe0, 0xa6,
+	0x16, 0x36, 0xd4, 0xeb, 0x06, 0xfe, 0x62, 0x80, 0xb5, 0xe1, 0x91, 0x07, 0x1f, 0x64, 0x9a, 0x4c,
+	0x19, 0xe1, 0xa5, 0xdd, 0x39, 0x10, 0xaa, 0x94, 0xac, 0xfd, 0xef, 0xff, 0xf8, 0xeb, 0x6a, 0x61,
+	0x17, 0x3a, 0xc9, 0x63, 0xe3, 0x1b, 0xd5, 0x72, 0xdf, 0x8d, 0x29, 0x79, 0x8e, 0x3d, 0xce, 0x9c,
+	0xaa, 0xc3, 0x71, 0x84, 0x22, 0xf1, 0xf5, 0xd2, 0x49, 0x22, 0xf0, 0xb3, 0x01, 0x0a, 0x23, 0xf3,
+	0x11, 0x66, 0x7b, 0x4f, 0x9b, 0xa5, 0xa5, 0x99, 0xa2, 0x66, 0x1d, 0x48, 0x8e, 0x7b, 0xd6, 0xbc,
+	0x1c, 0x0f, 0x8c, 0x2a, 0xfc, 0xc9, 0x00, 0xe0, 0x7a, 0xac, 0xc2, 0xec, 0xba, 0x9b, 0x98, 0xbf,
+	0x33, 0x12, 0x4c, 0x09, 0xa2, 0x98, 0x73, 0xa9, 0xf4, 0x12, 0x76, 0x4e, 0xf5, 0xa5, 0xc8, 0x79,
+	0x61, 0x64, 0x94, 0x4f, 0x09, 0x62, 0xda, 0xd8, 0x9f, 0x91, 0xe3, 0x91, 0xe4, 0xf8, 0x4e, 0x6d,
+	0x7f, 0x28, 0x88, 0xfa, 0x59, 0x39, 0x13, 0x57, 0x11, 0xcc, 0x2b, 0x03, 0x14, 0x46, 0x86, 0xfc,
+	0x14, 0xba, 0x69, 0x0f, 0x82, 0xd2, 0xf6, 0xc4, 0x83, 0xe2, 0x03, 0xf1, 0x7e, 0x1d, 0x04, 0xb1,
+	0x3a, 0x77, 0x10, 0x7f, 0x35, 0xc0, 0xcd, 0xd1, 0x7e, 0x0f, 0x6b, 0xd9, 0xed, 0x25, 0xed, 0xe9,
+	0x51, 0x7a, 0x38, 0x17, 0x46, 0x5f, 0x9f, 0xb7, 0x25, 0xe9, 0x9a, 0xb5, 0x33, 0x5b, 0x69, 0x1e,
+	0xa8, 0xf1, 0x75, 0x60, 0x54, 0x4b, 0xc1, 0x6f, 0x87, 0x5b, 0xcf, 0x49, 0x93, 0x69, 0xaf, 0x28,
+	0xf6, 0x99, 0xed, 0x91, 0xf0, 0xf7, 0xc3, 0x46, 0x97, 0xf3, 0x98, 0x1d, 0x38, 0xce, 0xc5, 0xc5,
+	0xc5, 0x98, 0xd2, 0x41, 0x3d, 0xde, 0x55, 0xbf, 0x08, 0x3b, 0x71, 0x80, 0x78, 0x9b, 0xd0, 0xf0,
+	0xfe, 0xb4, 0xed, 0xc2, 0xc9, 0xd1, 0x77, 0x06, 0x78, 0xdd, 0x23, 0x61, 0xd6, 0x11, 0x8f, 0xb6,
+	0x46, 0x1b, 0xd2, 0x89, 0x48, 0xcf, 0x89, 0xf1, 0xec, 0x50, 0x63, 0x3a, 0x24, 0x40, 0x51, 0xc7,
+	0x26, 0xb4, 0xe3, 0x74, 0x70, 0x24, 0x93, 0xe7, 0x5c, 0xfb, 0x4b, 0xfd, 0x71, 0x79, 0xa4, 0x96,
+	0xaf, 0x16, 0x16, 0x8f, 0x4f, 0x1b, 0xcd, 0x25, 0x89, 0x79, 0xf8, 0x4f, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0xaf, 0x4b, 0x45, 0x04, 0xf4, 0x0d, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go b/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go
index 7ecd6af..aa09115 100644
--- a/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go
+++ b/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go
@@ -40,6 +40,8 @@
 	Feature_SHOT_CHANGE_DETECTION Feature = 2
 	// Explicit content detection.
 	Feature_EXPLICIT_CONTENT_DETECTION Feature = 3
+	// Human face detection and tracking.
+	Feature_FACE_DETECTION Feature = 4
 	// Speech transcription.
 	Feature_SPEECH_TRANSCRIPTION Feature = 6
 	// OCR text detection and tracking.
@@ -53,6 +55,7 @@
 	1: "LABEL_DETECTION",
 	2: "SHOT_CHANGE_DETECTION",
 	3: "EXPLICIT_CONTENT_DETECTION",
+	4: "FACE_DETECTION",
 	6: "SPEECH_TRANSCRIPTION",
 	7: "TEXT_DETECTION",
 	9: "OBJECT_TRACKING",
@@ -63,6 +66,7 @@
 	"LABEL_DETECTION":            1,
 	"SHOT_CHANGE_DETECTION":      2,
 	"EXPLICIT_CONTENT_DETECTION": 3,
+	"FACE_DETECTION":             4,
 	"SPEECH_TRANSCRIPTION":       6,
 	"TEXT_DETECTION":             7,
 	"OBJECT_TRACKING":            9,
@@ -162,10 +166,10 @@
 	// [Google Cloud Storage](https://cloud.google.com/storage/) URIs are
 	// supported, which must be specified in the following format:
 	// `gs://bucket-id/object-id` (other URI formats return
-	// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see
-	// [Request URIs](/storage/docs/reference-uris).
-	// A video URI may include wildcards in `object-id`, and thus identify
-	// multiple videos. Supported wildcards: '*' to match 0 or more characters;
+	// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For
+	// more information, see [Request URIs](/storage/docs/reference-uris). A video
+	// URI may include wildcards in `object-id`, and thus identify multiple
+	// videos. Supported wildcards: '*' to match 0 or more characters;
 	// '?' to match 1 character. If unset, the input video should be embedded
 	// in the request as `input_content`. If set, `input_content` should be unset.
 	InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri,proto3" json:"input_uri,omitempty"`
@@ -181,8 +185,8 @@
 	// Currently, only [Google Cloud Storage](https://cloud.google.com/storage/)
 	// URIs are supported, which must be specified in the following format:
 	// `gs://bucket-id/object-id` (other URI formats return
-	// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see
-	// [Request URIs](/storage/docs/reference-uris).
+	// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For
+	// more information, see [Request URIs](/storage/docs/reference-uris).
 	OutputUri string `protobuf:"bytes,4,opt,name=output_uri,json=outputUri,proto3" json:"output_uri,omitempty"`
 	// Optional cloud region where annotation should take place. Supported cloud
 	// regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region
@@ -272,6 +276,8 @@
 	ShotChangeDetectionConfig *ShotChangeDetectionConfig `protobuf:"bytes,3,opt,name=shot_change_detection_config,json=shotChangeDetectionConfig,proto3" json:"shot_change_detection_config,omitempty"`
 	// Config for EXPLICIT_CONTENT_DETECTION.
 	ExplicitContentDetectionConfig *ExplicitContentDetectionConfig `protobuf:"bytes,4,opt,name=explicit_content_detection_config,json=explicitContentDetectionConfig,proto3" json:"explicit_content_detection_config,omitempty"`
+	// Config for FACE_DETECTION.
+	FaceDetectionConfig *FaceDetectionConfig `protobuf:"bytes,5,opt,name=face_detection_config,json=faceDetectionConfig,proto3" json:"face_detection_config,omitempty"`
 	// Config for SPEECH_TRANSCRIPTION.
 	SpeechTranscriptionConfig *SpeechTranscriptionConfig `protobuf:"bytes,6,opt,name=speech_transcription_config,json=speechTranscriptionConfig,proto3" json:"speech_transcription_config,omitempty"`
 	// Config for TEXT_DETECTION.
@@ -336,6 +342,13 @@
 	return nil
 }
 
+func (m *VideoContext) GetFaceDetectionConfig() *FaceDetectionConfig {
+	if m != nil {
+		return m.FaceDetectionConfig
+	}
+	return nil
+}
+
 func (m *VideoContext) GetSpeechTranscriptionConfig() *SpeechTranscriptionConfig {
 	if m != nil {
 		return m.SpeechTranscriptionConfig
@@ -493,49 +506,6 @@
 	return ""
 }
 
-// Config for OBJECT_TRACKING.
-type ObjectTrackingConfig struct {
-	// Model to use for object tracking.
-	// Supported values: "builtin/stable" (the default if unset) and
-	// "builtin/latest".
-	Model                string   `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ObjectTrackingConfig) Reset()         { *m = ObjectTrackingConfig{} }
-func (m *ObjectTrackingConfig) String() string { return proto.CompactTextString(m) }
-func (*ObjectTrackingConfig) ProtoMessage()    {}
-func (*ObjectTrackingConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{4}
-}
-
-func (m *ObjectTrackingConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ObjectTrackingConfig.Unmarshal(m, b)
-}
-func (m *ObjectTrackingConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ObjectTrackingConfig.Marshal(b, m, deterministic)
-}
-func (m *ObjectTrackingConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ObjectTrackingConfig.Merge(m, src)
-}
-func (m *ObjectTrackingConfig) XXX_Size() int {
-	return xxx_messageInfo_ObjectTrackingConfig.Size(m)
-}
-func (m *ObjectTrackingConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ObjectTrackingConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ObjectTrackingConfig proto.InternalMessageInfo
-
-func (m *ObjectTrackingConfig) GetModel() string {
-	if m != nil {
-		return m.Model
-	}
-	return ""
-}
-
 // Config for EXPLICIT_CONTENT_DETECTION.
 type ExplicitContentDetectionConfig struct {
 	// Model to use for explicit content detection.
@@ -551,7 +521,7 @@
 func (m *ExplicitContentDetectionConfig) String() string { return proto.CompactTextString(m) }
 func (*ExplicitContentDetectionConfig) ProtoMessage()    {}
 func (*ExplicitContentDetectionConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{5}
+	return fileDescriptor_7638dbca9a7e63fa, []int{4}
 }
 
 func (m *ExplicitContentDetectionConfig) XXX_Unmarshal(b []byte) error {
@@ -579,6 +549,101 @@
 	return ""
 }
 
+// Config for FACE_DETECTION.
+type FaceDetectionConfig struct {
+	// Model to use for face detection.
+	// Supported values: "builtin/stable" (the default if unset) and
+	// "builtin/latest".
+	Model string `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
+	// Whether bounding boxes be included in the face annotation output.
+	IncludeBoundingBoxes bool     `protobuf:"varint,2,opt,name=include_bounding_boxes,json=includeBoundingBoxes,proto3" json:"include_bounding_boxes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FaceDetectionConfig) Reset()         { *m = FaceDetectionConfig{} }
+func (m *FaceDetectionConfig) String() string { return proto.CompactTextString(m) }
+func (*FaceDetectionConfig) ProtoMessage()    {}
+func (*FaceDetectionConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7638dbca9a7e63fa, []int{5}
+}
+
+func (m *FaceDetectionConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FaceDetectionConfig.Unmarshal(m, b)
+}
+func (m *FaceDetectionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FaceDetectionConfig.Marshal(b, m, deterministic)
+}
+func (m *FaceDetectionConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FaceDetectionConfig.Merge(m, src)
+}
+func (m *FaceDetectionConfig) XXX_Size() int {
+	return xxx_messageInfo_FaceDetectionConfig.Size(m)
+}
+func (m *FaceDetectionConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_FaceDetectionConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FaceDetectionConfig proto.InternalMessageInfo
+
+func (m *FaceDetectionConfig) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
+func (m *FaceDetectionConfig) GetIncludeBoundingBoxes() bool {
+	if m != nil {
+		return m.IncludeBoundingBoxes
+	}
+	return false
+}
+
+// Config for OBJECT_TRACKING.
+type ObjectTrackingConfig struct {
+	// Model to use for object tracking.
+	// Supported values: "builtin/stable" (the default if unset) and
+	// "builtin/latest".
+	Model                string   `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ObjectTrackingConfig) Reset()         { *m = ObjectTrackingConfig{} }
+func (m *ObjectTrackingConfig) String() string { return proto.CompactTextString(m) }
+func (*ObjectTrackingConfig) ProtoMessage()    {}
+func (*ObjectTrackingConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7638dbca9a7e63fa, []int{6}
+}
+
+func (m *ObjectTrackingConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ObjectTrackingConfig.Unmarshal(m, b)
+}
+func (m *ObjectTrackingConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ObjectTrackingConfig.Marshal(b, m, deterministic)
+}
+func (m *ObjectTrackingConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ObjectTrackingConfig.Merge(m, src)
+}
+func (m *ObjectTrackingConfig) XXX_Size() int {
+	return xxx_messageInfo_ObjectTrackingConfig.Size(m)
+}
+func (m *ObjectTrackingConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_ObjectTrackingConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ObjectTrackingConfig proto.InternalMessageInfo
+
+func (m *ObjectTrackingConfig) GetModel() string {
+	if m != nil {
+		return m.Model
+	}
+	return ""
+}
+
 // Config for TEXT_DETECTION.
 type TextDetectionConfig struct {
 	// Language hint can be specified if the language to be detected is known a
@@ -600,7 +665,7 @@
 func (m *TextDetectionConfig) String() string { return proto.CompactTextString(m) }
 func (*TextDetectionConfig) ProtoMessage()    {}
 func (*TextDetectionConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{6}
+	return fileDescriptor_7638dbca9a7e63fa, []int{7}
 }
 
 func (m *TextDetectionConfig) XXX_Unmarshal(b []byte) error {
@@ -652,7 +717,7 @@
 func (m *VideoSegment) String() string { return proto.CompactTextString(m) }
 func (*VideoSegment) ProtoMessage()    {}
 func (*VideoSegment) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{7}
+	return fileDescriptor_7638dbca9a7e63fa, []int{8}
 }
 
 func (m *VideoSegment) XXX_Unmarshal(b []byte) error {
@@ -702,7 +767,7 @@
 func (m *LabelSegment) String() string { return proto.CompactTextString(m) }
 func (*LabelSegment) ProtoMessage()    {}
 func (*LabelSegment) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{8}
+	return fileDescriptor_7638dbca9a7e63fa, []int{9}
 }
 
 func (m *LabelSegment) XXX_Unmarshal(b []byte) error {
@@ -753,7 +818,7 @@
 func (m *LabelFrame) String() string { return proto.CompactTextString(m) }
 func (*LabelFrame) ProtoMessage()    {}
 func (*LabelFrame) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{9}
+	return fileDescriptor_7638dbca9a7e63fa, []int{10}
 }
 
 func (m *LabelFrame) XXX_Unmarshal(b []byte) error {
@@ -807,7 +872,7 @@
 func (m *Entity) String() string { return proto.CompactTextString(m) }
 func (*Entity) ProtoMessage()    {}
 func (*Entity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{10}
+	return fileDescriptor_7638dbca9a7e63fa, []int{11}
 }
 
 func (m *Entity) XXX_Unmarshal(b []byte) error {
@@ -871,7 +936,7 @@
 func (m *LabelAnnotation) String() string { return proto.CompactTextString(m) }
 func (*LabelAnnotation) ProtoMessage()    {}
 func (*LabelAnnotation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{11}
+	return fileDescriptor_7638dbca9a7e63fa, []int{12}
 }
 
 func (m *LabelAnnotation) XXX_Unmarshal(b []byte) error {
@@ -936,7 +1001,7 @@
 func (m *ExplicitContentFrame) String() string { return proto.CompactTextString(m) }
 func (*ExplicitContentFrame) ProtoMessage()    {}
 func (*ExplicitContentFrame) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{12}
+	return fileDescriptor_7638dbca9a7e63fa, []int{13}
 }
 
 func (m *ExplicitContentFrame) XXX_Unmarshal(b []byte) error {
@@ -986,7 +1051,7 @@
 func (m *ExplicitContentAnnotation) String() string { return proto.CompactTextString(m) }
 func (*ExplicitContentAnnotation) ProtoMessage()    {}
 func (*ExplicitContentAnnotation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{13}
+	return fileDescriptor_7638dbca9a7e63fa, []int{14}
 }
 
 func (m *ExplicitContentAnnotation) XXX_Unmarshal(b []byte) error {
@@ -1035,7 +1100,7 @@
 func (m *NormalizedBoundingBox) String() string { return proto.CompactTextString(m) }
 func (*NormalizedBoundingBox) ProtoMessage()    {}
 func (*NormalizedBoundingBox) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{14}
+	return fileDescriptor_7638dbca9a7e63fa, []int{15}
 }
 
 func (m *NormalizedBoundingBox) XXX_Unmarshal(b []byte) error {
@@ -1084,11 +1149,166 @@
 	return 0
 }
 
+// Video segment level annotation results for face detection.
+type FaceSegment struct {
+	// Video segment where a face was detected.
+	Segment              *VideoSegment `protobuf:"bytes,1,opt,name=segment,proto3" json:"segment,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *FaceSegment) Reset()         { *m = FaceSegment{} }
+func (m *FaceSegment) String() string { return proto.CompactTextString(m) }
+func (*FaceSegment) ProtoMessage()    {}
+func (*FaceSegment) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7638dbca9a7e63fa, []int{16}
+}
+
+func (m *FaceSegment) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FaceSegment.Unmarshal(m, b)
+}
+func (m *FaceSegment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FaceSegment.Marshal(b, m, deterministic)
+}
+func (m *FaceSegment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FaceSegment.Merge(m, src)
+}
+func (m *FaceSegment) XXX_Size() int {
+	return xxx_messageInfo_FaceSegment.Size(m)
+}
+func (m *FaceSegment) XXX_DiscardUnknown() {
+	xxx_messageInfo_FaceSegment.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FaceSegment proto.InternalMessageInfo
+
+func (m *FaceSegment) GetSegment() *VideoSegment {
+	if m != nil {
+		return m.Segment
+	}
+	return nil
+}
+
+// Video frame level annotation results for face detection.
+type FaceFrame struct {
+	// Normalized Bounding boxes in a frame.
+	// There can be more than one boxes if the same face is detected in multiple
+	// locations within the current frame.
+	NormalizedBoundingBoxes []*NormalizedBoundingBox `protobuf:"bytes,1,rep,name=normalized_bounding_boxes,json=normalizedBoundingBoxes,proto3" json:"normalized_bounding_boxes,omitempty"`
+	// Time-offset, relative to the beginning of the video,
+	// corresponding to the video frame for this location.
+	TimeOffset           *duration.Duration `protobuf:"bytes,2,opt,name=time_offset,json=timeOffset,proto3" json:"time_offset,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *FaceFrame) Reset()         { *m = FaceFrame{} }
+func (m *FaceFrame) String() string { return proto.CompactTextString(m) }
+func (*FaceFrame) ProtoMessage()    {}
+func (*FaceFrame) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7638dbca9a7e63fa, []int{17}
+}
+
+func (m *FaceFrame) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FaceFrame.Unmarshal(m, b)
+}
+func (m *FaceFrame) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FaceFrame.Marshal(b, m, deterministic)
+}
+func (m *FaceFrame) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FaceFrame.Merge(m, src)
+}
+func (m *FaceFrame) XXX_Size() int {
+	return xxx_messageInfo_FaceFrame.Size(m)
+}
+func (m *FaceFrame) XXX_DiscardUnknown() {
+	xxx_messageInfo_FaceFrame.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FaceFrame proto.InternalMessageInfo
+
+func (m *FaceFrame) GetNormalizedBoundingBoxes() []*NormalizedBoundingBox {
+	if m != nil {
+		return m.NormalizedBoundingBoxes
+	}
+	return nil
+}
+
+func (m *FaceFrame) GetTimeOffset() *duration.Duration {
+	if m != nil {
+		return m.TimeOffset
+	}
+	return nil
+}
+
+// Face annotation.
+type FaceAnnotation struct {
+	// Thumbnail of a representative face view (in JPEG format).
+	Thumbnail []byte `protobuf:"bytes,1,opt,name=thumbnail,proto3" json:"thumbnail,omitempty"`
+	// All video segments where a face was detected.
+	Segments []*FaceSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"`
+	// All video frames where a face was detected.
+	Frames               []*FaceFrame `protobuf:"bytes,3,rep,name=frames,proto3" json:"frames,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *FaceAnnotation) Reset()         { *m = FaceAnnotation{} }
+func (m *FaceAnnotation) String() string { return proto.CompactTextString(m) }
+func (*FaceAnnotation) ProtoMessage()    {}
+func (*FaceAnnotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7638dbca9a7e63fa, []int{18}
+}
+
+func (m *FaceAnnotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FaceAnnotation.Unmarshal(m, b)
+}
+func (m *FaceAnnotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FaceAnnotation.Marshal(b, m, deterministic)
+}
+func (m *FaceAnnotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FaceAnnotation.Merge(m, src)
+}
+func (m *FaceAnnotation) XXX_Size() int {
+	return xxx_messageInfo_FaceAnnotation.Size(m)
+}
+func (m *FaceAnnotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_FaceAnnotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FaceAnnotation proto.InternalMessageInfo
+
+func (m *FaceAnnotation) GetThumbnail() []byte {
+	if m != nil {
+		return m.Thumbnail
+	}
+	return nil
+}
+
+func (m *FaceAnnotation) GetSegments() []*FaceSegment {
+	if m != nil {
+		return m.Segments
+	}
+	return nil
+}
+
+func (m *FaceAnnotation) GetFrames() []*FaceFrame {
+	if m != nil {
+		return m.Frames
+	}
+	return nil
+}
+
 // Annotation results for a single video.
 type VideoAnnotationResults struct {
 	// Video file location in
 	// [Google Cloud Storage](https://cloud.google.com/storage/).
 	InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri,proto3" json:"input_uri,omitempty"`
+	// Video segment on which the annotation is run.
+	Segment *VideoSegment `protobuf:"bytes,10,opt,name=segment,proto3" json:"segment,omitempty"`
 	// Topical label annotations on video level or user specified segment level.
 	// There is exactly one element for each unique label.
 	SegmentLabelAnnotations []*LabelAnnotation `protobuf:"bytes,2,rep,name=segment_label_annotations,json=segmentLabelAnnotations,proto3" json:"segment_label_annotations,omitempty"`
@@ -1098,6 +1318,8 @@
 	// Label annotations on frame level.
 	// There is exactly one element for each unique label.
 	FrameLabelAnnotations []*LabelAnnotation `protobuf:"bytes,4,rep,name=frame_label_annotations,json=frameLabelAnnotations,proto3" json:"frame_label_annotations,omitempty"`
+	// Face annotations. There is exactly one element for each unique face.
+	FaceAnnotations []*FaceAnnotation `protobuf:"bytes,5,rep,name=face_annotations,json=faceAnnotations,proto3" json:"face_annotations,omitempty"`
 	// Shot annotations. Each shot is represented as a video segment.
 	ShotAnnotations []*VideoSegment `protobuf:"bytes,6,rep,name=shot_annotations,json=shotAnnotations,proto3" json:"shot_annotations,omitempty"`
 	// Explicit content annotation.
@@ -1122,7 +1344,7 @@
 func (m *VideoAnnotationResults) String() string { return proto.CompactTextString(m) }
 func (*VideoAnnotationResults) ProtoMessage()    {}
 func (*VideoAnnotationResults) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{15}
+	return fileDescriptor_7638dbca9a7e63fa, []int{19}
 }
 
 func (m *VideoAnnotationResults) XXX_Unmarshal(b []byte) error {
@@ -1150,6 +1372,13 @@
 	return ""
 }
 
+func (m *VideoAnnotationResults) GetSegment() *VideoSegment {
+	if m != nil {
+		return m.Segment
+	}
+	return nil
+}
+
 func (m *VideoAnnotationResults) GetSegmentLabelAnnotations() []*LabelAnnotation {
 	if m != nil {
 		return m.SegmentLabelAnnotations
@@ -1171,6 +1400,13 @@
 	return nil
 }
 
+func (m *VideoAnnotationResults) GetFaceAnnotations() []*FaceAnnotation {
+	if m != nil {
+		return m.FaceAnnotations
+	}
+	return nil
+}
+
 func (m *VideoAnnotationResults) GetShotAnnotations() []*VideoSegment {
 	if m != nil {
 		return m.ShotAnnotations
@@ -1228,7 +1464,7 @@
 func (m *AnnotateVideoResponse) String() string { return proto.CompactTextString(m) }
 func (*AnnotateVideoResponse) ProtoMessage()    {}
 func (*AnnotateVideoResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{16}
+	return fileDescriptor_7638dbca9a7e63fa, []int{20}
 }
 
 func (m *AnnotateVideoResponse) XXX_Unmarshal(b []byte) error {
@@ -1283,7 +1519,7 @@
 func (m *VideoAnnotationProgress) String() string { return proto.CompactTextString(m) }
 func (*VideoAnnotationProgress) ProtoMessage()    {}
 func (*VideoAnnotationProgress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{17}
+	return fileDescriptor_7638dbca9a7e63fa, []int{21}
 }
 
 func (m *VideoAnnotationProgress) XXX_Unmarshal(b []byte) error {
@@ -1361,7 +1597,7 @@
 func (m *AnnotateVideoProgress) String() string { return proto.CompactTextString(m) }
 func (*AnnotateVideoProgress) ProtoMessage()    {}
 func (*AnnotateVideoProgress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{18}
+	return fileDescriptor_7638dbca9a7e63fa, []int{22}
 }
 
 func (m *AnnotateVideoProgress) XXX_Unmarshal(b []byte) error {
@@ -1446,7 +1682,7 @@
 func (m *SpeechTranscriptionConfig) String() string { return proto.CompactTextString(m) }
 func (*SpeechTranscriptionConfig) ProtoMessage()    {}
 func (*SpeechTranscriptionConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{19}
+	return fileDescriptor_7638dbca9a7e63fa, []int{23}
 }
 
 func (m *SpeechTranscriptionConfig) XXX_Unmarshal(b []byte) error {
@@ -1549,7 +1785,7 @@
 func (m *SpeechContext) String() string { return proto.CompactTextString(m) }
 func (*SpeechContext) ProtoMessage()    {}
 func (*SpeechContext) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{20}
+	return fileDescriptor_7638dbca9a7e63fa, []int{24}
 }
 
 func (m *SpeechContext) XXX_Unmarshal(b []byte) error {
@@ -1598,7 +1834,7 @@
 func (m *SpeechTranscription) String() string { return proto.CompactTextString(m) }
 func (*SpeechTranscription) ProtoMessage()    {}
 func (*SpeechTranscription) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{21}
+	return fileDescriptor_7638dbca9a7e63fa, []int{25}
 }
 
 func (m *SpeechTranscription) XXX_Unmarshal(b []byte) error {
@@ -1657,7 +1893,7 @@
 func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) }
 func (*SpeechRecognitionAlternative) ProtoMessage()    {}
 func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{22}
+	return fileDescriptor_7638dbca9a7e63fa, []int{26}
 }
 
 func (m *SpeechRecognitionAlternative) XXX_Unmarshal(b []byte) error {
@@ -1736,7 +1972,7 @@
 func (m *WordInfo) String() string { return proto.CompactTextString(m) }
 func (*WordInfo) ProtoMessage()    {}
 func (*WordInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{23}
+	return fileDescriptor_7638dbca9a7e63fa, []int{27}
 }
 
 func (m *WordInfo) XXX_Unmarshal(b []byte) error {
@@ -1809,7 +2045,7 @@
 func (m *NormalizedVertex) String() string { return proto.CompactTextString(m) }
 func (*NormalizedVertex) ProtoMessage()    {}
 func (*NormalizedVertex) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{24}
+	return fileDescriptor_7638dbca9a7e63fa, []int{28}
 }
 
 func (m *NormalizedVertex) XXX_Unmarshal(b []byte) error {
@@ -1873,7 +2109,7 @@
 func (m *NormalizedBoundingPoly) String() string { return proto.CompactTextString(m) }
 func (*NormalizedBoundingPoly) ProtoMessage()    {}
 func (*NormalizedBoundingPoly) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{25}
+	return fileDescriptor_7638dbca9a7e63fa, []int{29}
 }
 
 func (m *NormalizedBoundingPoly) XXX_Unmarshal(b []byte) error {
@@ -1919,7 +2155,7 @@
 func (m *TextSegment) String() string { return proto.CompactTextString(m) }
 func (*TextSegment) ProtoMessage()    {}
 func (*TextSegment) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{26}
+	return fileDescriptor_7638dbca9a7e63fa, []int{30}
 }
 
 func (m *TextSegment) XXX_Unmarshal(b []byte) error {
@@ -1978,7 +2214,7 @@
 func (m *TextFrame) String() string { return proto.CompactTextString(m) }
 func (*TextFrame) ProtoMessage()    {}
 func (*TextFrame) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{27}
+	return fileDescriptor_7638dbca9a7e63fa, []int{31}
 }
 
 func (m *TextFrame) XXX_Unmarshal(b []byte) error {
@@ -2030,7 +2266,7 @@
 func (m *TextAnnotation) String() string { return proto.CompactTextString(m) }
 func (*TextAnnotation) ProtoMessage()    {}
 func (*TextAnnotation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{28}
+	return fileDescriptor_7638dbca9a7e63fa, []int{32}
 }
 
 func (m *TextAnnotation) XXX_Unmarshal(b []byte) error {
@@ -2081,7 +2317,7 @@
 func (m *ObjectTrackingFrame) String() string { return proto.CompactTextString(m) }
 func (*ObjectTrackingFrame) ProtoMessage()    {}
 func (*ObjectTrackingFrame) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{29}
+	return fileDescriptor_7638dbca9a7e63fa, []int{33}
 }
 
 func (m *ObjectTrackingFrame) XXX_Unmarshal(b []byte) error {
@@ -2143,7 +2379,7 @@
 func (m *ObjectTrackingAnnotation) String() string { return proto.CompactTextString(m) }
 func (*ObjectTrackingAnnotation) ProtoMessage()    {}
 func (*ObjectTrackingAnnotation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7638dbca9a7e63fa, []int{30}
+	return fileDescriptor_7638dbca9a7e63fa, []int{34}
 }
 
 func (m *ObjectTrackingAnnotation) XXX_Unmarshal(b []byte) error {
@@ -2238,8 +2474,9 @@
 	proto.RegisterType((*VideoContext)(nil), "google.cloud.videointelligence.v1.VideoContext")
 	proto.RegisterType((*LabelDetectionConfig)(nil), "google.cloud.videointelligence.v1.LabelDetectionConfig")
 	proto.RegisterType((*ShotChangeDetectionConfig)(nil), "google.cloud.videointelligence.v1.ShotChangeDetectionConfig")
-	proto.RegisterType((*ObjectTrackingConfig)(nil), "google.cloud.videointelligence.v1.ObjectTrackingConfig")
 	proto.RegisterType((*ExplicitContentDetectionConfig)(nil), "google.cloud.videointelligence.v1.ExplicitContentDetectionConfig")
+	proto.RegisterType((*FaceDetectionConfig)(nil), "google.cloud.videointelligence.v1.FaceDetectionConfig")
+	proto.RegisterType((*ObjectTrackingConfig)(nil), "google.cloud.videointelligence.v1.ObjectTrackingConfig")
 	proto.RegisterType((*TextDetectionConfig)(nil), "google.cloud.videointelligence.v1.TextDetectionConfig")
 	proto.RegisterType((*VideoSegment)(nil), "google.cloud.videointelligence.v1.VideoSegment")
 	proto.RegisterType((*LabelSegment)(nil), "google.cloud.videointelligence.v1.LabelSegment")
@@ -2249,6 +2486,9 @@
 	proto.RegisterType((*ExplicitContentFrame)(nil), "google.cloud.videointelligence.v1.ExplicitContentFrame")
 	proto.RegisterType((*ExplicitContentAnnotation)(nil), "google.cloud.videointelligence.v1.ExplicitContentAnnotation")
 	proto.RegisterType((*NormalizedBoundingBox)(nil), "google.cloud.videointelligence.v1.NormalizedBoundingBox")
+	proto.RegisterType((*FaceSegment)(nil), "google.cloud.videointelligence.v1.FaceSegment")
+	proto.RegisterType((*FaceFrame)(nil), "google.cloud.videointelligence.v1.FaceFrame")
+	proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.videointelligence.v1.FaceAnnotation")
 	proto.RegisterType((*VideoAnnotationResults)(nil), "google.cloud.videointelligence.v1.VideoAnnotationResults")
 	proto.RegisterType((*AnnotateVideoResponse)(nil), "google.cloud.videointelligence.v1.AnnotateVideoResponse")
 	proto.RegisterType((*VideoAnnotationProgress)(nil), "google.cloud.videointelligence.v1.VideoAnnotationProgress")
@@ -2272,162 +2512,172 @@
 }
 
 var fileDescriptor_7638dbca9a7e63fa = []byte{
-	// 2476 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcf, 0x6f, 0x1b, 0xc7,
-	0xf5, 0xcf, 0x92, 0x12, 0x45, 0x3d, 0x51, 0x12, 0x3d, 0xa2, 0x24, 0x4a, 0x71, 0x14, 0x79, 0x93,
-	0x00, 0x8e, 0x93, 0x90, 0x5f, 0x29, 0xf9, 0x26, 0x31, 0x1d, 0xa0, 0xa5, 0x28, 0xca, 0x62, 0x2c,
-	0x8b, 0xc4, 0x8a, 0x56, 0xe3, 0xc0, 0xc0, 0x62, 0xb5, 0x3b, 0x24, 0xd7, 0x5a, 0xee, 0x6c, 0x77,
-	0x87, 0xb2, 0x14, 0xb4, 0x87, 0x16, 0x45, 0x7b, 0x68, 0x6f, 0xbd, 0xf4, 0x56, 0xf4, 0x54, 0xa0,
-	0xb7, 0x02, 0x6d, 0xd1, 0x53, 0x50, 0xa0, 0xe8, 0x25, 0x97, 0x02, 0xed, 0xbf, 0xd0, 0x53, 0xfe,
-	0x84, 0x9e, 0x8a, 0xf9, 0xb1, 0xe4, 0x92, 0x4b, 0x59, 0x94, 0x5c, 0xf4, 0xc6, 0x79, 0xf3, 0x7e,
-	0xcf, 0x9b, 0x37, 0x9f, 0xb7, 0x84, 0x52, 0x9b, 0x90, 0xb6, 0x83, 0x8b, 0xa6, 0x43, 0x7a, 0x56,
-	0xf1, 0xcc, 0xb6, 0x30, 0xb1, 0x5d, 0x8a, 0x1d, 0xc7, 0x6e, 0x63, 0xd7, 0xc4, 0xc5, 0xb3, 0x2d,
-	0x41, 0xd4, 0xa3, 0xd4, 0x82, 0xe7, 0x13, 0x4a, 0xd0, 0x1d, 0x21, 0x5b, 0xe0, 0xb2, 0x85, 0x98,
-	0x6c, 0xe1, 0x6c, 0x6b, 0xfd, 0xb6, 0x54, 0x6f, 0x78, 0x76, 0xd1, 0x70, 0x5d, 0x42, 0x0d, 0x6a,
-	0x13, 0x37, 0x10, 0x0a, 0xd6, 0xdf, 0x92, 0xbb, 0x0e, 0x71, 0xdb, 0x7e, 0xcf, 0x75, 0x6d, 0xb7,
-	0x5d, 0x24, 0x1e, 0xf6, 0x87, 0x98, 0x36, 0x24, 0x13, 0x5f, 0x9d, 0xf4, 0x5a, 0x45, 0xab, 0x27,
-	0x18, 0xe4, 0xfe, 0x9b, 0xa3, 0xfb, 0xd4, 0xee, 0xe2, 0x80, 0x1a, 0x5d, 0x4f, 0x32, 0xac, 0x4a,
-	0x06, 0xdf, 0x33, 0x8b, 0x01, 0x35, 0x68, 0x2f, 0x18, 0xd9, 0x60, 0xce, 0x99, 0x8e, 0x8d, 0x5d,
-	0x2a, 0x36, 0xd4, 0x3f, 0x25, 0x20, 0x57, 0x16, 0xde, 0xe2, 0x63, 0x16, 0x96, 0x86, 0xbf, 0xdf,
-	0xc3, 0x01, 0x45, 0xaf, 0xc3, 0xac, 0xed, 0x7a, 0x3d, 0xaa, 0xf7, 0x7c, 0x3b, 0xaf, 0x6c, 0x2a,
-	0x77, 0x67, 0xb5, 0x34, 0x27, 0x3c, 0xf1, 0x6d, 0xf4, 0x16, 0xcc, 0x8b, 0x4d, 0x93, 0xb8, 0x14,
-	0xbb, 0x34, 0x9f, 0xda, 0x54, 0xee, 0x66, 0xb4, 0x0c, 0x27, 0x56, 0x04, 0x0d, 0xed, 0x41, 0xba,
-	0x85, 0x0d, 0xda, 0xf3, 0x71, 0x90, 0x4f, 0x6c, 0x26, 0xef, 0x2e, 0x6c, 0xdf, 0x2b, 0x5c, 0x99,
-	0xc6, 0xc2, 0x9e, 0x10, 0xd1, 0xfa, 0xb2, 0xa8, 0x09, 0xf3, 0xe2, 0x5c, 0xb8, 0xb1, 0x73, 0x9a,
-	0x4f, 0x6e, 0x2a, 0x77, 0xe7, 0xb6, 0x8b, 0x13, 0x28, 0xe3, 0x11, 0x55, 0x84, 0x98, 0x96, 0x39,
-	0x8b, 0xac, 0xd0, 0x1b, 0x00, 0xa4, 0x47, 0xc3, 0x00, 0xa7, 0x78, 0x80, 0xb3, 0x82, 0xc2, 0x22,
-	0x7c, 0x13, 0xe6, 0x1c, 0x62, 0xf2, 0xe4, 0xeb, 0xb6, 0x95, 0x9f, 0xe6, 0xfb, 0x10, 0x92, 0x6a,
-	0x96, 0xfa, 0xfb, 0x14, 0x64, 0xa2, 0xea, 0xd1, 0x23, 0x48, 0x07, 0xb8, 0xdd, 0xc5, 0x2e, 0x0d,
-	0xf2, 0xca, 0x66, 0xf2, 0x3a, 0x1e, 0x1e, 0x09, 0x39, 0xad, 0xaf, 0x00, 0x75, 0x61, 0xc5, 0x31,
-	0x4e, 0xb0, 0xa3, 0x5b, 0x98, 0x62, 0x93, 0x7b, 0x61, 0x12, 0xb7, 0x65, 0xb7, 0xf3, 0x09, 0x1e,
-	0xfc, 0x27, 0x13, 0xa8, 0x3e, 0x60, 0x0a, 0x76, 0x43, 0xf9, 0x0a, 0x17, 0xd7, 0x72, 0xce, 0x18,
-	0x2a, 0xfa, 0x21, 0xdc, 0x0e, 0x3a, 0x84, 0xea, 0x66, 0xc7, 0x70, 0xdb, 0x38, 0x6e, 0x54, 0x64,
-	0xfc, 0xb3, 0x09, 0x8c, 0x1e, 0x75, 0x08, 0xad, 0x70, 0x2d, 0xa3, 0x96, 0xd7, 0x82, 0xcb, 0xb6,
-	0xd0, 0x2f, 0x14, 0xb8, 0x83, 0xcf, 0x3d, 0xc7, 0x36, 0xed, 0x7e, 0x49, 0xc5, 0x9d, 0x98, 0xe2,
-	0x4e, 0x94, 0x27, 0x70, 0xa2, 0x2a, 0x75, 0xc9, 0x4a, 0x1c, 0xf5, 0x64, 0x03, 0xbf, 0x74, 0x1f,
-	0xfd, 0x00, 0x5e, 0x0f, 0x3c, 0x8c, 0xcd, 0x8e, 0x4e, 0x7d, 0xc3, 0x0d, 0x4c, 0xdf, 0xf6, 0xa2,
-	0x7e, 0xa4, 0x26, 0x4f, 0x06, 0xd7, 0xd2, 0x8c, 0x2a, 0xe9, 0x27, 0xe3, 0xb2, 0x2d, 0xf4, 0x1c,
-	0x96, 0x59, 0x3d, 0xc5, 0xe3, 0x4f, 0x73, 0xbb, 0x1f, 0x4f, 0x60, 0xb7, 0x89, 0xcf, 0x63, 0x41,
-	0x2f, 0xd1, 0x38, 0x91, 0x95, 0x19, 0x39, 0x79, 0x8e, 0x4d, 0xca, 0x22, 0x35, 0x4f, 0x6d, 0xb7,
-	0x1d, 0x1a, 0x9b, 0x9f, 0xb8, 0xcc, 0xea, 0x5c, 0x41, 0x53, 0xca, 0x87, 0x65, 0x46, 0xc6, 0x50,
-	0xd5, 0xaf, 0x13, 0x90, 0x1b, 0x57, 0x95, 0xa8, 0x0d, 0xb9, 0xd1, 0x72, 0xef, 0x12, 0x0b, 0xf3,
-	0xbe, 0xb3, 0xb0, 0xfd, 0xff, 0xd7, 0x2e, 0xf6, 0xc7, 0xc4, 0xc2, 0x1a, 0x72, 0x62, 0x34, 0xf4,
-	0x1e, 0xdc, 0x0a, 0x44, 0x63, 0x36, 0xfc, 0x0b, 0xdd, 0x34, 0xba, 0xd8, 0x37, 0xf8, 0x95, 0x4a,
-	0x6b, 0xd9, 0xc1, 0x46, 0x85, 0xd3, 0x51, 0x0e, 0xa6, 0x99, 0x17, 0x0e, 0x2f, 0xff, 0x59, 0x4d,
-	0x2c, 0xd0, 0x67, 0xb0, 0xde, 0xf2, 0x8d, 0x2e, 0x16, 0x99, 0xb2, 0x98, 0x03, 0x3a, 0xed, 0xf8,
-	0x38, 0xe8, 0x10, 0xc7, 0xe2, 0x45, 0x9a, 0xd0, 0xf2, 0x9c, 0xa3, 0xd2, 0x67, 0x68, 0x86, 0xfb,
-	0x4c, 0xba, 0xdf, 0xcc, 0xe2, 0xd2, 0xd3, 0x42, 0x3a, 0x6c, 0x54, 0xa3, 0xd2, 0xea, 0x16, 0xac,
-	0x5d, 0x7a, 0xc1, 0x06, 0xee, 0x2a, 0x11, 0x77, 0xd5, 0xf7, 0x21, 0x37, 0xee, 0x84, 0x2e, 0xe1,
-	0xfe, 0x18, 0x36, 0x5e, 0x7e, 0x79, 0x2e, 0x91, 0xd3, 0x60, 0x69, 0x4c, 0xd1, 0xa1, 0x77, 0x60,
-	0xc1, 0x31, 0xdc, 0x76, 0xcf, 0x68, 0x63, 0xbd, 0x63, 0x87, 0x9d, 0x71, 0x56, 0x9b, 0x0f, 0xa9,
-	0xfb, 0x8c, 0x38, 0xd0, 0x99, 0x88, 0xea, 0xfc, 0x95, 0x22, 0x3b, 0xac, 0x6c, 0x8f, 0xa8, 0xca,
-	0x0f, 0xcf, 0xa7, 0x3a, 0x7b, 0xf6, 0x74, 0xd2, 0x6a, 0x05, 0x98, 0x72, 0x37, 0xe6, 0xb6, 0xd7,
-	0xc2, 0x12, 0x09, 0x9f, 0xc6, 0xc2, 0xae, 0x7c, 0x3a, 0xb5, 0x45, 0x2e, 0xd3, 0xb4, 0xbb, 0xb8,
-	0xce, 0x25, 0x50, 0x19, 0x16, 0xb1, 0x6b, 0x0d, 0x29, 0x49, 0x5c, 0xa5, 0x64, 0x1e, 0xbb, 0xd6,
-	0x40, 0x85, 0x7a, 0x01, 0x19, 0x5e, 0x70, 0xa1, 0x67, 0x35, 0x98, 0x91, 0xad, 0x5b, 0xfa, 0x73,
-	0xed, 0xd6, 0x1f, 0xca, 0xa3, 0x0d, 0x80, 0x41, 0x69, 0x70, 0xc7, 0x12, 0x5a, 0x84, 0xa2, 0x76,
-	0x00, 0xb8, 0xe9, 0x3d, 0x56, 0x61, 0xa8, 0x04, 0x73, 0xd7, 0x4a, 0x06, 0xd0, 0x41, 0x1e, 0xae,
-	0xb2, 0xe4, 0x40, 0xaa, 0xea, 0x52, 0x9b, 0x5e, 0x30, 0x2c, 0x80, 0xf9, 0x2f, 0xf6, 0x14, 0x4a,
-	0x2c, 0x20, 0x08, 0x35, 0x0b, 0x6d, 0xc2, 0x9c, 0x85, 0xfb, 0x4d, 0x4c, 0x1e, 0x61, 0x94, 0xc4,
-	0xd0, 0x42, 0xbf, 0x0a, 0x4c, 0x76, 0xad, 0xc5, 0x7d, 0xca, 0x84, 0xc4, 0x0a, 0xb1, 0xb0, 0xfa,
-	0x97, 0x04, 0x2c, 0xf2, 0xc0, 0xca, 0x7d, 0xec, 0x84, 0xca, 0x90, 0x12, 0x66, 0x64, 0x60, 0xef,
-	0x4e, 0xd2, 0xfb, 0xb9, 0x80, 0x26, 0x05, 0xd1, 0x31, 0xdc, 0x32, 0x0d, 0x8a, 0xdb, 0xc4, 0xbf,
-	0xd0, 0x39, 0xc9, 0x96, 0x68, 0xe4, 0x5a, 0xda, 0xb2, 0xa1, 0x8e, 0xaa, 0x54, 0x31, 0xf4, 0xda,
-	0x27, 0x27, 0x7e, 0xed, 0xa3, 0x45, 0x13, 0x79, 0xed, 0xab, 0x90, 0xe2, 0x0d, 0x23, 0xc8, 0x4f,
-	0x71, 0x55, 0x1f, 0x4c, 0xaa, 0x8a, 0x17, 0x81, 0x26, 0x85, 0xd5, 0x3f, 0x2b, 0x90, 0x1b, 0xb9,
-	0xbd, 0xaf, 0x5e, 0x25, 0x16, 0xac, 0x78, 0xc4, 0x77, 0x49, 0xdb, 0x37, 0xbc, 0xce, 0x85, 0xee,
-	0xd8, 0xa7, 0xd8, 0xb1, 0x3b, 0x84, 0x58, 0xfc, 0xa4, 0x17, 0x26, 0xf3, 0xb5, 0x2f, 0xa4, 0x2d,
-	0x47, 0x94, 0x0d, 0xc8, 0xaa, 0x03, 0x6b, 0x23, 0x9e, 0x47, 0xca, 0xa0, 0xde, 0x4f, 0x8f, 0xc0,
-	0x55, 0x9f, 0x5c, 0x1f, 0x02, 0x0c, 0x27, 0xea, 0x14, 0x96, 0x0f, 0x89, 0xdf, 0x35, 0x1c, 0xfb,
-	0x2b, 0x6c, 0xed, 0x90, 0x9e, 0x6b, 0xd9, 0x6e, 0x7b, 0x87, 0x9c, 0x23, 0x04, 0x53, 0x0e, 0x6e,
-	0x89, 0x0c, 0x25, 0x34, 0xfe, 0x1b, 0x65, 0x21, 0x49, 0x89, 0x27, 0xef, 0x07, 0xfb, 0xc9, 0xda,
-	0x95, 0x6f, 0xb7, 0x3b, 0x02, 0x88, 0x26, 0x34, 0xb1, 0x40, 0x2b, 0x90, 0x3a, 0x21, 0x94, 0x92,
-	0xae, 0x7c, 0x03, 0xe4, 0x4a, 0xfd, 0xed, 0x0c, 0xac, 0xf0, 0xab, 0x3e, 0x88, 0x48, 0xc3, 0x41,
-	0xcf, 0xa1, 0xc1, 0xcb, 0x31, 0xb6, 0x0b, 0x6b, 0xb2, 0x40, 0x74, 0xf1, 0x36, 0x46, 0x86, 0x0a,
-	0x59, 0xc1, 0xdb, 0x93, 0xd6, 0x49, 0xc4, 0xf4, 0xaa, 0x54, 0x3a, 0x42, 0x0f, 0x50, 0x07, 0x56,
-	0x38, 0x06, 0x8c, 0x1b, 0x4b, 0xde, 0xd8, 0x58, 0x8e, 0x69, 0x8c, 0x59, 0x7a, 0x0e, 0xab, 0xe2,
-	0x05, 0x8d, 0x9b, 0x9a, 0xba, 0xb1, 0xa9, 0x65, 0xae, 0x32, 0x66, 0xeb, 0x4b, 0xc8, 0xf2, 0xa8,
-	0xa2, 0x46, 0x52, 0x37, 0x43, 0xe7, 0x8b, 0x4c, 0x51, 0x54, 0x77, 0x17, 0x96, 0xfa, 0xa8, 0x75,
-	0xa0, 0x3f, 0x3f, 0x33, 0x31, 0x3e, 0xbc, 0xb4, 0xe4, 0x35, 0x14, 0x2a, 0x8e, 0x5c, 0x83, 0x53,
-	0x58, 0x1e, 0x07, 0x4b, 0x83, 0xfc, 0x1c, 0x8f, 0xe7, 0xe3, 0x9b, 0x01, 0x52, 0x2d, 0x37, 0x06,
-	0x8a, 0x06, 0xe8, 0x19, 0x64, 0x39, 0x0a, 0x8d, 0xe6, 0x2d, 0xc3, 0xed, 0x6c, 0x4d, 0x08, 0x40,
-	0x23, 0xd1, 0x2c, 0xd2, 0xa1, 0x35, 0xab, 0x00, 0x24, 0x71, 0x67, 0x54, 0xff, 0x02, 0xd7, 0xff,
-	0xe0, 0xda, 0x98, 0x33, 0x62, 0xe9, 0x96, 0x50, 0x1b, 0xb5, 0x75, 0x17, 0xa6, 0xb1, 0xef, 0x13,
-	0x3f, 0x3f, 0xcb, 0xcf, 0x05, 0x85, 0xea, 0x7d, 0xcf, 0x2c, 0x1c, 0xf1, 0x19, 0x59, 0x13, 0x0c,
-	0xea, 0x8f, 0x14, 0x58, 0x1e, 0x99, 0x85, 0x03, 0x8f, 0xb8, 0x01, 0x46, 0x1d, 0x40, 0x03, 0x47,
-	0x75, 0x5f, 0x5c, 0x5f, 0xd9, 0x8d, 0xee, 0x4f, 0x5a, 0x47, 0xb1, 0xfb, 0xaf, 0xdd, 0x32, 0x46,
-	0x49, 0xea, 0xb7, 0x09, 0x58, 0x1d, 0xe1, 0x6e, 0xf8, 0xa4, 0xed, 0xe3, 0xe0, 0x8a, 0x76, 0xf1,
-	0x2e, 0x64, 0x3d, 0xc9, 0xa8, 0x7b, 0xd8, 0x37, 0x19, 0x16, 0x61, 0x3d, 0x6b, 0x5a, 0x5b, 0x0c,
-	0xe9, 0x0d, 0x41, 0x46, 0xf7, 0x01, 0x06, 0x38, 0x4a, 0xce, 0x76, 0xeb, 0xb1, 0xd7, 0xa0, 0x19,
-	0x7e, 0x5b, 0xd0, 0x66, 0xfb, 0x08, 0x0a, 0x3d, 0x80, 0xb9, 0x9e, 0x67, 0x19, 0x14, 0x0b, 0xd9,
-	0xa9, 0x2b, 0x65, 0x41, 0xb0, 0x73, 0xe1, 0x5d, 0x98, 0x91, 0x43, 0x3d, 0x07, 0xba, 0xd7, 0xfb,
-	0x1e, 0x10, 0x8a, 0x46, 0xb1, 0x56, 0xea, 0xd5, 0xb0, 0x96, 0xfa, 0x93, 0xd1, 0x03, 0xef, 0xa7,
-	0xfa, 0x14, 0x96, 0x22, 0x07, 0x1e, 0x26, 0x50, 0x9e, 0x78, 0xe9, 0xfa, 0x27, 0x1e, 0x2a, 0xd6,
-	0x22, 0x75, 0x14, 0xd2, 0xd4, 0x9f, 0x4e, 0xc1, 0xda, 0xa5, 0xa3, 0x62, 0x1c, 0x3d, 0x29, 0x71,
-	0xf4, 0xc4, 0x4e, 0xbf, 0x6b, 0x9c, 0xeb, 0x86, 0x43, 0xb1, 0xef, 0x1a, 0xd4, 0x3e, 0xe3, 0x28,
-	0x87, 0x9f, 0x7e, 0xd7, 0x38, 0x2f, 0x47, 0xc8, 0x8c, 0xb5, 0x65, 0x33, 0x02, 0x0b, 0xab, 0x65,
-	0xb8, 0x0c, 0x5e, 0x25, 0xf9, 0x04, 0xb4, 0x28, 0xe8, 0x8d, 0x90, 0x8c, 0x9e, 0xc2, 0xa2, 0xec,
-	0x38, 0xf2, 0xd3, 0x4b, 0xd8, 0xa0, 0xff, 0x6f, 0xe2, 0x5e, 0x13, 0x7e, 0x7c, 0x59, 0x08, 0xa2,
-	0xcb, 0x00, 0x7d, 0x17, 0x6e, 0x63, 0xd7, 0x38, 0x71, 0xb0, 0x6e, 0xf4, 0x28, 0xe9, 0x1a, 0xd4,
-	0x36, 0x75, 0xaf, 0xe7, 0x9a, 0xb4, 0x27, 0x9a, 0xe8, 0x34, 0xf7, 0x68, 0x5d, 0xf0, 0x94, 0x43,
-	0x96, 0xc6, 0x80, 0x03, 0xdd, 0x81, 0x8c, 0xd1, 0xb3, 0x6c, 0x22, 0x46, 0x57, 0xd1, 0xd5, 0xa7,
-	0xb5, 0x39, 0x4e, 0xe3, 0x9d, 0x21, 0x60, 0xc3, 0x96, 0x34, 0x12, 0x78, 0xd8, 0x38, 0xc5, 0xbe,
-	0x6e, 0xd9, 0x86, 0x6f, 0x7f, 0x35, 0xe8, 0xd3, 0x69, 0x2d, 0x2f, 0x38, 0x8e, 0x04, 0xc3, 0xee,
-	0x60, 0x1f, 0x95, 0x60, 0x2d, 0xc2, 0xde, 0x57, 0x61, 0x92, 0x9e, 0x4b, 0xf9, 0x30, 0x3e, 0xad,
-	0xad, 0x46, 0x18, 0xa4, 0x86, 0x0a, 0xdb, 0x46, 0x1f, 0xc1, 0x8a, 0xb4, 0xfc, 0x82, 0xf8, 0x56,
-	0x64, 0xd8, 0xe3, 0x5d, 0x28, 0xad, 0xe5, 0xc4, 0xee, 0xf7, 0x88, 0x6f, 0x0d, 0xe6, 0x3c, 0xf5,
-	0x5d, 0x98, 0x1f, 0xca, 0x1a, 0xca, 0xc3, 0x8c, 0xd7, 0xf1, 0x8d, 0x00, 0x87, 0x83, 0x53, 0xb8,
-	0x54, 0x7f, 0xad, 0xc0, 0xd2, 0x98, 0x9a, 0x41, 0x26, 0x64, 0x86, 0x8a, 0x40, 0x54, 0xec, 0x77,
-	0x26, 0x3e, 0x2f, 0x0d, 0x9b, 0xa4, 0xed, 0xda, 0x4c, 0x57, 0xa4, 0x6a, 0xb4, 0x21, 0xa5, 0xf1,
-	0x92, 0x4c, 0x8c, 0x01, 0xf4, 0xbf, 0x51, 0xe0, 0xf6, 0xcb, 0x74, 0xb2, 0xf9, 0x63, 0xf0, 0x90,
-	0xc9, 0xaa, 0x8e, 0x50, 0xae, 0x9a, 0x4f, 0x50, 0x19, 0xa6, 0x59, 0x72, 0x43, 0x7c, 0xf2, 0xde,
-	0x04, 0x31, 0xb2, 0x7c, 0xd7, 0xdc, 0x16, 0xd1, 0x84, 0xa4, 0xfa, 0x77, 0x05, 0xd2, 0x21, 0x0d,
-	0x7d, 0x3a, 0xd4, 0x16, 0xaf, 0x04, 0xc9, 0x91, 0xae, 0xf8, 0x11, 0xa4, 0xc3, 0x89, 0xf2, 0xea,
-	0x51, 0x72, 0x46, 0x8e, 0x92, 0x0c, 0x6c, 0x32, 0x2f, 0xe4, 0x34, 0xc4, 0x7f, 0x8f, 0xc4, 0x3c,
-	0x15, 0x8b, 0xf9, 0x4d, 0x98, 0x0b, 0xeb, 0x90, 0x1a, 0x6d, 0x7e, 0x4b, 0xa6, 0x35, 0x90, 0xa4,
-	0xa6, 0xd1, 0x56, 0x0b, 0x90, 0x1d, 0x40, 0xdb, 0x63, 0xec, 0x53, 0x7c, 0x8e, 0x32, 0xa0, 0x9c,
-	0x4b, 0x48, 0xab, 0xf0, 0xd5, 0x85, 0xcc, 0xa6, 0x72, 0xa1, 0xda, 0xb0, 0x12, 0x87, 0xc2, 0x0d,
-	0xe2, 0x5c, 0xa0, 0x3a, 0xa4, 0xcf, 0xb0, 0x4f, 0x6d, 0xb3, 0x5f, 0x45, 0x1f, 0x4e, 0x90, 0xe1,
-	0x51, 0xe3, 0x5a, 0x5f, 0x89, 0xfa, 0xb5, 0x02, 0x73, 0x0c, 0x18, 0xfc, 0xef, 0x87, 0x66, 0xb4,
-	0xdb, 0x9f, 0x20, 0x44, 0xad, 0xbc, 0x3f, 0x21, 0x86, 0x19, 0x1e, 0x1b, 0xfe, 0xa0, 0xc0, 0x6c,
-	0x9f, 0x8a, 0x4e, 0x21, 0xe7, 0xf3, 0x97, 0xc3, 0xd2, 0x4f, 0x64, 0xde, 0xf4, 0x13, 0x72, 0x2e,
-	0x63, 0xb9, 0x7f, 0xad, 0x5c, 0x45, 0x13, 0xaf, 0x21, 0xa9, 0x36, 0x3a, 0x98, 0x8c, 0x4c, 0x70,
-	0x89, 0x6b, 0x4c, 0x70, 0xaa, 0x07, 0x0b, 0xc3, 0x78, 0x8c, 0x55, 0x1e, 0xff, 0x90, 0x2e, 0xee,
-	0x1c, 0xff, 0x8d, 0x3e, 0x8f, 0x0c, 0xb4, 0x62, 0xba, 0x28, 0x4c, 0x98, 0xa4, 0xd8, 0x3c, 0xab,
-	0xfe, 0x55, 0x81, 0xa5, 0x61, 0x88, 0x26, 0x52, 0xe6, 0xc1, 0xaa, 0xdb, 0x8f, 0x79, 0x5c, 0xd6,
-	0x3e, 0xbd, 0x51, 0xd6, 0x76, 0xc8, 0xb9, 0xb6, 0xec, 0x8e, 0x1d, 0xe8, 0x5e, 0x25, 0x6f, 0x7f,
-	0x4b, 0x40, 0xfe, 0x32, 0xa0, 0x89, 0x1e, 0x0d, 0x8a, 0x37, 0x79, 0xa3, 0xe2, 0xdd, 0x7f, 0x6d,
-	0x50, 0xbe, 0xaf, 0x43, 0x9a, 0x3f, 0x62, 0xe1, 0x3f, 0x0d, 0x49, 0xb6, 0xc9, 0x29, 0x35, 0xeb,
-	0xbf, 0xf1, 0x11, 0xe4, 0xaa, 0xae, 0x72, 0xd8, 0xbf, 0x1e, 0x89, 0x89, 0x47, 0x89, 0x31, 0xe7,
-	0x1b, 0x5e, 0x94, 0x9d, 0x0c, 0xef, 0xec, 0x2c, 0x1e, 0xb7, 0x45, 0xee, 0xfd, 0x51, 0x81, 0x19,
-	0x89, 0xe2, 0xd0, 0x2a, 0x2c, 0xed, 0x55, 0xcb, 0xcd, 0x27, 0x5a, 0x55, 0x7f, 0x72, 0x78, 0xd4,
-	0xa8, 0x56, 0x6a, 0x7b, 0xb5, 0xea, 0x6e, 0xf6, 0x35, 0xb4, 0x04, 0x8b, 0x07, 0xe5, 0x9d, 0xea,
-	0x81, 0xbe, 0x5b, 0x6d, 0x56, 0x2b, 0xcd, 0x5a, 0xfd, 0x30, 0xab, 0xa0, 0x35, 0x58, 0x3e, 0xda,
-	0xaf, 0x37, 0xf5, 0xca, 0x7e, 0xf9, 0xf0, 0x61, 0x35, 0xb2, 0x95, 0x40, 0x1b, 0xb0, 0x5e, 0xfd,
-	0xa2, 0x71, 0x50, 0xab, 0xd4, 0x9a, 0x7a, 0xa5, 0x7e, 0xd8, 0xac, 0x1e, 0x36, 0x23, 0xfb, 0x49,
-	0x94, 0x87, 0xdc, 0x51, 0xa3, 0x5a, 0xad, 0xec, 0xeb, 0x4d, 0xad, 0x7c, 0x78, 0x54, 0xd1, 0x6a,
-	0x0d, 0xbe, 0x93, 0x42, 0x08, 0x16, 0x9a, 0xd5, 0x2f, 0xa2, 0xdc, 0x33, 0xcc, 0x7a, 0x7d, 0xe7,
-	0xf3, 0x6a, 0xa5, 0xc9, 0xb8, 0x2b, 0x8f, 0x6a, 0x87, 0x0f, 0xb3, 0xb3, 0xf7, 0x7c, 0x40, 0xf1,
-	0xaf, 0xca, 0xe8, 0x6d, 0xd8, 0x1c, 0x71, 0x54, 0x7f, 0x5c, 0xdf, 0x1d, 0x0d, 0x67, 0x1e, 0x66,
-	0xb9, 0xe7, 0x6c, 0x2b, 0xab, 0xa0, 0x05, 0x80, 0x3d, 0xad, 0xfc, 0xb8, 0x2a, 0xd6, 0x09, 0x96,
-	0x06, 0xbe, 0x5d, 0x3e, 0xdc, 0xd5, 0x23, 0x1b, 0xc9, 0x7b, 0x14, 0x60, 0xf0, 0x55, 0x04, 0xad,
-	0xc3, 0xca, 0x41, 0xed, 0x51, 0xf5, 0xa0, 0xb6, 0x5f, 0xaf, 0xef, 0x8e, 0x58, 0xb8, 0x05, 0xf3,
-	0xc7, 0x55, 0xed, 0xa9, 0xfe, 0xe4, 0x90, 0xb3, 0x3c, 0xcd, 0x2a, 0x28, 0x03, 0xe9, 0xfe, 0x2a,
-	0xc1, 0x56, 0x8d, 0xfa, 0xd1, 0x51, 0x6d, 0xe7, 0xa0, 0x9a, 0x4d, 0x22, 0x80, 0x94, 0xdc, 0x99,
-	0x42, 0x8b, 0x30, 0xc7, 0x45, 0x25, 0x61, 0x7a, 0xfb, 0xdf, 0x0a, 0xe4, 0x79, 0x6d, 0xd6, 0x22,
-	0x87, 0x7c, 0x84, 0xfd, 0x33, 0xdb, 0xc4, 0xe8, 0x67, 0x0a, 0xcc, 0x0f, 0x81, 0x64, 0x34, 0xc9,
-	0xf7, 0x97, 0x71, 0xff, 0x29, 0xae, 0xbf, 0x11, 0x0a, 0x46, 0xfe, 0x05, 0x2d, 0xd4, 0xc3, 0x7f,
-	0x41, 0xd5, 0x8d, 0x1f, 0xff, 0xf3, 0x5f, 0xbf, 0x4c, 0xe4, 0xd5, 0xa5, 0xfe, 0x5f, 0xb1, 0x41,
-	0x49, 0xc2, 0x65, 0x5c, 0x52, 0xee, 0xad, 0x37, 0xbf, 0x29, 0x6f, 0xc6, 0x8d, 0x09, 0x95, 0x86,
-	0x67, 0x07, 0x05, 0x93, 0x74, 0xff, 0x51, 0x2e, 0x74, 0x28, 0xf5, 0x82, 0x52, 0xb1, 0xf8, 0xe2,
-	0xc5, 0x8b, 0x91, 0xcd, 0xa2, 0xd1, 0xa3, 0x1d, 0xf1, 0xff, 0xef, 0x07, 0x9e, 0x63, 0xd0, 0x16,
-	0xf1, 0xbb, 0x3b, 0x3f, 0x4f, 0xc0, 0x3b, 0x26, 0xe9, 0x5e, 0x1d, 0xd3, 0xce, 0x1b, 0x97, 0xe5,
-	0xa8, 0xc1, 0xfa, 0x48, 0x43, 0xf9, 0x52, 0x93, 0x3a, 0xda, 0x84, 0x21, 0xa1, 0x02, 0xf1, 0xdb,
-	0xc5, 0x36, 0x76, 0x79, 0x97, 0x29, 0x0e, 0x3c, 0x79, 0xc9, 0x1f, 0xd0, 0x0f, 0x62, 0xc4, 0xdf,
-	0x25, 0xee, 0x3c, 0x14, 0x4a, 0x2b, 0xdc, 0xb1, 0x98, 0x0b, 0x85, 0xe3, 0xad, 0x6f, 0x42, 0x9e,
-	0x67, 0x9c, 0xe7, 0x59, 0x8c, 0xe7, 0xd9, 0xf1, 0xd6, 0xb7, 0x89, 0xb7, 0x05, 0x4f, 0xa9, 0xc4,
-	0x99, 0x4a, 0xa5, 0x18, 0x57, 0xa9, 0x74, 0xbc, 0x75, 0x92, 0xe2, 0xde, 0x7e, 0xf8, 0x9f, 0x00,
-	0x00, 0x00, 0xff, 0xff, 0xb5, 0x23, 0x28, 0xda, 0x2d, 0x1f, 0x00, 0x00,
+	// 2627 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4f, 0x6f, 0xe3, 0xc6,
+	0x15, 0x0f, 0x65, 0xcb, 0x96, 0x9f, 0x65, 0x5b, 0x3b, 0x96, 0x6d, 0xd9, 0xd9, 0x6c, 0xbc, 0x4c,
+	0x02, 0x6c, 0x36, 0x89, 0x54, 0x6f, 0xd2, 0xfc, 0x51, 0x02, 0xb4, 0xb2, 0x2c, 0xc7, 0xca, 0x3a,
+	0x96, 0x41, 0x6b, 0xdd, 0x24, 0x58, 0x80, 0xa0, 0xc9, 0x91, 0xc4, 0x98, 0xe2, 0xa8, 0xe4, 0xc8,
+	0x6b, 0x07, 0xed, 0xa1, 0x45, 0xd1, 0x1e, 0xda, 0x5b, 0x2f, 0xbd, 0x14, 0x45, 0xaf, 0x3d, 0x17,
+	0x45, 0x2f, 0x0d, 0x02, 0x14, 0x3d, 0x34, 0x97, 0x16, 0xed, 0x57, 0xe8, 0x29, 0x1f, 0xa1, 0xa7,
+	0x62, 0xfe, 0x50, 0x1a, 0x89, 0xf2, 0x9a, 0xf6, 0x06, 0xbd, 0x71, 0xde, 0x9b, 0xf7, 0x7b, 0x6f,
+	0xde, 0xbc, 0x79, 0xf3, 0xde, 0x48, 0x50, 0x6e, 0x13, 0xd2, 0xf6, 0x70, 0xc9, 0xf6, 0x48, 0xdf,
+	0x29, 0x9d, 0xb9, 0x0e, 0x26, 0xae, 0x4f, 0xb1, 0xe7, 0xb9, 0x6d, 0xec, 0xdb, 0xb8, 0x74, 0xb6,
+	0x25, 0x88, 0xa6, 0x4a, 0x2d, 0xf6, 0x02, 0x42, 0x09, 0xba, 0x2b, 0x64, 0x8b, 0x5c, 0xb6, 0x18,
+	0x93, 0x2d, 0x9e, 0x6d, 0x6d, 0xdc, 0x96, 0xf0, 0x56, 0xcf, 0x2d, 0x59, 0xbe, 0x4f, 0xa8, 0x45,
+	0x5d, 0xe2, 0x87, 0x02, 0x60, 0x63, 0x4d, 0xe1, 0xda, 0x9e, 0x8b, 0x7d, 0x2a, 0x19, 0x2f, 0x49,
+	0x86, 0x47, 0xfc, 0x76, 0xd0, 0xf7, 0x7d, 0xd7, 0x6f, 0x97, 0x48, 0x0f, 0x07, 0x23, 0xd2, 0x77,
+	0xe4, 0x24, 0x3e, 0x3a, 0xe9, 0xb7, 0x4a, 0x4e, 0x5f, 0x4c, 0x90, 0xfc, 0x17, 0xc7, 0xf9, 0xd4,
+	0xed, 0xe2, 0x90, 0x5a, 0xdd, 0xde, 0x98, 0xfa, 0xa0, 0x67, 0x97, 0x42, 0x6a, 0xd1, 0xbe, 0x44,
+	0xd6, 0xff, 0x94, 0x82, 0x7c, 0x45, 0x58, 0x8b, 0x8f, 0xd9, 0xb2, 0x0c, 0xfc, 0xc3, 0x3e, 0x0e,
+	0x29, 0x7a, 0x1e, 0xe6, 0x5c, 0xbf, 0xd7, 0xa7, 0x66, 0x3f, 0x70, 0x0b, 0xda, 0xa6, 0x76, 0x6f,
+	0xce, 0xc8, 0x70, 0xc2, 0xa3, 0xc0, 0x45, 0x2f, 0xc1, 0x82, 0x60, 0xda, 0xc4, 0xa7, 0xd8, 0xa7,
+	0x85, 0x99, 0x4d, 0xed, 0x5e, 0xd6, 0xc8, 0x72, 0x62, 0x55, 0xd0, 0xd0, 0x2e, 0x64, 0x5a, 0xd8,
+	0xa2, 0xfd, 0x00, 0x87, 0x85, 0xd4, 0xe6, 0xd4, 0xbd, 0xc5, 0x07, 0xf7, 0x8b, 0x57, 0xba, 0xb1,
+	0xb8, 0x2b, 0x44, 0x8c, 0x81, 0x2c, 0x6a, 0xc2, 0x82, 0xd8, 0x17, 0xae, 0xec, 0x9c, 0x16, 0xa6,
+	0x36, 0xb5, 0x7b, 0xf3, 0x0f, 0x4a, 0x09, 0xc0, 0xf8, 0x8a, 0xaa, 0x42, 0xcc, 0xc8, 0x9e, 0x29,
+	0x23, 0xf4, 0x02, 0x00, 0xe9, 0xd3, 0x68, 0x81, 0xd3, 0x7c, 0x81, 0x73, 0x82, 0xc2, 0x56, 0xf8,
+	0x22, 0xcc, 0x7b, 0xc4, 0xe6, 0x3e, 0x36, 0x5d, 0xa7, 0x90, 0xe6, 0x7c, 0x88, 0x48, 0x75, 0x47,
+	0xff, 0xed, 0x2c, 0x64, 0x55, 0x78, 0xf4, 0x10, 0x32, 0x21, 0x6e, 0x77, 0xb1, 0x4f, 0xc3, 0x82,
+	0xb6, 0x39, 0x75, 0x1d, 0x0b, 0x8f, 0x84, 0x9c, 0x31, 0x00, 0x40, 0x5d, 0x58, 0xf5, 0xac, 0x13,
+	0xec, 0x99, 0x0e, 0xa6, 0xd8, 0xe6, 0x56, 0xd8, 0xc4, 0x6f, 0xb9, 0xed, 0x42, 0x8a, 0x2f, 0xfe,
+	0x9d, 0x04, 0xd0, 0xfb, 0x0c, 0x60, 0x27, 0x92, 0xaf, 0x72, 0x71, 0x23, 0xef, 0x4d, 0xa0, 0xa2,
+	0x1f, 0xc3, 0xed, 0xb0, 0x43, 0xa8, 0x69, 0x77, 0x2c, 0xbf, 0x8d, 0xe3, 0x4a, 0x85, 0xc7, 0x3f,
+	0x48, 0xa0, 0xf4, 0xa8, 0x43, 0x68, 0x95, 0xa3, 0x8c, 0x6b, 0x5e, 0x0f, 0x2f, 0x63, 0xa1, 0x5f,
+	0x69, 0x70, 0x17, 0x9f, 0xf7, 0x3c, 0xd7, 0x76, 0x07, 0x21, 0x15, 0x37, 0x62, 0x9a, 0x1b, 0x51,
+	0x49, 0x60, 0x44, 0x4d, 0x62, 0xc9, 0x48, 0x1c, 0xb7, 0xe4, 0x0e, 0x7e, 0x2a, 0x1f, 0x7d, 0x0e,
+	0x2b, 0x2d, 0xcb, 0x9e, 0xe0, 0x86, 0x34, 0xb7, 0xe0, 0xed, 0x24, 0x51, 0x6c, 0xd9, 0x31, 0x07,
+	0x2c, 0xb7, 0xe2, 0x44, 0xf4, 0x23, 0x78, 0x3e, 0xec, 0x61, 0x6c, 0x77, 0x4c, 0x1a, 0x58, 0x7e,
+	0x68, 0x07, 0x6e, 0x4f, 0xd5, 0x38, 0x93, 0xdc, 0xf1, 0x1c, 0xa5, 0xa9, 0x82, 0x0c, 0x1c, 0x7f,
+	0x19, 0x8b, 0xad, 0x94, 0xc5, 0x6e, 0x7c, 0xa5, 0x99, 0xc4, 0x2b, 0x6d, 0xe2, 0xf3, 0x98, 0x83,
+	0x97, 0x69, 0x9c, 0xc8, 0x42, 0x9a, 0x9c, 0x7c, 0x8e, 0x6d, 0xca, 0x56, 0x6a, 0x9f, 0xba, 0x7e,
+	0x3b, 0x52, 0xb6, 0x90, 0x38, 0xa4, 0x1b, 0x1c, 0xa0, 0x29, 0xe5, 0xa3, 0x90, 0x26, 0x13, 0xa8,
+	0xfa, 0x97, 0x29, 0xc8, 0x4f, 0x3a, 0x01, 0xa8, 0x0d, 0xf9, 0xf1, 0xa3, 0xd5, 0x25, 0x0e, 0xe6,
+	0x39, 0x6e, 0xf1, 0xc1, 0x77, 0xaf, 0x7d, 0xb0, 0x3e, 0x26, 0x0e, 0x36, 0x90, 0x17, 0xa3, 0xa1,
+	0xd7, 0xe0, 0x56, 0x28, 0x2e, 0x01, 0x2b, 0xb8, 0x30, 0x6d, 0xab, 0x8b, 0x03, 0x8b, 0x1f, 0xdf,
+	0x8c, 0x91, 0x1b, 0x32, 0xaa, 0x9c, 0x8e, 0xf2, 0x90, 0x66, 0x56, 0x78, 0xfc, 0xa8, 0xcd, 0x19,
+	0x62, 0x80, 0x3e, 0x80, 0x8d, 0x56, 0x60, 0x75, 0xb1, 0xf0, 0x94, 0xc3, 0x0c, 0x30, 0x69, 0x27,
+	0xc0, 0x61, 0x87, 0x78, 0x0e, 0x3f, 0x10, 0x29, 0xa3, 0xc0, 0x67, 0x54, 0x07, 0x13, 0x9a, 0x11,
+	0x9f, 0x49, 0x0f, 0x12, 0x67, 0x5c, 0x3a, 0x2d, 0xa4, 0xa3, 0xa4, 0x38, 0x2e, 0xad, 0x6f, 0xc1,
+	0xfa, 0xa5, 0x87, 0x79, 0x68, 0xae, 0xa6, 0x98, 0xab, 0xbf, 0x0d, 0x77, 0x9e, 0x7e, 0xf4, 0x2e,
+	0x91, 0xb3, 0x60, 0x79, 0xc2, 0x81, 0x99, 0x3c, 0x19, 0xbd, 0x05, 0xab, 0xae, 0x6f, 0x7b, 0x7d,
+	0x07, 0x9b, 0x27, 0xa4, 0xef, 0x3b, 0x2c, 0x90, 0x4e, 0xc8, 0x39, 0xbf, 0x64, 0x98, 0x6f, 0xf3,
+	0x92, 0xbb, 0x2d, 0x99, 0xdb, 0x8c, 0xa7, 0xbf, 0x0e, 0xf9, 0x49, 0xc1, 0x73, 0x89, 0x41, 0x06,
+	0x2c, 0x4f, 0x88, 0x6b, 0xf4, 0x0a, 0x2c, 0x7a, 0x96, 0xdf, 0xee, 0x5b, 0x6d, 0x6c, 0x76, 0xdc,
+	0x28, 0xd1, 0xcf, 0x19, 0x0b, 0x11, 0x75, 0x8f, 0x11, 0x87, 0x98, 0x29, 0x15, 0xf3, 0x37, 0x9a,
+	0xbc, 0x30, 0x64, 0xb6, 0x47, 0x35, 0x1e, 0x1f, 0x01, 0x35, 0xd9, 0x65, 0x6d, 0x92, 0x56, 0x2b,
+	0xc4, 0x94, 0x9b, 0x31, 0xff, 0x60, 0x3d, 0x8a, 0xc2, 0xe8, 0x42, 0x2f, 0xee, 0xc8, 0x0b, 0xdf,
+	0x58, 0xe2, 0x32, 0x4d, 0xb7, 0x8b, 0x1b, 0x5c, 0x02, 0x55, 0x60, 0x09, 0xfb, 0xce, 0x08, 0x48,
+	0xea, 0x2a, 0x90, 0x05, 0xec, 0x3b, 0x43, 0x08, 0xfd, 0x02, 0xb2, 0x3c, 0xa6, 0x23, 0xcb, 0xea,
+	0x30, 0x2b, 0x6f, 0x22, 0x69, 0xcf, 0xb5, 0x6f, 0xb2, 0x48, 0x1e, 0xdd, 0x01, 0x18, 0x46, 0x1f,
+	0x37, 0x2c, 0x65, 0x28, 0x14, 0xbd, 0x03, 0xc0, 0x55, 0xef, 0xb2, 0x20, 0x46, 0x65, 0x98, 0xbf,
+	0x96, 0x33, 0x80, 0x0e, 0xfd, 0x70, 0x95, 0x26, 0x0f, 0x66, 0x6a, 0x3e, 0x75, 0xe9, 0x05, 0x2b,
+	0x6d, 0x30, 0xff, 0x62, 0x37, 0xbb, 0x2c, 0x6d, 0x04, 0xa1, 0xee, 0xa0, 0x4d, 0x98, 0x77, 0xf0,
+	0x20, 0x4f, 0xca, 0x2d, 0x54, 0x49, 0xac, 0xf8, 0x19, 0x44, 0x81, 0xcd, 0x32, 0x87, 0x38, 0xb2,
+	0xd9, 0x88, 0x58, 0x25, 0x0e, 0xd6, 0xbf, 0x4a, 0xc1, 0x12, 0x5f, 0x58, 0x65, 0x50, 0x0a, 0xa2,
+	0x0a, 0xcc, 0x08, 0x35, 0x72, 0x61, 0xaf, 0x26, 0xb9, 0xca, 0xb8, 0x80, 0x21, 0x05, 0xd1, 0x31,
+	0xdc, 0xb2, 0x2d, 0x8a, 0xdb, 0x24, 0xb8, 0x30, 0x39, 0xc9, 0x95, 0xc5, 0xd5, 0xb5, 0xd0, 0x72,
+	0x11, 0x46, 0x4d, 0x42, 0x8c, 0x14, 0x2f, 0x53, 0x89, 0x8b, 0x17, 0x35, 0x68, 0x94, 0xe2, 0xa5,
+	0x06, 0x33, 0x3c, 0x27, 0x85, 0x85, 0x69, 0x0e, 0xf5, 0x46, 0x52, 0x28, 0x1e, 0x04, 0x86, 0x14,
+	0xd6, 0xff, 0xac, 0x41, 0x7e, 0x2c, 0x9d, 0x3c, 0x7b, 0x94, 0x38, 0xb0, 0xda, 0x23, 0x81, 0x4f,
+	0xda, 0x81, 0xd5, 0xeb, 0x5c, 0x98, 0x9e, 0x7b, 0x8a, 0x3d, 0xb7, 0x43, 0x88, 0xc3, 0x77, 0x7a,
+	0x31, 0x99, 0xad, 0x03, 0x21, 0x63, 0x45, 0x01, 0x1b, 0x92, 0x75, 0x0f, 0xd6, 0xc7, 0x2c, 0x57,
+	0xc2, 0xa0, 0x31, 0x70, 0x8f, 0x28, 0x13, 0xdf, 0xb9, 0x7e, 0x45, 0x33, 0xea, 0xa8, 0x53, 0x58,
+	0x39, 0x20, 0x41, 0xd7, 0xf2, 0xdc, 0x2f, 0xb0, 0xa3, 0xa4, 0x3d, 0x84, 0x60, 0xda, 0xc3, 0x2d,
+	0xe1, 0xa1, 0x94, 0xc1, 0xbf, 0x51, 0x0e, 0xa6, 0x28, 0xe9, 0xc9, 0xf3, 0xc1, 0x3e, 0x59, 0xba,
+	0x0a, 0xdc, 0x76, 0x47, 0xd4, 0xd5, 0x29, 0x43, 0x0c, 0xd0, 0x2a, 0xcc, 0x9c, 0x10, 0x4a, 0x49,
+	0x57, 0x5e, 0x33, 0x72, 0xa4, 0x7f, 0x02, 0xf3, 0x2c, 0x57, 0x7f, 0xfb, 0xa9, 0x42, 0xff, 0x8b,
+	0x06, 0x73, 0x0c, 0x5a, 0x6c, 0x32, 0x85, 0x75, 0x7f, 0xb0, 0xa8, 0xf1, 0x4c, 0x2f, 0x1c, 0xf7,
+	0x6e, 0x02, 0x55, 0x13, 0x1d, 0x63, 0xac, 0xf9, 0x93, 0xc8, 0x38, 0x1c, 0x0f, 0xad, 0xd4, 0x35,
+	0x42, 0x4b, 0xff, 0x4a, 0x83, 0x45, 0x66, 0xbf, 0xb2, 0xd5, 0xb7, 0x61, 0x8e, 0x76, 0xfa, 0xdd,
+	0x13, 0xdf, 0x72, 0xc5, 0x0d, 0x93, 0x35, 0x86, 0x04, 0xf4, 0x91, 0x72, 0xe8, 0xc4, 0x19, 0x2e,
+	0x26, 0x2c, 0x2d, 0xe3, 0x67, 0x6e, 0x67, 0x10, 0x54, 0xe2, 0xf8, 0xbe, 0x9e, 0x10, 0x69, 0x34,
+	0x92, 0xfe, 0x99, 0x81, 0x55, 0xbe, 0x39, 0xc3, 0x35, 0x18, 0x38, 0xec, 0x7b, 0x34, 0x7c, 0x7a,
+	0x3f, 0xa8, 0x44, 0x01, 0x3c, 0xe3, 0x85, 0xe1, 0xc3, 0xba, 0xfc, 0x34, 0x45, 0x99, 0xa6, 0xf4,
+	0xd2, 0xd2, 0x4b, 0x0f, 0x92, 0xe6, 0x13, 0x65, 0x15, 0x6b, 0x12, 0x74, 0x8c, 0x1e, 0xa2, 0x0e,
+	0xac, 0xf2, 0xd6, 0x27, 0xae, 0x6c, 0xea, 0xc6, 0xca, 0xf2, 0x0c, 0x31, 0xa6, 0xe9, 0x73, 0x58,
+	0x13, 0xc5, 0x5c, 0x5c, 0xd5, 0xf4, 0x8d, 0x55, 0xad, 0x70, 0xc8, 0x98, 0xae, 0xc7, 0x90, 0xe3,
+	0x2d, 0x8c, 0xaa, 0x24, 0xcd, 0x95, 0x6c, 0x25, 0x0c, 0x0c, 0x45, 0xc7, 0x52, 0x6b, 0x64, 0x1c,
+	0xa2, 0xcf, 0x20, 0xc7, 0x7d, 0xa6, 0xa2, 0xcf, 0xdc, 0xac, 0xe5, 0x5d, 0x62, 0x40, 0x2a, 0x76,
+	0x17, 0x96, 0x07, 0xad, 0xe0, 0x10, 0xbf, 0x30, 0x9b, 0xb8, 0x11, 0xba, 0x34, 0xf1, 0x1a, 0x28,
+	0x02, 0x56, 0x4e, 0xe8, 0x29, 0xac, 0x4c, 0xea, 0xbf, 0xc2, 0xc2, 0x3c, 0x5f, 0xcf, 0xdb, 0x37,
+	0xeb, 0xbc, 0x8c, 0xfc, 0x84, 0x9e, 0x8b, 0xef, 0x0a, 0x6f, 0xb7, 0x54, 0xbf, 0x65, 0x13, 0xef,
+	0x0a, 0xab, 0x48, 0xd5, 0x5d, 0xa1, 0x23, 0x63, 0x16, 0x5f, 0x48, 0x36, 0x58, 0x2a, 0xfe, 0x22,
+	0xc7, 0x7f, 0xff, 0xda, 0xcd, 0x95, 0xa2, 0xe9, 0x96, 0x80, 0x55, 0x75, 0xdd, 0x83, 0x34, 0x0e,
+	0x02, 0x12, 0x14, 0xe6, 0xf8, 0xbe, 0xa0, 0x08, 0x3e, 0xe8, 0xd9, 0xc5, 0x23, 0xfe, 0xbe, 0x64,
+	0x88, 0x09, 0xfa, 0x4f, 0x34, 0x58, 0x19, 0x7b, 0x60, 0x0a, 0x7b, 0xc4, 0x0f, 0x31, 0xea, 0x00,
+	0x1a, 0x1a, 0x6a, 0x06, 0x22, 0xcf, 0xc8, 0xd4, 0xfe, 0x5e, 0xd2, 0x38, 0x8a, 0x25, 0x2a, 0xe3,
+	0x96, 0x35, 0x4e, 0xd2, 0xbf, 0x49, 0xc1, 0xda, 0xd8, 0xec, 0xc3, 0x80, 0xb4, 0x03, 0x1c, 0x5e,
+	0x91, 0xd7, 0x5e, 0x85, 0x5c, 0x4f, 0x4e, 0x34, 0x7b, 0x38, 0xb0, 0x59, 0x82, 0x63, 0x77, 0x42,
+	0xda, 0x58, 0x8a, 0xe8, 0x87, 0x82, 0x8c, 0xde, 0x03, 0x18, 0x56, 0xf3, 0xf2, 0xc1, 0x64, 0x23,
+	0x76, 0x71, 0x34, 0xa3, 0x77, 0x39, 0x63, 0x6e, 0x50, 0xc7, 0xa3, 0xf7, 0x61, 0xbe, 0xdf, 0x73,
+	0x2c, 0x8a, 0x85, 0xec, 0xf4, 0x95, 0xb2, 0x20, 0xa6, 0x73, 0xe1, 0x1d, 0x98, 0x95, 0x2f, 0x65,
+	0xbc, 0xa3, 0xbb, 0xde, 0x23, 0x5b, 0x24, 0xaa, 0x26, 0xf0, 0x99, 0x67, 0xbc, 0xc6, 0x7f, 0x36,
+	0xbe, 0xe1, 0x03, 0x57, 0x9f, 0xc2, 0xb2, 0xb2, 0xe1, 0x91, 0x03, 0xe5, 0x8e, 0x97, 0xaf, 0xbf,
+	0xe3, 0x11, 0xb0, 0xa1, 0xc4, 0x51, 0x44, 0xd3, 0x7f, 0x3e, 0x0d, 0xeb, 0x97, 0xbe, 0x89, 0xc4,
+	0x6b, 0x78, 0x2d, 0x5e, 0xc3, 0xb3, 0xdd, 0xef, 0x5a, 0xe7, 0xa6, 0xe5, 0x51, 0x1c, 0xf8, 0x16,
+	0x75, 0xcf, 0x64, 0x8f, 0x99, 0x36, 0x96, 0xba, 0xd6, 0x79, 0x45, 0x21, 0xb3, 0xa9, 0x2d, 0x97,
+	0x11, 0xd8, 0xb2, 0x5a, 0x96, 0xcf, 0x8a, 0xfc, 0x29, 0xde, 0x8e, 0x2e, 0x09, 0xfa, 0x61, 0x44,
+	0x46, 0x9f, 0xc2, 0x92, 0xcc, 0x38, 0xf2, 0x3d, 0x33, 0x4a, 0xff, 0xdf, 0x49, 0x9c, 0x6b, 0xa2,
+	0x17, 0xcd, 0xc5, 0x50, 0x1d, 0x86, 0xe8, 0xfb, 0x70, 0x1b, 0xfb, 0xd6, 0x89, 0x87, 0x4d, 0xab,
+	0x4f, 0x49, 0xd7, 0xa2, 0xae, 0x6d, 0xf6, 0xfa, 0xbe, 0x4d, 0xfb, 0x22, 0x89, 0xa6, 0xb9, 0x45,
+	0x1b, 0x62, 0x4e, 0x25, 0x9a, 0x72, 0x38, 0x9c, 0x81, 0xee, 0x42, 0xd6, 0xea, 0x3b, 0x2e, 0x11,
+	0x6f, 0x34, 0x22, 0xab, 0xa7, 0x8d, 0x79, 0x4e, 0xe3, 0x99, 0x21, 0x44, 0x1f, 0x80, 0x04, 0x30,
+	0xc3, 0x1e, 0xb6, 0x4e, 0x71, 0x60, 0x3a, 0xae, 0x15, 0xb8, 0x5f, 0x0c, 0xf3, 0x74, 0xc6, 0x28,
+	0x88, 0x19, 0x47, 0x62, 0xc2, 0xce, 0x90, 0x8f, 0xca, 0xb0, 0xae, 0x4c, 0x1f, 0x40, 0xd8, 0xa4,
+	0xef, 0x53, 0xfe, 0xea, 0x94, 0x36, 0xd6, 0x94, 0x09, 0x12, 0xa1, 0xca, 0xd8, 0xac, 0xf3, 0x97,
+	0x9a, 0x9f, 0x90, 0xc0, 0x51, 0x5e, 0x35, 0x78, 0x16, 0xca, 0x18, 0x79, 0xc1, 0xfd, 0x01, 0x09,
+	0x9c, 0xe1, 0x83, 0x86, 0xfe, 0x2a, 0x2c, 0x8c, 0x78, 0x0d, 0x15, 0x60, 0xb6, 0xd7, 0x09, 0xac,
+	0x10, 0x47, 0xed, 0x7b, 0x34, 0xd4, 0x7f, 0xa7, 0xc1, 0xf2, 0x84, 0x98, 0x41, 0x36, 0x64, 0x47,
+	0x82, 0x40, 0x44, 0xec, 0xf7, 0x12, 0xef, 0x97, 0x81, 0x6d, 0xd2, 0xf6, 0x5d, 0x86, 0xa5, 0x44,
+	0x8d, 0x31, 0x02, 0x1a, 0x0f, 0xc9, 0xd4, 0x84, 0xb6, 0xf2, 0xf7, 0x1a, 0xdc, 0x7e, 0x1a, 0x26,
+	0xeb, 0x82, 0x87, 0x17, 0x99, 0x8c, 0x6a, 0x85, 0x72, 0x55, 0x97, 0x8c, 0x2a, 0x90, 0x66, 0xce,
+	0x8d, 0xaa, 0x9f, 0xd7, 0x12, 0xac, 0x91, 0xf9, 0xbb, 0xee, 0xb7, 0x88, 0x21, 0x24, 0xf5, 0x7f,
+	0x68, 0x90, 0x89, 0x68, 0xe8, 0xdd, 0x91, 0xb4, 0x78, 0x65, 0xab, 0xa6, 0x64, 0xc5, 0xb7, 0x20,
+	0x13, 0xbd, 0x6b, 0x5c, 0x5d, 0x87, 0xcf, 0xca, 0x07, 0x0d, 0xd6, 0xf2, 0x30, 0x2b, 0x64, 0x4f,
+	0xce, 0xbf, 0xc7, 0xd6, 0x3c, 0x1d, 0x5b, 0xf3, 0x8b, 0x30, 0x1f, 0xc5, 0x21, 0xb5, 0xc4, 0x2b,
+	0x6f, 0xda, 0x00, 0x49, 0x6a, 0x5a, 0x6d, 0xbd, 0x08, 0xb9, 0x61, 0x1f, 0x71, 0x8c, 0x03, 0x8a,
+	0xcf, 0x51, 0x16, 0xb4, 0x73, 0xd9, 0x58, 0x69, 0x7c, 0x74, 0x21, 0xbd, 0xa9, 0x5d, 0xe8, 0x2e,
+	0xac, 0xc6, 0xfb, 0x8e, 0x43, 0xe2, 0x5d, 0xa0, 0x06, 0x64, 0xce, 0x70, 0x40, 0x5d, 0x7b, 0x10,
+	0x45, 0x6f, 0x5e, 0xab, 0x89, 0x11, 0xca, 0x8d, 0x01, 0x88, 0xfe, 0xa5, 0x06, 0xf3, 0xac, 0x30,
+	0xf8, 0xff, 0x3f, 0xdd, 0xdc, 0xa8, 0xe5, 0x60, 0xa6, 0x8e, 0xb6, 0x1c, 0x7f, 0xd4, 0x60, 0x6e,
+	0x40, 0x45, 0xa7, 0x90, 0x0f, 0xf8, 0xcd, 0x31, 0xda, 0xf2, 0xc9, 0xb5, 0xbc, 0x77, 0xa3, 0x86,
+	0x8f, 0x39, 0xde, 0x40, 0x12, 0x56, 0x6d, 0x8f, 0x9f, 0xa5, 0xd9, 0xeb, 0xc1, 0xe2, 0x68, 0x3d,
+	0xc6, 0x22, 0x8f, 0xff, 0x3a, 0x25, 0xce, 0x1c, 0xff, 0xbe, 0x61, 0x87, 0xa7, 0xec, 0xe7, 0xb0,
+	0xc3, 0xd3, 0xff, 0xaa, 0xc1, 0xf2, 0x68, 0x89, 0x26, 0x5c, 0xd6, 0x83, 0xb5, 0x4b, 0x1a, 0x65,
+	0xe9, 0xb5, 0x9b, 0xb7, 0xc9, 0x2b, 0x13, 0xdb, 0xe4, 0x67, 0xf2, 0xdb, 0xdf, 0x52, 0x50, 0xb8,
+	0xac, 0xd0, 0x44, 0x0f, 0x87, 0xc1, 0x3b, 0x75, 0xa3, 0xe0, 0xdd, 0x7b, 0x6e, 0x18, 0xbe, 0xcf,
+	0x43, 0x86, 0x5f, 0x62, 0xd1, 0xcf, 0x77, 0x53, 0x8c, 0xc9, 0x29, 0x75, 0xe7, 0xdb, 0x78, 0x8a,
+	0xbb, 0x2a, 0xab, 0x1c, 0x0c, 0x8e, 0x47, 0x2a, 0x71, 0x2b, 0x31, 0x61, 0x7f, 0xa3, 0x83, 0xb2,
+	0x9d, 0xe5, 0x99, 0x9d, 0xad, 0xc7, 0x6f, 0x91, 0xfb, 0x7f, 0xd7, 0x60, 0x56, 0x56, 0x71, 0x68,
+	0x0d, 0x96, 0x77, 0x6b, 0x95, 0xe6, 0x23, 0xa3, 0x66, 0x3e, 0x3a, 0x38, 0x3a, 0xac, 0x55, 0xeb,
+	0xbb, 0xf5, 0xda, 0x4e, 0xee, 0x39, 0xb4, 0x0c, 0x4b, 0xfb, 0x95, 0xed, 0xda, 0xbe, 0xb9, 0x53,
+	0x6b, 0xd6, 0xaa, 0xcd, 0x7a, 0xe3, 0x20, 0xa7, 0xa1, 0x75, 0x58, 0x39, 0xda, 0x6b, 0x34, 0xcd,
+	0xea, 0x5e, 0xe5, 0xe0, 0xc3, 0x9a, 0xc2, 0x4a, 0xa1, 0x3b, 0xb0, 0x51, 0xfb, 0xe4, 0x70, 0xbf,
+	0x5e, 0xad, 0x37, 0xcd, 0x6a, 0xe3, 0xa0, 0x59, 0x3b, 0x68, 0x2a, 0xfc, 0x29, 0x84, 0x60, 0x71,
+	0xb7, 0x52, 0x55, 0x65, 0xa6, 0x51, 0x01, 0xf2, 0x47, 0x87, 0xb5, 0x5a, 0x75, 0xcf, 0x6c, 0x1a,
+	0x95, 0x83, 0xa3, 0xaa, 0x51, 0x3f, 0xe4, 0x9c, 0x19, 0x36, 0xbb, 0x59, 0xfb, 0x44, 0x45, 0x98,
+	0x65, 0x16, 0x35, 0xb6, 0x3f, 0xaa, 0x55, 0x9b, 0x6c, 0x76, 0xf5, 0x61, 0xfd, 0xe0, 0xc3, 0xdc,
+	0xdc, 0xfd, 0x00, 0x50, 0xfc, 0x27, 0x15, 0xf4, 0x32, 0x6c, 0x8e, 0x19, 0x6f, 0x7e, 0xdc, 0xd8,
+	0x19, 0x5f, 0xe2, 0x02, 0xcc, 0xf1, 0xd5, 0x30, 0x56, 0x4e, 0x43, 0x8b, 0x00, 0xbb, 0x46, 0xe5,
+	0xe3, 0x9a, 0x18, 0xa7, 0x98, 0x6b, 0x38, 0xbb, 0x72, 0xb0, 0x63, 0x2a, 0x8c, 0xa9, 0xfb, 0x14,
+	0x60, 0xf8, 0x5e, 0x87, 0x36, 0x60, 0x75, 0xbf, 0xfe, 0xb0, 0xb6, 0x5f, 0xdf, 0x6b, 0x34, 0x76,
+	0xc6, 0x34, 0xdc, 0x82, 0x85, 0xe3, 0x9a, 0xf1, 0xa9, 0xf9, 0xe8, 0x80, 0x4f, 0xf9, 0x34, 0xa7,
+	0xa1, 0x2c, 0x64, 0x06, 0xa3, 0x14, 0x1b, 0x1d, 0x36, 0x8e, 0x8e, 0xea, 0xdb, 0xfb, 0xb5, 0xdc,
+	0x14, 0x02, 0x98, 0x91, 0x9c, 0x69, 0xb4, 0x04, 0xf3, 0x5c, 0x54, 0x12, 0xd2, 0x0f, 0xfe, 0xab,
+	0x41, 0x81, 0xc7, 0x6b, 0x5d, 0xd9, 0xf8, 0x23, 0x1c, 0x9c, 0xb9, 0x36, 0x46, 0xbf, 0xd0, 0x60,
+	0x61, 0xa4, 0x70, 0x46, 0x49, 0x5e, 0x06, 0x27, 0xfd, 0x78, 0xbf, 0xf1, 0x42, 0x24, 0xa8, 0xfc,
+	0xab, 0xa0, 0xd8, 0x88, 0xfe, 0x55, 0xa0, 0xdf, 0xf9, 0xe9, 0xbf, 0xff, 0xf3, 0xeb, 0x54, 0x41,
+	0x5f, 0x1e, 0xfc, 0xe7, 0x21, 0x2c, 0xcb, 0x12, 0x1a, 0x97, 0xb5, 0xfb, 0x1b, 0xcd, 0xaf, 0x2b,
+	0x9b, 0x71, 0x65, 0x02, 0xd2, 0xea, 0xb9, 0x61, 0xd1, 0x26, 0xdd, 0x7f, 0x55, 0x8a, 0x1d, 0x4a,
+	0x7b, 0x61, 0xb9, 0x54, 0x7a, 0xf2, 0xe4, 0xc9, 0x18, 0xb3, 0x64, 0xf5, 0x69, 0x47, 0xfc, 0xd1,
+	0xe2, 0x8d, 0x9e, 0x67, 0xd1, 0x16, 0x09, 0xba, 0xdb, 0xbf, 0x4c, 0xc1, 0x2b, 0x36, 0xe9, 0x5e,
+	0xbd, 0xa6, 0xed, 0x17, 0x2e, 0xf3, 0xd1, 0x21, 0xcb, 0x2d, 0x87, 0xda, 0x67, 0x86, 0xc4, 0x68,
+	0x13, 0x56, 0x1d, 0x15, 0x49, 0xd0, 0x2e, 0xb5, 0xb1, 0xcf, 0x33, 0x4f, 0x69, 0x68, 0xc9, 0x53,
+	0xfe, 0xe9, 0xf1, 0x7e, 0x8c, 0xf8, 0x87, 0xd4, 0xdd, 0x0f, 0x05, 0x68, 0x95, 0x1b, 0x16, 0x33,
+	0xa1, 0x78, 0xbc, 0xf5, 0x75, 0x34, 0xe7, 0x31, 0x9f, 0xf3, 0x38, 0x36, 0xe7, 0xf1, 0xf1, 0xd6,
+	0x37, 0xa9, 0x97, 0xc5, 0x9c, 0x72, 0x99, 0x4f, 0x2a, 0x97, 0x63, 0xb3, 0xca, 0xe5, 0xe3, 0xad,
+	0x93, 0x19, 0x6e, 0xed, 0x9b, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x29, 0x11, 0x93, 0x96,
+	0x22, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/devtools/resultstore/v2/action.pb.go b/googleapis/devtools/resultstore/v2/action.pb.go
index b35fa6a..9244609 100644
--- a/googleapis/devtools/resultstore/v2/action.pb.go
+++ b/googleapis/devtools/resultstore/v2/action.pb.go
@@ -100,68 +100,20 @@
 	return fileDescriptor_e98e32542f2d3836, []int{1}
 }
 
-// Errors in file post-processing are categorized using this enum.
-type FileProcessingErrorType int32
-
-const (
-	// Type unspecified or not listed here.
-	FileProcessingErrorType_FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED FileProcessingErrorType = 0
-	// A read error occurred trying to read the file.
-	FileProcessingErrorType_GENERIC_READ_ERROR FileProcessingErrorType = 1
-	// There was an error trying to parse the file.
-	FileProcessingErrorType_GENERIC_PARSE_ERROR FileProcessingErrorType = 2
-	// File is exceeds size limit.
-	FileProcessingErrorType_FILE_TOO_LARGE FileProcessingErrorType = 3
-	// The result of parsing the file exceeded size limit.
-	FileProcessingErrorType_OUTPUT_TOO_LARGE FileProcessingErrorType = 4
-	// Read access to the file was denied by file system.
-	FileProcessingErrorType_ACCESS_DENIED FileProcessingErrorType = 5
-	// Deadline exceeded trying to read the file.
-	FileProcessingErrorType_DEADLINE_EXCEEDED FileProcessingErrorType = 6
-	// File not found.
-	FileProcessingErrorType_NOT_FOUND FileProcessingErrorType = 7
-)
-
-var FileProcessingErrorType_name = map[int32]string{
-	0: "FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED",
-	1: "GENERIC_READ_ERROR",
-	2: "GENERIC_PARSE_ERROR",
-	3: "FILE_TOO_LARGE",
-	4: "OUTPUT_TOO_LARGE",
-	5: "ACCESS_DENIED",
-	6: "DEADLINE_EXCEEDED",
-	7: "NOT_FOUND",
-}
-
-var FileProcessingErrorType_value = map[string]int32{
-	"FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED": 0,
-	"GENERIC_READ_ERROR":                     1,
-	"GENERIC_PARSE_ERROR":                    2,
-	"FILE_TOO_LARGE":                         3,
-	"OUTPUT_TOO_LARGE":                       4,
-	"ACCESS_DENIED":                          5,
-	"DEADLINE_EXCEEDED":                      6,
-	"NOT_FOUND":                              7,
-}
-
-func (x FileProcessingErrorType) String() string {
-	return proto.EnumName(FileProcessingErrorType_name, int32(x))
-}
-
-func (FileProcessingErrorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e98e32542f2d3836, []int{2}
-}
-
 // An action that happened as part of a configured target. This action could be
-// a build, a test, or another type of action.
+// a build, a test, or another type of action, as specified in action_type
+// oneof.
+//
 // Each parent ConfiguredTarget resource should have at least one Action as its
-// child resource before the invocation is finalized. ResultStore is a tool to
-// store build & test results. ConfiguredTarget proto by itself does not contain
-// enough fields to fully represent such results. For a simple build, at least
-// one build action is required to represent the build result.
+// child resource before the invocation is finalized. For a simple build, at
+// least one build action should be created to represent the build result, and
+// at at least one test action should be created to represent the test result,
+// if any.
 type Action struct {
 	// The resource name.  Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}/actions/${ACTION_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/url_encode(${CONFIG_ID})/actions/${url_encode(ACTION_ID)}
+	//
+	// See CreateActionRequest proto for more information.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The resource ID components that identify the Action. They must match the
 	// resource name after proper encoding.
@@ -195,8 +147,10 @@
 	// A list of file references for action level files.
 	// The file IDs must be unique within this list. Duplicate file IDs will
 	// result in an error. Files will be returned in lexicographical order by ID.
+	//
 	// Files with the following reserved file IDs cause specific post-processing
-	// or have special handling:
+	// or have special handling. These files must be immediately available to
+	// ResultStore for processing when the reference is uploaded.
 	//
 	// For build actions:
 	// stdout: The stdout of the action
@@ -212,6 +166,10 @@
 	//     down implementation of the LCOV standard.
 	//     http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php
 	Files []*File `protobuf:"bytes,8,rep,name=files,proto3" json:"files,omitempty"`
+	// List of names of file sets that are referenced from this Action.
+	// Each name must point to a file set under the same Invocation. The name
+	// format must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
+	FileSets []string `protobuf:"bytes,15,rep,name=file_sets,json=fileSets,proto3" json:"file_sets,omitempty"`
 	// Coverage data was collected while running the build or test action. This
 	// usually includes line coverage, and may also include branch coverage.
 	// For test actions, this is usually only for the source files which were
@@ -349,6 +307,13 @@
 	return nil
 }
 
+func (m *Action) GetFileSets() []string {
+	if m != nil {
+		return m.FileSets
+	}
+	return nil
+}
+
 func (m *Action) GetCoverage() *ActionCoverage {
 	if m != nil {
 		return m.Coverage
@@ -1098,110 +1063,9 @@
 	return ""
 }
 
-// Stores errors reading or parsing a file during post-processing.
-type FileProcessingErrors struct {
-	// The uid of the File being read or parsed.
-	FileUid string `protobuf:"bytes,1,opt,name=file_uid,json=fileUid,proto3" json:"file_uid,omitempty"`
-	// What went wrong.
-	FileProcessingErrors []*FileProcessingError `protobuf:"bytes,3,rep,name=file_processing_errors,json=fileProcessingErrors,proto3" json:"file_processing_errors,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
-
-func (m *FileProcessingErrors) Reset()         { *m = FileProcessingErrors{} }
-func (m *FileProcessingErrors) String() string { return proto.CompactTextString(m) }
-func (*FileProcessingErrors) ProtoMessage()    {}
-func (*FileProcessingErrors) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e98e32542f2d3836, []int{10}
-}
-
-func (m *FileProcessingErrors) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FileProcessingErrors.Unmarshal(m, b)
-}
-func (m *FileProcessingErrors) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FileProcessingErrors.Marshal(b, m, deterministic)
-}
-func (m *FileProcessingErrors) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileProcessingErrors.Merge(m, src)
-}
-func (m *FileProcessingErrors) XXX_Size() int {
-	return xxx_messageInfo_FileProcessingErrors.Size(m)
-}
-func (m *FileProcessingErrors) XXX_DiscardUnknown() {
-	xxx_messageInfo_FileProcessingErrors.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FileProcessingErrors proto.InternalMessageInfo
-
-func (m *FileProcessingErrors) GetFileUid() string {
-	if m != nil {
-		return m.FileUid
-	}
-	return ""
-}
-
-func (m *FileProcessingErrors) GetFileProcessingErrors() []*FileProcessingError {
-	if m != nil {
-		return m.FileProcessingErrors
-	}
-	return nil
-}
-
-// Stores an error reading or parsing a file during post-processing.
-type FileProcessingError struct {
-	// The type of error that occurred.
-	Type FileProcessingErrorType `protobuf:"varint,1,opt,name=type,proto3,enum=google.devtools.resultstore.v2.FileProcessingErrorType" json:"type,omitempty"`
-	// Error message describing the problem.
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FileProcessingError) Reset()         { *m = FileProcessingError{} }
-func (m *FileProcessingError) String() string { return proto.CompactTextString(m) }
-func (*FileProcessingError) ProtoMessage()    {}
-func (*FileProcessingError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e98e32542f2d3836, []int{11}
-}
-
-func (m *FileProcessingError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FileProcessingError.Unmarshal(m, b)
-}
-func (m *FileProcessingError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FileProcessingError.Marshal(b, m, deterministic)
-}
-func (m *FileProcessingError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileProcessingError.Merge(m, src)
-}
-func (m *FileProcessingError) XXX_Size() int {
-	return xxx_messageInfo_FileProcessingError.Size(m)
-}
-func (m *FileProcessingError) XXX_DiscardUnknown() {
-	xxx_messageInfo_FileProcessingError.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FileProcessingError proto.InternalMessageInfo
-
-func (m *FileProcessingError) GetType() FileProcessingErrorType {
-	if m != nil {
-		return m.Type
-	}
-	return FileProcessingErrorType_FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED
-}
-
-func (m *FileProcessingError) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
 func init() {
 	proto.RegisterEnum("google.devtools.resultstore.v2.ExecutionStrategy", ExecutionStrategy_name, ExecutionStrategy_value)
 	proto.RegisterEnum("google.devtools.resultstore.v2.TestCaching", TestCaching_name, TestCaching_value)
-	proto.RegisterEnum("google.devtools.resultstore.v2.FileProcessingErrorType", FileProcessingErrorType_name, FileProcessingErrorType_value)
 	proto.RegisterType((*Action)(nil), "google.devtools.resultstore.v2.Action")
 	proto.RegisterType((*Action_Id)(nil), "google.devtools.resultstore.v2.Action.Id")
 	proto.RegisterType((*BuildAction)(nil), "google.devtools.resultstore.v2.BuildAction")
@@ -1213,8 +1077,6 @@
 	proto.RegisterType((*RemoteTestTiming)(nil), "google.devtools.resultstore.v2.RemoteTestTiming")
 	proto.RegisterType((*TestTiming)(nil), "google.devtools.resultstore.v2.TestTiming")
 	proto.RegisterType((*TestWarning)(nil), "google.devtools.resultstore.v2.TestWarning")
-	proto.RegisterType((*FileProcessingErrors)(nil), "google.devtools.resultstore.v2.FileProcessingErrors")
-	proto.RegisterType((*FileProcessingError)(nil), "google.devtools.resultstore.v2.FileProcessingError")
 }
 
 func init() {
@@ -1222,107 +1084,96 @@
 }
 
 var fileDescriptor_e98e32542f2d3836 = []byte{
-	// 1620 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0x5f, 0x73, 0x23, 0x47,
-	0x11, 0x3f, 0x49, 0xb6, 0x4f, 0x6e, 0x9d, 0xe4, 0xf5, 0xd8, 0x77, 0xa7, 0x1c, 0x10, 0x0e, 0x01,
-	0xe1, 0xce, 0x47, 0xa4, 0xe0, 0xa4, 0xa0, 0x80, 0x2a, 0x0a, 0x59, 0x1a, 0xdb, 0x9b, 0x93, 0x25,
-	0x65, 0xb4, 0x0a, 0x09, 0x14, 0x35, 0x59, 0x6b, 0xc7, 0xf2, 0x50, 0xda, 0x5d, 0x65, 0x77, 0xd6,
-	0x89, 0xaa, 0xa8, 0xe2, 0x85, 0x2a, 0x1e, 0xa0, 0x78, 0xe1, 0x95, 0x2f, 0xc1, 0x2b, 0xcf, 0x7c,
-	0x09, 0xbe, 0x0d, 0x35, 0x7f, 0x76, 0x25, 0x0b, 0x3b, 0xab, 0xbb, 0x37, 0x4d, 0xf7, 0xef, 0xf7,
-	0x9b, 0xde, 0x9e, 0xee, 0x99, 0x2e, 0xc1, 0xab, 0x69, 0x18, 0x4e, 0x67, 0xac, 0xe5, 0xb1, 0x1b,
-	0x11, 0x86, 0xb3, 0xb8, 0x15, 0xb1, 0x38, 0x99, 0x89, 0x58, 0x84, 0x11, 0x6b, 0xdd, 0x1c, 0xb7,
-	0xdc, 0x89, 0xe0, 0x61, 0xd0, 0x9c, 0x47, 0xa1, 0x08, 0xd1, 0xbb, 0x1a, 0xdc, 0x4c, 0xc1, 0xcd,
-	0x15, 0x70, 0xf3, 0xe6, 0xf8, 0x59, 0x9e, 0xd8, 0x24, 0xf4, 0xfd, 0x54, 0xec, 0xd9, 0xfb, 0xb9,
-	0xe0, 0x1b, 0x16, 0xb9, 0x53, 0x66, 0xe0, 0x2f, 0x73, 0xe0, 0x57, 0x7c, 0x96, 0x42, 0x5b, 0x39,
-	0x50, 0xc1, 0x62, 0x41, 0xe3, 0x84, 0x8b, 0x94, 0x60, 0xbe, 0xab, 0xa5, 0x56, 0x97, 0xc9, 0x55,
-	0xcb, 0x4b, 0x22, 0x77, 0xf9, 0xdd, 0x8d, 0x7f, 0x95, 0x61, 0xa7, 0xad, 0x12, 0x81, 0x10, 0x6c,
-	0x05, 0xae, 0xcf, 0xea, 0x85, 0xe7, 0x85, 0x17, 0xbb, 0x44, 0xfd, 0x46, 0x3f, 0x87, 0x22, 0xf7,
-	0xea, 0xc5, 0xe7, 0x85, 0x17, 0x95, 0xe3, 0x97, 0xcd, 0x6f, 0xce, 0x51, 0x53, 0xeb, 0x34, 0x6d,
-	0x8f, 0x14, 0xb9, 0x87, 0x7e, 0x0f, 0xfb, 0xb1, 0x70, 0x45, 0x12, 0x53, 0x57, 0x88, 0x88, 0x5f,
-	0x26, 0x82, 0xc5, 0xf5, 0x92, 0x52, 0xfa, 0x20, 0x4f, 0x69, 0xa4, 0x88, 0xed, 0x8c, 0x47, 0xac,
-	0x78, 0xcd, 0x82, 0x7e, 0x05, 0x3b, 0x82, 0xfb, 0x3c, 0x98, 0xd6, 0xb7, 0x94, 0xe6, 0x7b, 0x79,
-	0x9a, 0x8e, 0x42, 0x13, 0xc3, 0x42, 0x43, 0x78, 0x74, 0x99, 0xf0, 0x99, 0x47, 0x75, 0x19, 0xd4,
-	0x77, 0x95, 0xca, 0xab, 0x3c, 0x95, 0x13, 0xc9, 0xd1, 0x1f, 0x7a, 0xfe, 0x80, 0x54, 0x2e, 0x97,
-	0x4b, 0x74, 0x01, 0x15, 0x95, 0x7e, 0x23, 0x08, 0x4a, 0xf0, 0x28, 0x37, 0x2c, 0x16, 0x8b, 0x4c,
-	0x0f, 0x44, 0xb6, 0x92, 0xf9, 0xd3, 0x4a, 0xab, 0xf9, 0xdb, 0xde, 0x2c, 0x7f, 0x5a, 0x62, 0x35,
-	0x7f, 0xee, 0x9a, 0x05, 0xfd, 0x0e, 0x0e, 0x8c, 0xbc, 0xc7, 0xe6, 0x2c, 0xf0, 0x58, 0x30, 0xe1,
-	0x2c, 0xae, 0xd7, 0x9e, 0x97, 0x36, 0x89, 0xba, 0x9b, 0x72, 0x16, 0x04, 0x69, 0x99, 0xee, 0x8a,
-	0x0a, 0x3a, 0x07, 0x98, 0x47, 0xe1, 0x9c, 0x45, 0x42, 0x6a, 0x3e, 0x54, 0x9a, 0x2f, 0xf2, 0x34,
-	0x87, 0x9a, 0xb1, 0x20, 0x2b, 0x5c, 0xf4, 0x0b, 0xd8, 0x96, 0xe5, 0x1f, 0xd7, 0xcb, 0x4a, 0xe4,
-	0x07, 0x79, 0x22, 0xa7, 0x7c, 0xc6, 0x88, 0xa6, 0xa0, 0x8f, 0xa1, 0x9c, 0x76, 0x5a, 0xbd, 0xa2,
-	0x12, 0xd7, 0xdc, 0x2c, 0x71, 0x1d, 0xc3, 0x22, 0x19, 0x1f, 0xfd, 0x01, 0x9e, 0x48, 0x51, 0x3a,
-	0x8f, 0xc2, 0x09, 0x8b, 0x63, 0x1e, 0x4c, 0x29, 0x8b, 0xa2, 0x30, 0x8a, 0xeb, 0x55, 0x15, 0xd8,
-	0x47, 0x9b, 0x04, 0x36, 0xcc, 0xc8, 0x58, 0x71, 0xc9, 0xe1, 0xd5, 0x1d, 0xd6, 0x67, 0x7f, 0x2f,
-	0x40, 0xd1, 0xf6, 0xd0, 0xf7, 0xa1, 0xca, 0x83, 0x9b, 0x70, 0xa2, 0xda, 0x95, 0x72, 0xcf, 0x34,
-	0xe6, 0xa3, 0xa5, 0xd1, 0xf6, 0xd0, 0xb7, 0x60, 0x57, 0xb8, 0xd1, 0x94, 0x09, 0x6a, 0xfa, 0x74,
-	0x97, 0x94, 0xb5, 0xc1, 0xf6, 0xd0, 0x4b, 0xb0, 0x26, 0x61, 0x70, 0xc5, 0xa7, 0xa6, 0xe7, 0x25,
-	0xa6, 0xa4, 0x30, 0x7b, 0xb7, 0xec, 0x5a, 0xc7, 0x94, 0x03, 0xf7, 0x54, 0x47, 0xed, 0x92, 0xb2,
-	0x36, 0xd8, 0xde, 0x49, 0x15, 0x2a, 0xc6, 0x29, 0x16, 0x73, 0xd6, 0xf8, 0x13, 0x54, 0x56, 0xda,
-	0x40, 0xde, 0x1b, 0xd2, 0x9c, 0xde, 0x1b, 0xf2, 0x37, 0xfa, 0x31, 0xa0, 0x79, 0xc4, 0x7d, 0x37,
-	0x5a, 0x50, 0x1e, 0xcc, 0x13, 0x41, 0xe7, 0xae, 0xb8, 0x36, 0xf1, 0x59, 0xc6, 0x63, 0x4b, 0xc7,
-	0xd0, 0x15, 0xd7, 0xa8, 0x09, 0x07, 0x29, 0x3a, 0x4c, 0x44, 0x06, 0xd7, 0xa1, 0xee, 0x1b, 0xd7,
-	0x40, 0x79, 0x24, 0xbe, 0xf1, 0xd7, 0x12, 0xc0, 0xb2, 0x6f, 0xd0, 0x6b, 0xd3, 0x78, 0xe6, 0x3e,
-	0x28, 0x6c, 0xde, 0x78, 0xe6, 0x4e, 0x50, 0x6d, 0xa7, 0x7f, 0xa3, 0xef, 0xc1, 0xa3, 0xf8, 0xda,
-	0x8d, 0x3c, 0x1a, 0x24, 0xfe, 0x25, 0x8b, 0x54, 0xcc, 0xdb, 0xa4, 0xa2, 0x6c, 0x7d, 0x65, 0x42,
-	0xdf, 0x01, 0x88, 0x92, 0x20, 0x05, 0x94, 0x14, 0x60, 0x37, 0x4a, 0x02, 0xe3, 0xfe, 0x21, 0xd4,
-	0x5c, 0x21, 0x98, 0x3f, 0x17, 0x29, 0x64, 0x4b, 0x41, 0xaa, 0xc6, 0x6a, 0x60, 0xe7, 0x00, 0xcb,
-	0xdb, 0xda, 0x34, 0xf6, 0xcb, 0x4d, 0x82, 0x1e, 0x49, 0x02, 0xd9, 0x15, 0xe9, 0x4f, 0x74, 0x06,
-	0xe5, 0xaf, 0xdc, 0x28, 0xe0, 0xc1, 0x34, 0x6d, 0x93, 0x57, 0x9b, 0xe8, 0xfc, 0x46, 0x73, 0x48,
-	0x46, 0x46, 0x1f, 0xc1, 0x13, 0x16, 0x0b, 0xee, 0xbb, 0x82, 0x79, 0xd4, 0x67, 0x7e, 0x18, 0x2d,
-	0xe8, 0xe5, 0x42, 0xde, 0x3b, 0xf2, 0x32, 0x2b, 0x91, 0xc3, 0xcc, 0x7b, 0xa1, 0x9c, 0x27, 0xd2,
-	0xd7, 0xf8, 0x73, 0x11, 0xac, 0xf5, 0x0b, 0x07, 0x7d, 0x01, 0x88, 0x7d, 0xcd, 0x26, 0x89, 0xaa,
-	0x9a, 0x58, 0x44, 0xae, 0x60, 0xd3, 0x85, 0x3a, 0x9a, 0xda, 0xf1, 0x4f, 0xf2, 0xa2, 0xc3, 0x29,
-	0x73, 0x64, 0x88, 0x64, 0x9f, 0xad, 0x9b, 0x64, 0xc5, 0xb2, 0xaf, 0xb9, 0xa0, 0x93, 0xd0, 0x63,
-	0xe6, 0x94, 0xca, 0xd2, 0xd0, 0x09, 0x3d, 0x86, 0x9e, 0x41, 0xf9, 0x3a, 0x8c, 0x85, 0x7a, 0xcf,
-	0x74, 0x19, 0x65, 0x6b, 0x34, 0x86, 0x3d, 0x5d, 0x93, 0xaa, 0xa1, 0x79, 0x70, 0x15, 0x9a, 0x27,
-	0xe4, 0xfd, 0xbc, 0xb8, 0x54, 0xc5, 0xca, 0x46, 0xb6, 0x83, 0xab, 0x90, 0x54, 0xf9, 0xea, 0xb2,
-	0xf1, 0x9f, 0x02, 0x54, 0x6f, 0x01, 0xd0, 0x21, 0x6c, 0x4f, 0xc2, 0x24, 0x10, 0xea, 0xb3, 0x4b,
-	0x44, 0x2f, 0x64, 0x79, 0x78, 0x3c, 0x16, 0x3c, 0x98, 0xc8, 0xd8, 0xa5, 0xbb, 0xa8, 0xdc, 0xd5,
-	0xd4, 0xda, 0x51, 0xb0, 0xef, 0x42, 0x45, 0x79, 0xe9, 0x8c, 0xfb, 0x5c, 0xa8, 0x8f, 0x28, 0x11,
-	0x50, 0xa6, 0x9e, 0xb4, 0xdc, 0xd2, 0xd1, 0x87, 0xb4, 0x75, 0x5b, 0x47, 0x9d, 0x8e, 0xec, 0xad,
-	0x5b, 0x30, 0xa3, 0xb7, 0xad, 0xb0, 0xfb, 0xab, 0x58, 0x25, 0xdb, 0xf8, 0x02, 0xf6, 0x7a, 0xe1,
-	0xc4, 0x9d, 0x2d, 0xdb, 0x03, 0x5d, 0xc0, 0x63, 0x55, 0xa9, 0xe6, 0xee, 0xa3, 0xe9, 0x08, 0x61,
-	0x3a, 0xed, 0x9d, 0x34, 0x6d, 0xe9, 0x8c, 0xd1, 0xec, 0x1a, 0x00, 0x39, 0x90, 0x3c, 0x73, 0xbf,
-	0xa5, 0xc6, 0xc6, 0x5f, 0x4a, 0xf0, 0x94, 0x30, 0x3f, 0x14, 0x4c, 0xf5, 0xb0, 0x6e, 0x0a, 0xb3,
-	0xd5, 0xaf, 0xa1, 0xf6, 0x65, 0xc2, 0x12, 0xf6, 0x06, 0x7b, 0x54, 0x15, 0x21, 0x5d, 0xa2, 0x13,
-	0xd8, 0x4b, 0xe6, 0xb3, 0xd0, 0xf5, 0x96, 0x12, 0xc5, 0x3c, 0x89, 0x9a, 0x66, 0x64, 0x1a, 0x03,
-	0x78, 0xe2, 0xbb, 0x93, 0x6b, 0x1e, 0x30, 0x1a, 0x33, 0x91, 0xcc, 0x97, 0x52, 0xa5, 0x3c, 0xa9,
-	0x43, 0x43, 0x1c, 0x49, 0x5e, 0x26, 0x78, 0x6f, 0x06, 0xb7, 0xde, 0x26, 0x83, 0xe8, 0x14, 0xf6,
-	0xbd, 0xf0, 0xab, 0xe0, 0xf6, 0x57, 0x6e, 0xe7, 0x49, 0x59, 0x29, 0x27, 0x3b, 0x89, 0x7f, 0x17,
-	0xc0, 0x5a, 0x9e, 0x84, 0x39, 0x82, 0x4f, 0xe0, 0xe9, 0x4c, 0x16, 0x00, 0x75, 0x03, 0x77, 0xb6,
-	0x88, 0xf9, 0x9b, 0x9c, 0xf7, 0x63, 0xc5, 0x6c, 0x1b, 0x62, 0x16, 0xef, 0x08, 0xca, 0xe6, 0xee,
-	0x8b, 0xeb, 0x45, 0x75, 0x41, 0xfd, 0x2c, 0xaf, 0xd5, 0xee, 0x29, 0x10, 0x92, 0x09, 0x35, 0xfe,
-	0x61, 0x1e, 0x01, 0x13, 0xf6, 0x19, 0x6c, 0xab, 0xcd, 0x4d, 0x90, 0xad, 0xbc, 0x0d, 0xd6, 0x8a,
-	0xfc, 0xfc, 0x01, 0xd1, 0x7c, 0xf4, 0x31, 0xec, 0x44, 0x6a, 0x73, 0x53, 0x37, 0x1f, 0x6c, 0x1e,
-	0x6a, 0x26, 0x65, 0x14, 0xd0, 0x6b, 0x38, 0x8c, 0x17, 0xb1, 0x60, 0xbe, 0x7c, 0x9b, 0xd8, 0x1b,
-	0x94, 0x11, 0xd2, 0x34, 0x87, 0xfb, 0xcb, 0xca, 0x3e, 0x03, 0x94, 0xc4, 0x2c, 0x5a, 0x93, 0xca,
-	0xad, 0x20, 0x4b, 0x92, 0x6e, 0x09, 0xf5, 0xe1, 0x91, 0xaa, 0xc6, 0x89, 0x2a, 0xd5, 0xa9, 0xaa,
-	0x9c, 0xda, 0x66, 0x6f, 0x46, 0x47, 0x53, 0x88, 0x7a, 0x70, 0xcd, 0xe2, 0x04, 0xa0, 0x3c, 0x33,
-	0x13, 0x49, 0xe3, 0xa7, 0x50, 0x59, 0x79, 0x5b, 0xd0, 0x8f, 0x60, 0xcf, 0xbc, 0x2e, 0xd4, 0x67,
-	0x71, 0x2c, 0x27, 0x31, 0x3d, 0x26, 0xd4, 0x8c, 0xf9, 0x42, 0x5b, 0x1b, 0xff, 0x2c, 0xc0, 0xe1,
-	0x5d, 0x23, 0x12, 0x7a, 0x07, 0xca, 0xea, 0x9e, 0x4e, 0xb2, 0x01, 0xe8, 0xa1, 0x5c, 0x8f, 0xb9,
-	0x87, 0xf8, 0xbd, 0x33, 0x59, 0x49, 0x15, 0xd9, 0x87, 0x6f, 0x31, 0x93, 0xdd, 0x3d, 0x92, 0x35,
-	0xfe, 0x08, 0x07, 0x77, 0x80, 0xd1, 0xeb, 0x95, 0xd1, 0xa7, 0x96, 0x5f, 0xd4, 0x77, 0x48, 0x38,
-	0x8b, 0x39, 0x33, 0x33, 0x53, 0x1d, 0x1e, 0xa6, 0x39, 0xd2, 0x83, 0x52, 0xba, 0x3c, 0xfa, 0x5b,
-	0x01, 0xf6, 0xff, 0xef, 0x4d, 0x44, 0x0d, 0x78, 0x17, 0x7f, 0x86, 0x3b, 0x63, 0xc7, 0x1e, 0xf4,
-	0xe9, 0xc8, 0x21, 0x6d, 0x07, 0x9f, 0x7d, 0x4e, 0xc7, 0xfd, 0xd1, 0x10, 0x77, 0xec, 0x53, 0x1b,
-	0x77, 0xad, 0x07, 0xe8, 0x31, 0xec, 0x0f, 0x9c, 0x73, 0x4c, 0x28, 0xee, 0x7f, 0x6a, 0x93, 0x41,
-	0xff, 0x02, 0xf7, 0x1d, 0xab, 0x80, 0x10, 0xd4, 0x08, 0xbe, 0x18, 0x38, 0x98, 0x8e, 0x30, 0xf9,
-	0xd4, 0xee, 0x60, 0xab, 0x28, 0x6d, 0xbd, 0x41, 0xa7, 0xdd, 0xa3, 0xc3, 0x36, 0x69, 0xf7, 0x7a,
-	0xb8, 0x67, 0x95, 0xd0, 0x21, 0x58, 0xda, 0x36, 0xc2, 0x9f, 0x8c, 0x71, 0xdf, 0xb1, 0xdb, 0x3d,
-	0x6b, 0xeb, 0xe8, 0x4a, 0x9f, 0xb1, 0x39, 0x7e, 0xf4, 0x6d, 0xa8, 0x3b, 0x78, 0xe4, 0xd0, 0x4e,
-	0xbb, 0x73, 0x6e, 0xf7, 0xcf, 0xd6, 0x22, 0x38, 0x80, 0x3d, 0x2d, 0x21, 0xdd, 0x98, 0x9e, 0xdb,
-	0x72, 0xff, 0x43, 0xb0, 0xcc, 0xfe, 0x4b, 0x6b, 0x11, 0xd5, 0x00, 0xf4, 0xf2, 0xc2, 0x1e, 0x8d,
-	0xac, 0xd2, 0xd1, 0x7f, 0x0b, 0xf0, 0xf4, 0x9e, 0x94, 0xa1, 0x23, 0x78, 0xef, 0xd4, 0xee, 0x61,
-	0x3a, 0x24, 0x83, 0x0e, 0x1e, 0x8d, 0xe4, 0xbe, 0x98, 0x90, 0x01, 0xa1, 0xce, 0xe7, 0x43, 0xbc,
-	0x16, 0xc2, 0x13, 0x40, 0x67, 0xb8, 0x8f, 0x89, 0xdd, 0xa1, 0x04, 0xb7, 0xbb, 0x1a, 0x68, 0x15,
-	0xd0, 0x53, 0x38, 0x48, 0xed, 0xc3, 0x36, 0x19, 0x61, 0xe3, 0x50, 0xa9, 0x50, 0xe2, 0xce, 0x60,
-	0x40, 0x7b, 0x6d, 0x72, 0x86, 0x75, 0x2a, 0x06, 0x63, 0x67, 0x38, 0x76, 0x56, 0xac, 0x5b, 0x68,
-	0x1f, 0xaa, 0xed, 0x8e, 0x0c, 0x80, 0x76, 0x71, 0x5f, 0xee, 0xb6, 0x2d, 0x53, 0xde, 0xc5, 0xed,
-	0x6e, 0xcf, 0xee, 0x63, 0x8a, 0x3f, 0xeb, 0x60, 0xdc, 0xc5, 0x5d, 0x6b, 0x07, 0x55, 0x61, 0xb7,
-	0x3f, 0x70, 0xe8, 0xe9, 0x60, 0xdc, 0xef, 0x5a, 0x0f, 0x4f, 0xbe, 0x84, 0xc6, 0x24, 0xf4, 0x73,
-	0x0a, 0x66, 0x58, 0xf8, 0xad, 0x6d, 0x10, 0xd3, 0x70, 0xe6, 0x06, 0xd3, 0x66, 0x18, 0x4d, 0x5b,
-	0x53, 0x16, 0xa8, 0x2e, 0x37, 0xff, 0x05, 0xb8, 0x73, 0x1e, 0xdf, 0xf7, 0x7f, 0xc0, 0x2f, 0x57,
-	0x96, 0x97, 0x3b, 0x8a, 0xf5, 0xe1, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x09, 0xc6, 0x5f, 0x39,
-	0x18, 0x11, 0x00, 0x00,
+	// 1446 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x73, 0xdb, 0x46,
+	0x12, 0x36, 0x49, 0x49, 0x4b, 0x36, 0x45, 0x0a, 0x1a, 0xc9, 0x36, 0x57, 0xbb, 0xeb, 0xd5, 0x72,
+	0xf3, 0x90, 0xec, 0x98, 0x74, 0x14, 0x57, 0x52, 0x71, 0xaa, 0x52, 0xa1, 0x28, 0x58, 0x82, 0x4d,
+	0x51, 0xf2, 0x90, 0x72, 0x5e, 0x95, 0x82, 0x21, 0x62, 0x44, 0x4d, 0x8a, 0xc0, 0xd0, 0x98, 0x81,
+	0x6c, 0x9e, 0x72, 0x49, 0x55, 0x0e, 0x49, 0xe5, 0x92, 0x7f, 0x93, 0x73, 0xce, 0xf9, 0x4d, 0xa9,
+	0x79, 0x00, 0xa4, 0x14, 0x3b, 0xa0, 0x73, 0xe3, 0x74, 0x7f, 0xdf, 0x37, 0x3d, 0x3d, 0xdd, 0x3d,
+	0x20, 0xdc, 0x19, 0x32, 0x36, 0x1c, 0x91, 0xa6, 0x4f, 0x2e, 0x04, 0x63, 0x23, 0xde, 0x8c, 0x08,
+	0x8f, 0x47, 0x82, 0x0b, 0x16, 0x91, 0xe6, 0xc5, 0x4e, 0xd3, 0x1b, 0x08, 0xca, 0xc2, 0xc6, 0x38,
+	0x62, 0x82, 0xa1, 0x5b, 0x1a, 0xdc, 0x48, 0xc0, 0x8d, 0x19, 0x70, 0xe3, 0x62, 0x67, 0x23, 0x4b,
+	0x6c, 0xc0, 0x82, 0x20, 0x11, 0xdb, 0xb8, 0x9b, 0x09, 0xbe, 0x20, 0x91, 0x37, 0x24, 0x06, 0xbe,
+	0x9d, 0x01, 0x3f, 0xa3, 0xa3, 0x04, 0xfa, 0x60, 0x0e, 0xa8, 0x3b, 0x8e, 0xd8, 0x80, 0x70, 0x4e,
+	0xc3, 0xa1, 0x4b, 0xa2, 0x88, 0x45, 0x86, 0xdb, 0xcc, 0xe0, 0x0a, 0xc2, 0x85, 0xcb, 0x63, 0x2a,
+	0x92, 0xcd, 0x4c, 0x4e, 0x9a, 0x6a, 0x75, 0x1a, 0x9f, 0x35, 0xfd, 0x38, 0xf2, 0xa6, 0x39, 0xab,
+	0xff, 0x5e, 0x84, 0xa5, 0x96, 0x4a, 0x22, 0x42, 0xb0, 0x10, 0x7a, 0x01, 0xa9, 0xe5, 0x36, 0x73,
+	0x5b, 0x25, 0xac, 0x7e, 0xa3, 0x8f, 0x21, 0x4f, 0xfd, 0x5a, 0x7e, 0x33, 0xb7, 0x55, 0xde, 0xd9,
+	0x6e, 0xfc, 0x75, 0x7e, 0x1b, 0x5a, 0xa7, 0xe1, 0xf8, 0x38, 0x4f, 0x7d, 0xf4, 0x0d, 0xac, 0x72,
+	0xe1, 0x89, 0x98, 0xbb, 0x9e, 0x10, 0x11, 0x3d, 0x8d, 0x05, 0xe1, 0xb5, 0x82, 0x52, 0xba, 0x97,
+	0xa5, 0xd4, 0x53, 0xc4, 0x56, 0xca, 0xc3, 0x16, 0xbf, 0x62, 0x41, 0x9f, 0xc2, 0x92, 0xa0, 0x01,
+	0x0d, 0x87, 0xb5, 0x05, 0xa5, 0xf9, 0x4e, 0x96, 0x66, 0x5f, 0xa1, 0xb1, 0x61, 0xa1, 0x63, 0x58,
+	0x3e, 0x8d, 0xe9, 0xc8, 0x77, 0x75, 0x09, 0xd5, 0x4a, 0x4a, 0xe5, 0x4e, 0x96, 0xca, 0xae, 0xe4,
+	0xe8, 0x83, 0x1e, 0x5c, 0xc3, 0xe5, 0xd3, 0xe9, 0x12, 0x1d, 0x42, 0x59, 0xa5, 0xdf, 0x08, 0x82,
+	0x12, 0xbc, 0x9d, 0x19, 0x16, 0xe1, 0x22, 0xd5, 0x03, 0x91, 0xae, 0x64, 0xfe, 0xb4, 0xd2, 0x6c,
+	0xfe, 0x16, 0xe7, 0xcb, 0x9f, 0x96, 0x98, 0xcd, 0x9f, 0x77, 0xc5, 0x82, 0xbe, 0x86, 0x35, 0x23,
+	0xef, 0x93, 0x31, 0x09, 0x7d, 0x12, 0x0e, 0x28, 0xe1, 0xb5, 0xea, 0x66, 0x61, 0x9e, 0xa8, 0xf7,
+	0x12, 0xce, 0x04, 0x23, 0x2d, 0xb3, 0x37, 0xa3, 0x82, 0x0e, 0x00, 0xc6, 0x11, 0x1b, 0x93, 0x48,
+	0x48, 0xcd, 0x7f, 0x28, 0xcd, 0xad, 0x2c, 0xcd, 0x63, 0xcd, 0x98, 0xe0, 0x19, 0x2e, 0x7a, 0x00,
+	0x8b, 0xb2, 0x1f, 0x78, 0xad, 0xa8, 0x44, 0xde, 0xca, 0x12, 0x79, 0x48, 0x47, 0x04, 0x6b, 0x0a,
+	0xfa, 0x17, 0x94, 0x54, 0x2f, 0x71, 0x22, 0x78, 0x6d, 0x65, 0xb3, 0xb0, 0x55, 0xc2, 0x45, 0x69,
+	0xe8, 0x11, 0xc1, 0xd1, 0x23, 0x28, 0x26, 0x2d, 0x5c, 0x2b, 0xab, 0xac, 0x36, 0xe6, 0xcb, 0x6a,
+	0xdb, 0xb0, 0x70, 0xca, 0x47, 0xdf, 0xc2, 0x8d, 0x57, 0x36, 0x2d, 0xaf, 0x55, 0x54, 0xd4, 0xf7,
+	0xe7, 0x89, 0xfa, 0x38, 0x25, 0xdb, 0x8a, 0x8b, 0xd7, 0xcf, 0x5e, 0x61, 0xdd, 0xf8, 0x39, 0x07,
+	0x79, 0xc7, 0x47, 0xff, 0x87, 0x0a, 0x0d, 0x2f, 0xd8, 0x40, 0xf5, 0xb2, 0x4b, 0x7d, 0xd3, 0xb5,
+	0xcb, 0x53, 0xa3, 0xe3, 0xcb, 0x04, 0x08, 0x2f, 0x1a, 0x12, 0xe1, 0x9a, 0x26, 0x2e, 0xe1, 0xa2,
+	0x36, 0x38, 0x3e, 0xda, 0x06, 0x6b, 0xc0, 0xc2, 0x33, 0x3a, 0x34, 0x03, 0x41, 0x62, 0x0a, 0x0a,
+	0xb3, 0x72, 0xc9, 0xae, 0x75, 0x4c, 0xad, 0x50, 0x5f, 0xb5, 0x5b, 0x09, 0x17, 0xb5, 0xc1, 0xf1,
+	0x77, 0x2b, 0x50, 0x36, 0x4e, 0x31, 0x19, 0x93, 0xfa, 0x77, 0x50, 0x9e, 0xe9, 0x11, 0x39, 0x54,
+	0xa4, 0x39, 0x19, 0x2a, 0xf2, 0x37, 0x7a, 0x0f, 0xd0, 0x38, 0xa2, 0x81, 0x17, 0x4d, 0x5c, 0x1a,
+	0x8e, 0x63, 0xe1, 0x8e, 0x3d, 0x71, 0x6e, 0xe2, 0xb3, 0x8c, 0xc7, 0x91, 0x8e, 0x63, 0x4f, 0x9c,
+	0xa3, 0x06, 0xac, 0x25, 0x68, 0x16, 0x8b, 0x14, 0xae, 0x43, 0x5d, 0x35, 0xae, 0x23, 0xe5, 0x91,
+	0xf8, 0xfa, 0x8f, 0x05, 0x80, 0x69, 0x53, 0xa1, 0xc7, 0xa6, 0x2b, 0xcd, 0xb0, 0xc8, 0xcd, 0xdf,
+	0x95, 0x66, 0x60, 0xa8, 0x9e, 0xd4, 0xbf, 0xd1, 0xff, 0x60, 0x99, 0x9f, 0x7b, 0x91, 0xef, 0x86,
+	0x71, 0x70, 0x4a, 0x22, 0x15, 0xf3, 0x22, 0x2e, 0x2b, 0x5b, 0x57, 0x99, 0xd0, 0x7f, 0x00, 0xa2,
+	0x38, 0x4c, 0x00, 0x05, 0x05, 0x28, 0x45, 0x71, 0x68, 0xdc, 0x6f, 0x43, 0xd5, 0x13, 0x82, 0x04,
+	0x63, 0x91, 0x40, 0x16, 0x14, 0xa4, 0x62, 0xac, 0x06, 0x76, 0x00, 0x30, 0x1d, 0xe5, 0xa6, 0xeb,
+	0xb7, 0xe7, 0x09, 0xba, 0x27, 0x09, 0xb8, 0x24, 0x92, 0x9f, 0x68, 0x1f, 0x8a, 0x2f, 0xbc, 0x28,
+	0xa4, 0xe1, 0x30, 0xe9, 0xa1, 0x3b, 0xf3, 0xe8, 0x7c, 0xae, 0x39, 0x38, 0x25, 0xa3, 0xfb, 0x70,
+	0x83, 0x70, 0x41, 0x03, 0x4f, 0x10, 0xdf, 0x0d, 0x48, 0xc0, 0xa2, 0x89, 0x7b, 0x3a, 0x91, 0x43,
+	0x49, 0x4e, 0xba, 0x02, 0x5e, 0x4f, 0xbd, 0x87, 0xca, 0xb9, 0x2b, 0x7d, 0xf5, 0xef, 0xf3, 0x60,
+	0x5d, 0x9d, 0x46, 0xe8, 0x19, 0x20, 0xf2, 0x92, 0x0c, 0x62, 0x55, 0x35, 0x5c, 0x44, 0x9e, 0x20,
+	0xc3, 0x89, 0xba, 0x9a, 0xea, 0xce, 0xfb, 0x59, 0xd1, 0xd9, 0x09, 0xb3, 0x67, 0x88, 0x78, 0x95,
+	0x5c, 0x35, 0xc9, 0x8a, 0x25, 0x2f, 0xa9, 0x70, 0x07, 0xcc, 0x27, 0xe6, 0x96, 0x8a, 0xd2, 0xd0,
+	0x66, 0x3e, 0x41, 0x1b, 0x50, 0x3c, 0x67, 0x5c, 0xa8, 0xc7, 0x4e, 0x97, 0x51, 0xba, 0x46, 0x27,
+	0xb0, 0xa2, 0x6b, 0x52, 0x35, 0x34, 0x0d, 0xcf, 0x98, 0x79, 0x5f, 0xee, 0x66, 0xc5, 0xa5, 0x2a,
+	0x56, 0x36, 0xb2, 0x13, 0x9e, 0x31, 0x5c, 0xa1, 0xb3, 0xcb, 0xfa, 0x6f, 0x39, 0xa8, 0x5c, 0x02,
+	0xa0, 0x75, 0x58, 0x1c, 0xb0, 0x38, 0x14, 0xea, 0xd8, 0x05, 0xac, 0x17, 0xb2, 0x3c, 0x7c, 0xca,
+	0x05, 0x0d, 0x07, 0x32, 0x76, 0xe9, 0xce, 0x2b, 0x77, 0x25, 0xb1, 0xb6, 0x15, 0xec, 0xbf, 0x50,
+	0x56, 0x5e, 0x77, 0x44, 0x03, 0x2a, 0xd4, 0x21, 0x0a, 0x18, 0x94, 0xa9, 0x23, 0x2d, 0x97, 0x74,
+	0xf4, 0x25, 0x2d, 0x5c, 0xd6, 0x51, 0xb7, 0x23, 0x7b, 0xeb, 0x12, 0xcc, 0xe8, 0x2d, 0x2a, 0xec,
+	0xea, 0x2c, 0x56, 0xc9, 0xd6, 0x9f, 0xc1, 0x4a, 0x87, 0x0d, 0xbc, 0xd1, 0xb4, 0x3d, 0xd0, 0x21,
+	0x5c, 0x57, 0x95, 0x6a, 0x66, 0x9f, 0x9b, 0x7c, 0x5f, 0x98, 0x4e, 0xfb, 0x67, 0x92, 0xb6, 0xe4,
+	0x03, 0xa4, 0xb1, 0x67, 0x00, 0x78, 0x4d, 0xf2, 0xcc, 0x7c, 0x4b, 0x8c, 0xf5, 0x1f, 0x0a, 0x70,
+	0x13, 0x93, 0x80, 0x09, 0xa2, 0x7a, 0x58, 0x37, 0x85, 0xd9, 0xea, 0x33, 0xa8, 0x3e, 0x8f, 0x49,
+	0x4c, 0xde, 0x60, 0x8f, 0x8a, 0x22, 0x24, 0x4b, 0xb4, 0x0b, 0x2b, 0xf1, 0x78, 0xc4, 0x3c, 0x7f,
+	0x2a, 0x91, 0xcf, 0x92, 0xa8, 0x6a, 0x46, 0xaa, 0x71, 0x04, 0x37, 0x02, 0x6f, 0x70, 0x4e, 0x43,
+	0xf5, 0xb0, 0xc4, 0xe3, 0xa9, 0x54, 0x21, 0x4b, 0x6a, 0xdd, 0x10, 0x7b, 0x92, 0x97, 0x0a, 0xbe,
+	0x36, 0x83, 0x0b, 0x7f, 0x27, 0x83, 0xe8, 0x21, 0xac, 0xfa, 0xec, 0x45, 0x78, 0xf9, 0x94, 0x8b,
+	0x59, 0x52, 0x56, 0xc2, 0x49, 0x6f, 0xe2, 0xd7, 0x1c, 0x58, 0xd3, 0x9b, 0x30, 0x57, 0xf0, 0x04,
+	0x6e, 0x8e, 0x64, 0x01, 0xb8, 0x5e, 0xe8, 0x8d, 0x26, 0x9c, 0xbe, 0xc9, 0x7d, 0x5f, 0x57, 0xcc,
+	0x96, 0x21, 0xa6, 0xf1, 0xf6, 0xa0, 0x68, 0x66, 0x1f, 0xaf, 0xe5, 0xd5, 0x80, 0xfa, 0x28, 0xab,
+	0xd5, 0x5e, 0x53, 0x20, 0x38, 0x15, 0xaa, 0xff, 0x62, 0x1e, 0x01, 0x13, 0xf6, 0x3e, 0x2c, 0xaa,
+	0xcd, 0x4d, 0x90, 0xcd, 0xac, 0x0d, 0xae, 0x14, 0xf9, 0xc1, 0x35, 0xac, 0xf9, 0xe8, 0x11, 0x2c,
+	0x45, 0x6a, 0x73, 0x53, 0x37, 0xf7, 0xe6, 0x0f, 0x35, 0x95, 0x32, 0x0a, 0xe8, 0x31, 0xac, 0xf3,
+	0x09, 0x17, 0x24, 0x90, 0x6f, 0x13, 0x79, 0x83, 0x32, 0x42, 0x9a, 0xd6, 0xa7, 0xc1, 0xb4, 0xb2,
+	0xf7, 0x01, 0xc5, 0x9c, 0x44, 0x57, 0xa4, 0x32, 0x2b, 0xc8, 0x92, 0xa4, 0x4b, 0x42, 0x5d, 0x58,
+	0x56, 0xd5, 0x38, 0x50, 0xa5, 0x3a, 0x54, 0x95, 0x53, 0x9d, 0xef, 0xcd, 0x68, 0x6b, 0x0a, 0x56,
+	0x0f, 0xae, 0x59, 0xec, 0x02, 0x14, 0x47, 0xe6, 0x8b, 0xa4, 0xfe, 0x21, 0x94, 0x67, 0xde, 0x16,
+	0xf4, 0x2e, 0xac, 0x98, 0xd7, 0xc5, 0x0d, 0x08, 0xe7, 0xf2, 0x4b, 0x4c, 0x7f, 0x26, 0x54, 0x8d,
+	0xf9, 0x50, 0x5b, 0x6f, 0xff, 0x94, 0x83, 0xd5, 0x3f, 0x8d, 0x7d, 0x54, 0x87, 0x5b, 0xf6, 0x17,
+	0x76, 0xfb, 0xa4, 0xef, 0x1c, 0x75, 0xdd, 0x5e, 0x1f, 0xb7, 0xfa, 0xf6, 0xfe, 0x97, 0xee, 0x49,
+	0xb7, 0x77, 0x6c, 0xb7, 0x9d, 0x87, 0x8e, 0xbd, 0x67, 0x5d, 0x43, 0xd7, 0x61, 0xf5, 0xa8, 0x7f,
+	0x60, 0x63, 0xd7, 0xee, 0x3e, 0x75, 0xf0, 0x51, 0xf7, 0xd0, 0xee, 0xf6, 0xad, 0x1c, 0x42, 0x50,
+	0xc5, 0xf6, 0xe1, 0x51, 0xdf, 0x76, 0x7b, 0x36, 0x7e, 0xea, 0xb4, 0x6d, 0x2b, 0x2f, 0x6d, 0x9d,
+	0xa3, 0x76, 0xab, 0xe3, 0x1e, 0xb7, 0x70, 0xab, 0xd3, 0xb1, 0x3b, 0x56, 0x01, 0xad, 0x83, 0xa5,
+	0x6d, 0x3d, 0xfb, 0xc9, 0x89, 0xdd, 0xed, 0x3b, 0xad, 0x8e, 0xb5, 0x70, 0xfb, 0x4c, 0x1f, 0xc3,
+	0x9c, 0x10, 0xfd, 0x1b, 0x6a, 0x7d, 0xbb, 0xd7, 0x77, 0xdb, 0xad, 0xf6, 0x81, 0xd3, 0xdd, 0xbf,
+	0x12, 0xc1, 0x1a, 0xac, 0x68, 0x09, 0xe9, 0xb6, 0xdd, 0x03, 0x47, 0xee, 0xbf, 0x0e, 0x96, 0xd9,
+	0x7f, 0x6a, 0xcd, 0xa3, 0x2a, 0x80, 0x5e, 0x1e, 0x3a, 0xbd, 0x9e, 0x55, 0xd8, 0x7d, 0x0e, 0xf5,
+	0x01, 0x0b, 0x32, 0x32, 0x7f, 0x9c, 0xfb, 0xca, 0x31, 0x88, 0x21, 0x1b, 0x79, 0xe1, 0xb0, 0xc1,
+	0xa2, 0x61, 0x73, 0x48, 0x42, 0x75, 0xd9, 0xe6, 0xff, 0xa2, 0x37, 0xa6, 0xfc, 0x75, 0xff, 0x19,
+	0x3f, 0x99, 0x59, 0x9e, 0x2e, 0x29, 0xd6, 0x07, 0x7f, 0x04, 0x00, 0x00, 0xff, 0xff, 0x1e, 0xcc,
+	0x20, 0xf5, 0x78, 0x0f, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/resultstore/v2/common.pb.go b/googleapis/devtools/resultstore/v2/common.pb.go
index b641133..8034473 100644
--- a/googleapis/devtools/resultstore/v2/common.pb.go
+++ b/googleapis/devtools/resultstore/v2/common.pb.go
@@ -213,6 +213,44 @@
 	return fileDescriptor_ff56b05a77242216, []int{1}
 }
 
+// Indicates the upload status of the invocation, whether it is
+// post-processing, or immutable, etc.
+type UploadStatus int32
+
+const (
+	// The implicit default enum value. Should never be set.
+	UploadStatus_UPLOAD_STATUS_UNSPECIFIED UploadStatus = 0
+	// The invocation is still uploading to the ResultStore.
+	UploadStatus_UPLOADING UploadStatus = 1
+	// The invocation upload is complete. The ResultStore is still post-processing
+	// the invocation.
+	UploadStatus_POST_PROCESSING UploadStatus = 2
+	// All post-processing is complete, and the invocation is now immutable.
+	UploadStatus_IMMUTABLE UploadStatus = 3
+)
+
+var UploadStatus_name = map[int32]string{
+	0: "UPLOAD_STATUS_UNSPECIFIED",
+	1: "UPLOADING",
+	2: "POST_PROCESSING",
+	3: "IMMUTABLE",
+}
+
+var UploadStatus_value = map[string]int32{
+	"UPLOAD_STATUS_UNSPECIFIED": 0,
+	"UPLOADING":                 1,
+	"POST_PROCESSING":           2,
+	"IMMUTABLE":                 3,
+}
+
+func (x UploadStatus) String() string {
+	return proto.EnumName(UploadStatus_name, int32(x))
+}
+
+func (UploadStatus) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_ff56b05a77242216, []int{2}
+}
+
 // Describes the status of a resource in both enum and string form.
 // Only use description when conveying additional info not captured in the enum
 // name.
@@ -480,6 +518,7 @@
 func init() {
 	proto.RegisterEnum("google.devtools.resultstore.v2.Language", Language_name, Language_value)
 	proto.RegisterEnum("google.devtools.resultstore.v2.Status", Status_name, Status_value)
+	proto.RegisterEnum("google.devtools.resultstore.v2.UploadStatus", UploadStatus_name, UploadStatus_value)
 	proto.RegisterType((*StatusAttributes)(nil), "google.devtools.resultstore.v2.StatusAttributes")
 	proto.RegisterType((*Property)(nil), "google.devtools.resultstore.v2.Property")
 	proto.RegisterType((*Timing)(nil), "google.devtools.resultstore.v2.Timing")
@@ -491,49 +530,53 @@
 }
 
 var fileDescriptor_ff56b05a77242216 = []byte{
-	// 704 bytes of a gzipped FileDescriptorProto
+	// 755 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xdf, 0x6e, 0xe3, 0x44,
-	0x14, 0xc6, 0xd7, 0x49, 0xeb, 0x3a, 0x27, 0xfd, 0x73, 0x98, 0x2d, 0x28, 0xf4, 0x02, 0xaa, 0x5c,
-	0xa0, 0xd5, 0x22, 0x6c, 0x29, 0x88, 0x0b, 0x84, 0x84, 0x34, 0xb1, 0xdd, 0xd4, 0xad, 0xd7, 0xb6,
-	0x3c, 0x13, 0xa2, 0xe5, 0x26, 0x72, 0x92, 0x59, 0xcb, 0x22, 0xb1, 0x83, 0x3d, 0x8e, 0x54, 0xde,
-	0x82, 0xa7, 0xe3, 0x05, 0x78, 0x10, 0x34, 0xb6, 0x03, 0x55, 0x11, 0xec, 0x95, 0xcf, 0x77, 0xbe,
-	0xdf, 0x39, 0x73, 0xce, 0x68, 0x12, 0xf8, 0x3a, 0x2d, 0x8a, 0x74, 0x2b, 0xac, 0x8d, 0x38, 0xc8,
-	0xa2, 0xd8, 0x56, 0x56, 0x29, 0xaa, 0x7a, 0x2b, 0x2b, 0x59, 0x94, 0xc2, 0x3a, 0x4c, 0xac, 0x75,
-	0xb1, 0xdb, 0x15, 0xb9, 0xb9, 0x2f, 0x0b, 0x59, 0x90, 0x2f, 0x5a, 0xd8, 0x3c, 0xc2, 0xe6, 0x33,
-	0xd8, 0x3c, 0x4c, 0x6e, 0x3a, 0xdf, 0x6a, 0xe8, 0x55, 0xfd, 0xc1, 0xda, 0xd4, 0x65, 0x22, 0xb3,
-	0x63, 0xfd, 0xcd, 0x97, 0x2f, 0x7d, 0x99, 0xed, 0x44, 0x25, 0x93, 0xdd, 0xbe, 0x05, 0xc6, 0x12,
-	0x90, 0xc9, 0x44, 0xd6, 0x15, 0x95, 0xb2, 0xcc, 0x56, 0xb5, 0x14, 0x15, 0xf9, 0x11, 0xf4, 0xaa,
-	0xc9, 0x8d, 0xb4, 0x5b, 0xed, 0xcd, 0xe5, 0xe4, 0x2b, 0xf3, 0xff, 0xa7, 0x30, 0xdb, 0x0e, 0x71,
-	0x57, 0x45, 0x6e, 0x61, 0xb8, 0x11, 0xd5, 0xba, 0xcc, 0xf6, 0x6a, 0x92, 0x51, 0xef, 0x56, 0x7b,
-	0x33, 0x88, 0x9f, 0xa7, 0xc6, 0x13, 0x30, 0xa2, 0xb2, 0xd8, 0x8b, 0x52, 0x3e, 0x11, 0x84, 0xfe,
-	0x2f, 0xe2, 0xa9, 0x39, 0x6a, 0x10, 0xab, 0x90, 0x5c, 0xc3, 0xe9, 0x21, 0xd9, 0xd6, 0xa2, 0xab,
-	0x6c, 0xc5, 0xf8, 0x37, 0xd0, 0x79, 0xb6, 0xcb, 0xf2, 0x94, 0x7c, 0x0f, 0x50, 0xc9, 0xa4, 0x94,
-	0x4b, 0xb5, 0x4c, 0x53, 0x38, 0x9c, 0xdc, 0x1c, 0x67, 0x3c, 0x6e, 0x6a, 0xf2, 0xe3, 0xa6, 0xf1,
-	0xa0, 0xa1, 0x95, 0x26, 0xdf, 0x81, 0x71, 0xbc, 0xa1, 0xa6, 0xfb, 0x70, 0xf2, 0xf9, 0xbf, 0x0a,
-	0x9d, 0x0e, 0x88, 0xff, 0x46, 0xc7, 0xbf, 0x6b, 0x00, 0x8e, 0xd8, 0x8b, 0x7c, 0x23, 0xf2, 0xf5,
-	0x13, 0x19, 0x81, 0x2e, 0x93, 0x32, 0x15, 0xb2, 0x9d, 0xfa, 0xfe, 0x55, 0xdc, 0x69, 0xf2, 0x0d,
-	0x7c, 0xb2, 0x2e, 0xf2, 0x0f, 0x59, 0x5a, 0x97, 0x62, 0xb3, 0xec, 0xa0, 0x5e, 0x07, 0xe1, 0x3f,
-	0x16, 0x6f, 0xf1, 0x11, 0xe8, 0xc9, 0xba, 0x19, 0xa6, 0x7f, 0x6c, 0xd4, 0x6a, 0x75, 0x07, 0xdb,
-	0x64, 0x25, 0xb6, 0xa3, 0x93, 0xf6, 0x0e, 0x1a, 0x31, 0x05, 0x30, 0x4a, 0x51, 0x15, 0x75, 0xb9,
-	0x16, 0x6f, 0xff, 0xd4, 0xc0, 0xf0, 0x93, 0x3c, 0xad, 0x93, 0x54, 0x90, 0x11, 0x5c, 0xfb, 0x34,
-	0x98, 0xcd, 0xe9, 0xcc, 0x5d, 0xce, 0x03, 0x16, 0xb9, 0xb6, 0x77, 0xe7, 0xb9, 0x0e, 0xbe, 0x22,
-	0x06, 0x9c, 0x04, 0x61, 0xe0, 0xa2, 0x46, 0x86, 0x70, 0x46, 0x03, 0x27, 0x0e, 0x3d, 0x07, 0x7b,
-	0x44, 0x87, 0x1e, 0x65, 0xd8, 0x57, 0x5f, 0xdb, 0xc6, 0x13, 0x72, 0x06, 0x7d, 0x9b, 0x31, 0x3c,
-	0x55, 0xbc, 0x43, 0x63, 0x8e, 0xba, 0xb2, 0x66, 0x21, 0x9e, 0x29, 0x6b, 0xb6, 0xe0, 0x68, 0xa8,
-	0x06, 0xf7, 0x94, 0x3d, 0xba, 0xbe, 0x8f, 0x03, 0xc5, 0x3d, 0xd0, 0x9f, 0x28, 0x82, 0xe2, 0x1e,
-	0x18, 0x0e, 0x55, 0xc6, 0xf7, 0x58, 0x84, 0xe7, 0x2a, 0x0a, 0xa7, 0x0f, 0x36, 0x5e, 0x28, 0x2f,
-	0x7a, 0x8f, 0x97, 0xea, 0xcb, 0xee, 0xf1, 0x8a, 0x0c, 0xe0, 0x94, 0x2d, 0xbc, 0x3b, 0x8e, 0xa8,
-	0x52, 0x9c, 0x21, 0x51, 0xed, 0x17, 0xee, 0x14, 0x5f, 0x37, 0x9e, 0x4d, 0x7d, 0x8a, 0xd7, 0x2a,
-	0x8c, 0xe2, 0x90, 0x87, 0xf8, 0xe9, 0xdb, 0x3f, 0x34, 0xd0, 0xdb, 0xf7, 0x45, 0x3e, 0x03, 0xc2,
-	0x38, 0xe5, 0x73, 0xf6, 0x62, 0xc5, 0x73, 0x30, 0xa6, 0x73, 0xcf, 0x77, 0xbc, 0x60, 0x86, 0x9a,
-	0xaa, 0x55, 0x8a, 0x63, 0x8f, 0xbc, 0x86, 0xab, 0x3b, 0xea, 0xf9, 0xae, 0xb3, 0xe4, 0xe1, 0xb2,
-	0x41, 0xb0, 0xaf, 0xb6, 0xe0, 0x2e, 0xe3, 0x0a, 0x3e, 0x21, 0x00, 0x7a, 0x44, 0x19, 0x73, 0x1d,
-	0x3c, 0x55, 0x71, 0x4b, 0xa3, 0x4e, 0x2e, 0x60, 0xc0, 0xbd, 0x77, 0xae, 0xb3, 0x0c, 0xe7, 0x1c,
-	0xcf, 0x94, 0xb4, 0x69, 0x60, 0xbb, 0xbe, 0x72, 0x0d, 0x72, 0x05, 0x43, 0x1e, 0x86, 0xfe, 0xb2,
-	0xc3, 0x07, 0xe4, 0x12, 0xc0, 0x0b, 0xec, 0xf0, 0x5d, 0xe4, 0xbb, 0xdc, 0x45, 0x50, 0x33, 0xdc,
-	0xf9, 0xf4, 0xf1, 0x3d, 0x0e, 0xd5, 0x71, 0xf3, 0xe0, 0x31, 0x08, 0x17, 0x01, 0x9e, 0x2b, 0xc1,
-	0x1e, 0xbd, 0x28, 0x72, 0x1d, 0xbc, 0x98, 0xfe, 0x0a, 0xe3, 0x75, 0xb1, 0xfb, 0xc8, 0x6f, 0x2b,
-	0xd2, 0x7e, 0xf6, 0x3a, 0x22, 0x2d, 0xb6, 0x49, 0x9e, 0x9a, 0x45, 0x99, 0x5a, 0xa9, 0xc8, 0x9b,
-	0xe7, 0x6a, 0xb5, 0x56, 0xb2, 0xcf, 0xaa, 0xff, 0xfa, 0x3f, 0xf9, 0xe1, 0x99, 0x5c, 0xe9, 0x4d,
-	0xd5, 0xb7, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x47, 0xe0, 0xd7, 0x5c, 0x84, 0x04, 0x00, 0x00,
+	0x14, 0xc6, 0xd7, 0x49, 0xeb, 0x26, 0x27, 0xfd, 0x73, 0x98, 0x16, 0x94, 0xad, 0x04, 0x54, 0xb9,
+	0x40, 0xab, 0x22, 0x12, 0x29, 0x88, 0x0b, 0x84, 0x84, 0x34, 0xb1, 0xdd, 0xd4, 0xad, 0x6b, 0x5b,
+	0x9e, 0x31, 0xd5, 0x72, 0x63, 0xdc, 0x64, 0xd6, 0x8a, 0x48, 0x3c, 0xc1, 0x1e, 0x47, 0x2a, 0x6f,
+	0xc1, 0xd3, 0xf1, 0x02, 0x3c, 0x08, 0x1a, 0xdb, 0x81, 0x6a, 0xf9, 0xb3, 0x57, 0x9e, 0xef, 0x7c,
+	0xbf, 0x73, 0x7c, 0xbe, 0x51, 0x1c, 0xf8, 0x32, 0x93, 0x32, 0x5b, 0x8b, 0xc9, 0x52, 0xec, 0x94,
+	0x94, 0xeb, 0x72, 0x52, 0x88, 0xb2, 0x5a, 0xab, 0x52, 0xc9, 0x42, 0x4c, 0x76, 0xd3, 0xc9, 0x42,
+	0x6e, 0x36, 0x32, 0x1f, 0x6f, 0x0b, 0xa9, 0x24, 0xf9, 0xac, 0x81, 0xc7, 0x7b, 0x78, 0xfc, 0x02,
+	0x1e, 0xef, 0xa6, 0x97, 0xad, 0x3f, 0xa9, 0xe9, 0xa7, 0xea, 0xdd, 0x64, 0x59, 0x15, 0xa9, 0x5a,
+	0xed, 0xfb, 0x2f, 0x3f, 0x7f, 0xdf, 0x57, 0xab, 0x8d, 0x28, 0x55, 0xba, 0xd9, 0x36, 0xc0, 0x48,
+	0x01, 0x32, 0x95, 0xaa, 0xaa, 0xa4, 0x4a, 0x15, 0xab, 0xa7, 0x4a, 0x89, 0x92, 0x7c, 0x0f, 0x66,
+	0x59, 0xd7, 0x86, 0xc6, 0x95, 0xf1, 0xe6, 0x74, 0xfa, 0xc5, 0xf8, 0xff, 0xb7, 0x18, 0x37, 0x13,
+	0xa2, 0xb6, 0x8b, 0x5c, 0xc1, 0x60, 0x29, 0xca, 0x45, 0xb1, 0xda, 0xea, 0x4d, 0x86, 0x9d, 0x2b,
+	0xe3, 0x4d, 0x3f, 0x7a, 0x59, 0x1a, 0x4d, 0xa1, 0x17, 0x16, 0x72, 0x2b, 0x0a, 0xf5, 0x4c, 0x10,
+	0xba, 0x3f, 0x8b, 0xe7, 0xfa, 0x55, 0xfd, 0x48, 0x1f, 0xc9, 0x05, 0x1c, 0xee, 0xd2, 0x75, 0x25,
+	0xda, 0xce, 0x46, 0x8c, 0x7e, 0x05, 0x93, 0xaf, 0x36, 0xab, 0x3c, 0x23, 0xdf, 0x02, 0x94, 0x2a,
+	0x2d, 0x54, 0xa2, 0xc3, 0xd4, 0x8d, 0x83, 0xe9, 0xe5, 0x7e, 0xc7, 0x7d, 0xd2, 0x31, 0xdf, 0x27,
+	0x8d, 0xfa, 0x35, 0xad, 0x35, 0xf9, 0x06, 0x7a, 0xfb, 0x1b, 0xaa, 0xa7, 0x0f, 0xa6, 0xaf, 0xff,
+	0xd1, 0x68, 0xb7, 0x40, 0xf4, 0x17, 0x3a, 0xfa, 0xcd, 0x00, 0xb0, 0xc5, 0x56, 0xe4, 0x4b, 0x91,
+	0x2f, 0x9e, 0xc9, 0x10, 0x4c, 0x95, 0x16, 0x99, 0x50, 0xcd, 0xd6, 0xb7, 0xaf, 0xa2, 0x56, 0x93,
+	0xaf, 0xe0, 0xa3, 0x85, 0xcc, 0xdf, 0xad, 0xb2, 0xaa, 0x10, 0xcb, 0xa4, 0x85, 0x3a, 0x2d, 0x84,
+	0x7f, 0x5b, 0xbc, 0xc1, 0x87, 0x60, 0xa6, 0x8b, 0x7a, 0x99, 0xee, 0x7e, 0x50, 0xa3, 0xf5, 0x1d,
+	0xac, 0xd3, 0x27, 0xb1, 0x1e, 0x1e, 0x34, 0x77, 0x50, 0x8b, 0x19, 0x40, 0xaf, 0x10, 0xa5, 0xac,
+	0x8a, 0x85, 0xb8, 0xfe, 0xc3, 0x80, 0x9e, 0x97, 0xe6, 0x59, 0x95, 0x66, 0x82, 0x0c, 0xe1, 0xc2,
+	0xa3, 0xfe, 0x3c, 0xa6, 0x73, 0x27, 0x89, 0x7d, 0x16, 0x3a, 0x96, 0x7b, 0xe3, 0x3a, 0x36, 0xbe,
+	0x22, 0x3d, 0x38, 0xf0, 0x03, 0xdf, 0x41, 0x83, 0x0c, 0xe0, 0x88, 0xfa, 0x76, 0x14, 0xb8, 0x36,
+	0x76, 0x88, 0x09, 0x1d, 0xca, 0xb0, 0xab, 0x9f, 0x96, 0x85, 0x07, 0xe4, 0x08, 0xba, 0x16, 0x63,
+	0x78, 0xa8, 0x79, 0x9b, 0x46, 0x1c, 0x4d, 0x6d, 0xcd, 0x03, 0x3c, 0xd2, 0xd6, 0xfc, 0x91, 0x63,
+	0x4f, 0x0f, 0xb8, 0xa5, 0xec, 0xde, 0xf1, 0x3c, 0xec, 0x6b, 0xee, 0x8e, 0xfe, 0x40, 0x11, 0x34,
+	0x77, 0xc7, 0x70, 0xa0, 0x2b, 0x9e, 0xcb, 0x42, 0x3c, 0xd6, 0xa7, 0x60, 0x76, 0x67, 0xe1, 0x89,
+	0xf6, 0xc2, 0xb7, 0x78, 0xaa, 0x9f, 0xec, 0x16, 0xcf, 0x48, 0x1f, 0x0e, 0xd9, 0xa3, 0x7b, 0xc3,
+	0x11, 0x75, 0x89, 0x33, 0x24, 0x7a, 0xfc, 0xa3, 0x33, 0xc3, 0xf3, 0xda, 0xb3, 0xa8, 0x47, 0xf1,
+	0x42, 0x1f, 0xc3, 0x28, 0xe0, 0x01, 0x7e, 0x7c, 0xfd, 0xbb, 0x01, 0x66, 0xf3, 0xfb, 0x22, 0x9f,
+	0x00, 0x61, 0x9c, 0xf2, 0x98, 0xbd, 0x17, 0xf1, 0x18, 0x7a, 0xb3, 0xd8, 0xf5, 0x6c, 0xd7, 0x9f,
+	0xa3, 0xa1, 0x7b, 0xb5, 0xe2, 0xd8, 0x21, 0xe7, 0x70, 0x76, 0x43, 0x5d, 0xcf, 0xb1, 0x13, 0x1e,
+	0x24, 0x35, 0x82, 0x5d, 0x9d, 0x82, 0x3b, 0x8c, 0x6b, 0xf8, 0x80, 0x00, 0x98, 0x21, 0x65, 0xcc,
+	0xb1, 0xf1, 0x50, 0x9f, 0x1b, 0x1a, 0x4d, 0x72, 0x02, 0x7d, 0xee, 0x3e, 0x38, 0x76, 0x12, 0xc4,
+	0x1c, 0x8f, 0xb4, 0xb4, 0xa8, 0x6f, 0x39, 0x9e, 0x76, 0x7b, 0xe4, 0x0c, 0x06, 0x3c, 0x08, 0xbc,
+	0xa4, 0xc5, 0xfb, 0xe4, 0x14, 0xc0, 0xf5, 0xad, 0xe0, 0x21, 0xf4, 0x1c, 0xee, 0x20, 0xe8, 0x1d,
+	0x6e, 0x3c, 0x7a, 0xff, 0x16, 0x07, 0xfa, 0x75, 0xb1, 0x7f, 0xef, 0x07, 0x8f, 0x3e, 0x1e, 0x6b,
+	0xc1, 0xee, 0xdd, 0x30, 0x74, 0x6c, 0x3c, 0xb9, 0xfe, 0x09, 0x8e, 0xe3, 0xed, 0x5a, 0xa6, 0xcb,
+	0x36, 0xde, 0xa7, 0xf0, 0x3a, 0x0e, 0xbd, 0x80, 0xda, 0xc9, 0xbf, 0xa6, 0x3c, 0x81, 0x7e, 0x63,
+	0x37, 0x31, 0xcf, 0xe1, 0x2c, 0x0c, 0x18, 0x4f, 0xc2, 0x28, 0xb0, 0x1c, 0xc6, 0x74, 0xb1, 0xa3,
+	0x19, 0xf7, 0xe1, 0x21, 0xe6, 0x74, 0xe6, 0x39, 0xd8, 0x9d, 0xfd, 0x02, 0xa3, 0x85, 0xdc, 0x7c,
+	0xe0, 0xeb, 0x0d, 0x8d, 0x1f, 0xdd, 0x96, 0xc8, 0xe4, 0x3a, 0xcd, 0xb3, 0xb1, 0x2c, 0xb2, 0x49,
+	0x26, 0xf2, 0xfa, 0x83, 0x98, 0x34, 0x56, 0xba, 0x5d, 0x95, 0xff, 0xf5, 0x8f, 0xf5, 0xdd, 0x0b,
+	0xf9, 0x64, 0xd6, 0x5d, 0x5f, 0xff, 0x19, 0x00, 0x00, 0xff, 0xff, 0x76, 0xbe, 0x13, 0x5f, 0xe6,
+	0x04, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/resultstore/v2/configuration.pb.go b/googleapis/devtools/resultstore/v2/configuration.pb.go
index eadfd07..b3a10de 100644
--- a/googleapis/devtools/resultstore/v2/configuration.pb.go
+++ b/googleapis/devtools/resultstore/v2/configuration.pb.go
@@ -26,7 +26,7 @@
 // were used.
 type Configuration struct {
 	// The format of this Configuration resource name must be:
-	// invocations/${INVOCATION_ID}/configs/${CONFIG_ID}
+	// invocations/${INVOCATION_ID}/configs/${url_encode(CONFIG_ID)}
 	// The configuration ID of "default" should be preferred for the default
 	// configuration in a single-config invocation.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -40,10 +40,14 @@
 	// Arbitrary name-value pairs.
 	// This is implemented as a multi-map. Multiple properties are allowed with
 	// the same key. Properties will be returned in lexicographical order by key.
-	Properties           []*Property `protobuf:"bytes,6,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	Properties []*Property `protobuf:"bytes,6,rep,name=properties,proto3" json:"properties,omitempty"`
+	// A human-readable name for Configuration.
+	// It is recommended that this name be unique.
+	// If omitted, the configuration_id should be used as display_name instead.
+	DisplayName          string   `protobuf:"bytes,8,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Configuration) Reset()         { *m = Configuration{} }
@@ -106,6 +110,13 @@
 	return nil
 }
 
+func (m *Configuration) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
 // The resource ID components that identify the Configuration.
 type Configuration_Id struct {
 	// The Invocation ID.
@@ -208,26 +219,28 @@
 }
 
 var fileDescriptor_c7cb6c7dfd72e78e = []byte{
-	// 335 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x4f, 0x4f, 0xb3, 0x40,
-	0x10, 0xc6, 0x03, 0xbc, 0x6f, 0x93, 0x4e, 0x6d, 0xac, 0x7b, 0x29, 0xe9, 0xc1, 0x34, 0xf5, 0x82,
-	0x69, 0xb2, 0x18, 0x3c, 0x78, 0xf0, 0xe2, 0x9f, 0x8b, 0xdc, 0x1a, 0xf4, 0x64, 0x62, 0x0c, 0x65,
-	0xd7, 0xcd, 0x26, 0xc0, 0xe0, 0xee, 0x42, 0xe2, 0x37, 0xf5, 0xe3, 0x18, 0x81, 0x2a, 0x18, 0x6b,
-	0xf5, 0x36, 0xcc, 0xf0, 0x7b, 0x9e, 0x99, 0x9d, 0x81, 0x40, 0x20, 0x8a, 0x94, 0xfb, 0x8c, 0x57,
-	0x06, 0x31, 0xd5, 0xbe, 0xe2, 0xba, 0x4c, 0x8d, 0x36, 0xa8, 0xb8, 0x5f, 0x05, 0x7e, 0x82, 0xf9,
-	0x93, 0x14, 0xa5, 0x8a, 0x8d, 0xc4, 0x9c, 0x16, 0x0a, 0x0d, 0x92, 0xc3, 0x86, 0xa1, 0x1b, 0x86,
-	0x76, 0x18, 0x5a, 0x05, 0xb3, 0xe5, 0x4e, 0xcd, 0x2c, 0xdb, 0x88, 0x2d, 0x5e, 0x1d, 0x18, 0x5f,
-	0x77, 0x4d, 0x08, 0x81, 0x7f, 0x79, 0x9c, 0x71, 0xd7, 0x9a, 0x5b, 0xde, 0x30, 0xaa, 0x63, 0x72,
-	0x01, 0xb6, 0x64, 0xae, 0x3d, 0xb7, 0xbc, 0x51, 0x70, 0x42, 0x7f, 0xf6, 0xa7, 0x3d, 0x39, 0x1a,
-	0xb2, 0xc8, 0x96, 0x8c, 0x3c, 0xc0, 0x81, 0x36, 0xb1, 0x29, 0xf5, 0x63, 0x6c, 0x8c, 0x92, 0xeb,
-	0xd2, 0x70, 0xed, 0x3a, 0xbf, 0x13, 0xbc, 0xad, 0xc1, 0xcb, 0x0f, 0x2e, 0x9a, 0xe8, 0x2f, 0x19,
-	0xa2, 0xc0, 0xed, 0x3d, 0x55, 0xd7, 0xe5, 0x7f, 0xed, 0x72, 0xf6, 0xa7, 0xb6, 0x3b, 0x66, 0xd3,
-	0xe4, 0xfb, 0x02, 0xb9, 0x01, 0x28, 0x14, 0x16, 0x5c, 0x19, 0xc9, 0xb5, 0x3b, 0x98, 0x3b, 0xde,
-	0x28, 0xf0, 0x76, 0xb9, 0xac, 0x1a, 0xe2, 0x25, 0xea, 0xb0, 0xb3, 0x3b, 0xb0, 0x43, 0x46, 0x8e,
-	0x60, 0x2c, 0xf3, 0x0a, 0x93, 0x66, 0x00, 0xc9, 0xda, 0x0d, 0xec, 0x7d, 0x26, 0x43, 0x46, 0x8e,
-	0x61, 0xd2, 0x1f, 0xb4, 0xdd, 0xcb, 0x30, 0xda, 0xef, 0xe5, 0x43, 0xb6, 0x58, 0xc2, 0x74, 0xcb,
-	0x4c, 0x64, 0x02, 0x4e, 0x52, 0x94, 0xad, 0xc1, 0x7b, 0x78, 0xf5, 0x0c, 0x8b, 0x04, 0xb3, 0x1d,
-	0xdd, 0xaf, 0xac, 0xfb, 0xb0, 0xfd, 0x43, 0x60, 0x1a, 0xe7, 0x82, 0xa2, 0x12, 0xbe, 0xe0, 0x79,
-	0x7d, 0x4b, 0x7e, 0x53, 0x8a, 0x0b, 0xa9, 0xb7, 0xdd, 0xde, 0x79, 0xe7, 0x73, 0x3d, 0xa8, 0xa9,
-	0xd3, 0xb7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, 0xea, 0x27, 0xe2, 0x04, 0x03, 0x00, 0x00,
+	// 357 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xbf, 0x4f, 0xe3, 0x30,
+	0x1c, 0xc5, 0x95, 0xe4, 0xae, 0xba, 0x7e, 0xdb, 0xea, 0x7a, 0x5e, 0x1a, 0x75, 0x38, 0x95, 0xb2,
+	0x04, 0x55, 0x72, 0x50, 0x18, 0x18, 0x58, 0xf8, 0xb1, 0x90, 0x05, 0x55, 0x81, 0x09, 0x09, 0x55,
+	0x6e, 0x6c, 0x22, 0x4b, 0x49, 0x1c, 0x6c, 0x27, 0x52, 0xff, 0x76, 0x16, 0x84, 0x93, 0x42, 0x82,
+	0x28, 0x85, 0xcd, 0x79, 0xce, 0xe7, 0x3d, 0x7f, 0x9f, 0x0d, 0x41, 0x22, 0x44, 0x92, 0x32, 0x9f,
+	0xb2, 0x4a, 0x0b, 0x91, 0x2a, 0x5f, 0x32, 0x55, 0xa6, 0x5a, 0x69, 0x21, 0x99, 0x5f, 0x05, 0x7e,
+	0x2c, 0xf2, 0x47, 0x9e, 0x94, 0x92, 0x68, 0x2e, 0x72, 0x5c, 0x48, 0xa1, 0x05, 0xfa, 0x5f, 0x33,
+	0x78, 0xcb, 0xe0, 0x16, 0x83, 0xab, 0x60, 0xba, 0xd8, 0xeb, 0x99, 0x65, 0x5b, 0xb3, 0xf9, 0xb3,
+	0x03, 0xa3, 0xab, 0x76, 0x08, 0x42, 0xf0, 0x2b, 0x27, 0x19, 0x73, 0xad, 0x99, 0xe5, 0xf5, 0x23,
+	0xb3, 0x46, 0xe7, 0x60, 0x73, 0xea, 0xda, 0x33, 0xcb, 0x1b, 0x04, 0xc7, 0xf8, 0xeb, 0x7c, 0xdc,
+	0xb1, 0xc3, 0x21, 0x8d, 0x6c, 0x4e, 0xd1, 0x03, 0xfc, 0x53, 0x9a, 0xe8, 0x52, 0xad, 0x88, 0xd6,
+	0x92, 0xaf, 0x4b, 0xcd, 0x94, 0xeb, 0x7c, 0xcf, 0xf0, 0xd6, 0x80, 0x17, 0x6f, 0x5c, 0x34, 0x56,
+	0x1f, 0x14, 0x24, 0xc1, 0xed, 0x54, 0xd5, 0x4e, 0xf9, 0x6d, 0x52, 0x4e, 0x7f, 0x74, 0xec, 0x56,
+	0xd8, 0x24, 0xfe, 0x7c, 0x03, 0x5d, 0x03, 0x14, 0x52, 0x14, 0x4c, 0x6a, 0xce, 0x94, 0xdb, 0x9b,
+	0x39, 0xde, 0x20, 0xf0, 0xf6, 0xa5, 0x2c, 0x6b, 0x62, 0x13, 0xb5, 0x58, 0x74, 0x00, 0x43, 0xca,
+	0x55, 0x91, 0x92, 0xcd, 0xca, 0x54, 0xff, 0xc7, 0x54, 0x3f, 0x68, 0xb4, 0x1b, 0x92, 0xb1, 0xe9,
+	0x1d, 0xd8, 0x21, 0x45, 0x87, 0x30, 0xe2, 0x79, 0x25, 0xe2, 0x7a, 0x46, 0x4e, 0x9b, 0x4b, 0x1a,
+	0xbe, 0x8b, 0x21, 0x45, 0x47, 0x30, 0xee, 0x76, 0xd1, 0x5c, 0x5d, 0x3f, 0xfa, 0xdb, 0xd1, 0x43,
+	0x3a, 0x5f, 0xc0, 0x64, 0xc7, 0xd8, 0x68, 0x0c, 0x4e, 0x5c, 0x94, 0x4d, 0xc0, 0xeb, 0xf2, 0xf2,
+	0x09, 0xe6, 0xb1, 0xc8, 0xf6, 0x0c, 0xb8, 0xb4, 0xee, 0xc3, 0xe6, 0x8f, 0x44, 0xa4, 0x24, 0x4f,
+	0xb0, 0x90, 0x89, 0x9f, 0xb0, 0xdc, 0x3c, 0x37, 0xbf, 0xde, 0x22, 0x05, 0x57, 0xbb, 0x9e, 0xe7,
+	0x59, 0xeb, 0x73, 0xdd, 0x33, 0xd4, 0xc9, 0x4b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0x87, 0xe1,
+	0xa8, 0x27, 0x03, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/resultstore/v2/configured_target.pb.go b/googleapis/devtools/resultstore/v2/configured_target.pb.go
index e74015f..3095f00 100644
--- a/googleapis/devtools/resultstore/v2/configured_target.pb.go
+++ b/googleapis/devtools/resultstore/v2/configured_target.pb.go
@@ -29,7 +29,7 @@
 // more info on this.
 type ConfiguredTarget struct {
 	// The resource name.  Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
 	// where ${CONFIG_ID} must match the ID of an existing Configuration under
 	// this Invocation.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
diff --git a/googleapis/devtools/resultstore/v2/coverage.pb.go b/googleapis/devtools/resultstore/v2/coverage.pb.go
index 2ef725d..c5829d1 100644
--- a/googleapis/devtools/resultstore/v2/coverage.pb.go
+++ b/googleapis/devtools/resultstore/v2/coverage.pb.go
@@ -277,11 +277,55 @@
 	return nil
 }
 
+// Describes aggregate code coverage for a collection of build or test Actions.
+// A line or branch is covered if and only if it is covered in any of the build
+// or test actions.
+type AggregateCoverage struct {
+	// Aggregated coverage info for all source files that the actions cover.
+	FileCoverages        []*FileCoverage `protobuf:"bytes,1,rep,name=file_coverages,json=fileCoverages,proto3" json:"file_coverages,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *AggregateCoverage) Reset()         { *m = AggregateCoverage{} }
+func (m *AggregateCoverage) String() string { return proto.CompactTextString(m) }
+func (*AggregateCoverage) ProtoMessage()    {}
+func (*AggregateCoverage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_823b424facf00e45, []int{4}
+}
+
+func (m *AggregateCoverage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AggregateCoverage.Unmarshal(m, b)
+}
+func (m *AggregateCoverage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AggregateCoverage.Marshal(b, m, deterministic)
+}
+func (m *AggregateCoverage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AggregateCoverage.Merge(m, src)
+}
+func (m *AggregateCoverage) XXX_Size() int {
+	return xxx_messageInfo_AggregateCoverage.Size(m)
+}
+func (m *AggregateCoverage) XXX_DiscardUnknown() {
+	xxx_messageInfo_AggregateCoverage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AggregateCoverage proto.InternalMessageInfo
+
+func (m *AggregateCoverage) GetFileCoverages() []*FileCoverage {
+	if m != nil {
+		return m.FileCoverages
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*LineCoverage)(nil), "google.devtools.resultstore.v2.LineCoverage")
 	proto.RegisterType((*BranchCoverage)(nil), "google.devtools.resultstore.v2.BranchCoverage")
 	proto.RegisterType((*FileCoverage)(nil), "google.devtools.resultstore.v2.FileCoverage")
 	proto.RegisterType((*ActionCoverage)(nil), "google.devtools.resultstore.v2.ActionCoverage")
+	proto.RegisterType((*AggregateCoverage)(nil), "google.devtools.resultstore.v2.AggregateCoverage")
 }
 
 func init() {
@@ -289,29 +333,30 @@
 }
 
 var fileDescriptor_823b424facf00e45 = []byte{
-	// 372 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0x4d, 0x6b, 0xe3, 0x30,
-	0x10, 0xc5, 0xf9, 0x58, 0x76, 0x67, 0x6d, 0xef, 0xae, 0xd8, 0x83, 0xd9, 0xc3, 0x12, 0x0c, 0x81,
-	0x1c, 0x1a, 0x19, 0xd2, 0x63, 0x4f, 0x4d, 0xa1, 0x10, 0xe8, 0x21, 0x75, 0x0f, 0x85, 0x5e, 0x8c,
-	0xe3, 0x4c, 0x1c, 0x51, 0x45, 0x72, 0x25, 0xc5, 0xf4, 0x7f, 0xf4, 0x7f, 0xf5, 0x37, 0x95, 0xc8,
-	0x1f, 0x71, 0x0f, 0x6d, 0x7a, 0xd3, 0xbc, 0x79, 0xf3, 0xde, 0xcc, 0x43, 0x30, 0xcd, 0xa5, 0xcc,
-	0x39, 0x46, 0x6b, 0x2c, 0x8d, 0x94, 0x5c, 0x47, 0x0a, 0xf5, 0x9e, 0x1b, 0x6d, 0xa4, 0xc2, 0xa8,
-	0x9c, 0x45, 0x99, 0x2c, 0x51, 0xa5, 0x39, 0xd2, 0x42, 0x49, 0x23, 0xc9, 0xff, 0x8a, 0x4e, 0x1b,
-	0x3a, 0xed, 0xd0, 0x69, 0x39, 0x0b, 0xd7, 0xe0, 0xde, 0x30, 0x81, 0x57, 0xf5, 0x14, 0x99, 0x02,
-	0x61, 0x42, 0x1b, 0xb5, 0xdf, 0xa1, 0x30, 0xb8, 0x4e, 0x38, 0x13, 0xa8, 0x03, 0x67, 0xe4, 0x4c,
-	0xdc, 0xf8, 0x4f, 0xb7, 0x73, 0x98, 0xd2, 0x64, 0x0c, 0x3e, 0x3e, 0x63, 0xb6, 0x3f, 0x52, 0x7b,
-	0x96, 0xea, 0x35, 0xa8, 0xa5, 0x85, 0x2f, 0x0e, 0xf8, 0x73, 0x95, 0x8a, 0x6c, 0xdb, 0x1a, 0x8d,
-	0xc1, 0x5f, 0x59, 0x24, 0x29, 0x14, 0x6a, 0x14, 0xa6, 0x36, 0xf1, 0x2a, 0x74, 0x59, 0x81, 0x64,
-	0x02, 0xbf, 0x2b, 0x00, 0x75, 0xc2, 0x84, 0xf5, 0x08, 0x7a, 0xa3, 0xfe, 0x64, 0x18, 0xfb, 0x0d,
-	0xbe, 0x10, 0x07, 0x13, 0xf2, 0x0f, 0xbe, 0x37, 0xa6, 0x41, 0xdf, 0x4a, 0xb5, 0x35, 0xf9, 0x0b,
-	0x43, 0x93, 0x3e, 0xa2, 0x08, 0x06, 0xb6, 0x51, 0x15, 0xe1, 0xab, 0x03, 0xee, 0x35, 0xe3, 0xc7,
-	0xe3, 0x09, 0x0c, 0x8a, 0xd4, 0x6c, 0xed, 0x26, 0x3f, 0x62, 0xfb, 0x26, 0xb7, 0xe0, 0x1d, 0x4c,
-	0x93, 0x26, 0x57, 0x7b, 0xe0, 0xcf, 0xd9, 0x19, 0xfd, 0x3c, 0x58, 0xda, 0x4d, 0x35, 0x76, 0x79,
-	0x37, 0xe3, 0x7b, 0xf8, 0x55, 0x9f, 0xde, 0x8a, 0xf6, 0xad, 0x28, 0x3d, 0x25, 0xfa, 0x3e, 0xc3,
-	0x26, 0x82, 0xa6, 0x0e, 0x11, 0xfc, 0xcb, 0xcc, 0x30, 0x29, 0x5a, 0xab, 0x3b, 0xf0, 0x37, 0x8c,
-	0x1f, 0xb7, 0xd7, 0x36, 0xbc, 0x2f, 0xac, 0xdf, 0xcd, 0x25, 0xf6, 0x36, 0x9d, 0x4a, 0xcf, 0x9f,
-	0x20, 0xcc, 0xe4, 0xee, 0x84, 0xc2, 0xd2, 0x79, 0x58, 0xd4, 0x8c, 0x5c, 0xf2, 0x54, 0xe4, 0x54,
-	0xaa, 0x3c, 0xca, 0x51, 0xd8, 0x7f, 0x19, 0x55, 0xad, 0xb4, 0x60, 0xfa, 0xa3, 0x9f, 0x7c, 0xd1,
-	0x29, 0x57, 0xdf, 0xec, 0xd4, 0xf9, 0x5b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x92, 0x57, 0x34,
-	0xfe, 0x02, 0x00, 0x00,
+	// 386 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcd, 0xca, 0xd3, 0x40,
+	0x14, 0x25, 0xfd, 0x11, 0xbd, 0x26, 0xd1, 0x0e, 0x2e, 0x82, 0x0b, 0x29, 0x81, 0x42, 0x17, 0x76,
+	0x02, 0x75, 0xe9, 0xaa, 0x15, 0x84, 0x82, 0x8b, 0x1a, 0x17, 0x82, 0x9b, 0x90, 0xa6, 0xb7, 0xd3,
+	0xc1, 0xe9, 0x4c, 0x9c, 0x99, 0x06, 0xdf, 0xc3, 0xf7, 0xf2, 0x99, 0xa4, 0x93, 0x9f, 0xc6, 0xc5,
+	0xd7, 0x7e, 0xf0, 0xed, 0xe6, 0x9e, 0x7b, 0xee, 0x39, 0xf7, 0x1e, 0x18, 0x58, 0x30, 0xa5, 0x98,
+	0xc0, 0x64, 0x8f, 0x95, 0x55, 0x4a, 0x98, 0x44, 0xa3, 0x39, 0x0b, 0x6b, 0xac, 0xd2, 0x98, 0x54,
+	0xcb, 0xa4, 0x50, 0x15, 0xea, 0x9c, 0x21, 0x2d, 0xb5, 0xb2, 0x8a, 0xbc, 0xab, 0xe9, 0xb4, 0xa5,
+	0xd3, 0x1e, 0x9d, 0x56, 0xcb, 0x78, 0x0f, 0xfe, 0x17, 0x2e, 0xf1, 0x53, 0x33, 0x45, 0x16, 0x40,
+	0xb8, 0x34, 0x56, 0x9f, 0x4f, 0x28, 0x2d, 0xee, 0x33, 0xc1, 0x25, 0x9a, 0xc8, 0x9b, 0x7a, 0x73,
+	0x3f, 0x9d, 0xf4, 0x3b, 0x97, 0x29, 0x43, 0x66, 0x10, 0xe2, 0x6f, 0x2c, 0xce, 0x57, 0xea, 0xc0,
+	0x51, 0x83, 0x16, 0x75, 0xb4, 0xf8, 0x8f, 0x07, 0xe1, 0x5a, 0xe7, 0xb2, 0x38, 0x76, 0x46, 0x33,
+	0x08, 0x77, 0x0e, 0xc9, 0x4a, 0x8d, 0x06, 0xa5, 0x6d, 0x4c, 0x82, 0x1a, 0xdd, 0xd6, 0x20, 0x99,
+	0xc3, 0xeb, 0x1a, 0x40, 0x93, 0x71, 0xe9, 0x3c, 0xa2, 0xc1, 0x74, 0x38, 0x1f, 0xa7, 0x61, 0x8b,
+	0x6f, 0xe4, 0xc5, 0x84, 0xbc, 0x85, 0xe7, 0xad, 0x69, 0x34, 0x74, 0x52, 0x5d, 0x4d, 0xde, 0xc0,
+	0xd8, 0xe6, 0x3f, 0x51, 0x46, 0x23, 0xd7, 0xa8, 0x8b, 0xf8, 0xaf, 0x07, 0xfe, 0x67, 0x2e, 0xae,
+	0xc7, 0x13, 0x18, 0x95, 0xb9, 0x3d, 0xba, 0x4d, 0x5e, 0xa4, 0xee, 0x4d, 0xbe, 0x42, 0x70, 0x31,
+	0xcd, 0xda, 0x5c, 0xdd, 0x81, 0x2f, 0x97, 0xef, 0xe9, 0xed, 0x60, 0x69, 0x3f, 0xd5, 0xd4, 0x17,
+	0xfd, 0x8c, 0xbf, 0xc3, 0xab, 0xe6, 0xf4, 0x4e, 0x74, 0xe8, 0x44, 0xe9, 0x3d, 0xd1, 0xff, 0x33,
+	0x6c, 0x23, 0x68, 0xeb, 0x18, 0x21, 0x5c, 0x15, 0x96, 0x2b, 0xd9, 0x59, 0x7d, 0x83, 0xf0, 0xc0,
+	0xc5, 0x75, 0x7b, 0xe3, 0xc2, 0x7b, 0xc4, 0xfa, 0xfd, 0x5c, 0xd2, 0xe0, 0xd0, 0xab, 0x4c, 0x7c,
+	0x84, 0xc9, 0x8a, 0x31, 0x8d, 0x2c, 0xb7, 0x78, 0xc3, 0xc9, 0x7b, 0xb2, 0xd3, 0xfa, 0x17, 0xc4,
+	0x85, 0x3a, 0xdd, 0x51, 0xd8, 0x7a, 0x3f, 0x36, 0x0d, 0x83, 0x29, 0x91, 0x4b, 0x46, 0x95, 0x66,
+	0x09, 0x43, 0xe9, 0x7e, 0x40, 0x52, 0xb7, 0xf2, 0x92, 0x9b, 0x87, 0xfe, 0xcc, 0xc7, 0x5e, 0xb9,
+	0x7b, 0xe6, 0xa6, 0x3e, 0xfc, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x5a, 0xd7, 0x5d, 0x68, 0x03,
+	0x00, 0x00,
 }
diff --git a/googleapis/devtools/resultstore/v2/download_metadata.pb.go b/googleapis/devtools/resultstore/v2/download_metadata.pb.go
new file mode 100644
index 0000000..8dbec4a
--- /dev/null
+++ b/googleapis/devtools/resultstore/v2/download_metadata.pb.go
@@ -0,0 +1,100 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/devtools/resultstore/v2/download_metadata.proto
+
+package resultstore
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// The download metadata for an invocation
+type DownloadMetadata struct {
+	// The name of the download metadata.  Its format will be:
+	// invocations/${INVOCATION_ID}/downloadMetadata
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Indicates the upload status of the invocation, whether it is
+	// post-processing, or immutable, etc.
+	UploadStatus         UploadStatus `protobuf:"varint,2,opt,name=upload_status,json=uploadStatus,proto3,enum=google.devtools.resultstore.v2.UploadStatus" json:"upload_status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *DownloadMetadata) Reset()         { *m = DownloadMetadata{} }
+func (m *DownloadMetadata) String() string { return proto.CompactTextString(m) }
+func (*DownloadMetadata) ProtoMessage()    {}
+func (*DownloadMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9c835a18f2d71117, []int{0}
+}
+
+func (m *DownloadMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DownloadMetadata.Unmarshal(m, b)
+}
+func (m *DownloadMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DownloadMetadata.Marshal(b, m, deterministic)
+}
+func (m *DownloadMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DownloadMetadata.Merge(m, src)
+}
+func (m *DownloadMetadata) XXX_Size() int {
+	return xxx_messageInfo_DownloadMetadata.Size(m)
+}
+func (m *DownloadMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_DownloadMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DownloadMetadata proto.InternalMessageInfo
+
+func (m *DownloadMetadata) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *DownloadMetadata) GetUploadStatus() UploadStatus {
+	if m != nil {
+		return m.UploadStatus
+	}
+	return UploadStatus_UPLOAD_STATUS_UNSPECIFIED
+}
+
+func init() {
+	proto.RegisterType((*DownloadMetadata)(nil), "google.devtools.resultstore.v2.DownloadMetadata")
+}
+
+func init() {
+	proto.RegisterFile("google/devtools/resultstore/v2/download_metadata.proto", fileDescriptor_9c835a18f2d71117)
+}
+
+var fileDescriptor_9c835a18f2d71117 = []byte{
+	// 217 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x8f, 0xb1, 0x4b, 0xc6, 0x30,
+	0x10, 0xc5, 0x89, 0x88, 0x60, 0x50, 0x91, 0x4c, 0xc5, 0x41, 0x4a, 0xa7, 0x82, 0x92, 0x40, 0x05,
+	0x17, 0x37, 0x71, 0x71, 0x10, 0xb4, 0xe2, 0xe2, 0x22, 0x67, 0x13, 0x82, 0x90, 0xe4, 0x6a, 0x72,
+	0xa9, 0xf8, 0xdf, 0x0b, 0x69, 0x85, 0x2e, 0xdf, 0xd7, 0xed, 0x1e, 0x77, 0xbf, 0xf7, 0xde, 0xf1,
+	0x5b, 0x8b, 0x68, 0x9d, 0x51, 0xda, 0x4c, 0x84, 0xe8, 0x92, 0x8a, 0x26, 0x65, 0x47, 0x89, 0x30,
+	0x1a, 0x35, 0x75, 0x4a, 0xe3, 0x4f, 0x70, 0x08, 0xfa, 0xc3, 0x1b, 0x02, 0x0d, 0x04, 0x72, 0x8c,
+	0x48, 0x28, 0x2e, 0x67, 0x4e, 0xfe, 0x73, 0x72, 0xc5, 0xc9, 0xa9, 0xbb, 0xb8, 0xda, 0xf0, 0x1d,
+	0xd0, 0x7b, 0x0c, 0xb3, 0x59, 0xf3, 0xcb, 0xcf, 0x1f, 0x96, 0x9c, 0xa7, 0x25, 0x46, 0x08, 0x7e,
+	0x18, 0xc0, 0x9b, 0x8a, 0xd5, 0xac, 0x3d, 0xee, 0xcb, 0x2c, 0x5e, 0xf8, 0x69, 0x1e, 0x4b, 0x9b,
+	0x44, 0x40, 0x39, 0x55, 0x07, 0x35, 0x6b, 0xcf, 0xba, 0x6b, 0xb9, 0xbf, 0x8c, 0x7c, 0x2b, 0xd0,
+	0x6b, 0x61, 0xfa, 0x93, 0xbc, 0x52, 0xf7, 0xdf, 0xbc, 0x19, 0xd0, 0x6f, 0x18, 0x3c, 0xb3, 0xf7,
+	0xc7, 0xe5, 0xc2, 0xa2, 0x83, 0x60, 0x25, 0x46, 0xab, 0xac, 0x09, 0xa5, 0xbe, 0x9a, 0x57, 0x30,
+	0x7e, 0xa5, 0x5d, 0xef, 0xde, 0xad, 0xe4, 0xe7, 0x51, 0xa1, 0x6e, 0xfe, 0x02, 0x00, 0x00, 0xff,
+	0xff, 0x41, 0xce, 0x56, 0x29, 0x7b, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/devtools/resultstore/v2/file_processing_error.pb.go b/googleapis/devtools/resultstore/v2/file_processing_error.pb.go
new file mode 100644
index 0000000..759651f
--- /dev/null
+++ b/googleapis/devtools/resultstore/v2/file_processing_error.pb.go
@@ -0,0 +1,218 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/devtools/resultstore/v2/file_processing_error.proto
+
+package resultstore
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Errors in file post-processing are categorized using this enum.
+type FileProcessingErrorType int32
+
+const (
+	// Type unspecified or not listed here.
+	FileProcessingErrorType_FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED FileProcessingErrorType = 0
+	// A read error occurred trying to read the file.
+	FileProcessingErrorType_GENERIC_READ_ERROR FileProcessingErrorType = 1
+	// There was an error trying to parse the file.
+	FileProcessingErrorType_GENERIC_PARSE_ERROR FileProcessingErrorType = 2
+	// File is exceeds size limit.
+	FileProcessingErrorType_FILE_TOO_LARGE FileProcessingErrorType = 3
+	// The result of parsing the file exceeded size limit.
+	FileProcessingErrorType_OUTPUT_TOO_LARGE FileProcessingErrorType = 4
+	// Read access to the file was denied by file system.
+	FileProcessingErrorType_ACCESS_DENIED FileProcessingErrorType = 5
+	// Deadline exceeded trying to read the file.
+	FileProcessingErrorType_DEADLINE_EXCEEDED FileProcessingErrorType = 6
+	// File not found.
+	FileProcessingErrorType_NOT_FOUND FileProcessingErrorType = 7
+	// File is empty but was expected to have content.
+	FileProcessingErrorType_FILE_EMPTY FileProcessingErrorType = 8
+)
+
+var FileProcessingErrorType_name = map[int32]string{
+	0: "FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED",
+	1: "GENERIC_READ_ERROR",
+	2: "GENERIC_PARSE_ERROR",
+	3: "FILE_TOO_LARGE",
+	4: "OUTPUT_TOO_LARGE",
+	5: "ACCESS_DENIED",
+	6: "DEADLINE_EXCEEDED",
+	7: "NOT_FOUND",
+	8: "FILE_EMPTY",
+}
+
+var FileProcessingErrorType_value = map[string]int32{
+	"FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED": 0,
+	"GENERIC_READ_ERROR":                     1,
+	"GENERIC_PARSE_ERROR":                    2,
+	"FILE_TOO_LARGE":                         3,
+	"OUTPUT_TOO_LARGE":                       4,
+	"ACCESS_DENIED":                          5,
+	"DEADLINE_EXCEEDED":                      6,
+	"NOT_FOUND":                              7,
+	"FILE_EMPTY":                             8,
+}
+
+func (x FileProcessingErrorType) String() string {
+	return proto.EnumName(FileProcessingErrorType_name, int32(x))
+}
+
+func (FileProcessingErrorType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_09a61cbdcc9fd6e0, []int{0}
+}
+
+// Stores errors reading or parsing a file during post-processing.
+type FileProcessingErrors struct {
+	// The uid of the File being read or parsed.
+	FileUid string `protobuf:"bytes,1,opt,name=file_uid,json=fileUid,proto3" json:"file_uid,omitempty"`
+	// What went wrong.
+	FileProcessingErrors []*FileProcessingError `protobuf:"bytes,3,rep,name=file_processing_errors,json=fileProcessingErrors,proto3" json:"file_processing_errors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
+}
+
+func (m *FileProcessingErrors) Reset()         { *m = FileProcessingErrors{} }
+func (m *FileProcessingErrors) String() string { return proto.CompactTextString(m) }
+func (*FileProcessingErrors) ProtoMessage()    {}
+func (*FileProcessingErrors) Descriptor() ([]byte, []int) {
+	return fileDescriptor_09a61cbdcc9fd6e0, []int{0}
+}
+
+func (m *FileProcessingErrors) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FileProcessingErrors.Unmarshal(m, b)
+}
+func (m *FileProcessingErrors) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FileProcessingErrors.Marshal(b, m, deterministic)
+}
+func (m *FileProcessingErrors) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileProcessingErrors.Merge(m, src)
+}
+func (m *FileProcessingErrors) XXX_Size() int {
+	return xxx_messageInfo_FileProcessingErrors.Size(m)
+}
+func (m *FileProcessingErrors) XXX_DiscardUnknown() {
+	xxx_messageInfo_FileProcessingErrors.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FileProcessingErrors proto.InternalMessageInfo
+
+func (m *FileProcessingErrors) GetFileUid() string {
+	if m != nil {
+		return m.FileUid
+	}
+	return ""
+}
+
+func (m *FileProcessingErrors) GetFileProcessingErrors() []*FileProcessingError {
+	if m != nil {
+		return m.FileProcessingErrors
+	}
+	return nil
+}
+
+// Stores an error reading or parsing a file during post-processing.
+type FileProcessingError struct {
+	// The type of error that occurred.
+	Type FileProcessingErrorType `protobuf:"varint,1,opt,name=type,proto3,enum=google.devtools.resultstore.v2.FileProcessingErrorType" json:"type,omitempty"`
+	// Error message describing the problem.
+	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FileProcessingError) Reset()         { *m = FileProcessingError{} }
+func (m *FileProcessingError) String() string { return proto.CompactTextString(m) }
+func (*FileProcessingError) ProtoMessage()    {}
+func (*FileProcessingError) Descriptor() ([]byte, []int) {
+	return fileDescriptor_09a61cbdcc9fd6e0, []int{1}
+}
+
+func (m *FileProcessingError) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FileProcessingError.Unmarshal(m, b)
+}
+func (m *FileProcessingError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FileProcessingError.Marshal(b, m, deterministic)
+}
+func (m *FileProcessingError) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileProcessingError.Merge(m, src)
+}
+func (m *FileProcessingError) XXX_Size() int {
+	return xxx_messageInfo_FileProcessingError.Size(m)
+}
+func (m *FileProcessingError) XXX_DiscardUnknown() {
+	xxx_messageInfo_FileProcessingError.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FileProcessingError proto.InternalMessageInfo
+
+func (m *FileProcessingError) GetType() FileProcessingErrorType {
+	if m != nil {
+		return m.Type
+	}
+	return FileProcessingErrorType_FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED
+}
+
+func (m *FileProcessingError) GetMessage() string {
+	if m != nil {
+		return m.Message
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterEnum("google.devtools.resultstore.v2.FileProcessingErrorType", FileProcessingErrorType_name, FileProcessingErrorType_value)
+	proto.RegisterType((*FileProcessingErrors)(nil), "google.devtools.resultstore.v2.FileProcessingErrors")
+	proto.RegisterType((*FileProcessingError)(nil), "google.devtools.resultstore.v2.FileProcessingError")
+}
+
+func init() {
+	proto.RegisterFile("google/devtools/resultstore/v2/file_processing_error.proto", fileDescriptor_09a61cbdcc9fd6e0)
+}
+
+var fileDescriptor_09a61cbdcc9fd6e0 = []byte{
+	// 416 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0xcd, 0x6a, 0xdb, 0x40,
+	0x10, 0x80, 0xab, 0x38, 0x8d, 0x93, 0x29, 0x31, 0xca, 0xc4, 0x4d, 0xdc, 0x4b, 0x09, 0x3e, 0x94,
+	0x90, 0x83, 0x04, 0xce, 0xa1, 0xd0, 0x9e, 0x54, 0x69, 0x6c, 0x44, 0x5d, 0x69, 0x59, 0x4b, 0xd0,
+	0xf4, 0xb2, 0xb8, 0xf1, 0x66, 0x11, 0x28, 0x5e, 0x75, 0x57, 0x31, 0x04, 0xfa, 0x28, 0x7d, 0xc1,
+	0xbe, 0x45, 0xb1, 0xec, 0x14, 0x1f, 0xec, 0x16, 0x72, 0x9c, 0x9f, 0x6f, 0xbe, 0xd9, 0x65, 0xe0,
+	0x83, 0xd2, 0x5a, 0x95, 0xd2, 0x9f, 0xc9, 0x45, 0xad, 0x75, 0x69, 0x7d, 0x23, 0xed, 0x43, 0x59,
+	0xdb, 0x5a, 0x1b, 0xe9, 0x2f, 0x06, 0xfe, 0x5d, 0x51, 0x4a, 0x51, 0x19, 0x7d, 0x2b, 0xad, 0x2d,
+	0xe6, 0x4a, 0x48, 0x63, 0xb4, 0xf1, 0x2a, 0xa3, 0x6b, 0x8d, 0x6f, 0x57, 0xac, 0xf7, 0xc4, 0x7a,
+	0x1b, 0xac, 0xb7, 0x18, 0xf4, 0x7f, 0x39, 0xd0, 0x1d, 0x16, 0xa5, 0x64, 0x7f, 0x71, 0x5a, 0xd2,
+	0x16, 0xdf, 0xc0, 0x61, 0x33, 0xf7, 0xa1, 0x98, 0xf5, 0x9c, 0x0b, 0xe7, 0xf2, 0x88, 0xb7, 0x97,
+	0x71, 0x5e, 0xcc, 0xb0, 0x80, 0xb3, 0xad, 0x4a, 0xdb, 0x6b, 0x5d, 0xb4, 0x2e, 0x5f, 0x0d, 0xae,
+	0xbd, 0x7f, 0x4b, 0xbd, 0x2d, 0x42, 0xde, 0xbd, 0xdb, 0xb2, 0x45, 0xff, 0x27, 0x9c, 0x6e, 0x69,
+	0xc6, 0xcf, 0xb0, 0x5f, 0x3f, 0x56, 0xb2, 0x59, 0xac, 0x33, 0x78, 0xff, 0x0c, 0x5f, 0xf6, 0x58,
+	0x49, 0xde, 0x0c, 0xc1, 0x1e, 0xb4, 0xef, 0xa5, 0xb5, 0x53, 0x25, 0x7b, 0x7b, 0xab, 0x87, 0xae,
+	0xc3, 0xab, 0xdf, 0x0e, 0x9c, 0xef, 0x60, 0xf1, 0x0a, 0xde, 0x0d, 0xe3, 0x31, 0x09, 0xc6, 0xd3,
+	0x90, 0x26, 0x93, 0x38, 0x19, 0x09, 0xe2, 0x3c, 0xe5, 0x22, 0xbb, 0x61, 0x24, 0xf2, 0x64, 0xc2,
+	0x28, 0x8c, 0x87, 0x31, 0x45, 0xee, 0x0b, 0x3c, 0x03, 0x1c, 0x51, 0x42, 0x3c, 0x0e, 0x05, 0xa7,
+	0x20, 0x5a, 0x35, 0xba, 0x0e, 0x9e, 0xc3, 0xe9, 0x53, 0x9e, 0x05, 0x7c, 0x42, 0xeb, 0xc2, 0x1e,
+	0x22, 0x74, 0x9a, 0xe1, 0x59, 0x9a, 0x8a, 0x71, 0xc0, 0x47, 0xe4, 0xb6, 0xb0, 0x0b, 0x6e, 0x9a,
+	0x67, 0x2c, 0xcf, 0x36, 0xb2, 0xfb, 0x78, 0x02, 0xc7, 0x41, 0xb8, 0x5c, 0x40, 0x44, 0x94, 0x2c,
+	0x6d, 0x2f, 0xf1, 0x35, 0x9c, 0x44, 0x14, 0x44, 0xe3, 0x38, 0x21, 0x41, 0x5f, 0x43, 0xa2, 0x88,
+	0x22, 0xf7, 0x00, 0x8f, 0xe1, 0x28, 0x49, 0x33, 0x31, 0x4c, 0xf3, 0x24, 0x72, 0xdb, 0xd8, 0x01,
+	0x68, 0x14, 0xf4, 0x85, 0x65, 0x37, 0xee, 0xe1, 0xa7, 0x1f, 0xd0, 0xbf, 0xd5, 0xf7, 0xff, 0xf9,
+	0x49, 0xe6, 0x7c, 0x8b, 0xd7, 0x1d, 0x4a, 0x97, 0xd3, 0xb9, 0xf2, 0xb4, 0x51, 0xbe, 0x92, 0xf3,
+	0xe6, 0xd8, 0xfc, 0x55, 0x69, 0x5a, 0x15, 0x76, 0xd7, 0xad, 0x7e, 0xdc, 0x08, 0xbf, 0x1f, 0x34,
+	0xd4, 0xf5, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x45, 0x58, 0xe8, 0x34, 0xe0, 0x02, 0x00, 0x00,
+}
diff --git a/googleapis/devtools/resultstore/v2/file_set.pb.go b/googleapis/devtools/resultstore/v2/file_set.pb.go
index 84065af..d622bbc 100644
--- a/googleapis/devtools/resultstore/v2/file_set.pb.go
+++ b/googleapis/devtools/resultstore/v2/file_set.pb.go
@@ -21,10 +21,21 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
-// Represents a set of files within an Invocation. Can contain other file sets.
+// This resource represents a set of Files and other (nested) FileSets.
+// A FileSet is a node in the graph, and the file_sets field represents the
+// outgoing edges. A resource may reference various nodes in the graph to
+// represent the transitive closure of all files from those nodes.
+// The FileSets must form a directed acyclic graph. The Upload API is unable to
+// enforce that the graph is acyclic at write time, and if cycles are written,
+// it may cause issues at read time.
+//
+// A FileSet may be referenced by other resources in conjunction with Files. A
+// File is preferred for something that can only be ever referenced by one
+// resource, and a FileSet is preferred if it can be reference by multiple
+// resources.
 type FileSet struct {
 	// The format of this FileSet resource name must be:
-	// invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
+	// invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The resource ID components that identify the file set. They must match the
 	// resource name after proper encoding.
@@ -34,6 +45,7 @@
 	// format must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
 	FileSets []string `protobuf:"bytes,3,rep,name=file_sets,json=fileSets,proto3" json:"file_sets,omitempty"`
 	// Files that are contained within this file set.
+	// The uid field in the file should be unique for the Invocation.
 	Files                []*File  `protobuf:"bytes,4,rep,name=files,proto3" json:"files,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
diff --git a/googleapis/devtools/resultstore/v2/invocation.pb.go b/googleapis/devtools/resultstore/v2/invocation.pb.go
index c765299..d2f3f76 100644
--- a/googleapis/devtools/resultstore/v2/invocation.pb.go
+++ b/googleapis/devtools/resultstore/v2/invocation.pb.go
@@ -47,13 +47,34 @@
 	// The file IDs must be unique within this list. Duplicate file IDs will
 	// result in an error. Files will be returned in lexicographical order by ID.
 	// Use this field to specify build logs, and other invocation level logs.
+	//
+	// Files with the following reserved file IDs cause specific post-processing
+	// or have special handling. These files must be immediately available to
+	// ResultStore for processing when the reference is uploaded.
+	//
+	// build.log: The primary log for the Invocation.
+	// coverage_report.lcov: Aggregate coverage report for the invocation.
 	Files []*File `protobuf:"bytes,8,rep,name=files,proto3" json:"files,omitempty"`
 	// Summary of aggregate coverage across all Actions in this Invocation.
-	// the server populates this for you in the post-processing phase.
-	CoverageSummaries    []*LanguageCoverageSummary `protobuf:"bytes,9,rep,name=coverage_summaries,json=coverageSummaries,proto3" json:"coverage_summaries,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
+	// If missing, this data will be populated by the server from the
+	// coverage_report.lcov file or the union of all ActionCoverages under this
+	// invocation (in that order).
+	CoverageSummaries []*LanguageCoverageSummary `protobuf:"bytes,9,rep,name=coverage_summaries,json=coverageSummaries,proto3" json:"coverage_summaries,omitempty"`
+	// Aggregate code coverage for all build and test Actions within this
+	// Invocation. If missing, this data will be populated by the server
+	// from the coverage_report.lcov file or the union of all ActionCoverages
+	// under this invocation (in that order).
+	AggregateCoverage *AggregateCoverage `protobuf:"bytes,10,opt,name=aggregate_coverage,json=aggregateCoverage,proto3" json:"aggregate_coverage,omitempty"`
+	// NOT IMPLEMENTED.
+	// ResultStore will read and parse Files with reserved IDs listed above. Read
+	// and parse errors for all these Files are reported here.
+	// This is implemented as a map, with one FileProcessingErrors for each file.
+	// Typically produced when parsing Files, but may also be provided directly
+	// by clients.
+	FileProcessingErrors []*FileProcessingErrors `protobuf:"bytes,11,rep,name=file_processing_errors,json=fileProcessingErrors,proto3" json:"file_processing_errors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
 }
 
 func (m *Invocation) Reset()         { *m = Invocation{} }
@@ -144,6 +165,20 @@
 	return nil
 }
 
+func (m *Invocation) GetAggregateCoverage() *AggregateCoverage {
+	if m != nil {
+		return m.AggregateCoverage
+	}
+	return nil
+}
+
+func (m *Invocation) GetFileProcessingErrors() []*FileProcessingErrors {
+	if m != nil {
+		return m.FileProcessingErrors
+	}
+	return nil
+}
+
 // The resource ID components that identify the Invocation.
 type Invocation_Id struct {
 	// The Invocation ID.
@@ -370,8 +405,10 @@
 
 // Attributes that apply to all invocations.
 type InvocationAttributes struct {
-	// The project ID this invocation is associated with. This must be
-	// set in the CreateInvocation call, and can't be changed.
+	// Immutable.
+	// The Cloud Project that owns this invocation (this is different than the
+	// Consumer Cloud Project that calls this API).
+	// This must be set in the CreateInvocation call, and can't be changed.
 	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
 	// The list of users in the command chain.  The first user in this sequence
 	// is the one who instigated the first command in the chain.
@@ -379,11 +416,10 @@
 	// Labels to categorize this invocation.
 	// This is implemented as a set. All labels will be unique. Any duplicate
 	// labels added will be ignored. Labels will be returned in lexicographical
-	// order. Labels should be short, easy to read, and you
-	// shouldn't have more than a handful.
-	// Labels should match regex \w([- \w]*\w)?
-	// Labels should not be used for unique properties such as unique IDs.
-	// Use properties in cases that don't meet these conditions.
+	// order. Labels should be a list of words describing the Invocation. Labels
+	// should be short, easy to read, and you shouldn't have more than a handful.
+	// Labels should not be used for unique properties such as unique IDs. Use
+	// properties in cases that don't meet these conditions.
 	Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"`
 	// This field describes the overall context or purpose of this invocation.
 	// It will be used in the UI to give users more information about
@@ -523,49 +559,54 @@
 }
 
 var fileDescriptor_9a57b6cf1112b76d = []byte{
-	// 697 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x71, 0x6b, 0x13, 0x31,
-	0x14, 0xa7, 0xed, 0xda, 0xad, 0xaf, 0xab, 0x74, 0x71, 0xca, 0x59, 0x50, 0x6a, 0x15, 0xe9, 0x18,
-	0x5e, 0xb5, 0x2a, 0x82, 0xa2, 0xa0, 0x13, 0x59, 0x61, 0xc8, 0xb8, 0x0d, 0x04, 0x41, 0x4a, 0x7a,
-	0x97, 0xc6, 0xe8, 0x35, 0xa9, 0x49, 0xae, 0xb3, 0xdf, 0xc7, 0x0f, 0xe5, 0x57, 0xf0, 0x5b, 0x48,
-	0x72, 0xb9, 0xf6, 0x56, 0xa7, 0xd7, 0xff, 0xf2, 0x7e, 0xf7, 0x7e, 0xbf, 0xbc, 0xbc, 0xfc, 0xf2,
-	0x0e, 0xfa, 0x54, 0x08, 0x1a, 0x93, 0x7e, 0x44, 0xe6, 0x5a, 0x88, 0x58, 0xf5, 0x25, 0x51, 0x49,
-	0xac, 0x95, 0x16, 0x92, 0xf4, 0xe7, 0x83, 0x3e, 0xe3, 0x73, 0x11, 0x62, 0xcd, 0x04, 0xf7, 0x67,
-	0x52, 0x68, 0x81, 0xee, 0xa4, 0x04, 0x3f, 0x23, 0xf8, 0x39, 0x82, 0x3f, 0x1f, 0xb4, 0x0f, 0x0b,
-	0x04, 0x43, 0x31, 0x9d, 0x66, 0x62, 0xed, 0x67, 0x85, 0xc9, 0x73, 0x22, 0x31, 0x25, 0x23, 0x95,
-	0x4c, 0xa7, 0x58, 0x2e, 0x1c, 0xed, 0xa0, 0x80, 0x36, 0x61, 0x31, 0x49, 0x53, 0xbb, 0xbf, 0xaa,
-	0x00, 0xc3, 0xe5, 0x19, 0x10, 0x82, 0x2d, 0x8e, 0xa7, 0xc4, 0x2b, 0x75, 0x4a, 0xbd, 0x7a, 0x60,
-	0xd7, 0xe8, 0x15, 0x94, 0x59, 0xe4, 0x95, 0x3b, 0xa5, 0x5e, 0x63, 0xf0, 0xd0, 0xff, 0xff, 0xf1,
-	0xfc, 0x95, 0x96, 0x3f, 0x8c, 0x82, 0x32, 0x8b, 0xd0, 0x67, 0xd8, 0x53, 0x1a, 0xeb, 0x44, 0x8d,
-	0xb0, 0xd6, 0x92, 0x8d, 0x13, 0x4d, 0x94, 0x57, 0xb1, 0x6a, 0x8f, 0x8a, 0xd4, 0xce, 0x2c, 0xf1,
-	0xcd, 0x92, 0x17, 0xb4, 0xd4, 0x1a, 0x82, 0x5e, 0x43, 0x4d, 0xb3, 0x29, 0xe3, 0xd4, 0xdb, 0xb2,
-	0x9a, 0x0f, 0x8a, 0x34, 0xcf, 0x6d, 0x76, 0xe0, 0x58, 0x88, 0xc1, 0x8d, 0xd5, 0x1d, 0xe6, 0x4b,
-	0xac, 0x5a, 0xb9, 0xa7, 0x9b, 0x1f, 0x38, 0x57, 0xe6, 0x3e, 0xbb, 0x02, 0x45, 0xe7, 0x70, 0xed,
-	0x42, 0xc8, 0x6f, 0x6a, 0x86, 0x43, 0x32, 0x62, 0x7c, 0x22, 0xbc, 0xda, 0x66, 0x4d, 0xfd, 0x98,
-	0xb1, 0x86, 0x7c, 0x22, 0x82, 0xe6, 0x45, 0x3e, 0x44, 0xc7, 0x00, 0x33, 0x29, 0x66, 0x44, 0x6a,
-	0x46, 0x94, 0xb7, 0xdd, 0xa9, 0xf4, 0x1a, 0x83, 0x5e, 0x91, 0xe2, 0x69, 0xca, 0x58, 0x04, 0x39,
-	0x2e, 0x7a, 0x01, 0x55, 0xe3, 0x0c, 0xe5, 0xed, 0x58, 0x91, 0xfb, 0x45, 0x22, 0xef, 0x59, 0x4c,
-	0x82, 0x94, 0x82, 0x26, 0x80, 0xd6, 0xcc, 0x68, 0xaa, 0xa9, 0x5b, 0xa1, 0xe7, 0x45, 0x42, 0x27,
-	0x98, 0xd3, 0x04, 0x53, 0x72, 0xe4, 0x14, 0xce, 0x52, 0x37, 0x07, 0x7b, 0xe1, 0x25, 0x80, 0x11,
-	0xd5, 0x3e, 0x80, 0xf2, 0x30, 0x42, 0xf7, 0xa0, 0x99, 0xbb, 0x34, 0x16, 0x39, 0xbf, 0xee, 0xae,
-	0xc0, 0x61, 0xd4, 0x45, 0xd0, 0x5a, 0x36, 0xee, 0x48, 0x70, 0x4d, 0x7e, 0xe8, 0xee, 0xcf, 0x32,
-	0x34, 0x2f, 0x75, 0xd3, 0xd8, 0x73, 0x75, 0x29, 0x61, 0x9a, 0x66, 0xe5, 0x36, 0xb0, 0xe7, 0xba,
-	0x7c, 0xd0, 0xba, 0x58, 0x43, 0x50, 0x1b, 0x76, 0xbe, 0x08, 0xa5, 0xed, 0xa3, 0xaa, 0xd8, 0x22,
-	0x97, 0x31, 0x3a, 0x4c, 0xb7, 0x66, 0x9c, 0x8e, 0x22, 0x26, 0x49, 0xa8, 0x85, 0x5c, 0x58, 0x17,
-	0xd7, 0x53, 0x21, 0xc6, 0xe9, 0xbb, 0x0c, 0x47, 0xb7, 0x60, 0xc7, 0xd4, 0x30, 0xd2, 0x98, 0x5a,
-	0x6b, 0xd6, 0x83, 0x6d, 0x13, 0x9f, 0x63, 0x8a, 0x4e, 0xa1, 0x69, 0xa6, 0x06, 0xe6, 0xd1, 0x28,
-	0x66, 0x7c, 0x69, 0x82, 0xc3, 0xa2, 0xf2, 0x8f, 0x52, 0xd2, 0x09, 0xe3, 0x24, 0xd8, 0x0d, 0x57,
-	0x81, 0xea, 0x12, 0x68, 0xe4, 0x3e, 0xa2, 0x7d, 0xa8, 0xc6, 0x78, 0x4c, 0x62, 0xd7, 0xe6, 0x34,
-	0x30, 0xb3, 0xc2, 0xc8, 0xda, 0xc9, 0x50, 0x0f, 0xec, 0xda, 0x60, 0x58, 0x52, 0xf3, 0xbe, 0x2b,
-	0x06, 0x33, 0x6b, 0xe4, 0xc1, 0xb6, 0x13, 0x77, 0x87, 0xcb, 0xc2, 0xee, 0xef, 0x12, 0xec, 0x5f,
-	0xf5, 0x7e, 0xd0, 0x6d, 0xeb, 0xe9, 0xaf, 0x24, 0xd4, 0xab, 0xcb, 0xad, 0x3b, 0x64, 0x18, 0x99,
-	0x7a, 0x12, 0x45, 0xa4, 0xf2, 0xca, 0x76, 0x9b, 0x34, 0x40, 0x37, 0xa1, 0x66, 0x0b, 0xcb, 0x76,
-	0x77, 0x11, 0xea, 0x40, 0x23, 0x22, 0x2a, 0x94, 0x6c, 0x66, 0x76, 0x71, 0x35, 0xe4, 0x21, 0x34,
-	0x86, 0xeb, 0x39, 0x3b, 0x39, 0x13, 0x28, 0xaf, 0x66, 0xdb, 0xf8, 0x78, 0xf3, 0x09, 0x90, 0xd9,
-	0x00, 0xb1, 0x75, 0x48, 0x75, 0x8f, 0x61, 0xef, 0xaf, 0x44, 0x74, 0x17, 0x76, 0x23, 0xa6, 0x66,
-	0x31, 0x5e, 0x8c, 0x72, 0x63, 0xb7, 0xe1, 0xb0, 0x0f, 0xc6, 0x24, 0x2d, 0xa8, 0x24, 0x32, 0x6b,
-	0xb2, 0x59, 0xbe, 0xfd, 0x0e, 0xdd, 0x50, 0x4c, 0x0b, 0xaa, 0x3a, 0x2d, 0x7d, 0x1a, 0xba, 0x0c,
-	0x2a, 0x62, 0xcc, 0xa9, 0x2f, 0x24, 0xed, 0x53, 0xc2, 0xed, 0xd8, 0x77, 0x7f, 0x35, 0x3c, 0x63,
-	0xea, 0x5f, 0x3f, 0x89, 0x97, 0xb9, 0x70, 0x5c, 0xb3, 0xac, 0x27, 0x7f, 0x02, 0x00, 0x00, 0xff,
-	0xff, 0xf0, 0x9c, 0x60, 0x5f, 0x0e, 0x07, 0x00, 0x00,
+	// 773 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x71, 0x6b, 0x1a, 0x49,
+	0x14, 0x47, 0x4d, 0x34, 0x3e, 0xe3, 0xa1, 0x73, 0x5e, 0xd8, 0x13, 0xee, 0xf0, 0xbc, 0xe3, 0x30,
+	0x84, 0xac, 0x8d, 0x4d, 0x29, 0xa4, 0xb4, 0x90, 0xa6, 0x2d, 0x11, 0x42, 0x91, 0x4d, 0xa0, 0x50,
+	0x28, 0xdb, 0x71, 0x77, 0x9c, 0x4e, 0xba, 0xee, 0x6c, 0x67, 0x46, 0x53, 0xbf, 0x4f, 0xe9, 0x77,
+	0xeb, 0xb7, 0x28, 0x33, 0xbb, 0xab, 0x1b, 0x6b, 0xbb, 0xfe, 0x37, 0xef, 0xb7, 0xef, 0xf7, 0x7b,
+	0x6f, 0x9e, 0xef, 0xbd, 0x11, 0xfa, 0x94, 0x73, 0x1a, 0x90, 0xbe, 0x4f, 0xe6, 0x8a, 0xf3, 0x40,
+	0xf6, 0x05, 0x91, 0xb3, 0x40, 0x49, 0xc5, 0x05, 0xe9, 0xcf, 0x07, 0x7d, 0x16, 0xce, 0xb9, 0x87,
+	0x15, 0xe3, 0xa1, 0x1d, 0x09, 0xae, 0x38, 0xfa, 0x3b, 0x26, 0xd8, 0x29, 0xc1, 0xce, 0x10, 0xec,
+	0xf9, 0xa0, 0x7d, 0x94, 0x23, 0xe8, 0xf1, 0xe9, 0x34, 0x15, 0x6b, 0x1f, 0xe7, 0x3a, 0xcf, 0x89,
+	0xc0, 0x94, 0x24, 0xee, 0x8f, 0xb6, 0x74, 0x77, 0xe5, 0x6c, 0x3a, 0xc5, 0x62, 0x91, 0xd0, 0x0e,
+	0x73, 0x68, 0x13, 0x16, 0xa4, 0x11, 0xce, 0xb6, 0x70, 0x75, 0x23, 0xc1, 0x3d, 0x22, 0x25, 0x0b,
+	0xa9, 0x4b, 0x84, 0xe0, 0x22, 0xe6, 0x76, 0xbf, 0x56, 0x00, 0x86, 0xcb, 0x72, 0x21, 0x04, 0x3b,
+	0x21, 0x9e, 0x12, 0xab, 0xd0, 0x29, 0xf4, 0xaa, 0x8e, 0x39, 0xa3, 0xa7, 0x50, 0x64, 0xbe, 0x55,
+	0xec, 0x14, 0x7a, 0xb5, 0xc1, 0xb1, 0xfd, 0xeb, 0x4a, 0xda, 0x2b, 0x2d, 0x7b, 0xe8, 0x3b, 0x45,
+	0xe6, 0xa3, 0x77, 0xd0, 0x94, 0x0a, 0xab, 0x99, 0x74, 0xb1, 0x52, 0x82, 0x8d, 0x67, 0x8a, 0x48,
+	0xab, 0x64, 0xd4, 0x1e, 0xe4, 0xa9, 0x5d, 0x1b, 0xe2, 0xf9, 0x92, 0xe7, 0x34, 0xe4, 0x1a, 0x82,
+	0x9e, 0x41, 0x59, 0xb1, 0x29, 0x0b, 0xa9, 0xb5, 0x63, 0x34, 0xff, 0xcf, 0xd3, 0xbc, 0x31, 0xde,
+	0x4e, 0xc2, 0x42, 0x0c, 0xfe, 0x58, 0xb5, 0x4b, 0x36, 0xc5, 0x5d, 0x23, 0x77, 0xba, 0xfd, 0x85,
+	0x33, 0x69, 0xb6, 0xd8, 0x06, 0x14, 0xdd, 0xc0, 0x6f, 0x77, 0x5c, 0x7c, 0x94, 0x11, 0xf6, 0x88,
+	0xcb, 0xc2, 0x09, 0xb7, 0xca, 0xdb, 0x15, 0xf5, 0x4d, 0xca, 0x1a, 0x86, 0x13, 0xee, 0xd4, 0xef,
+	0xb2, 0x26, 0xba, 0x04, 0x88, 0x04, 0x8f, 0x88, 0x50, 0x8c, 0x48, 0xab, 0xd2, 0x29, 0xf5, 0x6a,
+	0x83, 0x5e, 0x9e, 0xe2, 0x28, 0x66, 0x2c, 0x9c, 0x0c, 0x17, 0x9d, 0xc1, 0xae, 0x6e, 0x15, 0x69,
+	0xed, 0x19, 0x91, 0xff, 0xf2, 0x44, 0x5e, 0xb1, 0x80, 0x38, 0x31, 0x05, 0x4d, 0x00, 0xad, 0x35,
+	0xb2, 0xce, 0xa6, 0x6a, 0x84, 0x1e, 0xe7, 0x09, 0x5d, 0xe1, 0x90, 0xce, 0x30, 0x25, 0x17, 0x89,
+	0xc2, 0x75, 0x3c, 0x09, 0x4e, 0xd3, 0xbb, 0x07, 0xe8, 0x1c, 0xdf, 0x03, 0xc2, 0x94, 0x0a, 0x42,
+	0xb1, 0x22, 0x6e, 0xfa, 0xd9, 0x02, 0x53, 0xc7, 0x93, 0xbc, 0x38, 0xe7, 0x29, 0x33, 0x0d, 0xe4,
+	0x34, 0xf1, 0x3a, 0x84, 0x6e, 0xe1, 0x60, 0xe3, 0xc0, 0x48, 0xab, 0x66, 0x6e, 0x73, 0xba, 0x4d,
+	0x59, 0x46, 0x4b, 0xf2, 0x4b, 0xc3, 0x75, 0x5a, 0x93, 0x0d, 0x68, 0xfb, 0x10, 0x8a, 0x43, 0x1f,
+	0xfd, 0x0b, 0xf5, 0x4c, 0x0b, 0x32, 0x3f, 0x99, 0xbe, 0xfd, 0x15, 0x38, 0xf4, 0xbb, 0x08, 0x1a,
+	0xcb, 0x36, 0xb8, 0xe0, 0xa1, 0x22, 0x9f, 0x55, 0xf7, 0x4b, 0x11, 0xea, 0xf7, 0x7a, 0x43, 0x0f,
+	0xdb, 0xaa, 0xc5, 0xbc, 0xd8, 0xcd, 0xc8, 0x6d, 0x31, 0x6c, 0xeb, 0xf2, 0x4e, 0xe3, 0x6e, 0x0d,
+	0x41, 0x6d, 0xd8, 0xfb, 0xc0, 0xa5, 0x32, 0x2b, 0xa2, 0x64, 0x92, 0x5c, 0xda, 0xe8, 0x28, 0x0e,
+	0xad, 0xeb, 0xe5, 0x33, 0x41, 0x3c, 0xc5, 0xc5, 0xc2, 0xcc, 0x64, 0x35, 0x16, 0x62, 0x21, 0x7d,
+	0x91, 0xe2, 0xe8, 0x4f, 0xd8, 0xd3, 0x39, 0xb8, 0x0a, 0x53, 0x33, 0x68, 0x55, 0xa7, 0xa2, 0xed,
+	0x1b, 0x4c, 0xd1, 0x08, 0xea, 0x7a, 0xdd, 0xe2, 0xd0, 0x77, 0x03, 0x16, 0x2e, 0x5b, 0xfa, 0x28,
+	0x2f, 0xfd, 0x8b, 0x98, 0x74, 0xc5, 0x42, 0xe2, 0xec, 0x7b, 0x2b, 0x43, 0x76, 0x09, 0xd4, 0x32,
+	0x1f, 0x51, 0x0b, 0x76, 0x03, 0x3c, 0x26, 0x41, 0x52, 0xe6, 0xd8, 0xd0, 0x9b, 0x4f, 0xcb, 0x9a,
+	0x3d, 0x57, 0x75, 0xcc, 0x59, 0x63, 0x58, 0x50, 0xbd, 0xad, 0x4a, 0x1a, 0xd3, 0x67, 0x64, 0x41,
+	0x25, 0x11, 0x4f, 0x2e, 0x97, 0x9a, 0xdd, 0x6f, 0x05, 0x68, 0x6d, 0xda, 0x06, 0xe8, 0x2f, 0x33,
+	0xa1, 0xb7, 0xc4, 0x53, 0xab, 0x1f, 0xb7, 0x9a, 0x20, 0x43, 0x5f, 0xe7, 0x33, 0x93, 0x44, 0x48,
+	0xab, 0x68, 0xc2, 0xc4, 0x06, 0x3a, 0x80, 0xb2, 0x49, 0x2c, 0x8d, 0x9e, 0x58, 0xa8, 0x03, 0x35,
+	0x9f, 0x48, 0x4f, 0xb0, 0x48, 0x47, 0x49, 0x72, 0xc8, 0x42, 0x68, 0x0c, 0xbf, 0x67, 0xda, 0x29,
+	0x69, 0x02, 0x69, 0x95, 0x4d, 0x19, 0x4f, 0xb6, 0xdf, 0x67, 0x69, 0x1b, 0x20, 0xb6, 0x0e, 0xc9,
+	0xee, 0x25, 0x34, 0x7f, 0x70, 0x44, 0xff, 0xc0, 0xbe, 0xcf, 0x64, 0x14, 0xe0, 0x85, 0x9b, 0x79,
+	0x44, 0x6a, 0x09, 0xf6, 0x5a, 0x37, 0x49, 0x03, 0x4a, 0x33, 0x91, 0x16, 0x59, 0x1f, 0x9f, 0x7f,
+	0x82, 0xae, 0xc7, 0xa7, 0x39, 0x59, 0x8d, 0x0a, 0x6f, 0x87, 0x89, 0x07, 0xe5, 0x01, 0x0e, 0xa9,
+	0xcd, 0x05, 0xed, 0x53, 0x12, 0x9a, 0x47, 0x2c, 0xf9, 0x3b, 0x80, 0x23, 0x26, 0x7f, 0xf6, 0x06,
+	0x3e, 0xc9, 0x98, 0xe3, 0xb2, 0x61, 0x3d, 0xfc, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x10, 0xbe, 0x01,
+	0x00, 0x47, 0x08, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/resultstore/v2/resultstore_download.pb.go b/googleapis/devtools/resultstore/v2/resultstore_download.pb.go
index 93dd563..5fc4afa 100644
--- a/googleapis/devtools/resultstore/v2/resultstore_download.pb.go
+++ b/googleapis/devtools/resultstore/v2/resultstore_download.pb.go
@@ -79,9 +79,31 @@
 	//	*SearchInvocationsRequest_Offset
 	PageStart isSearchInvocationsRequest_PageStart `protobuf_oneof:"page_start"`
 	// A filtering query string.
+	//
+	// Only a limited number of fields and operators are supported. Not every
+	// field supports every operator.
+	//
+	// Fields that support equals ("=") restrictions:
+	//
+	// name
+	// status_attributes.status
+	// workspace_info.hostname
+	//
+	// Fields that support contains (":") restrictions:
+	//
+	// invocation_attributes.users
+	// invocation_attributes.labels
+	//
+	// Fields that support comparison ("<", "<=", ">", ">=") restrictions;
+	//
+	// timing.start_time
 	Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"`
 	// The project id to search under.
-	ProjectId            string   `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// If true, all equals or contains restrictions on string fields in query will
+	// require exact match. Otherwise, a string field restriction may ignore case
+	// and punctuation.
+	ExactMatch           bool     `protobuf:"varint,7,opt,name=exact_match,json=exactMatch,proto3" json:"exact_match,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -170,6 +192,13 @@
 	return ""
 }
 
+func (m *SearchInvocationsRequest) GetExactMatch() bool {
+	if m != nil {
+		return m.ExactMatch
+	}
+	return false
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*SearchInvocationsRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -230,10 +259,53 @@
 	return ""
 }
 
+// Request passed into GetInvocationDownloadMetadata
+type GetInvocationDownloadMetadataRequest struct {
+	// The name of the download metadata to retrieve. It must match this format:
+	// invocations/${INVOCATION_ID}/downloadMetadata
+	// where INVOCATION_ID must be an RFC 4122-compliant random UUID.
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetInvocationDownloadMetadataRequest) Reset()         { *m = GetInvocationDownloadMetadataRequest{} }
+func (m *GetInvocationDownloadMetadataRequest) String() string { return proto.CompactTextString(m) }
+func (*GetInvocationDownloadMetadataRequest) ProtoMessage()    {}
+func (*GetInvocationDownloadMetadataRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_466641838cdba1d1, []int{3}
+}
+
+func (m *GetInvocationDownloadMetadataRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetInvocationDownloadMetadataRequest.Unmarshal(m, b)
+}
+func (m *GetInvocationDownloadMetadataRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetInvocationDownloadMetadataRequest.Marshal(b, m, deterministic)
+}
+func (m *GetInvocationDownloadMetadataRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetInvocationDownloadMetadataRequest.Merge(m, src)
+}
+func (m *GetInvocationDownloadMetadataRequest) XXX_Size() int {
+	return xxx_messageInfo_GetInvocationDownloadMetadataRequest.Size(m)
+}
+func (m *GetInvocationDownloadMetadataRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetInvocationDownloadMetadataRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetInvocationDownloadMetadataRequest proto.InternalMessageInfo
+
+func (m *GetInvocationDownloadMetadataRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
 // Request passed into GetConfiguration
 type GetConfigurationRequest struct {
 	// The name of the configuration to retrieve. It must match this format:
-	// invocations/${INVOCATION_ID}/configs/${CONFIGURATION_ID}
+	// invocations/${INVOCATION_ID}/configs/${url_encode(CONFIGURATION_ID)}
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -244,7 +316,7 @@
 func (m *GetConfigurationRequest) String() string { return proto.CompactTextString(m) }
 func (*GetConfigurationRequest) ProtoMessage()    {}
 func (*GetConfigurationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{3}
+	return fileDescriptor_466641838cdba1d1, []int{4}
 }
 
 func (m *GetConfigurationRequest) XXX_Unmarshal(b []byte) error {
@@ -285,17 +357,21 @@
 	// Types that are valid to be assigned to PageStart:
 	//	*ListConfigurationsRequest_PageToken
 	//	*ListConfigurationsRequest_Offset
-	PageStart            isListConfigurationsRequest_PageStart `protobuf_oneof:"page_start"`
-	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
-	XXX_unrecognized     []byte                                `json:"-"`
-	XXX_sizecache        int32                                 `json:"-"`
+	PageStart isListConfigurationsRequest_PageStart `protobuf_oneof:"page_start"`
+	// A filter to return only resources that match it.
+	// Any fields used in the filter must be also specified in the field mask.
+	// May cause pages with 0 results and a next_page_token to be returned.
+	Filter               string   `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *ListConfigurationsRequest) Reset()         { *m = ListConfigurationsRequest{} }
 func (m *ListConfigurationsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListConfigurationsRequest) ProtoMessage()    {}
 func (*ListConfigurationsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{4}
+	return fileDescriptor_466641838cdba1d1, []int{5}
 }
 
 func (m *ListConfigurationsRequest) XXX_Unmarshal(b []byte) error {
@@ -367,6 +443,13 @@
 	return 0
 }
 
+func (m *ListConfigurationsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*ListConfigurationsRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -392,7 +475,7 @@
 func (m *ListConfigurationsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListConfigurationsResponse) ProtoMessage()    {}
 func (*ListConfigurationsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{5}
+	return fileDescriptor_466641838cdba1d1, []int{6}
 }
 
 func (m *ListConfigurationsResponse) XXX_Unmarshal(b []byte) error {
@@ -430,7 +513,7 @@
 // Request passed into GetTarget
 type GetTargetRequest struct {
 	// The name of the target to retrieve. It must match this format:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -441,7 +524,7 @@
 func (m *GetTargetRequest) String() string { return proto.CompactTextString(m) }
 func (*GetTargetRequest) ProtoMessage()    {}
 func (*GetTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{6}
+	return fileDescriptor_466641838cdba1d1, []int{7}
 }
 
 func (m *GetTargetRequest) XXX_Unmarshal(b []byte) error {
@@ -482,17 +565,21 @@
 	// Types that are valid to be assigned to PageStart:
 	//	*ListTargetsRequest_PageToken
 	//	*ListTargetsRequest_Offset
-	PageStart            isListTargetsRequest_PageStart `protobuf_oneof:"page_start"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
+	PageStart isListTargetsRequest_PageStart `protobuf_oneof:"page_start"`
+	// A filter to return only resources that match it.
+	// Any fields used in the filter must be also specified in the field mask.
+	// May cause pages with 0 results and a next_page_token to be returned.
+	Filter               string   `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *ListTargetsRequest) Reset()         { *m = ListTargetsRequest{} }
 func (m *ListTargetsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListTargetsRequest) ProtoMessage()    {}
 func (*ListTargetsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{7}
+	return fileDescriptor_466641838cdba1d1, []int{8}
 }
 
 func (m *ListTargetsRequest) XXX_Unmarshal(b []byte) error {
@@ -564,6 +651,13 @@
 	return 0
 }
 
+func (m *ListTargetsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*ListTargetsRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -589,7 +683,7 @@
 func (m *ListTargetsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListTargetsResponse) ProtoMessage()    {}
 func (*ListTargetsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{8}
+	return fileDescriptor_466641838cdba1d1, []int{9}
 }
 
 func (m *ListTargetsResponse) XXX_Unmarshal(b []byte) error {
@@ -627,7 +721,7 @@
 // Request passed into GetConfiguredTarget
 type GetConfiguredTargetRequest struct {
 	// The name of the configured target to retrieve. It must match this format:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIGURATION_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)}
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -638,7 +732,7 @@
 func (m *GetConfiguredTargetRequest) String() string { return proto.CompactTextString(m) }
 func (*GetConfiguredTargetRequest) ProtoMessage()    {}
 func (*GetConfiguredTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{9}
+	return fileDescriptor_466641838cdba1d1, []int{10}
 }
 
 func (m *GetConfiguredTargetRequest) XXX_Unmarshal(b []byte) error {
@@ -670,7 +764,8 @@
 type ListConfiguredTargetsRequest struct {
 	// The invocation and target name of the configured targets to retrieve.
 	// It must match this format:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
+	// Supports '-' for ${TARGET_ID} meaning all targets.
 	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
 	// The maximum number of items to return.
 	// Zero means all, but may be capped by the server.
@@ -680,17 +775,21 @@
 	// Types that are valid to be assigned to PageStart:
 	//	*ListConfiguredTargetsRequest_PageToken
 	//	*ListConfiguredTargetsRequest_Offset
-	PageStart            isListConfiguredTargetsRequest_PageStart `protobuf_oneof:"page_start"`
-	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
-	XXX_unrecognized     []byte                                   `json:"-"`
-	XXX_sizecache        int32                                    `json:"-"`
+	PageStart isListConfiguredTargetsRequest_PageStart `protobuf_oneof:"page_start"`
+	// A filter to return only resources that match it.
+	// Any fields used in the filter must be also specified in the field mask.
+	// May cause pages with 0 results and a next_page_token to be returned.
+	Filter               string   `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *ListConfiguredTargetsRequest) Reset()         { *m = ListConfiguredTargetsRequest{} }
 func (m *ListConfiguredTargetsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListConfiguredTargetsRequest) ProtoMessage()    {}
 func (*ListConfiguredTargetsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{10}
+	return fileDescriptor_466641838cdba1d1, []int{11}
 }
 
 func (m *ListConfiguredTargetsRequest) XXX_Unmarshal(b []byte) error {
@@ -762,6 +861,13 @@
 	return 0
 }
 
+func (m *ListConfiguredTargetsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*ListConfiguredTargetsRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -787,7 +893,7 @@
 func (m *ListConfiguredTargetsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListConfiguredTargetsResponse) ProtoMessage()    {}
 func (*ListConfiguredTargetsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{11}
+	return fileDescriptor_466641838cdba1d1, []int{12}
 }
 
 func (m *ListConfiguredTargetsResponse) XXX_Unmarshal(b []byte) error {
@@ -825,7 +931,7 @@
 // Request passed into GetAction
 type GetActionRequest struct {
 	// The name of the action to retrieve. It must match this format:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIGURATION_ID}/actions/${ACTION_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)}/actions/${url_encode(ACTION_ID)}
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -836,7 +942,7 @@
 func (m *GetActionRequest) String() string { return proto.CompactTextString(m) }
 func (*GetActionRequest) ProtoMessage()    {}
 func (*GetActionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{12}
+	return fileDescriptor_466641838cdba1d1, []int{13}
 }
 
 func (m *GetActionRequest) XXX_Unmarshal(b []byte) error {
@@ -868,7 +974,11 @@
 type ListActionsRequest struct {
 	// The invocation, target, and configuration name of the action to retrieve.
 	// It must match this format:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIGURATION_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)}
+	// Supports '-' for ${CONFIGURATION_ID} to mean all Actions for all
+	// Configurations for a Target, or '-' for ${TARGET_ID} and
+	// ${CONFIGURATION_ID} to mean all Actions for all Configurations and all
+	// Targets. Does not support ${TARGET_ID} '-' with a specified configuration.
 	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
 	// The maximum number of items to return.
 	// Zero means all, but may be capped by the server.
@@ -878,17 +988,21 @@
 	// Types that are valid to be assigned to PageStart:
 	//	*ListActionsRequest_PageToken
 	//	*ListActionsRequest_Offset
-	PageStart            isListActionsRequest_PageStart `protobuf_oneof:"page_start"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
+	PageStart isListActionsRequest_PageStart `protobuf_oneof:"page_start"`
+	// A filter to return only resources that match it.
+	// Any fields used in the filter must be also specified in the field mask.
+	// May cause pages with 0 results and a next_page_token to be returned.
+	Filter               string   `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *ListActionsRequest) Reset()         { *m = ListActionsRequest{} }
 func (m *ListActionsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListActionsRequest) ProtoMessage()    {}
 func (*ListActionsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{13}
+	return fileDescriptor_466641838cdba1d1, []int{14}
 }
 
 func (m *ListActionsRequest) XXX_Unmarshal(b []byte) error {
@@ -960,6 +1074,13 @@
 	return 0
 }
 
+func (m *ListActionsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*ListActionsRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -985,7 +1106,7 @@
 func (m *ListActionsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListActionsResponse) ProtoMessage()    {}
 func (*ListActionsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{14}
+	return fileDescriptor_466641838cdba1d1, []int{15}
 }
 
 func (m *ListActionsResponse) XXX_Unmarshal(b []byte) error {
@@ -1023,7 +1144,7 @@
 // Request passed into GetFileSet
 type GetFileSetRequest struct {
 	// The name of the file set to retrieve. It must match this format:
-	// invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
+	// invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)}
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -1034,7 +1155,7 @@
 func (m *GetFileSetRequest) String() string { return proto.CompactTextString(m) }
 func (*GetFileSetRequest) ProtoMessage()    {}
 func (*GetFileSetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{15}
+	return fileDescriptor_466641838cdba1d1, []int{16}
 }
 
 func (m *GetFileSetRequest) XXX_Unmarshal(b []byte) error {
@@ -1075,17 +1196,21 @@
 	// Types that are valid to be assigned to PageStart:
 	//	*ListFileSetsRequest_PageToken
 	//	*ListFileSetsRequest_Offset
-	PageStart            isListFileSetsRequest_PageStart `protobuf_oneof:"page_start"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	PageStart isListFileSetsRequest_PageStart `protobuf_oneof:"page_start"`
+	// A filter to return only resources that match it.
+	// Any fields used in the filter must be also specified in the field mask.
+	// May cause pages with 0 results and a next_page_token to be returned.
+	Filter               string   `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *ListFileSetsRequest) Reset()         { *m = ListFileSetsRequest{} }
 func (m *ListFileSetsRequest) String() string { return proto.CompactTextString(m) }
 func (*ListFileSetsRequest) ProtoMessage()    {}
 func (*ListFileSetsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{16}
+	return fileDescriptor_466641838cdba1d1, []int{17}
 }
 
 func (m *ListFileSetsRequest) XXX_Unmarshal(b []byte) error {
@@ -1157,6 +1282,13 @@
 	return 0
 }
 
+func (m *ListFileSetsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*ListFileSetsRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -1182,7 +1314,7 @@
 func (m *ListFileSetsResponse) String() string { return proto.CompactTextString(m) }
 func (*ListFileSetsResponse) ProtoMessage()    {}
 func (*ListFileSetsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_466641838cdba1d1, []int{17}
+	return fileDescriptor_466641838cdba1d1, []int{18}
 }
 
 func (m *ListFileSetsResponse) XXX_Unmarshal(b []byte) error {
@@ -1217,10 +1349,175 @@
 	return ""
 }
 
+// Request passed into TraverseFileSets
+type TraverseFileSetsRequest struct {
+	// The name of the resource to traverse.
+	// It must match one of the following formats:
+	//
+	// invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)}
+	// This returns the transitive closure of FileSets referenced by the given
+	// FileSet, including itself.
+	//
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${Curl_encode(CONFIGURATION_ID)}/actions/${url_encode(ACTION_ID)}
+	// This returns the transitive closure of FileSets referenced by the given
+	// Action. If ${ACTION_ID} is "-", this returns the transitive closure of
+	// FileSets referenced by all Actions under the given ConfiguredTarget.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The maximum number of items to return.
+	// Zero means all, but may be capped by the server.
+	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+	// Options for pagination.
+	//
+	// Types that are valid to be assigned to PageStart:
+	//	*TraverseFileSetsRequest_PageToken
+	//	*TraverseFileSetsRequest_Offset
+	PageStart            isTraverseFileSetsRequest_PageStart `protobuf_oneof:"page_start"`
+	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
+	XXX_unrecognized     []byte                              `json:"-"`
+	XXX_sizecache        int32                               `json:"-"`
+}
+
+func (m *TraverseFileSetsRequest) Reset()         { *m = TraverseFileSetsRequest{} }
+func (m *TraverseFileSetsRequest) String() string { return proto.CompactTextString(m) }
+func (*TraverseFileSetsRequest) ProtoMessage()    {}
+func (*TraverseFileSetsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_466641838cdba1d1, []int{19}
+}
+
+func (m *TraverseFileSetsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TraverseFileSetsRequest.Unmarshal(m, b)
+}
+func (m *TraverseFileSetsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TraverseFileSetsRequest.Marshal(b, m, deterministic)
+}
+func (m *TraverseFileSetsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TraverseFileSetsRequest.Merge(m, src)
+}
+func (m *TraverseFileSetsRequest) XXX_Size() int {
+	return xxx_messageInfo_TraverseFileSetsRequest.Size(m)
+}
+func (m *TraverseFileSetsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_TraverseFileSetsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TraverseFileSetsRequest proto.InternalMessageInfo
+
+func (m *TraverseFileSetsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *TraverseFileSetsRequest) GetPageSize() int32 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+type isTraverseFileSetsRequest_PageStart interface {
+	isTraverseFileSetsRequest_PageStart()
+}
+
+type TraverseFileSetsRequest_PageToken struct {
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3,oneof"`
+}
+
+type TraverseFileSetsRequest_Offset struct {
+	Offset int64 `protobuf:"varint,4,opt,name=offset,proto3,oneof"`
+}
+
+func (*TraverseFileSetsRequest_PageToken) isTraverseFileSetsRequest_PageStart() {}
+
+func (*TraverseFileSetsRequest_Offset) isTraverseFileSetsRequest_PageStart() {}
+
+func (m *TraverseFileSetsRequest) GetPageStart() isTraverseFileSetsRequest_PageStart {
+	if m != nil {
+		return m.PageStart
+	}
+	return nil
+}
+
+func (m *TraverseFileSetsRequest) GetPageToken() string {
+	if x, ok := m.GetPageStart().(*TraverseFileSetsRequest_PageToken); ok {
+		return x.PageToken
+	}
+	return ""
+}
+
+func (m *TraverseFileSetsRequest) GetOffset() int64 {
+	if x, ok := m.GetPageStart().(*TraverseFileSetsRequest_Offset); ok {
+		return x.Offset
+	}
+	return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*TraverseFileSetsRequest) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*TraverseFileSetsRequest_PageToken)(nil),
+		(*TraverseFileSetsRequest_Offset)(nil),
+	}
+}
+
+// Response from calling TraverseFileSets
+type TraverseFileSetsResponse struct {
+	// File sets matching the request.
+	// The order in which results are returned is undefined, but stable.
+	FileSets []*FileSet `protobuf:"bytes,1,rep,name=file_sets,json=fileSets,proto3" json:"file_sets,omitempty"`
+	// Token to retrieve the next page of results, or empty if there are no
+	// more results in the list.
+	NextPageToken        string   `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TraverseFileSetsResponse) Reset()         { *m = TraverseFileSetsResponse{} }
+func (m *TraverseFileSetsResponse) String() string { return proto.CompactTextString(m) }
+func (*TraverseFileSetsResponse) ProtoMessage()    {}
+func (*TraverseFileSetsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_466641838cdba1d1, []int{20}
+}
+
+func (m *TraverseFileSetsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TraverseFileSetsResponse.Unmarshal(m, b)
+}
+func (m *TraverseFileSetsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TraverseFileSetsResponse.Marshal(b, m, deterministic)
+}
+func (m *TraverseFileSetsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TraverseFileSetsResponse.Merge(m, src)
+}
+func (m *TraverseFileSetsResponse) XXX_Size() int {
+	return xxx_messageInfo_TraverseFileSetsResponse.Size(m)
+}
+func (m *TraverseFileSetsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_TraverseFileSetsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TraverseFileSetsResponse proto.InternalMessageInfo
+
+func (m *TraverseFileSetsResponse) GetFileSets() []*FileSet {
+	if m != nil {
+		return m.FileSets
+	}
+	return nil
+}
+
+func (m *TraverseFileSetsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterType((*GetInvocationRequest)(nil), "google.devtools.resultstore.v2.GetInvocationRequest")
 	proto.RegisterType((*SearchInvocationsRequest)(nil), "google.devtools.resultstore.v2.SearchInvocationsRequest")
 	proto.RegisterType((*SearchInvocationsResponse)(nil), "google.devtools.resultstore.v2.SearchInvocationsResponse")
+	proto.RegisterType((*GetInvocationDownloadMetadataRequest)(nil), "google.devtools.resultstore.v2.GetInvocationDownloadMetadataRequest")
 	proto.RegisterType((*GetConfigurationRequest)(nil), "google.devtools.resultstore.v2.GetConfigurationRequest")
 	proto.RegisterType((*ListConfigurationsRequest)(nil), "google.devtools.resultstore.v2.ListConfigurationsRequest")
 	proto.RegisterType((*ListConfigurationsResponse)(nil), "google.devtools.resultstore.v2.ListConfigurationsResponse")
@@ -1236,6 +1533,8 @@
 	proto.RegisterType((*GetFileSetRequest)(nil), "google.devtools.resultstore.v2.GetFileSetRequest")
 	proto.RegisterType((*ListFileSetsRequest)(nil), "google.devtools.resultstore.v2.ListFileSetsRequest")
 	proto.RegisterType((*ListFileSetsResponse)(nil), "google.devtools.resultstore.v2.ListFileSetsResponse")
+	proto.RegisterType((*TraverseFileSetsRequest)(nil), "google.devtools.resultstore.v2.TraverseFileSetsRequest")
+	proto.RegisterType((*TraverseFileSetsResponse)(nil), "google.devtools.resultstore.v2.TraverseFileSetsResponse")
 }
 
 func init() {
@@ -1243,73 +1542,86 @@
 }
 
 var fileDescriptor_466641838cdba1d1 = []byte{
-	// 1043 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x98, 0xcf, 0x6f, 0xdc, 0x44,
-	0x14, 0xc7, 0x3b, 0xf9, 0x45, 0xf7, 0xa5, 0x85, 0xe6, 0x25, 0x14, 0xd7, 0xb4, 0x25, 0x32, 0x90,
-	0x46, 0xa9, 0xb2, 0x1b, 0xb6, 0x55, 0x69, 0x03, 0x45, 0x25, 0x54, 0x24, 0x91, 0x7a, 0xa8, 0x36,
-	0xe5, 0xc2, 0x65, 0x65, 0x76, 0x67, 0x8d, 0x61, 0xe3, 0xd9, 0x78, 0x26, 0x01, 0x8a, 0x10, 0x12,
-	0xe2, 0x1f, 0x28, 0x11, 0x07, 0x04, 0x27, 0x0e, 0x55, 0x6e, 0x9c, 0x10, 0x57, 0x24, 0xc4, 0x5f,
-	0x00, 0x7f, 0x02, 0x7f, 0x08, 0xf2, 0x78, 0x66, 0xe3, 0x71, 0xbc, 0xeb, 0x71, 0x4e, 0xb9, 0xc5,
-	0xde, 0xf7, 0x9d, 0x79, 0xef, 0x33, 0x5f, 0xfb, 0xbd, 0x18, 0xee, 0x05, 0x8c, 0x05, 0x7d, 0xda,
-	0xe8, 0xd2, 0x03, 0xc1, 0x58, 0x9f, 0x37, 0x62, 0xca, 0xf7, 0xfb, 0x82, 0x0b, 0x16, 0xd3, 0xc6,
-	0x41, 0x33, 0x7b, 0xd9, 0xee, 0xb2, 0x2f, 0xa2, 0x3e, 0xf3, 0xbb, 0xf5, 0x41, 0xcc, 0x04, 0xc3,
-	0xeb, 0xa9, 0xb4, 0xae, 0xa5, 0xf5, 0x4c, 0x6c, 0xfd, 0xa0, 0xe9, 0x5e, 0x55, 0x4b, 0xfb, 0x83,
-	0xb0, 0xe1, 0x47, 0x11, 0x13, 0xbe, 0x08, 0x59, 0xc4, 0x53, 0xb5, 0x7b, 0xb3, 0x64, 0x63, 0xbf,
-	0x93, 0x44, 0x5b, 0x06, 0x77, 0xd8, 0xee, 0xee, 0x30, 0xb8, 0x59, 0x1a, 0x1c, 0xf5, 0xc2, 0x60,
-	0x3f, 0xf6, 0x33, 0x1b, 0xdc, 0xb1, 0xd4, 0xd0, 0x6e, 0x5b, 0xf8, 0x71, 0x40, 0x85, 0xd2, 0xad,
-	0x96, 0xe8, 0x7a, 0x61, 0x9f, 0xb6, 0xf9, 0x30, 0xbc, 0x51, 0x12, 0x1e, 0x46, 0x07, 0xac, 0xe3,
-	0x57, 0x28, 0x3c, 0x9b, 0x8c, 0xb7, 0x02, 0x0b, 0x9b, 0x54, 0x6c, 0x0f, 0xd7, 0x68, 0xd1, 0xbd,
-	0x7d, 0xca, 0x05, 0x22, 0x4c, 0x45, 0xfe, 0x2e, 0x75, 0xc8, 0x22, 0x59, 0xae, 0xb5, 0xe4, 0xdf,
-	0xde, 0xef, 0x04, 0x9c, 0x1d, 0xea, 0xc7, 0x9d, 0x4f, 0x8f, 0xe3, 0xb9, 0x16, 0xbc, 0x0a, 0xb5,
-	0x81, 0x1f, 0xd0, 0x36, 0x0f, 0x9f, 0xa6, 0xaa, 0xe9, 0xd6, 0xf9, 0xe4, 0xc6, 0x4e, 0xf8, 0x94,
-	0xe2, 0x6b, 0x00, 0xf2, 0x47, 0xc1, 0x3e, 0xa7, 0x91, 0x33, 0x91, 0xac, 0xb9, 0x75, 0xae, 0x25,
-	0x05, 0x4f, 0x92, 0x5b, 0xe8, 0xc0, 0x0c, 0xeb, 0xf5, 0x38, 0x15, 0xce, 0xe4, 0x22, 0x59, 0x9e,
-	0xdc, 0x3a, 0xd7, 0x52, 0xd7, 0xb8, 0x00, 0xd3, 0x7b, 0xfb, 0x34, 0xfe, 0xca, 0x99, 0x92, 0x99,
-	0xa4, 0x17, 0x78, 0x0d, 0x60, 0x10, 0xb3, 0xcf, 0x68, 0x47, 0xb4, 0xc3, 0xae, 0x33, 0x2d, 0x7f,
-	0xaa, 0xa9, 0x3b, 0xdb, 0xdd, 0x8d, 0x0b, 0x6a, 0x3f, 0x2e, 0xfc, 0x58, 0x78, 0xcf, 0x08, 0x5c,
-	0x29, 0xc8, 0x9b, 0x0f, 0x58, 0xc4, 0x29, 0x3e, 0x82, 0xd9, 0x63, 0x84, 0xdc, 0x21, 0x8b, 0x93,
-	0xcb, 0xb3, 0xcd, 0x95, 0xfa, 0x78, 0xa3, 0xd6, 0x33, 0xc4, 0xb2, 0x72, 0x5c, 0x82, 0x97, 0x22,
-	0xfa, 0xa5, 0x68, 0xe7, 0xcb, 0x6d, 0x5d, 0x4c, 0x6e, 0x3f, 0xd6, 0x05, 0x7b, 0xab, 0xf0, 0xca,
-	0x26, 0x15, 0x1f, 0x64, 0x6d, 0x35, 0x0e, 0xfd, 0x4f, 0x04, 0xae, 0x3c, 0x0a, 0xb9, 0x29, 0x18,
-	0xb2, 0xbf, 0x0c, 0x33, 0x03, 0x3f, 0xa6, 0x91, 0x50, 0x1a, 0x75, 0x65, 0x9e, 0xc9, 0xc4, 0xd8,
-	0x33, 0x99, 0x1c, 0x77, 0x26, 0x53, 0xe6, 0x99, 0xe4, 0xf0, 0xfe, 0x4c, 0xc0, 0x2d, 0xca, 0x4d,
-	0xf1, 0xfd, 0x08, 0x5e, 0x34, 0x9e, 0x1e, 0x8d, 0x78, 0xb5, 0x0c, 0xb1, 0x09, 0x27, 0xb7, 0x88,
-	0x35, 0xe8, 0x25, 0xb8, 0xb4, 0x49, 0xc5, 0x13, 0xe9, 0xf9, 0x71, 0x84, 0x7f, 0x20, 0x80, 0x49,
-	0x15, 0x69, 0xe4, 0x19, 0x41, 0xfb, 0x2d, 0xcc, 0x1b, 0x39, 0x29, 0xa4, 0x0f, 0xe0, 0x85, 0xf4,
-	0x21, 0xd6, 0x2c, 0x97, 0xca, 0x58, 0xaa, 0xfa, 0xb5, 0xcc, 0x9a, 0xde, 0x1a, 0xb8, 0x19, 0x9b,
-	0xd2, 0x6e, 0x39, 0xc7, 0x5f, 0x08, 0x5c, 0xcd, 0xba, 0x41, 0x6b, 0xce, 0x08, 0xd1, 0x23, 0x02,
-	0xd7, 0x46, 0xa4, 0xa7, 0xe0, 0xb6, 0x01, 0x4f, 0xbc, 0xb9, 0x35, 0xe7, 0x35, 0x5b, 0xcf, 0x0e,
-	0x49, 0xcd, 0x75, 0xf2, 0x1b, 0x55, 0x74, 0xee, 0xfb, 0x9d, 0xb2, 0x77, 0x83, 0x76, 0x6e, 0x1a,
-	0x79, 0xb6, 0x9c, 0x3b, 0xcc, 0xe9, 0xd8, 0xb9, 0x69, 0x93, 0xb6, 0x76, 0xae, 0xaa, 0x5f, 0xcb,
-	0xac, 0xe9, 0xdd, 0x80, 0xb9, 0x4d, 0x2a, 0x3e, 0x0c, 0xfb, 0x74, 0x67, 0xbc, 0x61, 0x0f, 0x49,
-	0x9a, 0xaa, 0x0a, 0x3d, 0x23, 0xfc, 0xbe, 0x27, 0xb0, 0x60, 0x66, 0xa5, 0x08, 0x3e, 0x84, 0x9a,
-	0x1e, 0x10, 0x34, 0xc3, 0x1b, 0x65, 0x0c, 0x35, 0x85, 0xf3, 0x3d, 0xb5, 0x9a, 0x2d, 0xc5, 0xe6,
-	0xdf, 0x97, 0x60, 0xbe, 0x25, 0x17, 0xdb, 0x49, 0x16, 0x7b, 0xa8, 0xa6, 0x39, 0x3c, 0x24, 0x70,
-	0xd1, 0x98, 0x1b, 0xf0, 0x76, 0x59, 0x12, 0x45, 0x63, 0x86, 0x5b, 0xa1, 0xcf, 0x7a, 0x8b, 0xdf,
-	0xfd, 0xf3, 0xdf, 0xe1, 0x84, 0x8b, 0x4e, 0x32, 0xc4, 0x7c, 0x9d, 0x9c, 0xdd, 0xfd, 0x4c, 0xe7,
-	0x6d, 0xac, 0x7c, 0x83, 0x47, 0x04, 0xe6, 0x4e, 0x34, 0x7a, 0xbc, 0x5b, 0xb6, 0xc7, 0xa8, 0x99,
-	0xc6, 0xbd, 0x77, 0x0a, 0x65, 0x7a, 0x4c, 0xde, 0x75, 0x99, 0xac, 0x83, 0x97, 0xcd, 0x11, 0x8d,
-	0xaf, 0x73, 0x29, 0xc1, 0xe7, 0x44, 0x3e, 0xdd, 0x46, 0x8f, 0xc3, 0xb7, 0x2d, 0x18, 0x16, 0x8d,
-	0x0c, 0x6e, 0xb5, 0x5e, 0xea, 0xad, 0xc8, 0xe4, 0xde, 0x40, 0x6f, 0x04, 0x49, 0x35, 0xba, 0x4a,
-	0xa6, 0x7f, 0xa8, 0xb7, 0x8b, 0xd9, 0xdd, 0xb1, 0x14, 0xcd, 0xc8, 0x69, 0xc5, 0x5d, 0x3f, 0x8d,
-	0x54, 0x61, 0x35, 0x33, 0x4f, 0x9f, 0xc8, 0x9c, 0x0b, 0x74, 0xf2, 0xf8, 0x8c, 0x40, 0x6d, 0xd8,
-	0xfa, 0x71, 0xcd, 0x82, 0xad, 0xd1, 0xdd, 0x5c, 0xcb, 0xa6, 0x5a, 0x4e, 0x53, 0xf5, 0x90, 0x84,
-	0xe6, 0xaf, 0x04, 0x66, 0x33, 0x1d, 0x1d, 0x9b, 0x36, 0x2c, 0xcc, 0x06, 0xea, 0xde, 0xaa, 0xa4,
-	0xa9, 0x00, 0x4e, 0x0f, 0x07, 0x7f, 0x11, 0x98, 0x2f, 0xe8, 0xfa, 0xb8, 0x5e, 0xc1, 0x9e, 0xb9,
-	0x51, 0xc1, 0xad, 0xdc, 0x39, 0xbd, 0xf7, 0x64, 0xc6, 0x77, 0xf1, 0x4e, 0x29, 0xd6, 0xc6, 0x89,
-	0x1e, 0x9b, 0xa0, 0xfe, 0x97, 0xc0, 0xcb, 0x85, 0x9d, 0x1e, 0xdf, 0xad, 0x62, 0xc0, 0xfc, 0xfc,
-	0xe2, 0xde, 0x3f, 0xa5, 0x5a, 0x1d, 0x84, 0x59, 0x56, 0xd1, 0x41, 0x64, 0xfc, 0x72, 0xb2, 0x32,
-	0xfc, 0x2d, 0x75, 0x75, 0xda, 0x16, 0xad, 0x5c, 0x6d, 0x4c, 0x10, 0xae, 0x65, 0xc3, 0xf5, 0xb6,
-	0x64, 0x9e, 0x1b, 0xf8, 0xe0, 0x54, 0xf8, 0xd5, 0xbf, 0xe2, 0xf2, 0x20, 0xfe, 0x54, 0x9e, 0x57,
-	0xb3, 0x80, 0x9d, 0xe7, 0xcd, 0x61, 0xc6, 0xce, 0xf3, 0xb9, 0x61, 0x23, 0x57, 0xc2, 0x78, 0xd4,
-	0x85, 0x1e, 0xd2, 0x55, 0xe0, 0x8f, 0x04, 0xe0, 0x78, 0x9a, 0xc0, 0xb7, 0x2c, 0xa8, 0x9b, 0x93,
-	0x87, 0x6b, 0xdb, 0xa3, 0xbd, 0x9b, 0x32, 0xe9, 0x37, 0xf1, 0xf5, 0x51, 0xdc, 0x75, 0x0f, 0x4f,
-	0xd0, 0x3e, 0x27, 0x70, 0x21, 0x3b, 0x25, 0xa0, 0x15, 0xa7, 0xdc, 0xa4, 0xe3, 0xde, 0xae, 0x26,
-	0x52, 0x74, 0xcd, 0x44, 0x8b, 0xdf, 0x28, 0x3a, 0xd7, 0x8d, 0x3d, 0xf0, 0x3a, 0x6c, 0xb7, 0x64,
-	0x9f, 0xc7, 0xe4, 0xe3, 0x6d, 0x15, 0x11, 0xb0, 0xbe, 0x1f, 0x05, 0x75, 0x16, 0x07, 0x8d, 0x80,
-	0x46, 0xf2, 0x53, 0x85, 0xfa, 0x0e, 0xe2, 0x0f, 0x42, 0x3e, 0xea, 0xd3, 0xc6, 0x3b, 0x99, 0xcb,
-	0x4f, 0x66, 0xa4, 0xea, 0xd6, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x69, 0xe0, 0x2a, 0x9a, 0xae,
-	0x12, 0x00, 0x00,
+	// 1259 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0xc1, 0x6f, 0xdc, 0x44,
+	0x14, 0xc6, 0x3b, 0x49, 0x93, 0x26, 0x2f, 0x2d, 0x34, 0x93, 0x90, 0xb8, 0xa6, 0x69, 0x23, 0x53,
+	0xd2, 0x90, 0x28, 0xeb, 0x74, 0x1b, 0x95, 0x74, 0xa1, 0xa8, 0x09, 0x11, 0x49, 0xa4, 0x16, 0x95,
+	0x4d, 0xb8, 0xf4, 0xb2, 0x1a, 0xbc, 0xb3, 0x1b, 0x83, 0xd7, 0xb3, 0xb1, 0x67, 0x93, 0x52, 0x54,
+	0x21, 0x21, 0x0e, 0x48, 0x9c, 0x4a, 0xc4, 0x05, 0x6e, 0x1c, 0xaa, 0x0a, 0x0e, 0x08, 0x09, 0x89,
+	0x2b, 0x12, 0xb7, 0x1e, 0x01, 0xf1, 0x17, 0xf0, 0x7f, 0x80, 0x3c, 0x1e, 0xef, 0xda, 0x5e, 0xef,
+	0xda, 0x0e, 0x42, 0x84, 0x5b, 0x3c, 0x9e, 0x6f, 0xfc, 0xe6, 0xf7, 0xbe, 0x1d, 0x7f, 0x31, 0xdc,
+	0xac, 0x33, 0x56, 0xb7, 0xa8, 0x5e, 0xa5, 0x07, 0x9c, 0x31, 0xcb, 0xd5, 0x1d, 0xea, 0xb6, 0x2c,
+	0xee, 0x72, 0xe6, 0x50, 0xfd, 0xa0, 0x18, 0xbe, 0xac, 0x54, 0xd9, 0xa1, 0x6d, 0x31, 0x52, 0x2d,
+	0x34, 0x1d, 0xc6, 0x19, 0xbe, 0xe4, 0x4b, 0x0b, 0x81, 0xb4, 0x10, 0x9a, 0x5b, 0x38, 0x28, 0xaa,
+	0x17, 0xe5, 0xd2, 0xa4, 0x69, 0xea, 0xc4, 0xb6, 0x19, 0x27, 0xdc, 0x64, 0xb6, 0xeb, 0xab, 0xd5,
+	0xc5, 0x94, 0x07, 0x13, 0xc3, 0x9b, 0x2d, 0x27, 0x17, 0x53, 0x26, 0x1b, 0xcc, 0xae, 0x99, 0xf5,
+	0x96, 0x43, 0x42, 0x9a, 0x1b, 0x19, 0x35, 0xb4, 0x5a, 0xe1, 0xc4, 0xa9, 0x53, 0x9e, 0x51, 0x17,
+	0x50, 0xa8, 0x34, 0x28, 0x27, 0x55, 0xc2, 0x89, 0xd4, 0x2d, 0xa5, 0xe8, 0x6a, 0xa6, 0x45, 0x2b,
+	0x6e, 0xfb, 0x31, 0x7a, 0xca, 0x74, 0xd3, 0x3e, 0x60, 0x46, 0x78, 0x3f, 0x69, 0xc0, 0x22, 0x9b,
+	0x98, 0x0e, 0xb1, 0x37, 0x2c, 0x93, 0xda, 0xf2, 0x86, 0xb6, 0x00, 0x93, 0x9b, 0x94, 0x6f, 0xb7,
+	0x17, 0x2f, 0xd3, 0xfd, 0x16, 0x75, 0x39, 0xc6, 0x70, 0xda, 0x26, 0x0d, 0xaa, 0xa0, 0x59, 0x34,
+	0x3f, 0x5a, 0x16, 0x7f, 0x6b, 0x7f, 0x20, 0x50, 0x76, 0x28, 0x71, 0x8c, 0xbd, 0xce, 0x7c, 0x37,
+	0x10, 0xbc, 0x08, 0xa3, 0x4d, 0x52, 0xa7, 0x15, 0xd7, 0x7c, 0xe8, 0xab, 0x86, 0xca, 0x23, 0xde,
+	0xc0, 0x8e, 0xf9, 0x90, 0xe2, 0xcb, 0x00, 0xe2, 0x26, 0x67, 0x1f, 0x50, 0x5b, 0x19, 0xf0, 0xd6,
+	0xdc, 0x3a, 0x55, 0x16, 0x82, 0x5d, 0x6f, 0x08, 0x2b, 0x30, 0xcc, 0x6a, 0x35, 0x97, 0x72, 0x65,
+	0x70, 0x16, 0xcd, 0x0f, 0x6e, 0x9d, 0x2a, 0xcb, 0x6b, 0x3c, 0x09, 0x43, 0xfb, 0x2d, 0xea, 0x7c,
+	0xa8, 0x9c, 0x16, 0x95, 0xf8, 0x17, 0x78, 0x06, 0xa0, 0xe9, 0xb0, 0xf7, 0xa9, 0xc1, 0x2b, 0x66,
+	0x55, 0x19, 0x12, 0xb7, 0x46, 0xe5, 0xc8, 0x76, 0x15, 0x5f, 0x86, 0x31, 0xfa, 0x80, 0x18, 0xbc,
+	0xd2, 0x20, 0xdc, 0xd8, 0x53, 0xce, 0xcc, 0xa2, 0xf9, 0x91, 0x32, 0x88, 0xa1, 0xbb, 0xde, 0xc8,
+	0xfa, 0x59, 0x59, 0x90, 0xcb, 0x89, 0xc3, 0xb5, 0xc7, 0x08, 0x2e, 0x24, 0x6c, 0xcc, 0x6d, 0x32,
+	0xdb, 0xa5, 0xf8, 0x0e, 0x8c, 0x75, 0xe0, 0xbb, 0x0a, 0x9a, 0x1d, 0x9c, 0x1f, 0x2b, 0x2e, 0x14,
+	0xfa, 0xbb, 0xbd, 0x10, 0x42, 0x1a, 0x96, 0xe3, 0x39, 0x78, 0xde, 0xa6, 0x0f, 0x78, 0x25, 0xce,
+	0xa3, 0x7c, 0xce, 0x1b, 0xbe, 0x17, 0x10, 0xd1, 0x4a, 0x70, 0x25, 0xd2, 0x98, 0x0d, 0x69, 0xb3,
+	0xbb, 0xd2, 0x65, 0xfd, 0x1a, 0xb5, 0x04, 0xd3, 0x9b, 0x94, 0xbf, 0x19, 0xfe, 0x11, 0xf4, 0x9b,
+	0xfe, 0x03, 0x82, 0x0b, 0x77, 0x4c, 0x37, 0x2a, 0x68, 0x37, 0x76, 0x0a, 0x86, 0x9b, 0xc4, 0xa1,
+	0x36, 0x97, 0x1a, 0x79, 0x15, 0x6d, 0xf8, 0x40, 0xdf, 0x86, 0x0f, 0xf6, 0x6b, 0xf8, 0xe9, 0x58,
+	0xc3, 0xa7, 0x60, 0xb8, 0x66, 0x5a, 0x9c, 0x3a, 0xb2, 0xad, 0xf2, 0x2a, 0xd6, 0xb2, 0xaf, 0x11,
+	0xa8, 0x49, 0x35, 0xcb, 0x9e, 0xbd, 0x0b, 0xcf, 0x45, 0xce, 0x80, 0xa0, 0x6d, 0x4b, 0x69, 0x6d,
+	0x8b, 0x42, 0x8b, 0x2d, 0x92, 0xb9, 0x79, 0x73, 0x70, 0x7e, 0x93, 0xf2, 0x5d, 0xf1, 0x0b, 0xec,
+	0x47, 0xfe, 0x5b, 0x04, 0xd8, 0xdb, 0x85, 0x3f, 0xf3, 0x84, 0x23, 0xff, 0x18, 0x26, 0x22, 0xb5,
+	0x4a, 0xd4, 0xb7, 0xe1, 0x8c, 0x7f, 0xd4, 0x04, 0x8c, 0xe7, 0xd2, 0x18, 0x4b, 0x2e, 0x81, 0x2c,
+	0x33, 0xd5, 0x65, 0x50, 0x43, 0xb6, 0xa6, 0xd5, 0x74, 0xbe, 0x3f, 0x22, 0xb8, 0x18, 0x76, 0x49,
+	0xa0, 0x39, 0xe1, 0xa4, 0x9f, 0x22, 0x98, 0xe9, 0x51, 0xb6, 0x84, 0x5e, 0x01, 0xdc, 0xf5, 0xbe,
+	0x0a, 0xf8, 0x2f, 0x67, 0xf5, 0x78, 0x9b, 0xe0, 0xb8, 0x11, 0x7f, 0x50, 0x4e, 0xa7, 0xaf, 0x19,
+	0x69, 0x67, 0x4c, 0xe0, 0x74, 0x7f, 0xe6, 0xff, 0xc3, 0xe9, 0xed, 0x5a, 0x3b, 0x4e, 0xf7, 0x53,
+	0x48, 0x66, 0xa7, 0x4b, 0x2e, 0x81, 0x2c, 0x33, 0xd5, 0xab, 0x30, 0xbe, 0x49, 0xf9, 0x5b, 0xa6,
+	0x45, 0x77, 0xfa, 0x1b, 0xfc, 0x3b, 0xe4, 0x97, 0x2a, 0xa7, 0x9e, 0x70, 0xae, 0x9f, 0x22, 0x98,
+	0x8c, 0x56, 0x2b, 0xc9, 0x6e, 0xc0, 0x68, 0x10, 0x87, 0x02, 0xb6, 0x57, 0xd3, 0xd8, 0x06, 0x74,
+	0x46, 0x6a, 0x72, 0xb5, 0xcc, 0x74, 0x8f, 0x10, 0x4c, 0xef, 0x3a, 0xe4, 0x80, 0x3a, 0x2e, 0x8d,
+	0x83, 0x4b, 0x80, 0xfc, 0x6f, 0x41, 0x8b, 0xc1, 0xf9, 0x0c, 0x81, 0xd2, 0x5d, 0xd5, 0x7f, 0x01,
+	0xa8, 0xf8, 0xd7, 0x24, 0x4c, 0x94, 0xc5, 0x62, 0x3b, 0xde, 0x62, 0x41, 0xf4, 0xc0, 0x47, 0x08,
+	0xce, 0x45, 0x42, 0x09, 0x5e, 0x49, 0x2b, 0x22, 0x29, 0x5c, 0xaa, 0x39, 0xc2, 0x93, 0x36, 0xfb,
+	0xc9, 0x6f, 0x7f, 0x1e, 0x0d, 0xa8, 0x58, 0xf1, 0x32, 0xed, 0x47, 0x5e, 0x3f, 0x6e, 0x85, 0xe2,
+	0x94, 0xbe, 0xf0, 0x08, 0x3f, 0x45, 0x30, 0xde, 0x95, 0xde, 0xf0, 0x6a, 0xda, 0x33, 0x7a, 0x25,
+	0x59, 0xf5, 0xe6, 0x31, 0x94, 0x7e, 0x9b, 0xb4, 0x4b, 0xa2, 0x58, 0x05, 0x4f, 0x45, 0x13, 0xbb,
+	0x5b, 0x72, 0x85, 0x04, 0x3f, 0x43, 0x30, 0xd3, 0x37, 0xd5, 0xe1, 0x8d, 0x5c, 0x40, 0x7b, 0x84,
+	0x42, 0x35, 0xf5, 0x15, 0x10, 0x17, 0x6a, 0xd7, 0x44, 0xe5, 0x8b, 0xf8, 0x95, 0x1e, 0x98, 0xdb,
+	0xff, 0xe6, 0x04, 0x8a, 0x47, 0xf8, 0x09, 0x12, 0x67, 0x7f, 0x24, 0x31, 0xe1, 0x57, 0x33, 0xd4,
+	0x9f, 0x14, 0x4c, 0xd5, 0x7c, 0xc9, 0x4c, 0x5b, 0x10, 0xf5, 0x5e, 0xc1, 0x5a, 0xaf, 0x7a, 0xfd,
+	0x57, 0x9a, 0x30, 0xc8, 0x4f, 0xf2, 0xdd, 0x13, 0xcd, 0x8a, 0x38, 0xb5, 0xcf, 0x3d, 0x33, 0xb1,
+	0x5a, 0x3a, 0x8e, 0x54, 0x7a, 0x24, 0x5a, 0xb9, 0x7f, 0x2e, 0xc7, 0x2c, 0x1d, 0x14, 0x8f, 0x1f,
+	0x23, 0x18, 0x6d, 0x07, 0x49, 0xbc, 0x9c, 0x81, 0x6d, 0x24, 0x13, 0xa9, 0x19, 0xa3, 0x58, 0x3a,
+	0x4d, 0x99, 0x30, 0x3c, 0x9a, 0xdf, 0x20, 0x18, 0x0b, 0xe5, 0x40, 0x5c, 0xcc, 0xc2, 0x22, 0x1a,
+	0xbb, 0xd4, 0xeb, 0xb9, 0x34, 0x39, 0xc0, 0x05, 0x91, 0xf2, 0x17, 0x04, 0x13, 0x09, 0x59, 0x11,
+	0x97, 0x72, 0xd8, 0x33, 0x16, 0x30, 0xd5, 0xdc, 0xb9, 0x4a, 0x7b, 0x43, 0x54, 0xbc, 0x8a, 0x6f,
+	0xa4, 0x62, 0xd5, 0xbb, 0x12, 0x98, 0x87, 0xfa, 0x77, 0x04, 0x2f, 0x24, 0xe6, 0x40, 0xfc, 0x7a,
+	0x1e, 0x03, 0xc6, 0x53, 0xaf, 0x7a, 0xeb, 0x98, 0x6a, 0xd9, 0x88, 0xe8, 0xb6, 0x92, 0x1a, 0x11,
+	0xf2, 0x4b, 0xf7, 0xce, 0xf0, 0xf7, 0xbe, 0xab, 0xfd, 0x70, 0x94, 0xc9, 0xd5, 0x91, 0x7c, 0xa9,
+	0x66, 0x8c, 0x5d, 0xda, 0x96, 0xa8, 0x73, 0x1d, 0xdf, 0x3e, 0x16, 0x7e, 0xf9, 0xc5, 0x49, 0x34,
+	0xe2, 0x67, 0xe9, 0x79, 0x99, 0x08, 0xb3, 0x79, 0x3e, 0x1a, 0x75, 0xb3, 0x79, 0x3e, 0x16, 0x39,
+	0x63, 0x5b, 0xe8, 0x8f, 0x3a, 0xd1, 0x43, 0xc1, 0x2e, 0xf0, 0x97, 0x08, 0xa0, 0x93, 0x29, 0xf1,
+	0xb5, 0x0c, 0xd4, 0xa3, 0xf9, 0x53, 0xcd, 0x1a, 0x38, 0xb4, 0x45, 0x51, 0xf4, 0xcb, 0xf8, 0xa5,
+	0x5e, 0xdc, 0x83, 0x40, 0xe2, 0xa1, 0x7d, 0x82, 0xe0, 0x6c, 0x38, 0x13, 0xe2, 0x4c, 0x9c, 0x62,
+	0xb1, 0x4d, 0x5d, 0xc9, 0x27, 0x92, 0x74, 0xa3, 0x85, 0x26, 0x9f, 0x28, 0xed, 0xf0, 0xf4, 0xd5,
+	0x00, 0x9c, 0x8f, 0xe7, 0xb3, 0xf4, 0xd7, 0x5d, 0x8f, 0x9c, 0xa9, 0xae, 0xe6, 0x17, 0xca, 0xa2,
+	0xbf, 0x40, 0xa2, 0xea, 0xcf, 0x11, 0x5e, 0xc9, 0xc0, 0xb7, 0xc4, 0x63, 0xeb, 0xdc, 0xdf, 0xc1,
+	0xef, 0xfc, 0xd3, 0xdf, 0x43, 0xd7, 0xa2, 0xea, 0xdb, 0xcf, 0xd6, 0xd4, 0xf0, 0x06, 0xfc, 0xcd,
+	0x91, 0xa6, 0xe9, 0x16, 0x0c, 0xd6, 0xf8, 0x75, 0xad, 0xb0, 0xc7, 0x79, 0xd3, 0x2d, 0xe9, 0xfa,
+	0xe1, 0xe1, 0x61, 0xec, 0xa6, 0x4e, 0x5a, 0x7c, 0x4f, 0x37, 0x2c, 0xd6, 0xaa, 0x2e, 0x35, 0x2d,
+	0xc2, 0x6b, 0xcc, 0x69, 0xac, 0xef, 0x83, 0x66, 0xb0, 0x46, 0x0a, 0xa3, 0x7b, 0xe8, 0xfe, 0xb6,
+	0x9c, 0x51, 0x67, 0x16, 0xb1, 0xeb, 0x05, 0xe6, 0xd4, 0xf5, 0x3a, 0xb5, 0xc5, 0xa7, 0x4d, 0xbd,
+	0xf3, 0x98, 0x5e, 0xdf, 0x48, 0x5f, 0x0b, 0x5d, 0xbe, 0x37, 0x2c, 0x54, 0xd7, 0xff, 0x0e, 0x00,
+	0x00, 0xff, 0xff, 0x9a, 0x14, 0x81, 0x0e, 0x02, 0x17, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1331,13 +1643,22 @@
 	// - If the given invocation name is badly formatted.
 	// - If no field mask was given.
 	GetInvocation(ctx context.Context, in *GetInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
-	// Searches for invocations matching the given query parameters.
+	// Searches for invocations matching the given query parameters. Results will
+	// be ordered by timing.start_time with most recent first, but total ordering
+	// of results is not guaranteed when difference in timestamps is very small.
+	// Results may be stale.
 	//
 	//
 	// An error will be reported in the following cases:
 	// - If a query string is not provided
 	// - If no field mask was given.
 	SearchInvocations(ctx context.Context, in *SearchInvocationsRequest, opts ...grpc.CallOption) (*SearchInvocationsResponse, error)
+	// Retrieves the metadata for an invocation with the given name.
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation is not found.
+	// - If the given invocation name is badly formatted.
+	GetInvocationDownloadMetadata(ctx context.Context, in *GetInvocationDownloadMetadataRequest, opts ...grpc.CallOption) (*DownloadMetadata, error)
 	// Retrieves the configuration with the given name.
 	//
 	// An error will be reported in the following cases:
@@ -1348,6 +1669,7 @@
 	// Retrieves all configurations for a parent invocation.
 	// This might be limited by user or server,
 	// in which case a continuation token is provided.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent invocation is not found.
@@ -1363,6 +1685,7 @@
 	GetTarget(ctx context.Context, in *GetTargetRequest, opts ...grpc.CallOption) (*Target, error)
 	// Retrieves all targets for a parent invocation.  This might be limited by
 	// user or server, in which case a continuation token is provided.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent is not found.
@@ -1379,6 +1702,7 @@
 	// Retrieves all configured targets for a parent invocation/target.
 	// This might be limited by user or server, in which case a continuation
 	// token is provided.  Supports '-' for targetId meaning all targets.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent is not found.
@@ -1398,6 +1722,7 @@
 	// actions for all configurations for a target, or '-' for targetId and
 	// configurationId to mean all actions for all configurations and all targets.
 	// Does not support targetId '-' with a specified configuration.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent is not found.
@@ -1414,12 +1739,23 @@
 	// Retrieves all file sets for a parent invocation.
 	// This might be limited by user or server,
 	// in which case a continuation token is provided.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent invocation is not found.
 	// - If the given parent invocation name is badly formatted.
 	// - If no field mask was given.
 	ListFileSets(ctx context.Context, in *ListFileSetsRequest, opts ...grpc.CallOption) (*ListFileSetsResponse, error)
+	// Returns the transitive closure of FileSets. This might be limited by user
+	// or server, in which case a continuation token is provided.
+	// The order in which results are returned is undefined, and unstable.
+	//
+	// An error will be reported in the following cases:
+	// - If page_token is too large to continue the calculation.
+	// - If the resource is not found.
+	// - If the given resource name is badly formatted.
+	// - If no field mask was given.
+	TraverseFileSets(ctx context.Context, in *TraverseFileSetsRequest, opts ...grpc.CallOption) (*TraverseFileSetsResponse, error)
 }
 
 type resultStoreDownloadClient struct {
@@ -1448,6 +1784,15 @@
 	return out, nil
 }
 
+func (c *resultStoreDownloadClient) GetInvocationDownloadMetadata(ctx context.Context, in *GetInvocationDownloadMetadataRequest, opts ...grpc.CallOption) (*DownloadMetadata, error) {
+	out := new(DownloadMetadata)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreDownload/GetInvocationDownloadMetadata", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *resultStoreDownloadClient) GetConfiguration(ctx context.Context, in *GetConfigurationRequest, opts ...grpc.CallOption) (*Configuration, error) {
 	out := new(Configuration)
 	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreDownload/GetConfiguration", in, out, opts...)
@@ -1538,6 +1883,15 @@
 	return out, nil
 }
 
+func (c *resultStoreDownloadClient) TraverseFileSets(ctx context.Context, in *TraverseFileSetsRequest, opts ...grpc.CallOption) (*TraverseFileSetsResponse, error) {
+	out := new(TraverseFileSetsResponse)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreDownload/TraverseFileSets", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // ResultStoreDownloadServer is the server API for ResultStoreDownload service.
 type ResultStoreDownloadServer interface {
 	// Retrieves the invocation with the given name.
@@ -1547,13 +1901,22 @@
 	// - If the given invocation name is badly formatted.
 	// - If no field mask was given.
 	GetInvocation(context.Context, *GetInvocationRequest) (*Invocation, error)
-	// Searches for invocations matching the given query parameters.
+	// Searches for invocations matching the given query parameters. Results will
+	// be ordered by timing.start_time with most recent first, but total ordering
+	// of results is not guaranteed when difference in timestamps is very small.
+	// Results may be stale.
 	//
 	//
 	// An error will be reported in the following cases:
 	// - If a query string is not provided
 	// - If no field mask was given.
 	SearchInvocations(context.Context, *SearchInvocationsRequest) (*SearchInvocationsResponse, error)
+	// Retrieves the metadata for an invocation with the given name.
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation is not found.
+	// - If the given invocation name is badly formatted.
+	GetInvocationDownloadMetadata(context.Context, *GetInvocationDownloadMetadataRequest) (*DownloadMetadata, error)
 	// Retrieves the configuration with the given name.
 	//
 	// An error will be reported in the following cases:
@@ -1564,6 +1927,7 @@
 	// Retrieves all configurations for a parent invocation.
 	// This might be limited by user or server,
 	// in which case a continuation token is provided.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent invocation is not found.
@@ -1579,6 +1943,7 @@
 	GetTarget(context.Context, *GetTargetRequest) (*Target, error)
 	// Retrieves all targets for a parent invocation.  This might be limited by
 	// user or server, in which case a continuation token is provided.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent is not found.
@@ -1595,6 +1960,7 @@
 	// Retrieves all configured targets for a parent invocation/target.
 	// This might be limited by user or server, in which case a continuation
 	// token is provided.  Supports '-' for targetId meaning all targets.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent is not found.
@@ -1614,6 +1980,7 @@
 	// actions for all configurations for a target, or '-' for targetId and
 	// configurationId to mean all actions for all configurations and all targets.
 	// Does not support targetId '-' with a specified configuration.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent is not found.
@@ -1630,12 +1997,23 @@
 	// Retrieves all file sets for a parent invocation.
 	// This might be limited by user or server,
 	// in which case a continuation token is provided.
+	// The order in which results are returned is undefined, but stable.
 	//
 	// An error will be reported in the following cases:
 	// - If the parent invocation is not found.
 	// - If the given parent invocation name is badly formatted.
 	// - If no field mask was given.
 	ListFileSets(context.Context, *ListFileSetsRequest) (*ListFileSetsResponse, error)
+	// Returns the transitive closure of FileSets. This might be limited by user
+	// or server, in which case a continuation token is provided.
+	// The order in which results are returned is undefined, and unstable.
+	//
+	// An error will be reported in the following cases:
+	// - If page_token is too large to continue the calculation.
+	// - If the resource is not found.
+	// - If the given resource name is badly formatted.
+	// - If no field mask was given.
+	TraverseFileSets(context.Context, *TraverseFileSetsRequest) (*TraverseFileSetsResponse, error)
 }
 
 func RegisterResultStoreDownloadServer(s *grpc.Server, srv ResultStoreDownloadServer) {
@@ -1678,6 +2056,24 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ResultStoreDownload_GetInvocationDownloadMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetInvocationDownloadMetadataRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreDownloadServer).GetInvocationDownloadMetadata(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreDownload/GetInvocationDownloadMetadata",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreDownloadServer).GetInvocationDownloadMetadata(ctx, req.(*GetInvocationDownloadMetadataRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _ResultStoreDownload_GetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(GetConfigurationRequest)
 	if err := dec(in); err != nil {
@@ -1858,6 +2254,24 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ResultStoreDownload_TraverseFileSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(TraverseFileSetsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreDownloadServer).TraverseFileSets(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreDownload/TraverseFileSets",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreDownloadServer).TraverseFileSets(ctx, req.(*TraverseFileSetsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _ResultStoreDownload_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "google.devtools.resultstore.v2.ResultStoreDownload",
 	HandlerType: (*ResultStoreDownloadServer)(nil),
@@ -1871,6 +2285,10 @@
 			Handler:    _ResultStoreDownload_SearchInvocations_Handler,
 		},
 		{
+			MethodName: "GetInvocationDownloadMetadata",
+			Handler:    _ResultStoreDownload_GetInvocationDownloadMetadata_Handler,
+		},
+		{
 			MethodName: "GetConfiguration",
 			Handler:    _ResultStoreDownload_GetConfiguration_Handler,
 		},
@@ -1910,6 +2328,10 @@
 			MethodName: "ListFileSets",
 			Handler:    _ResultStoreDownload_ListFileSets_Handler,
 		},
+		{
+			MethodName: "TraverseFileSets",
+			Handler:    _ResultStoreDownload_TraverseFileSets_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "google/devtools/resultstore/v2/resultstore_download.proto",
diff --git a/googleapis/devtools/resultstore/v2/resultstore_file_download.pb.go b/googleapis/devtools/resultstore/v2/resultstore_file_download.pb.go
index cb1d4a5..ff1784a 100644
--- a/googleapis/devtools/resultstore/v2/resultstore_file_download.pb.go
+++ b/googleapis/devtools/resultstore/v2/resultstore_file_download.pb.go
@@ -41,7 +41,11 @@
 	// If the stream returns fewer bytes than allowed by the `read_limit` and no
 	// error occurred, the stream includes all data from the `read_offset` to the
 	// end of the resource.
-	ReadLimit            int64    `protobuf:"varint,3,opt,name=read_limit,json=readLimit,proto3" json:"read_limit,omitempty"`
+	ReadLimit int64 `protobuf:"varint,3,opt,name=read_limit,json=readLimit,proto3" json:"read_limit,omitempty"`
+	// Only applies if the referenced file is a known archive type (ar, jar, zip)
+	// The above read_offset and read_limit fields are applied to this entry.
+	// If this file is not an archive, INVALID_ARGUMENT is thrown.
+	ArchiveEntry         string   `protobuf:"bytes,4,opt,name=archive_entry,json=archiveEntry,proto3" json:"archive_entry,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -93,6 +97,13 @@
 	return 0
 }
 
+func (m *GetFileRequest) GetArchiveEntry() string {
+	if m != nil {
+		return m.ArchiveEntry
+	}
+	return ""
+}
+
 // Response object for GetFile
 type GetFileResponse struct {
 	// The file data.
@@ -149,7 +160,11 @@
 	//
 	// A `read_limit` of zero indicates that there is no limit, and a negative
 	// `read_limit` will cause an error.
-	ReadLimit            int64    `protobuf:"varint,3,opt,name=read_limit,json=readLimit,proto3" json:"read_limit,omitempty"`
+	ReadLimit int64 `protobuf:"varint,3,opt,name=read_limit,json=readLimit,proto3" json:"read_limit,omitempty"`
+	// Only applies if the referenced file is a known archive type (ar, jar, zip)
+	// The above read_offset and read_limit fields are applied to this entry.
+	// If this file is not an archive, INVALID_ARGUMENT is thrown.
+	ArchiveEntry         string   `protobuf:"bytes,4,opt,name=archive_entry,json=archiveEntry,proto3" json:"archive_entry,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -201,6 +216,13 @@
 	return 0
 }
 
+func (m *GetFileTailRequest) GetArchiveEntry() string {
+	if m != nil {
+		return m.ArchiveEntry
+	}
+	return ""
+}
+
 // Response object for GetFileTail
 type GetFileTailResponse struct {
 	// The file data, encoded with UTF-8.
@@ -254,31 +276,36 @@
 }
 
 var fileDescriptor_8107699981ff9308 = []byte{
-	// 384 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x53, 0xc1, 0x4a, 0xe3, 0x40,
-	0x18, 0x26, 0xed, 0xb2, 0x4b, 0xa7, 0xcb, 0x6e, 0x99, 0x65, 0x69, 0x28, 0xdb, 0xb5, 0x04, 0x84,
-	0xda, 0xc3, 0x8c, 0xa4, 0x47, 0xd1, 0x83, 0x88, 0x22, 0x08, 0x4a, 0xf4, 0xe4, 0x25, 0x4c, 0xcd,
-	0x24, 0x0c, 0x4c, 0xf3, 0xa7, 0x99, 0x49, 0x3d, 0x48, 0x2f, 0x1e, 0x7c, 0x01, 0xf1, 0x65, 0x7c,
-	0x0d, 0x5f, 0xc1, 0x07, 0x91, 0x99, 0x44, 0x49, 0x0f, 0xd5, 0x7a, 0xf0, 0x36, 0xff, 0x37, 0xff,
-	0xf7, 0xfd, 0x5f, 0xbe, 0xfc, 0x83, 0xf6, 0x12, 0x80, 0x44, 0x72, 0x1a, 0xf1, 0xb9, 0x06, 0x90,
-	0x8a, 0xe6, 0x5c, 0x15, 0x52, 0x2b, 0x0d, 0x39, 0xa7, 0x73, 0xbf, 0x5e, 0x86, 0xb1, 0x90, 0x3c,
-	0x8c, 0xe0, 0x3a, 0x95, 0xc0, 0x22, 0x92, 0xe5, 0xa0, 0x01, 0xff, 0x2f, 0xf9, 0xe4, 0x95, 0x4f,
-	0x6a, 0x04, 0x32, 0xf7, 0x7b, 0xff, 0x2a, 0x7d, 0x96, 0x09, 0xca, 0xd2, 0x14, 0x34, 0xd3, 0x02,
-	0x52, 0x55, 0xb2, 0xbd, 0x09, 0xfa, 0x75, 0xc4, 0xf5, 0xa1, 0x90, 0x3c, 0xe0, 0xb3, 0x82, 0x2b,
-	0x8d, 0x3b, 0xa8, 0x59, 0xe4, 0xc2, 0x75, 0x06, 0xce, 0xb0, 0x15, 0x98, 0x23, 0xde, 0x40, 0xed,
-	0x9c, 0xb3, 0x28, 0x84, 0x38, 0x56, 0x5c, 0xbb, 0x8d, 0x81, 0x33, 0x6c, 0x06, 0xc8, 0x40, 0xa7,
-	0x16, 0xc1, 0x7d, 0x64, 0xab, 0x50, 0x8a, 0xa9, 0xd0, 0x6e, 0xd3, 0xde, 0xb7, 0x0c, 0x72, 0x62,
-	0x00, 0x6f, 0x13, 0xfd, 0x7e, 0x9b, 0xa1, 0x32, 0x48, 0x15, 0xc7, 0x18, 0x7d, 0x8b, 0x98, 0x66,
-	0x76, 0xca, 0xcf, 0xc0, 0x9e, 0xbd, 0x18, 0xe1, 0xaa, 0xed, 0x82, 0x09, 0xf9, 0x75, 0x76, 0xb6,
-	0xd0, 0x9f, 0xa5, 0x39, 0xab, 0x2d, 0xf9, 0x8f, 0x0d, 0xd4, 0x0d, 0x6c, 0x9c, 0xe7, 0x26, 0x4e,
-	0xc3, 0x39, 0xa8, 0xd2, 0xc7, 0x77, 0x0e, 0xfa, 0x51, 0xe9, 0x60, 0x42, 0xde, 0xff, 0x09, 0x64,
-	0x39, 0xe3, 0x1e, 0x5d, 0xbb, 0xbf, 0x34, 0xe7, 0xb9, 0xb7, 0x4f, 0xcf, 0xf7, 0x0d, 0x8c, 0x3b,
-	0x66, 0x23, 0x6e, 0x8a, 0x5c, 0xec, 0x9a, 0x55, 0xa0, 0xa3, 0xc5, 0xb6, 0x83, 0x1f, 0x1c, 0xd4,
-	0xae, 0x7d, 0x10, 0xf6, 0xd7, 0x14, 0xaf, 0xa5, 0xdc, 0x1b, 0x7f, 0x8a, 0x53, 0x99, 0xea, 0x5b,
-	0x53, 0x5d, 0xfc, 0x77, 0xd9, 0x94, 0x66, 0x42, 0xd2, 0xd1, 0x62, 0x7f, 0x86, 0xbc, 0x2b, 0x98,
-	0x7e, 0x20, 0x7c, 0xe6, 0x5c, 0x1e, 0x57, 0x1d, 0x09, 0x48, 0x96, 0x26, 0x04, 0xf2, 0x84, 0x26,
-	0x3c, 0xb5, 0xeb, 0x49, 0xcb, 0x2b, 0x96, 0x09, 0xb5, 0xea, 0x7d, 0xec, 0xd4, 0xca, 0xc9, 0x77,
-	0xcb, 0x1a, 0xbf, 0x04, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x3d, 0x87, 0x5d, 0x54, 0x03, 0x00, 0x00,
+	// 459 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x93, 0xcf, 0x6b, 0x14, 0x31,
+	0x14, 0xc7, 0x49, 0xb7, 0x28, 0x4d, 0xab, 0x96, 0x88, 0xec, 0x32, 0x58, 0x2d, 0x23, 0x42, 0x2d,
+	0x98, 0xc8, 0xf6, 0xa6, 0x28, 0x54, 0xfc, 0x81, 0x20, 0x2a, 0xa3, 0x27, 0x2f, 0x43, 0x9c, 0xc9,
+	0xce, 0x06, 0xb2, 0x79, 0xd3, 0xe4, 0xcd, 0x2e, 0x22, 0xbd, 0x78, 0x50, 0xd0, 0xa3, 0xf8, 0x4f,
+	0x79, 0xd4, 0x7f, 0xc1, 0x3f, 0x44, 0x92, 0x19, 0x75, 0x56, 0xa8, 0xd6, 0x53, 0x6f, 0xf3, 0xbe,
+	0xef, 0x7d, 0x5f, 0x3e, 0xc3, 0x37, 0xa1, 0x77, 0x2a, 0x80, 0xca, 0x28, 0x51, 0xaa, 0x39, 0x02,
+	0x18, 0x2f, 0x9c, 0xf2, 0x8d, 0x41, 0x8f, 0xe0, 0x94, 0x98, 0x8f, 0xfb, 0x65, 0x3e, 0xd1, 0x46,
+	0xe5, 0x25, 0x2c, 0xac, 0x01, 0x59, 0xf2, 0xda, 0x01, 0x02, 0xbb, 0xd4, 0xfa, 0xf9, 0x4f, 0x3f,
+	0xef, 0x19, 0xf8, 0x7c, 0x9c, 0x5c, 0xec, 0xf6, 0xcb, 0x5a, 0x0b, 0x69, 0x2d, 0xa0, 0x44, 0x0d,
+	0xd6, 0xb7, 0xee, 0x64, 0xd8, 0xeb, 0x16, 0x46, 0x2b, 0x8b, 0x6d, 0x23, 0x7d, 0x4f, 0xe8, 0xd9,
+	0x87, 0x0a, 0x1f, 0x68, 0xa3, 0x32, 0x75, 0xd0, 0x28, 0x8f, 0x6c, 0x93, 0x0e, 0x1a, 0xa7, 0x47,
+	0x64, 0x9b, 0xec, 0xac, 0x65, 0xe1, 0x93, 0x5d, 0xa6, 0xeb, 0x4e, 0xc9, 0x32, 0x87, 0xc9, 0xc4,
+	0x2b, 0x1c, 0xad, 0x6c, 0x93, 0x9d, 0x41, 0x46, 0x83, 0xf4, 0x34, 0x2a, 0x6c, 0x8b, 0xc6, 0x2a,
+	0x37, 0x7a, 0xa6, 0x71, 0x34, 0x88, 0xfd, 0xb5, 0xa0, 0x3c, 0x0e, 0x02, 0xbb, 0x42, 0xcf, 0x48,
+	0x57, 0x4c, 0xf5, 0x5c, 0xe5, 0xca, 0xa2, 0x7b, 0x3d, 0x5a, 0x8d, 0xbb, 0x37, 0x3a, 0xf1, 0x7e,
+	0xd0, 0xd2, 0xab, 0xf4, 0xdc, 0x2f, 0x10, 0x5f, 0x83, 0xf5, 0x8a, 0x31, 0xba, 0x5a, 0x4a, 0x94,
+	0x11, 0x65, 0x23, 0x8b, 0xdf, 0xe9, 0x47, 0x42, 0x59, 0x37, 0xf7, 0x42, 0x6a, 0x73, 0xc2, 0xd0,
+	0xd7, 0xe8, 0xf9, 0x25, 0x98, 0xa3, 0xc1, 0xc7, 0x1f, 0x06, 0x74, 0x98, 0xc5, 0xcc, 0x9e, 0x87,
+	0xcc, 0x82, 0xe7, 0x5e, 0x17, 0x31, 0x7b, 0x47, 0xe8, 0xe9, 0x6e, 0x0f, 0xe3, 0xfc, 0xef, 0x49,
+	0xf3, 0xe5, 0xb8, 0x12, 0x71, 0xec, 0xf9, 0x16, 0x2e, 0x1d, 0xbd, 0xfd, 0xf6, 0xfd, 0xd3, 0x0a,
+	0x63, 0x9b, 0xe1, 0xda, 0xbd, 0x69, 0x9c, 0xbe, 0x1d, 0xee, 0x9b, 0xd8, 0x3d, 0xbc, 0x41, 0xd8,
+	0x67, 0x42, 0xd7, 0x7b, 0x3f, 0xc4, 0xc6, 0xc7, 0x5c, 0xde, 0x8b, 0x22, 0xd9, 0xfb, 0x2f, 0x4f,
+	0x07, 0xb5, 0x15, 0xa1, 0x86, 0xec, 0xc2, 0x32, 0x14, 0x4a, 0x6d, 0xc4, 0xee, 0x61, 0xf2, 0xe4,
+	0xcb, 0x7e, 0xd2, 0xdf, 0xd2, 0x9e, 0x20, 0x6b, 0xed, 0x79, 0x01, 0xb3, 0xaf, 0xfb, 0x7c, 0x8a,
+	0x58, 0xfb, 0x9b, 0x42, 0x2c, 0x16, 0x8b, 0x3f, 0x9a, 0x42, 0x36, 0x38, 0x15, 0x85, 0x81, 0xa6,
+	0xbc, 0x5e, 0x1b, 0x89, 0x13, 0x70, 0xb3, 0xbb, 0x07, 0x34, 0x2d, 0x60, 0xf6, 0x0f, 0xd0, 0x67,
+	0xe4, 0xe5, 0xa3, 0x6e, 0xa2, 0x02, 0x23, 0x6d, 0xc5, 0xc1, 0x55, 0xa2, 0x52, 0x36, 0x3e, 0x1d,
+	0xf1, 0xfb, 0x98, 0xa3, 0x1e, 0xf5, 0xad, 0x5e, 0xf9, 0xea, 0x54, 0x74, 0xed, 0xfd, 0x08, 0x00,
+	0x00, 0xff, 0xff, 0x6e, 0x2f, 0x78, 0x57, 0x09, 0x04, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/googleapis/devtools/resultstore/v2/resultstore_upload.pb.go b/googleapis/devtools/resultstore/v2/resultstore_upload.pb.go
index fb38034..68bf4cd 100644
--- a/googleapis/devtools/resultstore/v2/resultstore_upload.pb.go
+++ b/googleapis/devtools/resultstore/v2/resultstore_upload.pb.go
@@ -9,6 +9,7 @@
 	math "math"
 
 	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	field_mask "google.golang.org/genproto/protobuf/field_mask"
@@ -26,6 +27,58 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+// The operation for the request (e.g. Create(), Update(), etc.)
+type UploadRequest_UploadOperation int32
+
+const (
+	// Unspecified
+	UploadRequest_UPLOAD_OPERATION_UNSPECIFIED UploadRequest_UploadOperation = 0
+	// Create the given resources.
+	// For more information, check the Create APIs.
+	UploadRequest_CREATE UploadRequest_UploadOperation = 1
+	// Applies a standard update to the resource identified by the given
+	// proto's name. For more information, see the Update APIs.
+	// UploadBatch does not support arbitrary field masks. The list of allowed
+	// field masks can be found below.
+	UploadRequest_UPDATE UploadRequest_UploadOperation = 2
+	// Applies an merge update to the resource identified by the given
+	// proto's name. For more information, see the Merge APIs.
+	// Currently, only the "files" and "file_processing_errors" fields are
+	// supported by this operation.
+	UploadRequest_MERGE UploadRequest_UploadOperation = 3
+	// Declares the resource with the given name as finalized and immutable by
+	// the uploader. Only supported for Invocation, Target, ConfiguredTarget.
+	// There must be no operation on child resources after parent resource is
+	// Finalized. If there is a Finalize of Invocation, it must be the final
+	// UploadRequest. For more information, see the Finalize APIs.
+	// An empty resource should be provided below.
+	UploadRequest_FINALIZE UploadRequest_UploadOperation = 4
+)
+
+var UploadRequest_UploadOperation_name = map[int32]string{
+	0: "UPLOAD_OPERATION_UNSPECIFIED",
+	1: "CREATE",
+	2: "UPDATE",
+	3: "MERGE",
+	4: "FINALIZE",
+}
+
+var UploadRequest_UploadOperation_value = map[string]int32{
+	"UPLOAD_OPERATION_UNSPECIFIED": 0,
+	"CREATE":                       1,
+	"UPDATE":                       2,
+	"MERGE":                        3,
+	"FINALIZE":                     4,
+}
+
+func (x UploadRequest_UploadOperation) String() string {
+	return proto.EnumName(UploadRequest_UploadOperation_name, int32(x))
+}
+
+func (UploadRequest_UploadOperation) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{28, 0}
+}
+
 // Request passed into CreateInvocation
 type CreateInvocationRequest struct {
 	// A unique identifier for this request. Must be set to a different value for
@@ -33,11 +86,13 @@
 	// for the operation to be idempotent. This is achieved by ignoring this
 	// request if the last successful operation on the resource had the same
 	// request ID. If set, invocation_id must also be provided.
-	// Restricted to 36 utf-8 bytes.
+	// Restricted to 36 Unicode characters.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
-	// The invocation ID.  If left empty then a new unique ID will be
-	// assigned by the server. If populated, a RFC 4122-compliant v4 UUID is
-	// preferred, but v3 or v5 UUIDs are allowed too.
+	// The invocation ID. It is optional, but strongly recommended.
+	//
+	// If left empty then a new unique ID will be assigned by the server. If
+	// populated, a RFC 4122-compliant v4 UUID is preferred, but v3 or v5 UUIDs
+	// are allowed too.
 	InvocationId string `protobuf:"bytes,2,opt,name=invocation_id,json=invocationId,proto3" json:"invocation_id,omitempty"`
 	// The invocation to create.  Its name field will be ignored, since the name
 	// will be derived from the id field above and assigned by the server.
@@ -55,13 +110,43 @@
 	// created, and storing them together during the upload. Essentially, this is
 	// a "password" to the invocation.
 	AuthorizationToken string `protobuf:"bytes,4,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
-	// By default, Invocations are auto-finished if they are not modified for 24
-	// hours. If you need auto-finish to happen sooner, set this field to the time
-	// you'd like auto-finish to occur.
-	AutoFinishTime       *timestamp.Timestamp `protobuf:"bytes,5,opt,name=auto_finish_time,json=autoFinishTime,proto3" json:"auto_finish_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	// By default, Invocations are auto-finalized if they are not modified for 24
+	// hours. If you need auto-finalize to happen sooner, set this field to the
+	// time you'd like auto-finalize to occur.
+	AutoFinalizeTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=auto_finalize_time,json=autoFinalizeTime,proto3" json:"auto_finalize_time,omitempty"`
+	// Client provided unique token for batch upload to ensure data integrity and
+	// to provide a way to resume batch upload in case of a distributed failure on
+	// the client side. The standard uploading client is presumed to have many
+	// machines uploading to ResultStore, and that any given machine could process
+	// any given Invocation at any time. This field is used to coordinate between
+	// the client's machines, resolve concurrency issues, and enforce "exactly
+	// once" semantics on each batch within the upload.
+	//
+	// The typical usage of the resume_token is that it should contain a "key"
+	// indicating to the client where it is in the upload process, so that the
+	// client can use it to resume the upload by reconstructing the state of
+	// upload from the point where it was interrupted.
+	//
+	// If this matches the previously uploaded resume_token, then this request
+	// will silently do nothing, making CreateInvocation idempotent.
+	// If this token is provided, all further upload RPCs must be done through
+	// UploadBatch. This token must not be combined with request_id.
+	// Must be web safe Base64 encoded bytes.
+	InitialResumeToken string `protobuf:"bytes,7,opt,name=initial_resume_token,json=initialResumeToken,proto3" json:"initial_resume_token,omitempty"`
+	// Client-specific data used to resume batch upload if an error occurs and
+	// retry is needed. This serves a role closely related to resume_token, as
+	// both fields may be used to provide state required to restore a Batch
+	// Upload, but they differ in two important aspects:
+	//  - it is not compared to previous values, and as such does not provide
+	//    concurrency control;
+	//  - it allows for a larger payload, since the contents are never
+	//    inspected/compared;
+	// The size of the message must be within 1 MiB. Too large requests will be
+	// rejected.
+	UploaderState        []byte   `protobuf:"bytes,8,opt,name=uploader_state,json=uploaderState,proto3" json:"uploader_state,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *CreateInvocationRequest) Reset()         { *m = CreateInvocationRequest{} }
@@ -117,9 +202,23 @@
 	return ""
 }
 
-func (m *CreateInvocationRequest) GetAutoFinishTime() *timestamp.Timestamp {
+func (m *CreateInvocationRequest) GetAutoFinalizeTime() *timestamp.Timestamp {
 	if m != nil {
-		return m.AutoFinishTime
+		return m.AutoFinalizeTime
+	}
+	return nil
+}
+
+func (m *CreateInvocationRequest) GetInitialResumeToken() string {
+	if m != nil {
+		return m.InitialResumeToken
+	}
+	return ""
+}
+
+func (m *CreateInvocationRequest) GetUploaderState() []byte {
+	if m != nil {
+		return m.UploaderState
 	}
 	return nil
 }
@@ -185,8 +284,227 @@
 	return ""
 }
 
-// Request passed into FinishInvocation
-type FinishInvocationRequest struct {
+// Request passed into MergeInvocation
+type MergeInvocationRequest struct {
+	// A unique identifier for this request. Must be set to a different value for
+	// each request that affects a given resource (eg. a random UUID). Required
+	// for the operation to be idempotent. This is achieved by ignoring this
+	// request if the last successful operation on the resource had the same
+	// request ID.  Restricted to 36 Unicode characters.
+	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	// Contains the name and the fields of the invocation to be merged.  The
+	// name format must be: invocations/${INVOCATION_ID}
+	Invocation *Invocation `protobuf:"bytes,3,opt,name=invocation,proto3" json:"invocation,omitempty"`
+	// Indicates which fields to merge.
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// This is a token to authorize access to this invocation. It must be set to
+	// the same value that was provided in the CreateInvocationRequest.
+	AuthorizationToken   string   `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MergeInvocationRequest) Reset()         { *m = MergeInvocationRequest{} }
+func (m *MergeInvocationRequest) String() string { return proto.CompactTextString(m) }
+func (*MergeInvocationRequest) ProtoMessage()    {}
+func (*MergeInvocationRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{2}
+}
+
+func (m *MergeInvocationRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeInvocationRequest.Unmarshal(m, b)
+}
+func (m *MergeInvocationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeInvocationRequest.Marshal(b, m, deterministic)
+}
+func (m *MergeInvocationRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeInvocationRequest.Merge(m, src)
+}
+func (m *MergeInvocationRequest) XXX_Size() int {
+	return xxx_messageInfo_MergeInvocationRequest.Size(m)
+}
+func (m *MergeInvocationRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeInvocationRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeInvocationRequest proto.InternalMessageInfo
+
+func (m *MergeInvocationRequest) GetRequestId() string {
+	if m != nil {
+		return m.RequestId
+	}
+	return ""
+}
+
+func (m *MergeInvocationRequest) GetInvocation() *Invocation {
+	if m != nil {
+		return m.Invocation
+	}
+	return nil
+}
+
+func (m *MergeInvocationRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *MergeInvocationRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+// Request passed into TouchInvocation
+type TouchInvocationRequest struct {
+	// The name of the invocation.  Its format must be:
+	// invocations/${INVOCATION_ID}
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// This is a token to authorize access to this invocation. It must be set to
+	// the same value that was provided in the CreateInvocationRequest.
+	AuthorizationToken   string   `protobuf:"bytes,2,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TouchInvocationRequest) Reset()         { *m = TouchInvocationRequest{} }
+func (m *TouchInvocationRequest) String() string { return proto.CompactTextString(m) }
+func (*TouchInvocationRequest) ProtoMessage()    {}
+func (*TouchInvocationRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{3}
+}
+
+func (m *TouchInvocationRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TouchInvocationRequest.Unmarshal(m, b)
+}
+func (m *TouchInvocationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TouchInvocationRequest.Marshal(b, m, deterministic)
+}
+func (m *TouchInvocationRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TouchInvocationRequest.Merge(m, src)
+}
+func (m *TouchInvocationRequest) XXX_Size() int {
+	return xxx_messageInfo_TouchInvocationRequest.Size(m)
+}
+func (m *TouchInvocationRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_TouchInvocationRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TouchInvocationRequest proto.InternalMessageInfo
+
+func (m *TouchInvocationRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *TouchInvocationRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+// Response returned from TouchInvocation
+type TouchInvocationResponse struct {
+	// The name of the invocation.  Its format will be:
+	// invocations/${INVOCATION_ID}
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The resource ID components that identify the Invocation.
+	Id                   *Invocation_Id `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *TouchInvocationResponse) Reset()         { *m = TouchInvocationResponse{} }
+func (m *TouchInvocationResponse) String() string { return proto.CompactTextString(m) }
+func (*TouchInvocationResponse) ProtoMessage()    {}
+func (*TouchInvocationResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{4}
+}
+
+func (m *TouchInvocationResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TouchInvocationResponse.Unmarshal(m, b)
+}
+func (m *TouchInvocationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TouchInvocationResponse.Marshal(b, m, deterministic)
+}
+func (m *TouchInvocationResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TouchInvocationResponse.Merge(m, src)
+}
+func (m *TouchInvocationResponse) XXX_Size() int {
+	return xxx_messageInfo_TouchInvocationResponse.Size(m)
+}
+func (m *TouchInvocationResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_TouchInvocationResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TouchInvocationResponse proto.InternalMessageInfo
+
+func (m *TouchInvocationResponse) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *TouchInvocationResponse) GetId() *Invocation_Id {
+	if m != nil {
+		return m.Id
+	}
+	return nil
+}
+
+// Request passed into DeleteInvocation
+type DeleteInvocationRequest struct {
+	// The name of the invocation.  Its format must be:
+	// invocations/${INVOCATION_ID}
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeleteInvocationRequest) Reset()         { *m = DeleteInvocationRequest{} }
+func (m *DeleteInvocationRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteInvocationRequest) ProtoMessage()    {}
+func (*DeleteInvocationRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{5}
+}
+
+func (m *DeleteInvocationRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeleteInvocationRequest.Unmarshal(m, b)
+}
+func (m *DeleteInvocationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeleteInvocationRequest.Marshal(b, m, deterministic)
+}
+func (m *DeleteInvocationRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeleteInvocationRequest.Merge(m, src)
+}
+func (m *DeleteInvocationRequest) XXX_Size() int {
+	return xxx_messageInfo_DeleteInvocationRequest.Size(m)
+}
+func (m *DeleteInvocationRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeleteInvocationRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteInvocationRequest proto.InternalMessageInfo
+
+func (m *DeleteInvocationRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request passed into FinalizeInvocation
+type FinalizeInvocationRequest struct {
 	// The name of the invocation.  Its format must be:
 	// invocations/${INVOCATION_ID}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -198,47 +516,47 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *FinishInvocationRequest) Reset()         { *m = FinishInvocationRequest{} }
-func (m *FinishInvocationRequest) String() string { return proto.CompactTextString(m) }
-func (*FinishInvocationRequest) ProtoMessage()    {}
-func (*FinishInvocationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{2}
+func (m *FinalizeInvocationRequest) Reset()         { *m = FinalizeInvocationRequest{} }
+func (m *FinalizeInvocationRequest) String() string { return proto.CompactTextString(m) }
+func (*FinalizeInvocationRequest) ProtoMessage()    {}
+func (*FinalizeInvocationRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{6}
 }
 
-func (m *FinishInvocationRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FinishInvocationRequest.Unmarshal(m, b)
+func (m *FinalizeInvocationRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FinalizeInvocationRequest.Unmarshal(m, b)
 }
-func (m *FinishInvocationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FinishInvocationRequest.Marshal(b, m, deterministic)
+func (m *FinalizeInvocationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FinalizeInvocationRequest.Marshal(b, m, deterministic)
 }
-func (m *FinishInvocationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FinishInvocationRequest.Merge(m, src)
+func (m *FinalizeInvocationRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FinalizeInvocationRequest.Merge(m, src)
 }
-func (m *FinishInvocationRequest) XXX_Size() int {
-	return xxx_messageInfo_FinishInvocationRequest.Size(m)
+func (m *FinalizeInvocationRequest) XXX_Size() int {
+	return xxx_messageInfo_FinalizeInvocationRequest.Size(m)
 }
-func (m *FinishInvocationRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FinishInvocationRequest.DiscardUnknown(m)
+func (m *FinalizeInvocationRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_FinalizeInvocationRequest.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_FinishInvocationRequest proto.InternalMessageInfo
+var xxx_messageInfo_FinalizeInvocationRequest proto.InternalMessageInfo
 
-func (m *FinishInvocationRequest) GetName() string {
+func (m *FinalizeInvocationRequest) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-func (m *FinishInvocationRequest) GetAuthorizationToken() string {
+func (m *FinalizeInvocationRequest) GetAuthorizationToken() string {
 	if m != nil {
 		return m.AuthorizationToken
 	}
 	return ""
 }
 
-// Response returned from FinishInvocation
-type FinishInvocationResponse struct {
+// Response returned from FinalizeInvocation
+type FinalizeInvocationResponse struct {
 	// The name of the invocation.  Its format will be:
 	// invocations/${INVOCATION_ID}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -249,39 +567,39 @@
 	XXX_sizecache        int32          `json:"-"`
 }
 
-func (m *FinishInvocationResponse) Reset()         { *m = FinishInvocationResponse{} }
-func (m *FinishInvocationResponse) String() string { return proto.CompactTextString(m) }
-func (*FinishInvocationResponse) ProtoMessage()    {}
-func (*FinishInvocationResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{3}
+func (m *FinalizeInvocationResponse) Reset()         { *m = FinalizeInvocationResponse{} }
+func (m *FinalizeInvocationResponse) String() string { return proto.CompactTextString(m) }
+func (*FinalizeInvocationResponse) ProtoMessage()    {}
+func (*FinalizeInvocationResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{7}
 }
 
-func (m *FinishInvocationResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FinishInvocationResponse.Unmarshal(m, b)
+func (m *FinalizeInvocationResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FinalizeInvocationResponse.Unmarshal(m, b)
 }
-func (m *FinishInvocationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FinishInvocationResponse.Marshal(b, m, deterministic)
+func (m *FinalizeInvocationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FinalizeInvocationResponse.Marshal(b, m, deterministic)
 }
-func (m *FinishInvocationResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FinishInvocationResponse.Merge(m, src)
+func (m *FinalizeInvocationResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FinalizeInvocationResponse.Merge(m, src)
 }
-func (m *FinishInvocationResponse) XXX_Size() int {
-	return xxx_messageInfo_FinishInvocationResponse.Size(m)
+func (m *FinalizeInvocationResponse) XXX_Size() int {
+	return xxx_messageInfo_FinalizeInvocationResponse.Size(m)
 }
-func (m *FinishInvocationResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FinishInvocationResponse.DiscardUnknown(m)
+func (m *FinalizeInvocationResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_FinalizeInvocationResponse.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_FinishInvocationResponse proto.InternalMessageInfo
+var xxx_messageInfo_FinalizeInvocationResponse proto.InternalMessageInfo
 
-func (m *FinishInvocationResponse) GetName() string {
+func (m *FinalizeInvocationResponse) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-func (m *FinishInvocationResponse) GetId() *Invocation_Id {
+func (m *FinalizeInvocationResponse) GetId() *Invocation_Id {
 	if m != nil {
 		return m.Id
 	}
@@ -294,13 +612,13 @@
 	// each request that affects a given resource (eg. a random UUID). Required
 	// for the operation to be idempotent. This is achieved by ignoring this
 	// request if the last successful operation on the resource had the same
-	// request ID.  Restricted to 36 utf-8 bytes.
+	// request ID.  Restricted to 36 Unicode characters.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// The name of the parent invocation in which the target is created.
 	// Its format must be invocations/${INVOCATION_ID}
 	Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
-	// The target identifier.  It can be any UTF-8 string up to 1024 bytes long
-	// except for the reserved id '-'.
+	// The target identifier.  It can be any string up to 1024 Unicode characters
+	// long except for the reserved id '-'.
 	TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
 	// The target to create.  Its name field will be ignored, since the name will
 	// be derived from the id field above and assigned by the server.
@@ -317,7 +635,7 @@
 func (m *CreateTargetRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateTargetRequest) ProtoMessage()    {}
 func (*CreateTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{4}
+	return fileDescriptor_3c379de3a2f884aa, []int{8}
 }
 
 func (m *CreateTargetRequest) XXX_Unmarshal(b []byte) error {
@@ -376,13 +694,17 @@
 // Request passed into UpdateTarget
 type UpdateTargetRequest struct {
 	// Contains the name and the fields of the target to be updated.  The name
-	// format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// format must be:
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
 	Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
 	// Indicates which fields to update.
 	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
-	AuthorizationToken   string   `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Update operation will become a Create operation if the
+	// Target is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -392,7 +714,7 @@
 func (m *UpdateTargetRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateTargetRequest) ProtoMessage()    {}
 func (*UpdateTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{5}
+	return fileDescriptor_3c379de3a2f884aa, []int{9}
 }
 
 func (m *UpdateTargetRequest) XXX_Unmarshal(b []byte) error {
@@ -434,10 +756,102 @@
 	return ""
 }
 
-// Request passed into FinishTarget
-type FinishTargetRequest struct {
+func (m *UpdateTargetRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into MergeTarget
+type MergeTargetRequest struct {
+	// A unique identifier for this request. Must be set to a different value for
+	// each request that affects a given resource (eg. a random UUID). Required
+	// for the operation to be idempotent. This is achieved by ignoring this
+	// request if the last successful operation on the resource had the same
+	// request ID.  Restricted to 36 Unicode characters.
+	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	// Contains the name and the fields of the target to be merged.  The name
+	// format must be:
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
+	Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
+	// Indicates which fields to merge.
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// This is a token to authorize access to this invocation. It must be set to
+	// the same value that was provided in the CreateInvocationRequest.
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Merge operation will become a Create operation if the
+	// Target is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MergeTargetRequest) Reset()         { *m = MergeTargetRequest{} }
+func (m *MergeTargetRequest) String() string { return proto.CompactTextString(m) }
+func (*MergeTargetRequest) ProtoMessage()    {}
+func (*MergeTargetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{10}
+}
+
+func (m *MergeTargetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeTargetRequest.Unmarshal(m, b)
+}
+func (m *MergeTargetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeTargetRequest.Marshal(b, m, deterministic)
+}
+func (m *MergeTargetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeTargetRequest.Merge(m, src)
+}
+func (m *MergeTargetRequest) XXX_Size() int {
+	return xxx_messageInfo_MergeTargetRequest.Size(m)
+}
+func (m *MergeTargetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeTargetRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeTargetRequest proto.InternalMessageInfo
+
+func (m *MergeTargetRequest) GetRequestId() string {
+	if m != nil {
+		return m.RequestId
+	}
+	return ""
+}
+
+func (m *MergeTargetRequest) GetTarget() *Target {
+	if m != nil {
+		return m.Target
+	}
+	return nil
+}
+
+func (m *MergeTargetRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *MergeTargetRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+func (m *MergeTargetRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into FinalizeTarget
+type FinalizeTargetRequest struct {
 	// The name of the target.  Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
@@ -447,49 +861,49 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *FinishTargetRequest) Reset()         { *m = FinishTargetRequest{} }
-func (m *FinishTargetRequest) String() string { return proto.CompactTextString(m) }
-func (*FinishTargetRequest) ProtoMessage()    {}
-func (*FinishTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{6}
+func (m *FinalizeTargetRequest) Reset()         { *m = FinalizeTargetRequest{} }
+func (m *FinalizeTargetRequest) String() string { return proto.CompactTextString(m) }
+func (*FinalizeTargetRequest) ProtoMessage()    {}
+func (*FinalizeTargetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{11}
 }
 
-func (m *FinishTargetRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FinishTargetRequest.Unmarshal(m, b)
+func (m *FinalizeTargetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FinalizeTargetRequest.Unmarshal(m, b)
 }
-func (m *FinishTargetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FinishTargetRequest.Marshal(b, m, deterministic)
+func (m *FinalizeTargetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FinalizeTargetRequest.Marshal(b, m, deterministic)
 }
-func (m *FinishTargetRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FinishTargetRequest.Merge(m, src)
+func (m *FinalizeTargetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FinalizeTargetRequest.Merge(m, src)
 }
-func (m *FinishTargetRequest) XXX_Size() int {
-	return xxx_messageInfo_FinishTargetRequest.Size(m)
+func (m *FinalizeTargetRequest) XXX_Size() int {
+	return xxx_messageInfo_FinalizeTargetRequest.Size(m)
 }
-func (m *FinishTargetRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FinishTargetRequest.DiscardUnknown(m)
+func (m *FinalizeTargetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_FinalizeTargetRequest.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_FinishTargetRequest proto.InternalMessageInfo
+var xxx_messageInfo_FinalizeTargetRequest proto.InternalMessageInfo
 
-func (m *FinishTargetRequest) GetName() string {
+func (m *FinalizeTargetRequest) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-func (m *FinishTargetRequest) GetAuthorizationToken() string {
+func (m *FinalizeTargetRequest) GetAuthorizationToken() string {
 	if m != nil {
 		return m.AuthorizationToken
 	}
 	return ""
 }
 
-// Response returned from FinishTarget
-type FinishTargetResponse struct {
+// Response returned from FinalizeTarget
+type FinalizeTargetResponse struct {
 	// The name of the target.  Its format will be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The resource ID components that identify the Target.
 	Id                   *Target_Id `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
@@ -498,39 +912,39 @@
 	XXX_sizecache        int32      `json:"-"`
 }
 
-func (m *FinishTargetResponse) Reset()         { *m = FinishTargetResponse{} }
-func (m *FinishTargetResponse) String() string { return proto.CompactTextString(m) }
-func (*FinishTargetResponse) ProtoMessage()    {}
-func (*FinishTargetResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{7}
+func (m *FinalizeTargetResponse) Reset()         { *m = FinalizeTargetResponse{} }
+func (m *FinalizeTargetResponse) String() string { return proto.CompactTextString(m) }
+func (*FinalizeTargetResponse) ProtoMessage()    {}
+func (*FinalizeTargetResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{12}
 }
 
-func (m *FinishTargetResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FinishTargetResponse.Unmarshal(m, b)
+func (m *FinalizeTargetResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FinalizeTargetResponse.Unmarshal(m, b)
 }
-func (m *FinishTargetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FinishTargetResponse.Marshal(b, m, deterministic)
+func (m *FinalizeTargetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FinalizeTargetResponse.Marshal(b, m, deterministic)
 }
-func (m *FinishTargetResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FinishTargetResponse.Merge(m, src)
+func (m *FinalizeTargetResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FinalizeTargetResponse.Merge(m, src)
 }
-func (m *FinishTargetResponse) XXX_Size() int {
-	return xxx_messageInfo_FinishTargetResponse.Size(m)
+func (m *FinalizeTargetResponse) XXX_Size() int {
+	return xxx_messageInfo_FinalizeTargetResponse.Size(m)
 }
-func (m *FinishTargetResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FinishTargetResponse.DiscardUnknown(m)
+func (m *FinalizeTargetResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_FinalizeTargetResponse.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_FinishTargetResponse proto.InternalMessageInfo
+var xxx_messageInfo_FinalizeTargetResponse proto.InternalMessageInfo
 
-func (m *FinishTargetResponse) GetName() string {
+func (m *FinalizeTargetResponse) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-func (m *FinishTargetResponse) GetId() *Target_Id {
+func (m *FinalizeTargetResponse) GetId() *Target_Id {
 	if m != nil {
 		return m.Id
 	}
@@ -543,11 +957,11 @@
 	// each request that affects a given resource (eg. a random UUID). Required
 	// for the operation to be idempotent. This is achieved by ignoring this
 	// request if the last successful operation on the resource had the same
-	// request ID.  Restricted to 36 utf-8 bytes.
+	// request ID.  Restricted to 36 Unicode characters.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// The name of the parent target in which the configured target is created.
 	// Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
 	Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
 	// The configuration identifier. This must match the ID of an existing
 	// Configuration under this Invocation. Cannot be the reserved id '-'.
@@ -567,7 +981,7 @@
 func (m *CreateConfiguredTargetRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateConfiguredTargetRequest) ProtoMessage()    {}
 func (*CreateConfiguredTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{8}
+	return fileDescriptor_3c379de3a2f884aa, []int{13}
 }
 
 func (m *CreateConfiguredTargetRequest) XXX_Unmarshal(b []byte) error {
@@ -627,13 +1041,16 @@
 type UpdateConfiguredTargetRequest struct {
 	// Contains the name and the fields of the configured target to be updated.
 	// The name format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
 	ConfiguredTarget *ConfiguredTarget `protobuf:"bytes,3,opt,name=configured_target,json=configuredTarget,proto3" json:"configured_target,omitempty"`
 	// Indicates which fields to update.
 	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
-	AuthorizationToken   string   `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Update operation will become a Create operation if the
+	// ConfiguredTarget is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -643,7 +1060,7 @@
 func (m *UpdateConfiguredTargetRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateConfiguredTargetRequest) ProtoMessage()    {}
 func (*UpdateConfiguredTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{9}
+	return fileDescriptor_3c379de3a2f884aa, []int{14}
 }
 
 func (m *UpdateConfiguredTargetRequest) XXX_Unmarshal(b []byte) error {
@@ -685,10 +1102,102 @@
 	return ""
 }
 
-// Request passed into FinishConfiguredTarget
-type FinishConfiguredTargetRequest struct {
+func (m *UpdateConfiguredTargetRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into MergeConfiguredTarget
+type MergeConfiguredTargetRequest struct {
+	// A unique identifier for this request. Must be set to a different value for
+	// each request that affects a given resource (eg. a random UUID). Required
+	// for the operation to be idempotent. This is achieved by ignoring this
+	// request if the last successful operation on the resource had the same
+	// request ID.  Restricted to 36 Unicode characters.
+	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	// Contains the name and the fields of the configured target to be merged.
+	// The name format must be:
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
+	ConfiguredTarget *ConfiguredTarget `protobuf:"bytes,3,opt,name=configured_target,json=configuredTarget,proto3" json:"configured_target,omitempty"`
+	// Indicates which fields to merge.
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// This is a token to authorize access to this invocation. It must be set to
+	// the same value that was provided in the CreateInvocationRequest.
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Merge operation will become a Create operation if the
+	// ConfiguredTarget is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MergeConfiguredTargetRequest) Reset()         { *m = MergeConfiguredTargetRequest{} }
+func (m *MergeConfiguredTargetRequest) String() string { return proto.CompactTextString(m) }
+func (*MergeConfiguredTargetRequest) ProtoMessage()    {}
+func (*MergeConfiguredTargetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{15}
+}
+
+func (m *MergeConfiguredTargetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeConfiguredTargetRequest.Unmarshal(m, b)
+}
+func (m *MergeConfiguredTargetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeConfiguredTargetRequest.Marshal(b, m, deterministic)
+}
+func (m *MergeConfiguredTargetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeConfiguredTargetRequest.Merge(m, src)
+}
+func (m *MergeConfiguredTargetRequest) XXX_Size() int {
+	return xxx_messageInfo_MergeConfiguredTargetRequest.Size(m)
+}
+func (m *MergeConfiguredTargetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeConfiguredTargetRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeConfiguredTargetRequest proto.InternalMessageInfo
+
+func (m *MergeConfiguredTargetRequest) GetRequestId() string {
+	if m != nil {
+		return m.RequestId
+	}
+	return ""
+}
+
+func (m *MergeConfiguredTargetRequest) GetConfiguredTarget() *ConfiguredTarget {
+	if m != nil {
+		return m.ConfiguredTarget
+	}
+	return nil
+}
+
+func (m *MergeConfiguredTargetRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *MergeConfiguredTargetRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+func (m *MergeConfiguredTargetRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into FinalizeConfiguredTarget
+type FinalizeConfiguredTargetRequest struct {
 	// The name of the configured target. Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
@@ -698,49 +1207,49 @@
 	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *FinishConfiguredTargetRequest) Reset()         { *m = FinishConfiguredTargetRequest{} }
-func (m *FinishConfiguredTargetRequest) String() string { return proto.CompactTextString(m) }
-func (*FinishConfiguredTargetRequest) ProtoMessage()    {}
-func (*FinishConfiguredTargetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{10}
+func (m *FinalizeConfiguredTargetRequest) Reset()         { *m = FinalizeConfiguredTargetRequest{} }
+func (m *FinalizeConfiguredTargetRequest) String() string { return proto.CompactTextString(m) }
+func (*FinalizeConfiguredTargetRequest) ProtoMessage()    {}
+func (*FinalizeConfiguredTargetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{16}
 }
 
-func (m *FinishConfiguredTargetRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FinishConfiguredTargetRequest.Unmarshal(m, b)
+func (m *FinalizeConfiguredTargetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FinalizeConfiguredTargetRequest.Unmarshal(m, b)
 }
-func (m *FinishConfiguredTargetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FinishConfiguredTargetRequest.Marshal(b, m, deterministic)
+func (m *FinalizeConfiguredTargetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FinalizeConfiguredTargetRequest.Marshal(b, m, deterministic)
 }
-func (m *FinishConfiguredTargetRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FinishConfiguredTargetRequest.Merge(m, src)
+func (m *FinalizeConfiguredTargetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FinalizeConfiguredTargetRequest.Merge(m, src)
 }
-func (m *FinishConfiguredTargetRequest) XXX_Size() int {
-	return xxx_messageInfo_FinishConfiguredTargetRequest.Size(m)
+func (m *FinalizeConfiguredTargetRequest) XXX_Size() int {
+	return xxx_messageInfo_FinalizeConfiguredTargetRequest.Size(m)
 }
-func (m *FinishConfiguredTargetRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FinishConfiguredTargetRequest.DiscardUnknown(m)
+func (m *FinalizeConfiguredTargetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_FinalizeConfiguredTargetRequest.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_FinishConfiguredTargetRequest proto.InternalMessageInfo
+var xxx_messageInfo_FinalizeConfiguredTargetRequest proto.InternalMessageInfo
 
-func (m *FinishConfiguredTargetRequest) GetName() string {
+func (m *FinalizeConfiguredTargetRequest) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-func (m *FinishConfiguredTargetRequest) GetAuthorizationToken() string {
+func (m *FinalizeConfiguredTargetRequest) GetAuthorizationToken() string {
 	if m != nil {
 		return m.AuthorizationToken
 	}
 	return ""
 }
 
-// Response returned from FinishConfiguredTarget
-type FinishConfiguredTargetResponse struct {
+// Response returned from FinalizeConfiguredTarget
+type FinalizeConfiguredTargetResponse struct {
 	// The name of the configured target. Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The resource ID components that identify the ConfiguredTarget.
 	Id                   *ConfiguredTarget_Id `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
@@ -749,39 +1258,39 @@
 	XXX_sizecache        int32                `json:"-"`
 }
 
-func (m *FinishConfiguredTargetResponse) Reset()         { *m = FinishConfiguredTargetResponse{} }
-func (m *FinishConfiguredTargetResponse) String() string { return proto.CompactTextString(m) }
-func (*FinishConfiguredTargetResponse) ProtoMessage()    {}
-func (*FinishConfiguredTargetResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{11}
+func (m *FinalizeConfiguredTargetResponse) Reset()         { *m = FinalizeConfiguredTargetResponse{} }
+func (m *FinalizeConfiguredTargetResponse) String() string { return proto.CompactTextString(m) }
+func (*FinalizeConfiguredTargetResponse) ProtoMessage()    {}
+func (*FinalizeConfiguredTargetResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{17}
 }
 
-func (m *FinishConfiguredTargetResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FinishConfiguredTargetResponse.Unmarshal(m, b)
+func (m *FinalizeConfiguredTargetResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FinalizeConfiguredTargetResponse.Unmarshal(m, b)
 }
-func (m *FinishConfiguredTargetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FinishConfiguredTargetResponse.Marshal(b, m, deterministic)
+func (m *FinalizeConfiguredTargetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FinalizeConfiguredTargetResponse.Marshal(b, m, deterministic)
 }
-func (m *FinishConfiguredTargetResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FinishConfiguredTargetResponse.Merge(m, src)
+func (m *FinalizeConfiguredTargetResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FinalizeConfiguredTargetResponse.Merge(m, src)
 }
-func (m *FinishConfiguredTargetResponse) XXX_Size() int {
-	return xxx_messageInfo_FinishConfiguredTargetResponse.Size(m)
+func (m *FinalizeConfiguredTargetResponse) XXX_Size() int {
+	return xxx_messageInfo_FinalizeConfiguredTargetResponse.Size(m)
 }
-func (m *FinishConfiguredTargetResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FinishConfiguredTargetResponse.DiscardUnknown(m)
+func (m *FinalizeConfiguredTargetResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_FinalizeConfiguredTargetResponse.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_FinishConfiguredTargetResponse proto.InternalMessageInfo
+var xxx_messageInfo_FinalizeConfiguredTargetResponse proto.InternalMessageInfo
 
-func (m *FinishConfiguredTargetResponse) GetName() string {
+func (m *FinalizeConfiguredTargetResponse) GetName() string {
 	if m != nil {
 		return m.Name
 	}
 	return ""
 }
 
-func (m *FinishConfiguredTargetResponse) GetId() *ConfiguredTarget_Id {
+func (m *FinalizeConfiguredTargetResponse) GetId() *ConfiguredTarget_Id {
 	if m != nil {
 		return m.Id
 	}
@@ -794,14 +1303,22 @@
 	// each request that affects a given resource (eg. a random UUID). Required
 	// for the operation to be idempotent. This is achieved by ignoring this
 	// request if the last successful operation on the resource had the same
-	// request ID.  Restricted to 36 utf-8 bytes.
+	// request ID.  Restricted to 36 Unicode characters.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// The name of the parent configured target in which the action is created.
 	// Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
 	Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
-	// The action identifier. It can be any UTF-8 string up to 512 bytes long,
-	// except for the reserved id '-'.
+	// The action identifier. It can be any string up to 512 Unicode characters
+	// long, except for the reserved id '-'.
+	//
+	// Recommended IDs for Test Actions:
+	// "test": For a single test action.
+	// "test_shard0_run0_attempt0" ... "test_shard9_run9_attempt9": For tests with
+	//  shard/run/attempts.
+	//
+	// Recommended IDs for Build Actions:
+	// "build": If you only have a single build action.
 	ActionId string `protobuf:"bytes,3,opt,name=action_id,json=actionId,proto3" json:"action_id,omitempty"`
 	// The action to create.  Its name field will be ignored, since the
 	// name will be derived from the id field above and assigned by the server.
@@ -818,7 +1335,7 @@
 func (m *CreateActionRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateActionRequest) ProtoMessage()    {}
 func (*CreateActionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{12}
+	return fileDescriptor_3c379de3a2f884aa, []int{18}
 }
 
 func (m *CreateActionRequest) XXX_Unmarshal(b []byte) error {
@@ -878,13 +1395,16 @@
 type UpdateActionRequest struct {
 	// Contains the name and the fields of the action to be updated.  The
 	// name format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}/actions/${ACTION_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}/actions/${url_encode(ACTION_ID)}
 	Action *Action `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"`
 	// Indicates which fields to update.
 	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
-	AuthorizationToken   string   `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Update operation will become a Create operation if the
+	// Action is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -894,7 +1414,7 @@
 func (m *UpdateActionRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateActionRequest) ProtoMessage()    {}
 func (*UpdateActionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{13}
+	return fileDescriptor_3c379de3a2f884aa, []int{19}
 }
 
 func (m *UpdateActionRequest) XXX_Unmarshal(b []byte) error {
@@ -936,20 +1456,113 @@
 	return ""
 }
 
+func (m *UpdateActionRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into MergeAction
+type MergeActionRequest struct {
+	// A unique identifier for this request. Must be set to a different value for
+	// each request that affects a given resource (eg. a random UUID). Required
+	// for the operation to be idempotent. This is achieved by ignoring this
+	// request if the last successful operation on the resource had the same
+	// request ID.  Restricted to 36 Unicode characters.
+	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	// Contains the name and the fields of the action to be merged.  The
+	// name format must be:
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}/actions/${url_encode(ACTION_ID)}
+	Action *Action `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"`
+	// Indicates which fields to merge.
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// This is a token to authorize access to this invocation. It must be set to
+	// the same value that was provided in the CreateInvocationRequest.
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Merge operation will become a Create operation if the
+	// Action is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MergeActionRequest) Reset()         { *m = MergeActionRequest{} }
+func (m *MergeActionRequest) String() string { return proto.CompactTextString(m) }
+func (*MergeActionRequest) ProtoMessage()    {}
+func (*MergeActionRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{20}
+}
+
+func (m *MergeActionRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeActionRequest.Unmarshal(m, b)
+}
+func (m *MergeActionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeActionRequest.Marshal(b, m, deterministic)
+}
+func (m *MergeActionRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeActionRequest.Merge(m, src)
+}
+func (m *MergeActionRequest) XXX_Size() int {
+	return xxx_messageInfo_MergeActionRequest.Size(m)
+}
+func (m *MergeActionRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeActionRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeActionRequest proto.InternalMessageInfo
+
+func (m *MergeActionRequest) GetRequestId() string {
+	if m != nil {
+		return m.RequestId
+	}
+	return ""
+}
+
+func (m *MergeActionRequest) GetAction() *Action {
+	if m != nil {
+		return m.Action
+	}
+	return nil
+}
+
+func (m *MergeActionRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *MergeActionRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+func (m *MergeActionRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
 // Request passed into CreateConfiguration
 type CreateConfigurationRequest struct {
 	// A unique identifier for this request. Must be set to a different value for
 	// each request that affects a given resource (eg. a random UUID). Required
 	// for the operation to be idempotent. This is achieved by ignoring this
 	// request if the last successful operation on the resource had the same
-	// request ID.  Restricted to 36 utf-8 bytes.
+	// request ID.  Restricted to 36 Unicode characters.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// The name of the parent invocation in which the configuration is created.
 	// Its format must be invocations/${INVOCATION_ID}
 	Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
-	// The configuration identifier. It can be any UTF-8 string up to 256 bytes
-	// long. The configuration ID of "default" should be preferred for the default
-	// configuration in a single-config invocation. Cannot be the reserved id '-'.
+	// The configuration identifier. It can be any string up to 256 Unicode
+	// characters long. The configuration ID of "default" should be preferred for
+	// the default configuration in a single-config invocation. Cannot be the
+	// reserved id '-'.
 	ConfigId string `protobuf:"bytes,3,opt,name=config_id,json=configId,proto3" json:"config_id,omitempty"`
 	// The configuration to create. Its name field will be ignored, since the name
 	// will be derived from the id field above and assigned by the server.
@@ -966,7 +1579,7 @@
 func (m *CreateConfigurationRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateConfigurationRequest) ProtoMessage()    {}
 func (*CreateConfigurationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{14}
+	return fileDescriptor_3c379de3a2f884aa, []int{21}
 }
 
 func (m *CreateConfigurationRequest) XXX_Unmarshal(b []byte) error {
@@ -1025,13 +1638,17 @@
 // Request passed into UpdateConfiguration
 type UpdateConfigurationRequest struct {
 	// Contains the name and fields of the configuration to be updated. The name
-	// format must be: invocations/${INVOCATION_ID}/configs/${CONFIG_ID}
+	// format must be:
+	// invocations/${INVOCATION_ID}/configs/${url_encode(CONFIG_ID)}
 	Configuration *Configuration `protobuf:"bytes,3,opt,name=configuration,proto3" json:"configuration,omitempty"`
 	// Indicates which fields to update.
 	UpdateMask *field_mask.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
-	AuthorizationToken   string   `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	AuthorizationToken string `protobuf:"bytes,5,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Update operation will become a Create operation if the
+	// Configuration is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,6,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1041,7 +1658,7 @@
 func (m *UpdateConfigurationRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateConfigurationRequest) ProtoMessage()    {}
 func (*UpdateConfigurationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{15}
+	return fileDescriptor_3c379de3a2f884aa, []int{22}
 }
 
 func (m *UpdateConfigurationRequest) XXX_Unmarshal(b []byte) error {
@@ -1083,18 +1700,26 @@
 	return ""
 }
 
+func (m *UpdateConfigurationRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
 // Request passed into CreateFileSet
 type CreateFileSetRequest struct {
 	// A unique identifier for this request. Must be set to a different value for
 	// each request that affects a given resource (eg. a random UUID). Required
 	// for the operation to be idempotent. This is achieved by ignoring this
 	// request if the last successful operation on the resource had the same
-	// request ID.  Restricted to 36 utf-8 bytes.
+	// request ID.  Restricted to 36 Unicode characters.
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// The name of the parent invocation in which the file set is created.
 	// Its format must be invocations/${INVOCATION_ID}
 	Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
-	// The file set identifier. It can be any UTF-8 string up to 256 bytes long.
+	// The file set identifier. It can be any string up to 256 Unicode characters
+	// long.
 	FileSetId string `protobuf:"bytes,3,opt,name=file_set_id,json=fileSetId,proto3" json:"file_set_id,omitempty"`
 	// The file set to create. Its name field will be ignored, since the name will
 	// be derived from the id field above and assigned by the server.
@@ -1111,7 +1736,7 @@
 func (m *CreateFileSetRequest) String() string { return proto.CompactTextString(m) }
 func (*CreateFileSetRequest) ProtoMessage()    {}
 func (*CreateFileSetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{16}
+	return fileDescriptor_3c379de3a2f884aa, []int{23}
 }
 
 func (m *CreateFileSetRequest) XXX_Unmarshal(b []byte) error {
@@ -1170,13 +1795,16 @@
 // Request passed into UpdateFileSet
 type UpdateFileSetRequest struct {
 	// Contains the name and fields of the file set to be updated. The name format
-	// must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
+	// must be: invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)}
 	FileSet *FileSet `protobuf:"bytes,1,opt,name=file_set,json=fileSet,proto3" json:"file_set,omitempty"`
 	// Indicates which fields to update.
 	UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
 	// This is a token to authorize access to this invocation. It must be set to
 	// the same value that was provided in the CreateInvocationRequest.
-	AuthorizationToken   string   `protobuf:"bytes,3,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	AuthorizationToken string `protobuf:"bytes,3,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Update operation will become a Create operation if the
+	// FileSet is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,4,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1186,7 +1814,7 @@
 func (m *UpdateFileSetRequest) String() string { return proto.CompactTextString(m) }
 func (*UpdateFileSetRequest) ProtoMessage()    {}
 func (*UpdateFileSetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3c379de3a2f884aa, []int{17}
+	return fileDescriptor_3c379de3a2f884aa, []int{24}
 }
 
 func (m *UpdateFileSetRequest) XXX_Unmarshal(b []byte) error {
@@ -1228,25 +1856,591 @@
 	return ""
 }
 
+func (m *UpdateFileSetRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into MergeFileSet
+type MergeFileSetRequest struct {
+	// A unique identifier for this request. Must be set to a different value for
+	// each request that affects a given resource (eg. a random UUID). Required
+	// for the operation to be idempotent. This is achieved by ignoring this
+	// request if the last successful operation on the resource had the same
+	// request ID.  Restricted to 36 Unicode characters.
+	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	// Contains the name and fields of the file set to be merged. The name
+	// format must be:
+	// invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)}
+	FileSet *FileSet `protobuf:"bytes,2,opt,name=file_set,json=fileSet,proto3" json:"file_set,omitempty"`
+	// Indicates which fields to merge.
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// This is a token to authorize access to this invocation. It must be set to
+	// the same value that was provided in the CreateInvocationRequest.
+	AuthorizationToken string `protobuf:"bytes,4,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// If true then the Merge operation will become a Create operation if the
+	// FileSet is NOT_FOUND.
+	CreateIfNotFound     bool     `protobuf:"varint,5,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MergeFileSetRequest) Reset()         { *m = MergeFileSetRequest{} }
+func (m *MergeFileSetRequest) String() string { return proto.CompactTextString(m) }
+func (*MergeFileSetRequest) ProtoMessage()    {}
+func (*MergeFileSetRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{25}
+}
+
+func (m *MergeFileSetRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MergeFileSetRequest.Unmarshal(m, b)
+}
+func (m *MergeFileSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MergeFileSetRequest.Marshal(b, m, deterministic)
+}
+func (m *MergeFileSetRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MergeFileSetRequest.Merge(m, src)
+}
+func (m *MergeFileSetRequest) XXX_Size() int {
+	return xxx_messageInfo_MergeFileSetRequest.Size(m)
+}
+func (m *MergeFileSetRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MergeFileSetRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MergeFileSetRequest proto.InternalMessageInfo
+
+func (m *MergeFileSetRequest) GetRequestId() string {
+	if m != nil {
+		return m.RequestId
+	}
+	return ""
+}
+
+func (m *MergeFileSetRequest) GetFileSet() *FileSet {
+	if m != nil {
+		return m.FileSet
+	}
+	return nil
+}
+
+func (m *MergeFileSetRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *MergeFileSetRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+func (m *MergeFileSetRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+// Request passed into UploadBatch
+type UploadBatchRequest struct {
+	// Required. The name of the invocation being modified.
+	// The name format must be: invocations/${INVOCATION_ID}
+	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
+	// Required. A UUID that must match the value provided in CreateInvocationRequest.
+	AuthorizationToken string `protobuf:"bytes,2,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	// Required. The token of this batch, that will be committed in this UploadBatchRequest.
+	// If this matches the previously uploaded resume_token, then this request
+	// will silently do nothing.
+	// See CreateInvocationRequest.initial_resume_token for more information.
+	// Must be web safe Base64 encoded bytes.
+	NextResumeToken string `protobuf:"bytes,3,opt,name=next_resume_token,json=nextResumeToken,proto3" json:"next_resume_token,omitempty"`
+	// Required. The token of the previous batch that was committed in a UploadBatchRequest.
+	// This will be checked after next_resume_token match is checked. If this does
+	// not match the previously uploaded resume_token, a 409 Conflict (HTTPS) or
+	// ABORTED (gRPC ) error code indicating a concurrency
+	// failure will be returned, and that the user should call
+	// GetInvocationUploadMetadata to fetch the current resume_token to
+	// reconstruct the state of the upload to resume it.
+	// See CreateInvocationRequest.initial_resume_token for more information.
+	// Must be web safe Base64 encoded bytes.
+	ResumeToken string `protobuf:"bytes,4,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"`
+	// Client-specific data used to resume batch upload if an error occurs and
+	// retry is needed. This serves a role closely related to resume_token, as
+	// both fields may be used to provide state required to restore a Batch
+	// Upload, but they differ in two important aspects:
+	//  - it is not compared to previous values, and as such does not provide
+	//    concurrency control;
+	//  - it allows for a larger payload, since the contents are never
+	//    inspected/compared;
+	// The size of the message must be within 1 MiB. Too large requests will be
+	// rejected.
+	UploaderState []byte `protobuf:"bytes,6,opt,name=uploader_state,json=uploaderState,proto3" json:"uploader_state,omitempty"`
+	// The individual upload requests for this batch.
+	// The recommend total size for a batch is 10 MiB. Too large requests may be
+	// rejected.
+	// This field may be empty, allowing this RPC to be used like TouchInvocation.
+	UploadRequests       []*UploadRequest `protobuf:"bytes,5,rep,name=upload_requests,json=uploadRequests,proto3" json:"upload_requests,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *UploadBatchRequest) Reset()         { *m = UploadBatchRequest{} }
+func (m *UploadBatchRequest) String() string { return proto.CompactTextString(m) }
+func (*UploadBatchRequest) ProtoMessage()    {}
+func (*UploadBatchRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{26}
+}
+
+func (m *UploadBatchRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadBatchRequest.Unmarshal(m, b)
+}
+func (m *UploadBatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadBatchRequest.Marshal(b, m, deterministic)
+}
+func (m *UploadBatchRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadBatchRequest.Merge(m, src)
+}
+func (m *UploadBatchRequest) XXX_Size() int {
+	return xxx_messageInfo_UploadBatchRequest.Size(m)
+}
+func (m *UploadBatchRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadBatchRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadBatchRequest proto.InternalMessageInfo
+
+func (m *UploadBatchRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *UploadBatchRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
+func (m *UploadBatchRequest) GetNextResumeToken() string {
+	if m != nil {
+		return m.NextResumeToken
+	}
+	return ""
+}
+
+func (m *UploadBatchRequest) GetResumeToken() string {
+	if m != nil {
+		return m.ResumeToken
+	}
+	return ""
+}
+
+func (m *UploadBatchRequest) GetUploaderState() []byte {
+	if m != nil {
+		return m.UploaderState
+	}
+	return nil
+}
+
+func (m *UploadBatchRequest) GetUploadRequests() []*UploadRequest {
+	if m != nil {
+		return m.UploadRequests
+	}
+	return nil
+}
+
+// Response for UploadBatch
+type UploadBatchResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UploadBatchResponse) Reset()         { *m = UploadBatchResponse{} }
+func (m *UploadBatchResponse) String() string { return proto.CompactTextString(m) }
+func (*UploadBatchResponse) ProtoMessage()    {}
+func (*UploadBatchResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{27}
+}
+
+func (m *UploadBatchResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadBatchResponse.Unmarshal(m, b)
+}
+func (m *UploadBatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadBatchResponse.Marshal(b, m, deterministic)
+}
+func (m *UploadBatchResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadBatchResponse.Merge(m, src)
+}
+func (m *UploadBatchResponse) XXX_Size() int {
+	return xxx_messageInfo_UploadBatchResponse.Size(m)
+}
+func (m *UploadBatchResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadBatchResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadBatchResponse proto.InternalMessageInfo
+
+// The individual upload requests for this batch.
+type UploadRequest struct {
+	// The resource ID components that identify the resource being uploaded.
+	Id *UploadRequest_Id `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	// The operation for the request (e.g. Create(), Update(), etc.)
+	UploadOperation UploadRequest_UploadOperation `protobuf:"varint,2,opt,name=upload_operation,json=uploadOperation,proto3,enum=google.devtools.resultstore.v2.UploadRequest_UploadOperation" json:"upload_operation,omitempty"`
+	// Required for Update and Merge operations.
+	// Ignored for Create and Finalize operations.
+	// Masks the fields of the resource being uploaded. Provides support for a
+	// more granular upload.
+	// FieldMask must match one of the follow patterns, where * means any single
+	// field name:
+	// Invocation: [*, status_attributes.*, timing.*, invocation_attributes.*,
+	// workspace_info.*].
+	// Target: [*, status_attributes.*, timing.*].
+	// Configuration: [*, status_attributes.*].
+	// ConfiguredTarget: [*, status_attributes.*].
+	// Action: [*, status_attributes.*, timing.*, test_action.test_suite,
+	// test_action.infrastructure_failure_info].
+	// FileSet: [*].
+	UpdateMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
+	// If true then the Update, Merge operation will become a Create operation if
+	// the resource is NOT_FOUND.
+	CreateIfNotFound bool `protobuf:"varint,10,opt,name=create_if_not_found,json=createIfNotFound,proto3" json:"create_if_not_found,omitempty"`
+	// The proto of the resource being uploaded.
+	//
+	// Types that are valid to be assigned to Resource:
+	//	*UploadRequest_Invocation
+	//	*UploadRequest_Target
+	//	*UploadRequest_Configuration
+	//	*UploadRequest_ConfiguredTarget
+	//	*UploadRequest_Action
+	//	*UploadRequest_FileSet
+	Resource             isUploadRequest_Resource `protobuf_oneof:"resource"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *UploadRequest) Reset()         { *m = UploadRequest{} }
+func (m *UploadRequest) String() string { return proto.CompactTextString(m) }
+func (*UploadRequest) ProtoMessage()    {}
+func (*UploadRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{28}
+}
+
+func (m *UploadRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadRequest.Unmarshal(m, b)
+}
+func (m *UploadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadRequest.Marshal(b, m, deterministic)
+}
+func (m *UploadRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadRequest.Merge(m, src)
+}
+func (m *UploadRequest) XXX_Size() int {
+	return xxx_messageInfo_UploadRequest.Size(m)
+}
+func (m *UploadRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadRequest proto.InternalMessageInfo
+
+func (m *UploadRequest) GetId() *UploadRequest_Id {
+	if m != nil {
+		return m.Id
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetUploadOperation() UploadRequest_UploadOperation {
+	if m != nil {
+		return m.UploadOperation
+	}
+	return UploadRequest_UPLOAD_OPERATION_UNSPECIFIED
+}
+
+func (m *UploadRequest) GetUpdateMask() *field_mask.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetCreateIfNotFound() bool {
+	if m != nil {
+		return m.CreateIfNotFound
+	}
+	return false
+}
+
+type isUploadRequest_Resource interface {
+	isUploadRequest_Resource()
+}
+
+type UploadRequest_Invocation struct {
+	Invocation *Invocation `protobuf:"bytes,4,opt,name=invocation,proto3,oneof"`
+}
+
+type UploadRequest_Target struct {
+	Target *Target `protobuf:"bytes,5,opt,name=target,proto3,oneof"`
+}
+
+type UploadRequest_Configuration struct {
+	Configuration *Configuration `protobuf:"bytes,6,opt,name=configuration,proto3,oneof"`
+}
+
+type UploadRequest_ConfiguredTarget struct {
+	ConfiguredTarget *ConfiguredTarget `protobuf:"bytes,7,opt,name=configured_target,json=configuredTarget,proto3,oneof"`
+}
+
+type UploadRequest_Action struct {
+	Action *Action `protobuf:"bytes,8,opt,name=action,proto3,oneof"`
+}
+
+type UploadRequest_FileSet struct {
+	FileSet *FileSet `protobuf:"bytes,9,opt,name=file_set,json=fileSet,proto3,oneof"`
+}
+
+func (*UploadRequest_Invocation) isUploadRequest_Resource() {}
+
+func (*UploadRequest_Target) isUploadRequest_Resource() {}
+
+func (*UploadRequest_Configuration) isUploadRequest_Resource() {}
+
+func (*UploadRequest_ConfiguredTarget) isUploadRequest_Resource() {}
+
+func (*UploadRequest_Action) isUploadRequest_Resource() {}
+
+func (*UploadRequest_FileSet) isUploadRequest_Resource() {}
+
+func (m *UploadRequest) GetResource() isUploadRequest_Resource {
+	if m != nil {
+		return m.Resource
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetInvocation() *Invocation {
+	if x, ok := m.GetResource().(*UploadRequest_Invocation); ok {
+		return x.Invocation
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetTarget() *Target {
+	if x, ok := m.GetResource().(*UploadRequest_Target); ok {
+		return x.Target
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetConfiguration() *Configuration {
+	if x, ok := m.GetResource().(*UploadRequest_Configuration); ok {
+		return x.Configuration
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetConfiguredTarget() *ConfiguredTarget {
+	if x, ok := m.GetResource().(*UploadRequest_ConfiguredTarget); ok {
+		return x.ConfiguredTarget
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetAction() *Action {
+	if x, ok := m.GetResource().(*UploadRequest_Action); ok {
+		return x.Action
+	}
+	return nil
+}
+
+func (m *UploadRequest) GetFileSet() *FileSet {
+	if x, ok := m.GetResource().(*UploadRequest_FileSet); ok {
+		return x.FileSet
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*UploadRequest) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*UploadRequest_Invocation)(nil),
+		(*UploadRequest_Target)(nil),
+		(*UploadRequest_Configuration)(nil),
+		(*UploadRequest_ConfiguredTarget)(nil),
+		(*UploadRequest_Action)(nil),
+		(*UploadRequest_FileSet)(nil),
+	}
+}
+
+// The resource ID components that identify the resource being uploaded.
+type UploadRequest_Id struct {
+	// Required for Target, ConfiguredTarget, or Action.
+	// The Target ID.
+	TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"`
+	// Required for Configuration, ConfiguredTarget, or Action.
+	// The Configuration ID.
+	ConfigurationId string `protobuf:"bytes,2,opt,name=configuration_id,json=configurationId,proto3" json:"configuration_id,omitempty"`
+	// Required for Action.
+	// The Action ID.
+	ActionId string `protobuf:"bytes,3,opt,name=action_id,json=actionId,proto3" json:"action_id,omitempty"`
+	// Required for FileSet.
+	// The FileSet ID.
+	FileSetId            string   `protobuf:"bytes,4,opt,name=file_set_id,json=fileSetId,proto3" json:"file_set_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UploadRequest_Id) Reset()         { *m = UploadRequest_Id{} }
+func (m *UploadRequest_Id) String() string { return proto.CompactTextString(m) }
+func (*UploadRequest_Id) ProtoMessage()    {}
+func (*UploadRequest_Id) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{28, 0}
+}
+
+func (m *UploadRequest_Id) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadRequest_Id.Unmarshal(m, b)
+}
+func (m *UploadRequest_Id) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadRequest_Id.Marshal(b, m, deterministic)
+}
+func (m *UploadRequest_Id) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadRequest_Id.Merge(m, src)
+}
+func (m *UploadRequest_Id) XXX_Size() int {
+	return xxx_messageInfo_UploadRequest_Id.Size(m)
+}
+func (m *UploadRequest_Id) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadRequest_Id.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadRequest_Id proto.InternalMessageInfo
+
+func (m *UploadRequest_Id) GetTargetId() string {
+	if m != nil {
+		return m.TargetId
+	}
+	return ""
+}
+
+func (m *UploadRequest_Id) GetConfigurationId() string {
+	if m != nil {
+		return m.ConfigurationId
+	}
+	return ""
+}
+
+func (m *UploadRequest_Id) GetActionId() string {
+	if m != nil {
+		return m.ActionId
+	}
+	return ""
+}
+
+func (m *UploadRequest_Id) GetFileSetId() string {
+	if m != nil {
+		return m.FileSetId
+	}
+	return ""
+}
+
+// Request passed into GetInvocationUploadMetadata
+type GetInvocationUploadMetadataRequest struct {
+	// Required
+	// The name of the UploadMetadata being requested.
+	// The name format must be: invocations/${INVOCATION_ID}/uploadMetadata
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// Required. A UUID that must match the value provided in CreateInvocationRequest.
+	AuthorizationToken   string   `protobuf:"bytes,2,opt,name=authorization_token,json=authorizationToken,proto3" json:"authorization_token,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetInvocationUploadMetadataRequest) Reset()         { *m = GetInvocationUploadMetadataRequest{} }
+func (m *GetInvocationUploadMetadataRequest) String() string { return proto.CompactTextString(m) }
+func (*GetInvocationUploadMetadataRequest) ProtoMessage()    {}
+func (*GetInvocationUploadMetadataRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3c379de3a2f884aa, []int{29}
+}
+
+func (m *GetInvocationUploadMetadataRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetInvocationUploadMetadataRequest.Unmarshal(m, b)
+}
+func (m *GetInvocationUploadMetadataRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetInvocationUploadMetadataRequest.Marshal(b, m, deterministic)
+}
+func (m *GetInvocationUploadMetadataRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetInvocationUploadMetadataRequest.Merge(m, src)
+}
+func (m *GetInvocationUploadMetadataRequest) XXX_Size() int {
+	return xxx_messageInfo_GetInvocationUploadMetadataRequest.Size(m)
+}
+func (m *GetInvocationUploadMetadataRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetInvocationUploadMetadataRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetInvocationUploadMetadataRequest proto.InternalMessageInfo
+
+func (m *GetInvocationUploadMetadataRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *GetInvocationUploadMetadataRequest) GetAuthorizationToken() string {
+	if m != nil {
+		return m.AuthorizationToken
+	}
+	return ""
+}
+
 func init() {
+	proto.RegisterEnum("google.devtools.resultstore.v2.UploadRequest_UploadOperation", UploadRequest_UploadOperation_name, UploadRequest_UploadOperation_value)
 	proto.RegisterType((*CreateInvocationRequest)(nil), "google.devtools.resultstore.v2.CreateInvocationRequest")
 	proto.RegisterType((*UpdateInvocationRequest)(nil), "google.devtools.resultstore.v2.UpdateInvocationRequest")
-	proto.RegisterType((*FinishInvocationRequest)(nil), "google.devtools.resultstore.v2.FinishInvocationRequest")
-	proto.RegisterType((*FinishInvocationResponse)(nil), "google.devtools.resultstore.v2.FinishInvocationResponse")
+	proto.RegisterType((*MergeInvocationRequest)(nil), "google.devtools.resultstore.v2.MergeInvocationRequest")
+	proto.RegisterType((*TouchInvocationRequest)(nil), "google.devtools.resultstore.v2.TouchInvocationRequest")
+	proto.RegisterType((*TouchInvocationResponse)(nil), "google.devtools.resultstore.v2.TouchInvocationResponse")
+	proto.RegisterType((*DeleteInvocationRequest)(nil), "google.devtools.resultstore.v2.DeleteInvocationRequest")
+	proto.RegisterType((*FinalizeInvocationRequest)(nil), "google.devtools.resultstore.v2.FinalizeInvocationRequest")
+	proto.RegisterType((*FinalizeInvocationResponse)(nil), "google.devtools.resultstore.v2.FinalizeInvocationResponse")
 	proto.RegisterType((*CreateTargetRequest)(nil), "google.devtools.resultstore.v2.CreateTargetRequest")
 	proto.RegisterType((*UpdateTargetRequest)(nil), "google.devtools.resultstore.v2.UpdateTargetRequest")
-	proto.RegisterType((*FinishTargetRequest)(nil), "google.devtools.resultstore.v2.FinishTargetRequest")
-	proto.RegisterType((*FinishTargetResponse)(nil), "google.devtools.resultstore.v2.FinishTargetResponse")
+	proto.RegisterType((*MergeTargetRequest)(nil), "google.devtools.resultstore.v2.MergeTargetRequest")
+	proto.RegisterType((*FinalizeTargetRequest)(nil), "google.devtools.resultstore.v2.FinalizeTargetRequest")
+	proto.RegisterType((*FinalizeTargetResponse)(nil), "google.devtools.resultstore.v2.FinalizeTargetResponse")
 	proto.RegisterType((*CreateConfiguredTargetRequest)(nil), "google.devtools.resultstore.v2.CreateConfiguredTargetRequest")
 	proto.RegisterType((*UpdateConfiguredTargetRequest)(nil), "google.devtools.resultstore.v2.UpdateConfiguredTargetRequest")
-	proto.RegisterType((*FinishConfiguredTargetRequest)(nil), "google.devtools.resultstore.v2.FinishConfiguredTargetRequest")
-	proto.RegisterType((*FinishConfiguredTargetResponse)(nil), "google.devtools.resultstore.v2.FinishConfiguredTargetResponse")
+	proto.RegisterType((*MergeConfiguredTargetRequest)(nil), "google.devtools.resultstore.v2.MergeConfiguredTargetRequest")
+	proto.RegisterType((*FinalizeConfiguredTargetRequest)(nil), "google.devtools.resultstore.v2.FinalizeConfiguredTargetRequest")
+	proto.RegisterType((*FinalizeConfiguredTargetResponse)(nil), "google.devtools.resultstore.v2.FinalizeConfiguredTargetResponse")
 	proto.RegisterType((*CreateActionRequest)(nil), "google.devtools.resultstore.v2.CreateActionRequest")
 	proto.RegisterType((*UpdateActionRequest)(nil), "google.devtools.resultstore.v2.UpdateActionRequest")
+	proto.RegisterType((*MergeActionRequest)(nil), "google.devtools.resultstore.v2.MergeActionRequest")
 	proto.RegisterType((*CreateConfigurationRequest)(nil), "google.devtools.resultstore.v2.CreateConfigurationRequest")
 	proto.RegisterType((*UpdateConfigurationRequest)(nil), "google.devtools.resultstore.v2.UpdateConfigurationRequest")
 	proto.RegisterType((*CreateFileSetRequest)(nil), "google.devtools.resultstore.v2.CreateFileSetRequest")
 	proto.RegisterType((*UpdateFileSetRequest)(nil), "google.devtools.resultstore.v2.UpdateFileSetRequest")
+	proto.RegisterType((*MergeFileSetRequest)(nil), "google.devtools.resultstore.v2.MergeFileSetRequest")
+	proto.RegisterType((*UploadBatchRequest)(nil), "google.devtools.resultstore.v2.UploadBatchRequest")
+	proto.RegisterType((*UploadBatchResponse)(nil), "google.devtools.resultstore.v2.UploadBatchResponse")
+	proto.RegisterType((*UploadRequest)(nil), "google.devtools.resultstore.v2.UploadRequest")
+	proto.RegisterType((*UploadRequest_Id)(nil), "google.devtools.resultstore.v2.UploadRequest.Id")
+	proto.RegisterType((*GetInvocationUploadMetadataRequest)(nil), "google.devtools.resultstore.v2.GetInvocationUploadMetadataRequest")
 }
 
 func init() {
@@ -1254,92 +2448,148 @@
 }
 
 var fileDescriptor_3c379de3a2f884aa = []byte{
-	// 1348 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x99, 0xcf, 0x6f, 0xdc, 0x44,
-	0x14, 0xc7, 0x35, 0xbb, 0x6d, 0x69, 0x5e, 0x12, 0x48, 0x27, 0x51, 0x12, 0x19, 0x92, 0x46, 0x0e,
-	0x82, 0x26, 0x34, 0xeb, 0xe2, 0x84, 0xa6, 0xdd, 0x2a, 0x11, 0x4d, 0x50, 0xda, 0x2d, 0x42, 0x6a,
-	0x37, 0xa9, 0x90, 0x2a, 0x95, 0x95, 0xbb, 0x9e, 0xdd, 0x5a, 0xd9, 0xb5, 0xb7, 0x6b, 0x6f, 0x24,
-	0x40, 0x5c, 0xe0, 0x4f, 0xe0, 0x8a, 0x04, 0x17, 0x38, 0xf2, 0x43, 0xe2, 0x86, 0x38, 0xc1, 0x01,
-	0xce, 0xbd, 0x21, 0x24, 0x04, 0xe2, 0x88, 0x38, 0x72, 0x46, 0x9e, 0x19, 0xef, 0xce, 0xf8, 0xc7,
-	0xda, 0xde, 0xae, 0x72, 0xb3, 0xbd, 0xf3, 0xec, 0xcf, 0x77, 0xde, 0xd7, 0x33, 0xef, 0x79, 0x61,
-	0xbb, 0xe9, 0x38, 0xcd, 0x16, 0xd1, 0x4c, 0x72, 0xe2, 0x39, 0x4e, 0xcb, 0xd5, 0xba, 0xc4, 0xed,
-	0xb5, 0x3c, 0xd7, 0x73, 0xba, 0x44, 0x3b, 0xd1, 0xc5, 0xd3, 0x5a, 0xaf, 0xd3, 0x72, 0x0c, 0xb3,
-	0xd4, 0xe9, 0x3a, 0x9e, 0x83, 0x97, 0x59, 0x60, 0x29, 0x08, 0x2c, 0x09, 0x23, 0x4b, 0x27, 0xba,
-	0xf2, 0x12, 0xbf, 0xb1, 0xd1, 0xb1, 0x34, 0xc3, 0xb6, 0x1d, 0xcf, 0xf0, 0x2c, 0xc7, 0x76, 0x59,
-	0xb4, 0xf2, 0x5a, 0xca, 0x63, 0x8d, 0xba, 0x3f, 0x9a, 0x0f, 0xd6, 0x53, 0x06, 0xd7, 0x1d, 0xbb,
-	0x61, 0x35, 0x7b, 0x5d, 0x43, 0x88, 0xb9, 0x9a, 0x31, 0x86, 0x98, 0x35, 0xcf, 0xe8, 0x36, 0x89,
-	0xc7, 0xe3, 0x36, 0x52, 0xe2, 0x1a, 0x56, 0x8b, 0xd4, 0xdc, 0xfe, 0x70, 0x2d, 0x65, 0xb8, 0x65,
-	0x9f, 0x38, 0x75, 0x91, 0x2b, 0x4d, 0xb8, 0x04, 0xb3, 0xc2, 0x07, 0xd3, 0xb3, 0x47, 0xbd, 0x86,
-	0xd6, 0xb0, 0x48, 0xcb, 0xac, 0xb5, 0x0d, 0xf7, 0x98, 0x8f, 0xb8, 0x18, 0x1e, 0xe1, 0x59, 0x6d,
-	0xe2, 0x7a, 0x46, 0xbb, 0xc3, 0x06, 0xa8, 0x5f, 0x14, 0x60, 0x61, 0xbf, 0x4b, 0x0c, 0x8f, 0x54,
-	0xfa, 0x28, 0x55, 0xf2, 0xa4, 0x47, 0x5c, 0x0f, 0x2f, 0x01, 0x74, 0xd9, 0x61, 0xcd, 0x32, 0x17,
-	0xd1, 0x0a, 0xba, 0x34, 0x51, 0x9d, 0xe0, 0x57, 0x2a, 0x26, 0x5e, 0x85, 0xe9, 0x01, 0xbe, 0x3f,
-	0xa2, 0x40, 0x47, 0x4c, 0x0d, 0x2e, 0x56, 0x4c, 0x7c, 0x07, 0x60, 0x70, 0xbe, 0x58, 0x5c, 0x41,
-	0x97, 0x26, 0xf5, 0xf5, 0xd2, 0x70, 0x6f, 0x94, 0x04, 0x14, 0x21, 0x1a, 0x6b, 0x30, 0x6b, 0xf4,
-	0xbc, 0xc7, 0x4e, 0xd7, 0xfa, 0x80, 0x3d, 0xd3, 0x73, 0x8e, 0x89, 0xbd, 0x78, 0x86, 0x3e, 0x16,
-	0x4b, 0x3f, 0x1d, 0xf9, 0xbf, 0xe0, 0xb7, 0x60, 0xc6, 0xe8, 0x79, 0x4e, 0xad, 0x61, 0xd9, 0x96,
-	0xfb, 0xb8, 0xe6, 0x6b, 0x5f, 0x3c, 0x4b, 0x11, 0x94, 0x00, 0x21, 0x98, 0x98, 0xd2, 0x51, 0x30,
-	0x31, 0xd5, 0xe7, 0xfd, 0x98, 0x03, 0x1a, 0xe2, 0x5f, 0x54, 0x9f, 0x22, 0x58, 0xb8, 0xdf, 0x31,
-	0x63, 0xa7, 0x68, 0x9c, 0xf2, 0x6e, 0xc0, 0x64, 0x8f, 0x3e, 0x86, 0x26, 0x90, 0xca, 0x8a, 0x03,
-	0x3d, 0xf0, 0x73, 0xfc, 0x8e, 0xe1, 0x1e, 0x57, 0x81, 0x0d, 0xf7, 0x8f, 0x93, 0xe6, 0xe6, 0x6c,
-	0xd2, 0xdc, 0xa8, 0xef, 0xc1, 0x02, 0xd3, 0x18, 0x15, 0x85, 0xe1, 0x8c, 0x6d, 0xb4, 0x09, 0xcf,
-	0x38, 0x3d, 0x4e, 0xba, 0x7f, 0x31, 0xf1, 0xfe, 0x6d, 0x58, 0x8c, 0xde, 0xdf, 0xed, 0x38, 0xb6,
-	0x4b, 0x62, 0x1f, 0xb0, 0x03, 0x05, 0x6e, 0xa1, 0x49, 0x7d, 0x23, 0xfb, 0x0c, 0x96, 0x2a, 0x66,
-	0xb5, 0x60, 0x99, 0xea, 0x6f, 0x08, 0x66, 0x99, 0x8f, 0x8f, 0xe8, 0x1b, 0x92, 0xd1, 0xc3, 0xf3,
-	0x70, 0xae, 0x63, 0x74, 0x89, 0xed, 0x71, 0xf3, 0xf2, 0x33, 0xfc, 0x22, 0x4c, 0xb0, 0x37, 0xcd,
-	0x8f, 0x62, 0x22, 0xcf, 0xb3, 0x0b, 0x15, 0x13, 0xef, 0xc2, 0x39, 0x76, 0xcc, 0x73, 0xf4, 0x4a,
-	0x1a, 0x2e, 0x47, 0xe2, 0x51, 0xf9, 0x73, 0xf5, 0x13, 0x82, 0x59, 0xe6, 0x40, 0x59, 0xdc, 0x00,
-	0xa4, 0x38, 0x12, 0xc8, 0xe9, 0x3a, 0xee, 0x01, 0xcc, 0xf2, 0xb7, 0x4a, 0x12, 0x31, 0x16, 0xb7,
-	0x11, 0x98, 0x93, 0xef, 0x3d, 0xc4, 0x69, 0xd7, 0x05, 0xa7, 0xad, 0x65, 0x9b, 0xb1, 0xc0, 0x65,
-	0x9f, 0x14, 0x60, 0x89, 0xb9, 0x6c, 0xbf, 0xbf, 0x3f, 0x8c, 0xcb, 0x6f, 0x6c, 0xc7, 0x11, 0xfc,
-	0xc6, 0x2e, 0x54, 0x4c, 0xfc, 0x10, 0x2e, 0x44, 0xb6, 0x23, 0x9e, 0xac, 0x2b, 0x69, 0xfc, 0x11,
-	0xce, 0x99, 0x7a, 0xe8, 0x4a, 0xfe, 0x44, 0xfe, 0x83, 0x60, 0x89, 0xd9, 0x31, 0x69, 0x16, 0x62,
-	0x89, 0x8b, 0x63, 0x23, 0x3e, 0x5d, 0xdf, 0x9a, 0xb0, 0xc4, 0xbc, 0x95, 0xa4, 0x76, 0x2c, 0x0e,
-	0x7e, 0x1f, 0x96, 0x93, 0x9e, 0x32, 0xc4, 0xcb, 0xfb, 0x82, 0x97, 0x37, 0xf3, 0xce, 0x6c, 0x74,
-	0xed, 0xbc, 0x59, 0xcf, 0xb1, 0xff, 0x0f, 0xf1, 0x32, 0x2b, 0xcf, 0x04, 0x2f, 0xb3, 0x0b, 0x6c,
-	0xed, 0x64, 0xc7, 0x59, 0xd7, 0x4e, 0x8e, 0xc4, 0xa3, 0x9e, 0x65, 0xed, 0x94, 0xc5, 0x0d, 0x40,
-	0x8a, 0x23, 0x81, 0x9c, 0xae, 0x07, 0xff, 0x43, 0xa0, 0xc8, 0x0b, 0x8f, 0x31, 0x9e, 0x4c, 0x25,
-	0xaf, 0x3a, 0x87, 0x30, 0x2d, 0x15, 0xce, 0x5c, 0xe2, 0x46, 0x56, 0x97, 0x31, 0x40, 0xf9, 0x1e,
-	0xf9, 0x85, 0xff, 0x81, 0x40, 0x91, 0xd7, 0x1a, 0x49, 0x78, 0x04, 0xb2, 0x38, 0x06, 0xc8, 0xd3,
-	0x4d, 0xed, 0x5f, 0x08, 0xe6, 0x58, 0x6a, 0x0f, 0xac, 0x16, 0x39, 0x7c, 0xe6, 0xad, 0x64, 0x19,
-	0x26, 0x83, 0x26, 0x64, 0x90, 0xd6, 0x89, 0x06, 0xbb, 0x77, 0xc5, 0xc4, 0x7b, 0x70, 0x3e, 0xf8,
-	0x9d, 0x4b, 0x7b, 0x35, 0x6d, 0xb6, 0x02, 0xb0, 0xe7, 0xf8, 0x5d, 0xf2, 0x8b, 0xfc, 0x05, 0xc1,
-	0x1c, 0x4b, 0x63, 0x48, 0xa4, 0x48, 0x83, 0x46, 0xa4, 0x09, 0xe5, 0xab, 0x30, 0x8e, 0x7c, 0x25,
-	0x2e, 0xd4, 0xfa, 0xf7, 0xf3, 0x70, 0xa1, 0x4a, 0x89, 0x0e, 0x7d, 0xa2, 0xfb, 0xb4, 0xe9, 0xc5,
-	0x9f, 0x21, 0x98, 0x09, 0xf7, 0x51, 0x78, 0x3b, 0xd5, 0x86, 0xf1, 0x9d, 0x97, 0x92, 0xa3, 0x85,
-	0x50, 0x57, 0x3f, 0x7e, 0xfa, 0xf7, 0xa7, 0x85, 0x25, 0xf5, 0x05, 0xb9, 0x9f, 0x74, 0xcb, 0x62,
-	0x6f, 0xf1, 0x2d, 0x82, 0x99, 0x70, 0x0f, 0x93, 0x8e, 0x97, 0xd0, 0xf5, 0xe4, 0xc2, 0xdb, 0xa6,
-	0x78, 0xaf, 0xeb, 0xab, 0x3e, 0xde, 0x87, 0x42, 0xbf, 0xeb, 0xef, 0x5f, 0x3b, 0x02, 0xaf, 0xb6,
-	0xfe, 0x91, 0x84, 0xfc, 0x1d, 0x82, 0x99, 0x70, 0x07, 0x91, 0x8e, 0x9c, 0xd0, 0xd3, 0x28, 0xd7,
-	0xf2, 0x07, 0xb2, 0x6d, 0x57, 0x5d, 0xa7, 0x02, 0x5e, 0x56, 0x2f, 0x52, 0x01, 0x71, 0xd4, 0xac,
-	0xbd, 0x2c, 0xa3, 0x75, 0xfc, 0x39, 0x82, 0x29, 0xb1, 0x0b, 0xc1, 0x9b, 0xd9, 0x1c, 0x20, 0xd5,
-	0x13, 0x4a, 0xc6, 0x32, 0x5e, 0xd5, 0x29, 0xd9, 0x65, 0x55, 0xa5, 0x64, 0xec, 0xf5, 0x0f, 0xb1,
-	0xf1, 0xef, 0x05, 0x6e, 0x39, 0x28, 0xf9, 0xbf, 0x42, 0x30, 0x25, 0xb6, 0x12, 0xe9, 0x84, 0x31,
-	0x8d, 0x47, 0x66, 0xc2, 0xeb, 0x94, 0x70, 0x53, 0x5f, 0xa3, 0x84, 0xfc, 0xdb, 0x45, 0x74, 0x0a,
-	0x03, 0x4a, 0x7f, 0x32, 0x03, 0xd0, 0x6f, 0x10, 0x4c, 0x89, 0x25, 0x7d, 0x3a, 0x68, 0x4c, 0x73,
-	0xa1, 0x6c, 0xe5, 0x0b, 0xe2, 0x29, 0xdf, 0xa2, 0xd8, 0x25, 0x75, 0x2d, 0x21, 0xe5, 0x22, 0xef,
-	0x20, 0xf9, 0xbf, 0x23, 0x98, 0x8f, 0x6f, 0x0e, 0xf0, 0x4e, 0x36, 0x1b, 0x24, 0x14, 0x98, 0x4a,
-	0xee, 0x9a, 0x59, 0xbd, 0x47, 0x15, 0xbc, 0xad, 0x5e, 0x4d, 0xb4, 0x86, 0xa0, 0x41, 0x0b, 0x17,
-	0xd8, 0x6e, 0x39, 0x5a, 0xbe, 0xe3, 0x7f, 0x11, 0xcc, 0xc7, 0x57, 0xfd, 0xe9, 0xf2, 0x86, 0x76,
-	0x0b, 0x23, 0xc8, 0xab, 0x53, 0x79, 0x0f, 0xf5, 0xdb, 0x54, 0x5e, 0xf4, 0x5b, 0xdd, 0xb0, 0x94,
-	0x45, 0xd5, 0xfa, 0x69, 0x8c, 0x11, 0xfc, 0x27, 0x82, 0xf9, 0xf8, 0x92, 0x3c, 0x5d, 0xf0, 0xd0,
-	0x86, 0x41, 0xd9, 0x1d, 0x35, 0x9c, 0xfb, 0xf3, 0x36, 0x95, 0xbf, 0xa7, 0xee, 0xa4, 0xfa, 0x33,
-	0x5e, 0xec, 0xc0, 0xb3, 0x3f, 0xf6, 0x17, 0x2c, 0x56, 0xde, 0x66, 0x5d, 0xb0, 0xa4, 0x5a, 0x5a,
-	0xc9, 0x58, 0x3b, 0xab, 0x77, 0x29, 0xf7, 0x1d, 0xf5, 0xcd, 0x0c, 0xae, 0x8c, 0x25, 0xe7, 0xdf,
-	0x7d, 0xdd, 0x72, 0x50, 0x85, 0xff, 0xdc, 0x5f, 0xce, 0xb2, 0xf2, 0xc7, 0xf4, 0x02, 0x99, 0xf9,
-	0xdf, 0xa5, 0xfc, 0xf7, 0xf4, 0x5b, 0x94, 0x9f, 0x7f, 0x83, 0xce, 0x3b, 0xfd, 0x81, 0x06, 0xba,
-	0xd8, 0x71, 0x19, 0x3f, 0xf4, 0x3b, 0x30, 0xa9, 0x30, 0xc5, 0xe5, 0x7c, 0xeb, 0x86, 0xb4, 0xe3,
-	0xe5, 0xab, 0x81, 0x83, 0xa5, 0x7a, 0xe8, 0x66, 0xc2, 0xd4, 0xb8, 0xe5, 0x50, 0xbd, 0xfc, 0x6b,
-	0xbf, 0xc5, 0xca, 0x49, 0x9f, 0x5c, 0xd8, 0xe7, 0xa5, 0xbf, 0x45, 0xe9, 0x6f, 0xea, 0x57, 0xa4,
-	0x05, 0x21, 0xa9, 0xd0, 0x08, 0x84, 0xf8, 0x29, 0x08, 0x69, 0xf9, 0x12, 0xc1, 0xb4, 0x54, 0x8d,
-	0xe3, 0xad, 0x6c, 0x39, 0x90, 0xeb, 0x5a, 0x25, 0x6b, 0x15, 0xab, 0xbe, 0x41, 0xc9, 0x35, 0x75,
-	0x75, 0xc8, 0xbc, 0xf3, 0x42, 0xd7, 0x2d, 0xf7, 0x6b, 0x65, 0xfc, 0x35, 0x82, 0x69, 0xa9, 0xa0,
-	0x4e, 0xe7, 0x8c, 0xab, 0xbf, 0xb3, 0x73, 0xee, 0x52, 0xce, 0x6b, 0xfa, 0x65, 0xca, 0xd9, 0xff,
-	0x9b, 0x23, 0x66, 0x72, 0x03, 0x5a, 0x7f, 0x76, 0xfb, 0xc0, 0x7b, 0x4f, 0x40, 0xad, 0x3b, 0xed,
-	0x94, 0xa7, 0xdd, 0x45, 0x0f, 0x2a, 0x7c, 0x44, 0xd3, 0x69, 0x19, 0x76, 0xb3, 0xe4, 0x74, 0x9b,
-	0x5a, 0x93, 0xd8, 0xb4, 0x88, 0xe7, 0x7f, 0xa6, 0x18, 0x1d, 0xcb, 0x4d, 0xfa, 0x7f, 0xe4, 0x86,
-	0x70, 0xfa, 0xe8, 0x1c, 0x8d, 0xda, 0xfc, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xa6, 0x1a, 0x3d,
-	0xc4, 0x1a, 0x00, 0x00,
+	// 2245 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0x4f, 0x6c, 0xe4, 0x56,
+	0x19, 0xcf, 0x9b, 0x49, 0xb2, 0xc9, 0x97, 0xa4, 0x99, 0x7d, 0xd9, 0x4d, 0x82, 0xf7, 0x4f, 0x53,
+	0x47, 0x74, 0x37, 0xe9, 0x66, 0xbc, 0x4c, 0xb6, 0x09, 0x3b, 0x25, 0x6d, 0xfe, 0x4d, 0x36, 0xb3,
+	0x6c, 0xb2, 0xe9, 0x24, 0xe1, 0x4f, 0xc5, 0x6a, 0xf0, 0x8e, 0xdf, 0x4c, 0xac, 0x9d, 0xb1, 0xa7,
+	0x63, 0xcf, 0x2e, 0x6d, 0xd5, 0x0b, 0x88, 0x03, 0x17, 0x84, 0x84, 0x38, 0x81, 0xc4, 0xa9, 0x1c,
+	0x58, 0x81, 0xb8, 0xa1, 0x0a, 0x71, 0x01, 0x2e, 0x70, 0xa4, 0x37, 0xc4, 0xa9, 0xe2, 0xc2, 0x05,
+	0x09, 0xa4, 0xc2, 0x09, 0x09, 0xf9, 0xbd, 0x67, 0x8f, 0xed, 0xb1, 0xc7, 0xf6, 0xec, 0x80, 0xda,
+	0x72, 0xb3, 0x9f, 0xdf, 0xf7, 0xde, 0xef, 0xfb, 0xff, 0xde, 0xf7, 0x19, 0xd6, 0x6b, 0xba, 0x5e,
+	0xab, 0x13, 0x49, 0x21, 0x8f, 0x4d, 0x5d, 0xaf, 0x1b, 0x52, 0x8b, 0x18, 0xed, 0xba, 0x69, 0x98,
+	0x7a, 0x8b, 0x48, 0x8f, 0x73, 0xee, 0xd7, 0x72, 0xbb, 0x59, 0xd7, 0x65, 0x25, 0xdb, 0x6c, 0xe9,
+	0xa6, 0x8e, 0xaf, 0x32, 0xc2, 0xac, 0x4d, 0x98, 0x75, 0xcd, 0xcc, 0x3e, 0xce, 0x09, 0x97, 0xf9,
+	0xc2, 0x72, 0x53, 0x95, 0x64, 0x4d, 0xd3, 0x4d, 0xd9, 0x54, 0x75, 0xcd, 0x60, 0xd4, 0xc2, 0x4b,
+	0x11, 0xdb, 0xca, 0x15, 0x6b, 0x36, 0x9f, 0x9c, 0x8b, 0x98, 0x5c, 0xd1, 0xb5, 0xaa, 0x5a, 0x6b,
+	0xb7, 0x64, 0x17, 0xcd, 0x5a, 0x4c, 0x1a, 0xa2, 0x94, 0x4d, 0xb9, 0x55, 0x23, 0x26, 0xa7, 0x5b,
+	0x89, 0xa0, 0xab, 0xaa, 0x75, 0x52, 0x36, 0x9c, 0xe9, 0x52, 0xc4, 0x74, 0x55, 0x7b, 0xac, 0x57,
+	0xdc, 0xb8, 0xa2, 0x18, 0xf7, 0x80, 0xb9, 0x15, 0x31, 0x99, 0x29, 0xa4, 0xdc, 0x20, 0xa6, 0xac,
+	0xc8, 0xa6, 0xcc, 0xa9, 0x2e, 0x71, 0x2a, 0xfa, 0xf6, 0xb0, 0x5d, 0x95, 0x48, 0xa3, 0x69, 0xbe,
+	0xc5, 0x3f, 0x2e, 0xf8, 0x3f, 0x56, 0x55, 0x52, 0x57, 0xca, 0x0d, 0xd9, 0x78, 0xc4, 0x67, 0x3c,
+	0xef, 0x9f, 0x61, 0xaa, 0x0d, 0x62, 0x98, 0x72, 0xa3, 0xc9, 0x27, 0xcc, 0xb9, 0x34, 0x5b, 0xa9,
+	0xab, 0x44, 0xe3, 0x70, 0xc5, 0x7f, 0xa7, 0x60, 0x6e, 0xa7, 0x45, 0x64, 0x93, 0x14, 0x1d, 0xb6,
+	0x4b, 0xe4, 0xcd, 0x36, 0x31, 0x4c, 0x7c, 0x05, 0xa0, 0xc5, 0x1e, 0xcb, 0xaa, 0x32, 0x8f, 0x16,
+	0xd0, 0xf5, 0xf1, 0xd2, 0x38, 0x1f, 0x29, 0x2a, 0x78, 0x11, 0xa6, 0x3a, 0xa2, 0xb2, 0x66, 0xa4,
+	0xe8, 0x8c, 0xc9, 0xce, 0x60, 0x51, 0xc1, 0x77, 0x01, 0x3a, 0xef, 0xf3, 0xe9, 0x05, 0x74, 0x7d,
+	0x22, 0xb7, 0x9c, 0xed, 0x6d, 0x87, 0x59, 0x17, 0x14, 0x17, 0x35, 0x96, 0x60, 0x46, 0x6e, 0x9b,
+	0x67, 0x7a, 0x4b, 0x7d, 0x9b, 0xed, 0x69, 0xea, 0x8f, 0x88, 0x36, 0x3f, 0x4c, 0xb7, 0xc5, 0x9e,
+	0x4f, 0x27, 0xd6, 0x17, 0xbc, 0x0f, 0xd6, 0xa8, 0x5e, 0xae, 0xaa, 0x9a, 0x5c, 0x57, 0xdf, 0x26,
+	0x65, 0x4b, 0x2c, 0xf3, 0xa3, 0x14, 0x84, 0x60, 0x83, 0xb0, 0x65, 0x96, 0x3d, 0xb1, 0x65, 0x56,
+	0xca, 0x58, 0x54, 0x7b, 0x9c, 0xc8, 0x1a, 0xc6, 0x37, 0xe1, 0x82, 0xaa, 0xa9, 0xa6, 0x2a, 0xd7,
+	0xcb, 0x16, 0xd6, 0x06, 0xe1, 0x7b, 0x9f, 0x63, 0x7b, 0xf3, 0x6f, 0x25, 0xfa, 0x89, 0xed, 0xfd,
+	0x59, 0x78, 0x8e, 0xa9, 0x9a, 0xb4, 0xca, 0x86, 0x29, 0x9b, 0x64, 0x7e, 0x6c, 0x01, 0x5d, 0x9f,
+	0x2c, 0x4d, 0xd9, 0xa3, 0xc7, 0xd6, 0xa0, 0xf8, 0x01, 0x82, 0xb9, 0xd3, 0xa6, 0x12, 0x28, 0xff,
+	0x41, 0xca, 0xee, 0x15, 0x98, 0x68, 0xd3, 0x6d, 0xa8, 0xd9, 0x50, 0x99, 0x05, 0xc9, 0x60, 0xcf,
+	0xb2, 0xac, 0x03, 0xd9, 0x78, 0x54, 0x02, 0x36, 0xdd, 0x7a, 0x0e, 0x13, 0xfc, 0x48, 0x98, 0xe0,
+	0xc5, 0xbf, 0x23, 0x98, 0x3d, 0x20, 0xad, 0x5a, 0x72, 0xa3, 0xfa, 0xe4, 0xf2, 0xfc, 0x00, 0x66,
+	0x4f, 0xf4, 0x76, 0xe5, 0xac, 0x9b, 0x65, 0x0c, 0xc3, 0x9a, 0xdc, 0x20, 0x9c, 0x59, 0xfa, 0x1c,
+	0xb6, 0x7c, 0x2a, 0x74, 0xf9, 0x3a, 0xcc, 0x75, 0x2d, 0x6f, 0x34, 0x75, 0xcd, 0x20, 0x81, 0xeb,
+	0x6f, 0x40, 0x8a, 0x7b, 0xe4, 0x44, 0x6e, 0x25, 0xbe, 0xfc, 0xb2, 0x45, 0xa5, 0x94, 0x52, 0x15,
+	0x71, 0x05, 0xe6, 0x76, 0x49, 0x9d, 0x04, 0x59, 0x65, 0xc0, 0x6e, 0xe2, 0xd7, 0xe1, 0x33, 0xb6,
+	0xbb, 0x3c, 0x13, 0xfb, 0xe9, 0x50, 0xf6, 0x75, 0x10, 0x82, 0x76, 0xf8, 0xef, 0x49, 0xe0, 0x4f,
+	0x08, 0x66, 0x58, 0x60, 0x3c, 0xa1, 0xe1, 0x3d, 0xa6, 0xfd, 0xce, 0xc2, 0x68, 0x53, 0x6e, 0x11,
+	0xcd, 0xe4, 0xaa, 0xe4, 0x6f, 0xf8, 0x12, 0x8c, 0xb3, 0x34, 0x61, 0x51, 0x31, 0x36, 0xc7, 0xd8,
+	0x40, 0x51, 0xc1, 0xaf, 0xc2, 0x28, 0x7b, 0xe6, 0x36, 0xfa, 0x62, 0x14, 0x5c, 0x0e, 0x89, 0x53,
+	0x25, 0xb7, 0xd5, 0x7f, 0x20, 0x98, 0x61, 0x51, 0xc7, 0xcb, 0x5c, 0x07, 0x48, 0xba, 0x2f, 0x20,
+	0xff, 0x53, 0x8f, 0xc3, 0x2b, 0x30, 0x53, 0xa1, 0x1a, 0x2a, 0xab, 0xd5, 0xb2, 0xa6, 0x9b, 0xe5,
+	0xaa, 0xde, 0xd6, 0x14, 0x1a, 0xdf, 0xc7, 0x4a, 0x19, 0xf6, 0xa9, 0x58, 0x3d, 0xd4, 0xcd, 0x3d,
+	0x6b, 0x5c, 0xfc, 0x5e, 0x0a, 0x30, 0x0d, 0x4a, 0x89, 0x14, 0xfa, 0xa9, 0x16, 0xc9, 0xd7, 0xe0,
+	0xa2, 0x93, 0xe6, 0x3c, 0x42, 0x19, 0x88, 0xcf, 0xd6, 0x60, 0xd6, 0xbf, 0x7a, 0x0f, 0x7f, 0xbd,
+	0xed, 0xf2, 0xd7, 0xa5, 0x78, 0x42, 0xb6, 0x7d, 0xf5, 0x5b, 0x29, 0xb8, 0xc2, 0x7c, 0x75, 0xc7,
+	0x39, 0x22, 0x0e, 0xca, 0x6b, 0xd9, 0xa1, 0xd3, 0xe5, 0xb5, 0x6c, 0xa0, 0xa8, 0xe0, 0x07, 0x70,
+	0xbe, 0xeb, 0x44, 0xca, 0xf5, 0x7b, 0x33, 0x0a, 0x7f, 0x17, 0xce, 0x4c, 0xc5, 0x37, 0x92, 0xdc,
+	0xa9, 0x7f, 0x98, 0x82, 0x2b, 0xcc, 0xa9, 0xc3, 0xa4, 0x10, 0x88, 0x38, 0x3d, 0x30, 0xc4, 0x1f,
+	0x6b, 0x53, 0x7f, 0x3f, 0x05, 0x97, 0xa9, 0xf7, 0xf7, 0x69, 0x22, 0xff, 0xcf, 0xb2, 0xab, 0xc2,
+	0xf3, 0xb6, 0x23, 0x87, 0x49, 0x6f, 0x20, 0x01, 0xe3, 0x1d, 0x58, 0x08, 0xdf, 0xa7, 0x47, 0xe8,
+	0xd8, 0x71, 0x85, 0x8e, 0xd5, 0xa4, 0xca, 0xe8, 0x4e, 0xf8, 0x5b, 0x95, 0x04, 0x07, 0xd6, 0x1e,
+	0xa1, 0x83, 0x5d, 0x88, 0x5d, 0xa1, 0x83, 0x0d, 0xb0, 0xa4, 0xc2, 0x9e, 0xe3, 0x26, 0x7c, 0x0e,
+	0x89, 0x53, 0x3d, 0x4b, 0xc2, 0xf7, 0x32, 0xd7, 0x01, 0x92, 0xee, 0x0b, 0xc8, 0x27, 0x23, 0xe1,
+	0x27, 0x52, 0xe8, 0xa7, 0x5a, 0x24, 0xff, 0x44, 0x20, 0x78, 0x33, 0xa5, 0x3c, 0x18, 0x5b, 0x0f,
+	0x4f, 0x93, 0xc7, 0x30, 0xe5, 0x29, 0xf6, 0x70, 0x89, 0xac, 0xc4, 0xf5, 0x53, 0x06, 0xd0, 0xbb,
+	0x46, 0x72, 0x07, 0xf8, 0x6e, 0x0a, 0x04, 0x6f, 0x72, 0xf4, 0x30, 0xde, 0x05, 0x32, 0x3d, 0x00,
+	0x90, 0x1f, 0x6b, 0x4b, 0xf8, 0x10, 0xc1, 0x05, 0x66, 0x09, 0x7b, 0x6a, 0x9d, 0x1c, 0x3f, 0xf3,
+	0x51, 0xe9, 0x2a, 0x4c, 0xd8, 0x75, 0xb6, 0x8e, 0x15, 0x8c, 0x57, 0xd9, 0xda, 0x45, 0x05, 0x6f,
+	0xc3, 0x98, 0xfd, 0x9d, 0x4b, 0xe2, 0x5a, 0x94, 0x70, 0x6d, 0x60, 0xe7, 0xf8, 0x2a, 0xc9, 0xb5,
+	0xfe, 0x2f, 0x04, 0x17, 0x98, 0xd6, 0x7d, 0x4c, 0xba, 0xd1, 0xa0, 0x3e, 0xd1, 0xf8, 0xd4, 0x9b,
+	0x1a, 0x84, 0x7a, 0xd3, 0x49, 0xd5, 0x3b, 0x1c, 0xa2, 0xde, 0x1f, 0xa4, 0x60, 0x86, 0xc6, 0xbe,
+	0x64, 0xda, 0x75, 0xcb, 0x25, 0x35, 0x18, 0xb9, 0xa4, 0x07, 0x21, 0x97, 0xe1, 0xa4, 0x72, 0x19,
+	0x09, 0x91, 0xcb, 0xd3, 0x14, 0xe0, 0x53, 0x5a, 0x81, 0xdb, 0x96, 0xcd, 0xca, 0x99, 0x2d, 0x96,
+	0x8e, 0x55, 0x23, 0x8f, 0x55, 0x27, 0x2d, 0xd3, 0xe0, 0x65, 0x38, 0xaf, 0x91, 0x6f, 0x98, 0xde,
+	0x2a, 0x21, 0xd3, 0xea, 0xb4, 0xf5, 0xc1, 0x5d, 0x22, 0x7c, 0x01, 0x26, 0x3d, 0xd3, 0x18, 0x93,
+	0x13, 0xad, 0x9e, 0x55, 0xc4, 0xd1, 0x80, 0x2a, 0x22, 0xfe, 0x12, 0x4c, 0xf3, 0xba, 0x32, 0x57,
+	0xa5, 0x31, 0x3f, 0xb2, 0x90, 0x8e, 0x13, 0xc0, 0x98, 0x2c, 0xb8, 0x18, 0x4a, 0x7c, 0x33, 0xfe,
+	0x6a, 0x88, 0x17, 0xad, 0x53, 0x83, 0x4b, 0x58, 0xec, 0x0c, 0x26, 0x7e, 0x74, 0x0e, 0xa6, 0x3c,
+	0x84, 0x78, 0x93, 0x9e, 0xc0, 0x50, 0xbc, 0xe3, 0xb0, 0x87, 0x94, 0x1f, 0xbf, 0xf0, 0x19, 0x64,
+	0x38, 0x0b, 0x7a, 0x93, 0xf0, 0x20, 0x6c, 0x89, 0xf9, 0xb9, 0xdc, 0x46, 0xb2, 0xf5, 0xd8, 0xdb,
+	0x7d, 0x7b, 0x91, 0x12, 0x97, 0x8c, 0x33, 0xf0, 0x6c, 0xf6, 0x19, 0x62, 0x6e, 0x10, 0x6c, 0x6e,
+	0xf8, 0x9e, 0xa7, 0x9c, 0x39, 0x9c, 0xb4, 0x9c, 0xb9, 0x3f, 0xe4, 0x29, 0x68, 0x6e, 0x3a, 0xb5,
+	0x88, 0x91, 0x24, 0xb5, 0x88, 0xfd, 0x21, 0xa7, 0x1a, 0x71, 0xea, 0xcf, 0x73, 0xa3, 0x7d, 0xe4,
+	0xb9, 0xfd, 0x21, 0x7f, 0xa6, 0x2b, 0x07, 0x5d, 0x8e, 0xce, 0xf5, 0x77, 0x39, 0xda, 0x1f, 0x0a,
+	0xb8, 0x1e, 0x6d, 0x3a, 0x87, 0xb2, 0xb1, 0x24, 0x87, 0x32, 0x8b, 0x73, 0x7e, 0x2c, 0xdb, 0x75,
+	0x45, 0xb6, 0xf1, 0x44, 0x91, 0x6d, 0x7f, 0xc8, 0x89, 0x6d, 0xc2, 0x77, 0x10, 0xa4, 0x8a, 0x8a,
+	0xb7, 0x9a, 0x87, 0x7c, 0xd5, 0xbc, 0x25, 0xc8, 0x78, 0xa4, 0xd3, 0x69, 0x8d, 0x4c, 0x7b, 0xc6,
+	0xd9, 0x3a, 0xe1, 0x97, 0x04, 0x5f, 0x46, 0x1d, 0xf6, 0x65, 0x54, 0x51, 0x81, 0x69, 0x9f, 0xad,
+	0xe3, 0x05, 0xb8, 0x7c, 0x7a, 0x74, 0xef, 0xfe, 0xd6, 0x6e, 0xf9, 0xfe, 0x51, 0xa1, 0xb4, 0x75,
+	0x52, 0xbc, 0x7f, 0x58, 0x3e, 0x3d, 0x3c, 0x3e, 0x2a, 0xec, 0x14, 0xf7, 0x8a, 0x85, 0xdd, 0xcc,
+	0x10, 0x06, 0x18, 0xdd, 0x29, 0x15, 0xb6, 0x4e, 0x0a, 0x19, 0x64, 0x3d, 0x9f, 0x1e, 0xed, 0x5a,
+	0xcf, 0x29, 0x3c, 0x0e, 0x23, 0x07, 0x85, 0xd2, 0x9d, 0x42, 0x26, 0x8d, 0x27, 0x61, 0x6c, 0xaf,
+	0x78, 0xb8, 0x75, 0xaf, 0xf8, 0x46, 0x21, 0x33, 0xbc, 0x0d, 0x30, 0xd6, 0x22, 0x86, 0xde, 0x6e,
+	0x55, 0x88, 0xa8, 0x82, 0x78, 0x87, 0x98, 0x1d, 0xf3, 0x64, 0xdb, 0x1f, 0xf0, 0x56, 0xd6, 0x20,
+	0xcb, 0xdd, 0xb9, 0x8f, 0x16, 0xe1, 0x7c, 0x89, 0xaa, 0xe3, 0xd8, 0x52, 0x07, 0xdb, 0x09, 0xff,
+	0x08, 0x41, 0xc6, 0xdf, 0xad, 0xc2, 0xeb, 0x91, 0x16, 0x16, 0xdc, 0xdf, 0x12, 0x12, 0x38, 0xa2,
+	0xb8, 0xf8, 0xcd, 0x0f, 0xfe, 0xf2, 0xfd, 0xd4, 0x15, 0x71, 0xda, 0xdb, 0x21, 0x34, 0xf2, 0x6e,
+	0xff, 0xfc, 0x05, 0x82, 0x8c, 0xbf, 0x99, 0x13, 0x0d, 0x2f, 0xa4, 0xfd, 0x93, 0x08, 0xde, 0x3a,
+	0x85, 0xf7, 0xb9, 0xdc, 0xa2, 0x05, 0xef, 0x1d, 0x57, 0x07, 0xd3, 0x92, 0xfe, 0x86, 0x0b, 0xaf,
+	0xb4, 0xfc, 0xae, 0x07, 0xf2, 0x53, 0x04, 0xd3, 0xbe, 0x4e, 0x0d, 0x5e, 0x8b, 0xda, 0x38, 0xb8,
+	0xb5, 0x93, 0x08, 0xf0, 0x2d, 0x0a, 0x38, 0x2b, 0x2e, 0xc5, 0x01, 0xdc, 0xb0, 0xf6, 0xcb, 0xa3,
+	0x65, 0xfc, 0x33, 0x04, 0xd3, 0xbe, 0x2e, 0x48, 0x34, 0xda, 0xe0, 0xae, 0x8c, 0xb0, 0x9e, 0x98,
+	0x8e, 0x67, 0xbf, 0x25, 0x0a, 0x7d, 0x51, 0xbc, 0x4a, 0xa1, 0x07, 0xe1, 0x35, 0x2d, 0x4a, 0x0b,
+	0xef, 0xfb, 0x08, 0x70, 0x77, 0xdb, 0x02, 0xdf, 0x8e, 0x8e, 0x3c, 0x21, 0xcd, 0x14, 0x21, 0xdf,
+	0x0f, 0x29, 0x07, 0x7e, 0x83, 0x02, 0x7f, 0x51, 0x7c, 0x21, 0x14, 0xb8, 0xdd, 0x28, 0xb5, 0xb0,
+	0x7f, 0x1b, 0x41, 0xc6, 0xdf, 0x03, 0x8a, 0x36, 0xe6, 0x90, 0xae, 0x91, 0x30, 0xdb, 0x95, 0x5f,
+	0x0b, 0x8d, 0xa6, 0xf9, 0x96, 0xb8, 0x40, 0x31, 0x09, 0xcb, 0xf3, 0x61, 0x98, 0xf0, 0x8f, 0x11,
+	0x4c, 0xba, 0x1b, 0x31, 0x78, 0x35, 0x9e, 0xbf, 0x7b, 0xea, 0x53, 0x42, 0xcc, 0x54, 0x29, 0xe6,
+	0x28, 0x9e, 0x1b, 0xa2, 0x48, 0xf1, 0xb0, 0x53, 0xa0, 0x0f, 0x11, 0xef, 0xf7, 0x1b, 0x79, 0x3b,
+	0xa9, 0xfe, 0x04, 0xc1, 0xa4, 0xbb, 0x9b, 0x12, 0x8d, 0x30, 0xa0, 0xf7, 0x12, 0x1b, 0xe1, 0x6d,
+	0x8a, 0x70, 0x35, 0xc7, 0x3c, 0x87, 0xff, 0x7b, 0xd0, 0x2d, 0x38, 0x1b, 0xa5, 0xa5, 0x56, 0x1b,
+	0xe8, 0x7b, 0x08, 0x26, 0x5c, 0x1d, 0x10, 0x9c, 0x8b, 0xe5, 0xe8, 0xfd, 0xc1, 0xcc, 0x53, 0x98,
+	0xb7, 0x44, 0x29, 0x3e, 0x4c, 0xc7, 0xcd, 0x7f, 0x89, 0xe0, 0x39, 0x6f, 0xe7, 0x00, 0xbf, 0x1c,
+	0xd7, 0xee, 0xbd, 0x68, 0xd7, 0x92, 0x92, 0x71, 0x57, 0x59, 0xa3, 0xe8, 0x6f, 0x8a, 0x2f, 0x85,
+	0x98, 0xa5, 0x1b, 0xb6, 0xdb, 0x69, 0xfe, 0x8c, 0x60, 0x36, 0xb8, 0x13, 0x81, 0x37, 0xe2, 0x99,
+	0x6d, 0x48, 0x81, 0x55, 0x48, 0x7c, 0x8e, 0x12, 0x5f, 0xa7, 0x3c, 0x7c, 0x51, 0x5c, 0x0b, 0x35,
+	0x65, 0x17, 0x17, 0x92, 0xff, 0xc8, 0x65, 0xe4, 0xbb, 0x8f, 0x74, 0xf8, 0x6f, 0x08, 0x66, 0x83,
+	0x5b, 0x0c, 0x78, 0x23, 0x9e, 0xcd, 0x0f, 0x8e, 0xbd, 0x0a, 0x65, 0xef, 0x41, 0x6e, 0x9f, 0xb2,
+	0xd7, 0xfd, 0x6f, 0x50, 0x2f, 0xa5, 0x75, 0x73, 0x6b, 0x29, 0x32, 0x80, 0xe1, 0x0f, 0x11, 0x5c,
+	0x0c, 0xec, 0x1a, 0xe0, 0x2f, 0xc4, 0xf2, 0x9d, 0xc1, 0xb1, 0xfb, 0x55, 0xca, 0xee, 0xb1, 0x78,
+	0x38, 0x30, 0x76, 0x1d, 0x77, 0xfb, 0x2b, 0x82, 0xf9, 0xb0, 0xba, 0x3b, 0x7e, 0x2d, 0xae, 0x07,
+	0x85, 0xb1, 0xba, 0xd9, 0xff, 0x02, 0xdc, 0x19, 0xef, 0x52, 0xd6, 0x77, 0xc5, 0xd7, 0x22, 0x9d,
+	0x31, 0x98, 0x51, 0xb7, 0x83, 0xfe, 0xda, 0xc9, 0x26, 0xec, 0x86, 0x10, 0x37, 0x9b, 0x78, 0x4a,
+	0xc8, 0x42, 0xcc, 0xeb, 0x87, 0x78, 0x44, 0x91, 0xdf, 0x15, 0x37, 0x63, 0xb8, 0x60, 0x20, 0x76,
+	0xfe, 0x53, 0x9d, 0x91, 0xb7, 0xaf, 0x31, 0xbf, 0x73, 0x72, 0x4d, 0x5c, 0xfc, 0x01, 0x65, 0xff,
+	0xd8, 0xf8, 0xbf, 0x4c, 0xf1, 0xbf, 0x9e, 0xbb, 0x43, 0xf1, 0xf3, 0x1f, 0xfc, 0x92, 0x2a, 0xc0,
+	0xe6, 0x81, 0x66, 0x22, 0xce, 0xc6, 0x6f, 0xed, 0x4c, 0xc4, 0xb9, 0x88, 0x97, 0x89, 0xfa, 0x63,
+	0xe2, 0x2b, 0x94, 0x89, 0x92, 0x78, 0x30, 0x28, 0x26, 0x1c, 0xc7, 0xf9, 0x95, 0xd3, 0x32, 0xf2,
+	0xdc, 0x8f, 0x71, 0x3e, 0x59, 0xa8, 0xf7, 0x1c, 0x94, 0x92, 0x5d, 0xc5, 0xed, 0xd3, 0x40, 0xcf,
+	0xf3, 0x0a, 0x63, 0xc7, 0xc8, 0xfb, 0x2e, 0xed, 0xbf, 0x77, 0x7a, 0x42, 0x09, 0xd1, 0x87, 0xd7,
+	0xd1, 0x93, 0xa2, 0xbf, 0x43, 0xd1, 0x6f, 0xe5, 0x6e, 0x7a, 0x82, 0x5a, 0xd8, 0x45, 0xc0, 0x66,
+	0xc4, 0xd2, 0x81, 0x8f, 0x97, 0xf7, 0x10, 0x4c, 0x79, 0xaa, 0xd9, 0xf8, 0x56, 0x3c, 0x1d, 0x78,
+	0xcb, 0xa3, 0x42, 0xdc, 0x9a, 0x80, 0xf8, 0x32, 0x45, 0x2e, 0x89, 0x8b, 0x3d, 0xe4, 0xce, 0xaf,
+	0xea, 0x46, 0xde, 0xa9, 0x3c, 0xe0, 0x9f, 0x23, 0x98, 0xf2, 0x14, 0xa4, 0xa3, 0x71, 0x06, 0xd5,
+	0xaf, 0xe3, 0xe3, 0x7c, 0x95, 0xe2, 0xfc, 0x7c, 0xee, 0x06, 0xc5, 0xe9, 0xfc, 0x09, 0x1b, 0x20,
+	0x5c, 0x1b, 0xad, 0x25, 0xdd, 0x0e, 0xe0, 0xa7, 0x08, 0x26, 0xdd, 0x75, 0xe4, 0xe8, 0x78, 0x13,
+	0x50, 0x75, 0x8e, 0x0f, 0x77, 0x83, 0xc2, 0x5d, 0x17, 0x73, 0x89, 0xe0, 0x3a, 0x0e, 0xf9, 0x53,
+	0x04, 0x13, 0xae, 0x82, 0x65, 0x74, 0x58, 0xe9, 0x2e, 0x05, 0x0b, 0xab, 0x89, 0x68, 0x78, 0x8a,
+	0xb2, 0xaf, 0x0d, 0xd7, 0x7a, 0x98, 0xc3, 0x43, 0x8b, 0x22, 0xcf, 0xaa, 0x91, 0x16, 0xd8, 0xdf,
+	0x20, 0xb8, 0xd4, 0xa3, 0x9c, 0x82, 0xb7, 0xa3, 0x80, 0x44, 0xd7, 0x62, 0x84, 0x6c, 0x3c, 0x66,
+	0x6c, 0x32, 0x51, 0xa2, 0x7c, 0x2c, 0xe1, 0x6b, 0x61, 0xa9, 0xb6, 0xed, 0x99, 0xff, 0xae, 0x70,
+	0xf8, 0x87, 0x2d, 0xc1, 0xbd, 0x24, 0xdb, 0x4e, 0x6e, 0xaa, 0x46, 0xb6, 0xa2, 0x37, 0xfe, 0xb8,
+	0x95, 0x3d, 0x33, 0xcd, 0xa6, 0x91, 0x97, 0xa4, 0x27, 0x4f, 0x9e, 0xf8, 0x3e, 0x4a, 0x72, 0xdb,
+	0x3c, 0x93, 0x2a, 0x75, 0xbd, 0xad, 0xac, 0x34, 0xeb, 0xb2, 0x59, 0xd5, 0x5b, 0x8d, 0xed, 0x37,
+	0x41, 0xac, 0xe8, 0x8d, 0x08, 0xd4, 0x47, 0xe8, 0x8d, 0x22, 0x9f, 0x51, 0xd3, 0xeb, 0xb2, 0x56,
+	0xcb, 0xea, 0xad, 0x9a, 0x54, 0x23, 0x1a, 0xbd, 0x5c, 0x4a, 0x9d, 0x6d, 0xc2, 0xfe, 0xc2, 0x7e,
+	0xc5, 0xf5, 0xfa, 0x70, 0x94, 0x52, 0xad, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x0c, 0x10,
+	0x4d, 0x57, 0x2f, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1354,9 +2604,10 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ResultStoreUploadClient interface {
-	// Creates the given invocation. Generally, a unique ID will be assigned to
-	// the invocation's name field by the server. This is not an implicitly
-	// idempotent API, so a request id is required to make it idempotent.
+	// Creates the given invocation.
+	//
+	// This is not an implicitly idempotent API, so a request id is required to
+	// make it idempotent.
 	//
 	// Returns an empty Invocation proto with only the name and ID fields
 	// populated.
@@ -1375,18 +2626,53 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the invocation does not exist.
-	// - If the invocation is finished.
+	// - If the invocation is finalized.
 	// - If no field mask was given.
 	UpdateInvocation(ctx context.Context, in *UpdateInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
-	// Declares the invocation with the given name as finished and immutable.
-	// This is an implicitly idempotent API.
+	// Applies a merge update to the invocation identified by the given proto's
+	// name.  For primitive and message fields, replaces them with the ones in
+	// the given proto if they are covered under the field mask paths.  For
+	// repeated fields, merges to them with the given ones if they are covered
+	// under the field mask paths. This is not an implicitly idempotent API, so a
+	// request id is required to make it idempotent.
+	//
+	// Returns an empty Invocation proto with only the name and ID fields
+	// populated.
+	//
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation does not exist.
+	// - If the invocation is finalized.
+	// - If no field mask was given.
+	MergeInvocation(ctx context.Context, in *MergeInvocationRequest, opts ...grpc.CallOption) (*Invocation, error)
+	// Touches the invocation identified by the given proto's name.
+	//
+	// This is useful when you need to notify ResultStore that you haven't
+	// abandoned the upload, since abandoned uploads will be automatically
+	// finalized after a set period.
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation does not exist.
+	// - If the invocation is finalized.
+	TouchInvocation(ctx context.Context, in *TouchInvocationRequest, opts ...grpc.CallOption) (*TouchInvocationResponse, error)
+	// Declares the invocation with the given name as finalized and immutable by
+	// the user. It may still be mutated by post-processing. This is an implicitly
+	// idempotent API.
 	//
 	// If an Invocation is not updated for 24 hours, some time after that
 	// this will be called automatically.
 	//
 	// An error will be reported in the following cases:
 	// - If the invocation does not exist.
-	FinishInvocation(ctx context.Context, in *FinishInvocationRequest, opts ...grpc.CallOption) (*FinishInvocationResponse, error)
+	FinalizeInvocation(ctx context.Context, in *FinalizeInvocationRequest, opts ...grpc.CallOption) (*FinalizeInvocationResponse, error)
+	// Deletes an immutable invocation (permanently)
+	// Note: this does not delete indirect data, e.g. files stored in other
+	// services.
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation does not exist.
+	// - If the invocation is not finalized.  This can be retried until it is.
+	DeleteInvocation(ctx context.Context, in *DeleteInvocationRequest, opts ...grpc.CallOption) (*empty.Empty, error)
 	// Creates the given target under the given parent invocation. The given
 	// target ID is URL encoded, converted to the full resource name, and assigned
 	// to the target's name field. This is not an implicitly idempotent API, so a
@@ -1397,7 +2683,7 @@
 	// An error will be reported in the following cases:
 	// - If no target ID is provided.
 	// - If the parent invocation does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If a target with the same name already exists.
 	CreateTarget(ctx context.Context, in *CreateTargetRequest, opts ...grpc.CallOption) (*Target, error)
 	// Applies a standard update to the target identified by the given proto's
@@ -1410,15 +2696,31 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the target does not exist.
-	// - If the target or parent invocation is finished.
+	// - If the target or parent invocation is finalized.
 	// - If no field mask was given.
 	UpdateTarget(ctx context.Context, in *UpdateTargetRequest, opts ...grpc.CallOption) (*Target, error)
-	// Declares the target with the given name as finished and immutable.
-	// This is an implicitly idempotent API.
+	// Applies a merge update to the target identified by the given proto's
+	// name. For primitive and message fields, replaces them with the ones in the
+	// given proto if they are covered under the field mask paths.  For repeated
+	// fields, merges to them with the given ones if they are covered under the
+	// field mask paths. This is not an implicitly idempotent API, so a request
+	// id is required to make it idempotent.
+	//
+	// Returns an empty Target proto with only the name and ID fields populated.
+	//
 	//
 	// An error will be reported in the following cases:
 	// - If the target does not exist.
-	FinishTarget(ctx context.Context, in *FinishTargetRequest, opts ...grpc.CallOption) (*FinishTargetResponse, error)
+	// - If the target or parent invocation is finalized.
+	// - If no field mask was given.
+	MergeTarget(ctx context.Context, in *MergeTargetRequest, opts ...grpc.CallOption) (*Target, error)
+	// Declares the target with the given name as finalized and immutable by the
+	// user. It may still be mutated by post-processing. This is an implicitly
+	// idempotent API.
+	//
+	// An error will be reported in the following cases:
+	// - If the target does not exist.
+	FinalizeTarget(ctx context.Context, in *FinalizeTargetRequest, opts ...grpc.CallOption) (*FinalizeTargetResponse, error)
 	// Creates the given configured target under the given parent target.
 	// The given configured target ID is URL encoded, converted to the full
 	// resource name, and assigned to the configured target's name field.
@@ -1432,7 +2734,7 @@
 	// - If no config ID is provided.
 	// - If a configured target with the same ID already exists.
 	// - If the parent target does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	CreateConfiguredTarget(ctx context.Context, in *CreateConfiguredTargetRequest, opts ...grpc.CallOption) (*ConfiguredTarget, error)
 	// Applies a standard update to the configured target identified by the given
 	// proto's name. For all types of fields (primitive, message, or repeated),
@@ -1445,15 +2747,32 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the configured target does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	// - If no field mask was given.
 	UpdateConfiguredTarget(ctx context.Context, in *UpdateConfiguredTargetRequest, opts ...grpc.CallOption) (*ConfiguredTarget, error)
-	// Declares the configured target with the given name as finished and
-	// immutable. This is an implicitly idempotent API.
+	// Applies a merge update to the configured target identified by the given
+	// proto's name. For primitive and message fields, replaces them with the
+	// ones in the given proto if they are covered under the field mask paths.
+	// For repeated fields, merges to them with the given ones if they are
+	// covered under the field mask paths. This is not an implicitly idempotent
+	// API, so a request id is required to make it idempotent.
+	//
+	// Returns an empty ConfiguredTarget proto with only the name and ID fields
+	// populated.
+	//
 	//
 	// An error will be reported in the following cases:
 	// - If the configured target does not exist.
-	FinishConfiguredTarget(ctx context.Context, in *FinishConfiguredTargetRequest, opts ...grpc.CallOption) (*FinishConfiguredTargetResponse, error)
+	// - If the parent target or invocation is finalized.
+	// - If no field mask was given.
+	MergeConfiguredTarget(ctx context.Context, in *MergeConfiguredTargetRequest, opts ...grpc.CallOption) (*ConfiguredTarget, error)
+	// Declares the configured target with the given name as finalized and
+	// immutable by the user. It may still be mutated by post-processing. This is
+	// an implicitly idempotent API.
+	//
+	// An error will be reported in the following cases:
+	// - If the configured target does not exist.
+	FinalizeConfiguredTarget(ctx context.Context, in *FinalizeConfiguredTargetRequest, opts ...grpc.CallOption) (*FinalizeConfiguredTargetResponse, error)
 	// Creates the given action under the given configured target. The given
 	// action ID is URL encoded, converted to the full resource name, and
 	// assigned to the action's name field. This is not an implicitly
@@ -1464,7 +2783,7 @@
 	// An error will be reported in the following cases:
 	// - If no action ID provided.
 	// - If the parent configured target does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	// - If an action  with the same name already exists.
 	CreateAction(ctx context.Context, in *CreateActionRequest, opts ...grpc.CallOption) (*Action, error)
 	// Applies a standard update to the action identified by the given
@@ -1477,9 +2796,24 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the action does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	// - If no field mask was given.
 	UpdateAction(ctx context.Context, in *UpdateActionRequest, opts ...grpc.CallOption) (*Action, error)
+	// Applies a merge update to the action identified by the given
+	// proto's name.  For primitive and message fields, replaces them with the
+	// ones in the given proto if they are covered under the field mask paths.
+	// For repeated fields, merges to them with the given ones if they are
+	// covered under the field mask paths. This is not an implicitly idempotent
+	// API, so a request id is required to make it idempotent.
+	//
+	// Returns an empty Action proto with only the name and ID fields populated.
+	//
+	//
+	// An error will be reported in the following cases:
+	// - If the action does not exist.
+	// - If the parent target or invocation is finalized.
+	// - If no field mask was given.
+	MergeAction(ctx context.Context, in *MergeActionRequest, opts ...grpc.CallOption) (*Action, error)
 	// Creates the given configuration under the given parent invocation. The
 	// given configuration ID is URL encoded, converted to the full resource name,
 	// and assigned to the configuration's name field. The configuration ID of
@@ -1493,7 +2827,7 @@
 	// An error will be reported in the following cases:
 	// - If no configuration ID is provided.
 	// - If the parent invocation does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If a configuration with the same name already exists.
 	CreateConfiguration(ctx context.Context, in *CreateConfigurationRequest, opts ...grpc.CallOption) (*Configuration, error)
 	// Applies a standard update to the configuration identified by the given
@@ -1507,7 +2841,7 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the configuration does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If no field mask was given.
 	// - If a given field mask path is not valid.
 	UpdateConfiguration(ctx context.Context, in *UpdateConfigurationRequest, opts ...grpc.CallOption) (*Configuration, error)
@@ -1522,7 +2856,7 @@
 	// - If no file set ID is provided.
 	// - If a file set with the same name already exists.
 	// - If the parent invocation does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	CreateFileSet(ctx context.Context, in *CreateFileSetRequest, opts ...grpc.CallOption) (*FileSet, error)
 	// Applies a standard update to the file set identified by the given proto's
 	// name. For all types of fields (primitive, message, or repeated), replaces
@@ -1534,10 +2868,48 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the file set does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If no field mask was given.
 	// - If a given field mask path is not valid.
 	UpdateFileSet(ctx context.Context, in *UpdateFileSetRequest, opts ...grpc.CallOption) (*FileSet, error)
+	// Applies a merge update to the file set identified by the given proto's
+	// name. For primitive and message fields, updates them with the ones in the
+	// given proto if they are covered under the field mask paths. For repeated
+	// fields, merges to them with the given ones if they are covered under the
+	// field mask paths. This is not an implicitly idempotent API, so a request
+	// id is required to make it idempotent.
+	//
+	// Returns an empty FileSet proto with only the name and ID fields populated.
+	//
+	//
+	// An error will be reported in the following cases:
+	// - If the file set does not exist.
+	// - If the parent invocation is finalized.
+	// - If a given field mask path is not valid.
+	// - If no field mask was given.
+	MergeFileSet(ctx context.Context, in *MergeFileSetRequest, opts ...grpc.CallOption) (*FileSet, error)
+	// This is the RPC used for batch upload. It supports uploading multiple
+	// resources for an invocation in a transaction safe manner.
+	//
+	// To use this RPC, the CreateInvocationRequest must have been provided a
+	// resume_token.
+	//
+	// Combining batch upload with normal upload on a single Invocation is not
+	// supported. If an Invocation is created with a resume_token, all further
+	// calls must be through UploadBatch. If an Invocation is created without
+	// resume_token normal upload, all further upload calls must be through normal
+	// upload RPCs.
+	UploadBatch(ctx context.Context, in *UploadBatchRequest, opts ...grpc.CallOption) (*UploadBatchResponse, error)
+	// Provides a way to read the metadata for an invocation.
+	// The UploadMetadata could still be retrieved by this RPC even the Invocation
+	// has been finalized.
+	// This API requires setting a response FieldMask via 'fields' URL query
+	// parameter or X-Goog-FieldMask HTTP/gRPC header.
+	//
+	// An error will be reported in the following case:
+	// - If the invocation does not exist.
+	// - If no field mask was given.
+	GetInvocationUploadMetadata(ctx context.Context, in *GetInvocationUploadMetadataRequest, opts ...grpc.CallOption) (*UploadMetadata, error)
 }
 
 type resultStoreUploadClient struct {
@@ -1566,9 +2938,36 @@
 	return out, nil
 }
 
-func (c *resultStoreUploadClient) FinishInvocation(ctx context.Context, in *FinishInvocationRequest, opts ...grpc.CallOption) (*FinishInvocationResponse, error) {
-	out := new(FinishInvocationResponse)
-	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/FinishInvocation", in, out, opts...)
+func (c *resultStoreUploadClient) MergeInvocation(ctx context.Context, in *MergeInvocationRequest, opts ...grpc.CallOption) (*Invocation, error) {
+	out := new(Invocation)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/MergeInvocation", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) TouchInvocation(ctx context.Context, in *TouchInvocationRequest, opts ...grpc.CallOption) (*TouchInvocationResponse, error) {
+	out := new(TouchInvocationResponse)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/TouchInvocation", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) FinalizeInvocation(ctx context.Context, in *FinalizeInvocationRequest, opts ...grpc.CallOption) (*FinalizeInvocationResponse, error) {
+	out := new(FinalizeInvocationResponse)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/FinalizeInvocation", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) DeleteInvocation(ctx context.Context, in *DeleteInvocationRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/DeleteInvocation", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -1593,9 +2992,18 @@
 	return out, nil
 }
 
-func (c *resultStoreUploadClient) FinishTarget(ctx context.Context, in *FinishTargetRequest, opts ...grpc.CallOption) (*FinishTargetResponse, error) {
-	out := new(FinishTargetResponse)
-	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/FinishTarget", in, out, opts...)
+func (c *resultStoreUploadClient) MergeTarget(ctx context.Context, in *MergeTargetRequest, opts ...grpc.CallOption) (*Target, error) {
+	out := new(Target)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/MergeTarget", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) FinalizeTarget(ctx context.Context, in *FinalizeTargetRequest, opts ...grpc.CallOption) (*FinalizeTargetResponse, error) {
+	out := new(FinalizeTargetResponse)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/FinalizeTarget", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -1620,9 +3028,18 @@
 	return out, nil
 }
 
-func (c *resultStoreUploadClient) FinishConfiguredTarget(ctx context.Context, in *FinishConfiguredTargetRequest, opts ...grpc.CallOption) (*FinishConfiguredTargetResponse, error) {
-	out := new(FinishConfiguredTargetResponse)
-	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/FinishConfiguredTarget", in, out, opts...)
+func (c *resultStoreUploadClient) MergeConfiguredTarget(ctx context.Context, in *MergeConfiguredTargetRequest, opts ...grpc.CallOption) (*ConfiguredTarget, error) {
+	out := new(ConfiguredTarget)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/MergeConfiguredTarget", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) FinalizeConfiguredTarget(ctx context.Context, in *FinalizeConfiguredTargetRequest, opts ...grpc.CallOption) (*FinalizeConfiguredTargetResponse, error) {
+	out := new(FinalizeConfiguredTargetResponse)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/FinalizeConfiguredTarget", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -1647,6 +3064,15 @@
 	return out, nil
 }
 
+func (c *resultStoreUploadClient) MergeAction(ctx context.Context, in *MergeActionRequest, opts ...grpc.CallOption) (*Action, error) {
+	out := new(Action)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/MergeAction", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *resultStoreUploadClient) CreateConfiguration(ctx context.Context, in *CreateConfigurationRequest, opts ...grpc.CallOption) (*Configuration, error) {
 	out := new(Configuration)
 	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/CreateConfiguration", in, out, opts...)
@@ -1683,11 +3109,39 @@
 	return out, nil
 }
 
+func (c *resultStoreUploadClient) MergeFileSet(ctx context.Context, in *MergeFileSetRequest, opts ...grpc.CallOption) (*FileSet, error) {
+	out := new(FileSet)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/MergeFileSet", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) UploadBatch(ctx context.Context, in *UploadBatchRequest, opts ...grpc.CallOption) (*UploadBatchResponse, error) {
+	out := new(UploadBatchResponse)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/UploadBatch", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *resultStoreUploadClient) GetInvocationUploadMetadata(ctx context.Context, in *GetInvocationUploadMetadataRequest, opts ...grpc.CallOption) (*UploadMetadata, error) {
+	out := new(UploadMetadata)
+	err := c.cc.Invoke(ctx, "/google.devtools.resultstore.v2.ResultStoreUpload/GetInvocationUploadMetadata", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // ResultStoreUploadServer is the server API for ResultStoreUpload service.
 type ResultStoreUploadServer interface {
-	// Creates the given invocation. Generally, a unique ID will be assigned to
-	// the invocation's name field by the server. This is not an implicitly
-	// idempotent API, so a request id is required to make it idempotent.
+	// Creates the given invocation.
+	//
+	// This is not an implicitly idempotent API, so a request id is required to
+	// make it idempotent.
 	//
 	// Returns an empty Invocation proto with only the name and ID fields
 	// populated.
@@ -1706,18 +3160,53 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the invocation does not exist.
-	// - If the invocation is finished.
+	// - If the invocation is finalized.
 	// - If no field mask was given.
 	UpdateInvocation(context.Context, *UpdateInvocationRequest) (*Invocation, error)
-	// Declares the invocation with the given name as finished and immutable.
-	// This is an implicitly idempotent API.
+	// Applies a merge update to the invocation identified by the given proto's
+	// name.  For primitive and message fields, replaces them with the ones in
+	// the given proto if they are covered under the field mask paths.  For
+	// repeated fields, merges to them with the given ones if they are covered
+	// under the field mask paths. This is not an implicitly idempotent API, so a
+	// request id is required to make it idempotent.
+	//
+	// Returns an empty Invocation proto with only the name and ID fields
+	// populated.
+	//
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation does not exist.
+	// - If the invocation is finalized.
+	// - If no field mask was given.
+	MergeInvocation(context.Context, *MergeInvocationRequest) (*Invocation, error)
+	// Touches the invocation identified by the given proto's name.
+	//
+	// This is useful when you need to notify ResultStore that you haven't
+	// abandoned the upload, since abandoned uploads will be automatically
+	// finalized after a set period.
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation does not exist.
+	// - If the invocation is finalized.
+	TouchInvocation(context.Context, *TouchInvocationRequest) (*TouchInvocationResponse, error)
+	// Declares the invocation with the given name as finalized and immutable by
+	// the user. It may still be mutated by post-processing. This is an implicitly
+	// idempotent API.
 	//
 	// If an Invocation is not updated for 24 hours, some time after that
 	// this will be called automatically.
 	//
 	// An error will be reported in the following cases:
 	// - If the invocation does not exist.
-	FinishInvocation(context.Context, *FinishInvocationRequest) (*FinishInvocationResponse, error)
+	FinalizeInvocation(context.Context, *FinalizeInvocationRequest) (*FinalizeInvocationResponse, error)
+	// Deletes an immutable invocation (permanently)
+	// Note: this does not delete indirect data, e.g. files stored in other
+	// services.
+	//
+	// An error will be reported in the following cases:
+	// - If the invocation does not exist.
+	// - If the invocation is not finalized.  This can be retried until it is.
+	DeleteInvocation(context.Context, *DeleteInvocationRequest) (*empty.Empty, error)
 	// Creates the given target under the given parent invocation. The given
 	// target ID is URL encoded, converted to the full resource name, and assigned
 	// to the target's name field. This is not an implicitly idempotent API, so a
@@ -1728,7 +3217,7 @@
 	// An error will be reported in the following cases:
 	// - If no target ID is provided.
 	// - If the parent invocation does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If a target with the same name already exists.
 	CreateTarget(context.Context, *CreateTargetRequest) (*Target, error)
 	// Applies a standard update to the target identified by the given proto's
@@ -1741,15 +3230,31 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the target does not exist.
-	// - If the target or parent invocation is finished.
+	// - If the target or parent invocation is finalized.
 	// - If no field mask was given.
 	UpdateTarget(context.Context, *UpdateTargetRequest) (*Target, error)
-	// Declares the target with the given name as finished and immutable.
-	// This is an implicitly idempotent API.
+	// Applies a merge update to the target identified by the given proto's
+	// name. For primitive and message fields, replaces them with the ones in the
+	// given proto if they are covered under the field mask paths.  For repeated
+	// fields, merges to them with the given ones if they are covered under the
+	// field mask paths. This is not an implicitly idempotent API, so a request
+	// id is required to make it idempotent.
+	//
+	// Returns an empty Target proto with only the name and ID fields populated.
+	//
 	//
 	// An error will be reported in the following cases:
 	// - If the target does not exist.
-	FinishTarget(context.Context, *FinishTargetRequest) (*FinishTargetResponse, error)
+	// - If the target or parent invocation is finalized.
+	// - If no field mask was given.
+	MergeTarget(context.Context, *MergeTargetRequest) (*Target, error)
+	// Declares the target with the given name as finalized and immutable by the
+	// user. It may still be mutated by post-processing. This is an implicitly
+	// idempotent API.
+	//
+	// An error will be reported in the following cases:
+	// - If the target does not exist.
+	FinalizeTarget(context.Context, *FinalizeTargetRequest) (*FinalizeTargetResponse, error)
 	// Creates the given configured target under the given parent target.
 	// The given configured target ID is URL encoded, converted to the full
 	// resource name, and assigned to the configured target's name field.
@@ -1763,7 +3268,7 @@
 	// - If no config ID is provided.
 	// - If a configured target with the same ID already exists.
 	// - If the parent target does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	CreateConfiguredTarget(context.Context, *CreateConfiguredTargetRequest) (*ConfiguredTarget, error)
 	// Applies a standard update to the configured target identified by the given
 	// proto's name. For all types of fields (primitive, message, or repeated),
@@ -1776,15 +3281,32 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the configured target does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	// - If no field mask was given.
 	UpdateConfiguredTarget(context.Context, *UpdateConfiguredTargetRequest) (*ConfiguredTarget, error)
-	// Declares the configured target with the given name as finished and
-	// immutable. This is an implicitly idempotent API.
+	// Applies a merge update to the configured target identified by the given
+	// proto's name. For primitive and message fields, replaces them with the
+	// ones in the given proto if they are covered under the field mask paths.
+	// For repeated fields, merges to them with the given ones if they are
+	// covered under the field mask paths. This is not an implicitly idempotent
+	// API, so a request id is required to make it idempotent.
+	//
+	// Returns an empty ConfiguredTarget proto with only the name and ID fields
+	// populated.
+	//
 	//
 	// An error will be reported in the following cases:
 	// - If the configured target does not exist.
-	FinishConfiguredTarget(context.Context, *FinishConfiguredTargetRequest) (*FinishConfiguredTargetResponse, error)
+	// - If the parent target or invocation is finalized.
+	// - If no field mask was given.
+	MergeConfiguredTarget(context.Context, *MergeConfiguredTargetRequest) (*ConfiguredTarget, error)
+	// Declares the configured target with the given name as finalized and
+	// immutable by the user. It may still be mutated by post-processing. This is
+	// an implicitly idempotent API.
+	//
+	// An error will be reported in the following cases:
+	// - If the configured target does not exist.
+	FinalizeConfiguredTarget(context.Context, *FinalizeConfiguredTargetRequest) (*FinalizeConfiguredTargetResponse, error)
 	// Creates the given action under the given configured target. The given
 	// action ID is URL encoded, converted to the full resource name, and
 	// assigned to the action's name field. This is not an implicitly
@@ -1795,7 +3317,7 @@
 	// An error will be reported in the following cases:
 	// - If no action ID provided.
 	// - If the parent configured target does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	// - If an action  with the same name already exists.
 	CreateAction(context.Context, *CreateActionRequest) (*Action, error)
 	// Applies a standard update to the action identified by the given
@@ -1808,9 +3330,24 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the action does not exist.
-	// - If the parent target or invocation is finished.
+	// - If the parent target or invocation is finalized.
 	// - If no field mask was given.
 	UpdateAction(context.Context, *UpdateActionRequest) (*Action, error)
+	// Applies a merge update to the action identified by the given
+	// proto's name.  For primitive and message fields, replaces them with the
+	// ones in the given proto if they are covered under the field mask paths.
+	// For repeated fields, merges to them with the given ones if they are
+	// covered under the field mask paths. This is not an implicitly idempotent
+	// API, so a request id is required to make it idempotent.
+	//
+	// Returns an empty Action proto with only the name and ID fields populated.
+	//
+	//
+	// An error will be reported in the following cases:
+	// - If the action does not exist.
+	// - If the parent target or invocation is finalized.
+	// - If no field mask was given.
+	MergeAction(context.Context, *MergeActionRequest) (*Action, error)
 	// Creates the given configuration under the given parent invocation. The
 	// given configuration ID is URL encoded, converted to the full resource name,
 	// and assigned to the configuration's name field. The configuration ID of
@@ -1824,7 +3361,7 @@
 	// An error will be reported in the following cases:
 	// - If no configuration ID is provided.
 	// - If the parent invocation does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If a configuration with the same name already exists.
 	CreateConfiguration(context.Context, *CreateConfigurationRequest) (*Configuration, error)
 	// Applies a standard update to the configuration identified by the given
@@ -1838,7 +3375,7 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the configuration does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If no field mask was given.
 	// - If a given field mask path is not valid.
 	UpdateConfiguration(context.Context, *UpdateConfigurationRequest) (*Configuration, error)
@@ -1853,7 +3390,7 @@
 	// - If no file set ID is provided.
 	// - If a file set with the same name already exists.
 	// - If the parent invocation does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	CreateFileSet(context.Context, *CreateFileSetRequest) (*FileSet, error)
 	// Applies a standard update to the file set identified by the given proto's
 	// name. For all types of fields (primitive, message, or repeated), replaces
@@ -1865,10 +3402,48 @@
 	//
 	// An error will be reported in the following cases:
 	// - If the file set does not exist.
-	// - If the parent invocation is finished.
+	// - If the parent invocation is finalized.
 	// - If no field mask was given.
 	// - If a given field mask path is not valid.
 	UpdateFileSet(context.Context, *UpdateFileSetRequest) (*FileSet, error)
+	// Applies a merge update to the file set identified by the given proto's
+	// name. For primitive and message fields, updates them with the ones in the
+	// given proto if they are covered under the field mask paths. For repeated
+	// fields, merges to them with the given ones if they are covered under the
+	// field mask paths. This is not an implicitly idempotent API, so a request
+	// id is required to make it idempotent.
+	//
+	// Returns an empty FileSet proto with only the name and ID fields populated.
+	//
+	//
+	// An error will be reported in the following cases:
+	// - If the file set does not exist.
+	// - If the parent invocation is finalized.
+	// - If a given field mask path is not valid.
+	// - If no field mask was given.
+	MergeFileSet(context.Context, *MergeFileSetRequest) (*FileSet, error)
+	// This is the RPC used for batch upload. It supports uploading multiple
+	// resources for an invocation in a transaction safe manner.
+	//
+	// To use this RPC, the CreateInvocationRequest must have been provided a
+	// resume_token.
+	//
+	// Combining batch upload with normal upload on a single Invocation is not
+	// supported. If an Invocation is created with a resume_token, all further
+	// calls must be through UploadBatch. If an Invocation is created without
+	// resume_token normal upload, all further upload calls must be through normal
+	// upload RPCs.
+	UploadBatch(context.Context, *UploadBatchRequest) (*UploadBatchResponse, error)
+	// Provides a way to read the metadata for an invocation.
+	// The UploadMetadata could still be retrieved by this RPC even the Invocation
+	// has been finalized.
+	// This API requires setting a response FieldMask via 'fields' URL query
+	// parameter or X-Goog-FieldMask HTTP/gRPC header.
+	//
+	// An error will be reported in the following case:
+	// - If the invocation does not exist.
+	// - If no field mask was given.
+	GetInvocationUploadMetadata(context.Context, *GetInvocationUploadMetadataRequest) (*UploadMetadata, error)
 }
 
 func RegisterResultStoreUploadServer(s *grpc.Server, srv ResultStoreUploadServer) {
@@ -1911,20 +3486,74 @@
 	return interceptor(ctx, in, info, handler)
 }
 
-func _ResultStoreUpload_FinishInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(FinishInvocationRequest)
+func _ResultStoreUpload_MergeInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MergeInvocationRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ResultStoreUploadServer).FinishInvocation(ctx, in)
+		return srv.(ResultStoreUploadServer).MergeInvocation(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/FinishInvocation",
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/MergeInvocation",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ResultStoreUploadServer).FinishInvocation(ctx, req.(*FinishInvocationRequest))
+		return srv.(ResultStoreUploadServer).MergeInvocation(ctx, req.(*MergeInvocationRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_TouchInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(TouchInvocationRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).TouchInvocation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/TouchInvocation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).TouchInvocation(ctx, req.(*TouchInvocationRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_FinalizeInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(FinalizeInvocationRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).FinalizeInvocation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/FinalizeInvocation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).FinalizeInvocation(ctx, req.(*FinalizeInvocationRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_DeleteInvocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteInvocationRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).DeleteInvocation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/DeleteInvocation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).DeleteInvocation(ctx, req.(*DeleteInvocationRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -1965,20 +3594,38 @@
 	return interceptor(ctx, in, info, handler)
 }
 
-func _ResultStoreUpload_FinishTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(FinishTargetRequest)
+func _ResultStoreUpload_MergeTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MergeTargetRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ResultStoreUploadServer).FinishTarget(ctx, in)
+		return srv.(ResultStoreUploadServer).MergeTarget(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/FinishTarget",
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/MergeTarget",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ResultStoreUploadServer).FinishTarget(ctx, req.(*FinishTargetRequest))
+		return srv.(ResultStoreUploadServer).MergeTarget(ctx, req.(*MergeTargetRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_FinalizeTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(FinalizeTargetRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).FinalizeTarget(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/FinalizeTarget",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).FinalizeTarget(ctx, req.(*FinalizeTargetRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -2019,20 +3666,38 @@
 	return interceptor(ctx, in, info, handler)
 }
 
-func _ResultStoreUpload_FinishConfiguredTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(FinishConfiguredTargetRequest)
+func _ResultStoreUpload_MergeConfiguredTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MergeConfiguredTargetRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(ResultStoreUploadServer).FinishConfiguredTarget(ctx, in)
+		return srv.(ResultStoreUploadServer).MergeConfiguredTarget(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/FinishConfiguredTarget",
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/MergeConfiguredTarget",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ResultStoreUploadServer).FinishConfiguredTarget(ctx, req.(*FinishConfiguredTargetRequest))
+		return srv.(ResultStoreUploadServer).MergeConfiguredTarget(ctx, req.(*MergeConfiguredTargetRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_FinalizeConfiguredTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(FinalizeConfiguredTargetRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).FinalizeConfiguredTarget(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/FinalizeConfiguredTarget",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).FinalizeConfiguredTarget(ctx, req.(*FinalizeConfiguredTargetRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -2073,6 +3738,24 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ResultStoreUpload_MergeAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MergeActionRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).MergeAction(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/MergeAction",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).MergeAction(ctx, req.(*MergeActionRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _ResultStoreUpload_CreateConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(CreateConfigurationRequest)
 	if err := dec(in); err != nil {
@@ -2145,6 +3828,60 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ResultStoreUpload_MergeFileSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(MergeFileSetRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).MergeFileSet(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/MergeFileSet",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).MergeFileSet(ctx, req.(*MergeFileSetRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_UploadBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UploadBatchRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).UploadBatch(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/UploadBatch",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).UploadBatch(ctx, req.(*UploadBatchRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ResultStoreUpload_GetInvocationUploadMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetInvocationUploadMetadataRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResultStoreUploadServer).GetInvocationUploadMetadata(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.resultstore.v2.ResultStoreUpload/GetInvocationUploadMetadata",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResultStoreUploadServer).GetInvocationUploadMetadata(ctx, req.(*GetInvocationUploadMetadataRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _ResultStoreUpload_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "google.devtools.resultstore.v2.ResultStoreUpload",
 	HandlerType: (*ResultStoreUploadServer)(nil),
@@ -2158,8 +3895,20 @@
 			Handler:    _ResultStoreUpload_UpdateInvocation_Handler,
 		},
 		{
-			MethodName: "FinishInvocation",
-			Handler:    _ResultStoreUpload_FinishInvocation_Handler,
+			MethodName: "MergeInvocation",
+			Handler:    _ResultStoreUpload_MergeInvocation_Handler,
+		},
+		{
+			MethodName: "TouchInvocation",
+			Handler:    _ResultStoreUpload_TouchInvocation_Handler,
+		},
+		{
+			MethodName: "FinalizeInvocation",
+			Handler:    _ResultStoreUpload_FinalizeInvocation_Handler,
+		},
+		{
+			MethodName: "DeleteInvocation",
+			Handler:    _ResultStoreUpload_DeleteInvocation_Handler,
 		},
 		{
 			MethodName: "CreateTarget",
@@ -2170,8 +3919,12 @@
 			Handler:    _ResultStoreUpload_UpdateTarget_Handler,
 		},
 		{
-			MethodName: "FinishTarget",
-			Handler:    _ResultStoreUpload_FinishTarget_Handler,
+			MethodName: "MergeTarget",
+			Handler:    _ResultStoreUpload_MergeTarget_Handler,
+		},
+		{
+			MethodName: "FinalizeTarget",
+			Handler:    _ResultStoreUpload_FinalizeTarget_Handler,
 		},
 		{
 			MethodName: "CreateConfiguredTarget",
@@ -2182,8 +3935,12 @@
 			Handler:    _ResultStoreUpload_UpdateConfiguredTarget_Handler,
 		},
 		{
-			MethodName: "FinishConfiguredTarget",
-			Handler:    _ResultStoreUpload_FinishConfiguredTarget_Handler,
+			MethodName: "MergeConfiguredTarget",
+			Handler:    _ResultStoreUpload_MergeConfiguredTarget_Handler,
+		},
+		{
+			MethodName: "FinalizeConfiguredTarget",
+			Handler:    _ResultStoreUpload_FinalizeConfiguredTarget_Handler,
 		},
 		{
 			MethodName: "CreateAction",
@@ -2194,6 +3951,10 @@
 			Handler:    _ResultStoreUpload_UpdateAction_Handler,
 		},
 		{
+			MethodName: "MergeAction",
+			Handler:    _ResultStoreUpload_MergeAction_Handler,
+		},
+		{
 			MethodName: "CreateConfiguration",
 			Handler:    _ResultStoreUpload_CreateConfiguration_Handler,
 		},
@@ -2209,6 +3970,18 @@
 			MethodName: "UpdateFileSet",
 			Handler:    _ResultStoreUpload_UpdateFileSet_Handler,
 		},
+		{
+			MethodName: "MergeFileSet",
+			Handler:    _ResultStoreUpload_MergeFileSet_Handler,
+		},
+		{
+			MethodName: "UploadBatch",
+			Handler:    _ResultStoreUpload_UploadBatch_Handler,
+		},
+		{
+			MethodName: "GetInvocationUploadMetadata",
+			Handler:    _ResultStoreUpload_GetInvocationUploadMetadata_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "google/devtools/resultstore/v2/resultstore_upload.proto",
diff --git a/googleapis/devtools/resultstore/v2/target.pb.go b/googleapis/devtools/resultstore/v2/target.pb.go
index 58b17bc..8b22d7a 100644
--- a/googleapis/devtools/resultstore/v2/target.pb.go
+++ b/googleapis/devtools/resultstore/v2/target.pb.go
@@ -114,7 +114,7 @@
 // the data.
 type Target struct {
 	// The resource name.  Its format must be:
-	// invocations/${INVOCATION_ID}/targets/${TARGET_ID}
+	// invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The resource ID components that identify the Target. They must match the
 	// resource name after proper encoding.
diff --git a/googleapis/devtools/resultstore/v2/upload_metadata.pb.go b/googleapis/devtools/resultstore/v2/upload_metadata.pb.go
new file mode 100644
index 0000000..bb018a9
--- /dev/null
+++ b/googleapis/devtools/resultstore/v2/upload_metadata.pb.go
@@ -0,0 +1,112 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/devtools/resultstore/v2/upload_metadata.proto
+
+package resultstore
+
+import (
+	fmt "fmt"
+	math "math"
+
+	proto "github.com/golang/protobuf/proto"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// The upload metadata for an invocation
+type UploadMetadata struct {
+	// The name of the upload metadata.  Its format will be:
+	// invocations/${INVOCATION_ID}/uploadMetadata
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The resume token of the last batch that was committed in the most recent
+	// batch upload.
+	// More information with resume_token could be found in
+	// resultstore_upload.proto
+	ResumeToken string `protobuf:"bytes,2,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"`
+	// Client-specific data used to resume batch upload if an error occurs and
+	// retry action is needed.
+	UploaderState        []byte   `protobuf:"bytes,3,opt,name=uploader_state,json=uploaderState,proto3" json:"uploader_state,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UploadMetadata) Reset()         { *m = UploadMetadata{} }
+func (m *UploadMetadata) String() string { return proto.CompactTextString(m) }
+func (*UploadMetadata) ProtoMessage()    {}
+func (*UploadMetadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_26e75c19ce7f4673, []int{0}
+}
+
+func (m *UploadMetadata) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UploadMetadata.Unmarshal(m, b)
+}
+func (m *UploadMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UploadMetadata.Marshal(b, m, deterministic)
+}
+func (m *UploadMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UploadMetadata.Merge(m, src)
+}
+func (m *UploadMetadata) XXX_Size() int {
+	return xxx_messageInfo_UploadMetadata.Size(m)
+}
+func (m *UploadMetadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_UploadMetadata.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UploadMetadata proto.InternalMessageInfo
+
+func (m *UploadMetadata) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *UploadMetadata) GetResumeToken() string {
+	if m != nil {
+		return m.ResumeToken
+	}
+	return ""
+}
+
+func (m *UploadMetadata) GetUploaderState() []byte {
+	if m != nil {
+		return m.UploaderState
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*UploadMetadata)(nil), "google.devtools.resultstore.v2.UploadMetadata")
+}
+
+func init() {
+	proto.RegisterFile("google/devtools/resultstore/v2/upload_metadata.proto", fileDescriptor_26e75c19ce7f4673)
+}
+
+var fileDescriptor_26e75c19ce7f4673 = []byte{
+	// 214 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xb1, 0x4b, 0xc5, 0x30,
+	0x10, 0xc6, 0x89, 0x8a, 0x60, 0x7c, 0xbe, 0x21, 0x53, 0x27, 0x79, 0x3e, 0x10, 0xde, 0x94, 0x40,
+	0x75, 0x73, 0x73, 0x73, 0x10, 0xa4, 0xea, 0xe2, 0x52, 0x4e, 0x7b, 0x04, 0x31, 0xc9, 0xd5, 0xe4,
+	0xda, 0xbf, 0x5f, 0x9a, 0xb4, 0xd0, 0xc5, 0xb7, 0x25, 0xbf, 0xef, 0x7e, 0xf0, 0xdd, 0xc9, 0x7b,
+	0x4b, 0x64, 0x1d, 0x9a, 0x0e, 0x47, 0x26, 0x72, 0xc9, 0x44, 0x4c, 0x83, 0xe3, 0xc4, 0x14, 0xd1,
+	0x8c, 0xb5, 0x19, 0x7a, 0x47, 0xd0, 0xb5, 0x1e, 0x19, 0x3a, 0x60, 0xd0, 0x7d, 0x24, 0x26, 0x75,
+	0x5d, 0x2c, 0xbd, 0x58, 0x7a, 0x65, 0xe9, 0xb1, 0xde, 0x07, 0xb9, 0x7d, 0xcf, 0xe2, 0xf3, 0xec,
+	0x29, 0x25, 0xcf, 0x02, 0x78, 0xac, 0xc4, 0x4e, 0x1c, 0x2e, 0x9a, 0xfc, 0x56, 0x37, 0x72, 0x33,
+	0x79, 0x1e, 0x5b, 0xa6, 0x1f, 0x0c, 0xd5, 0x49, 0xce, 0x2e, 0x0b, 0x7b, 0x9b, 0x90, 0xba, 0x95,
+	0xdb, 0xd2, 0x00, 0x63, 0x9b, 0x18, 0x18, 0xab, 0xd3, 0x9d, 0x38, 0x6c, 0x9a, 0xab, 0x85, 0xbe,
+	0x4e, 0xf0, 0xf1, 0x57, 0xee, 0xbf, 0xc8, 0xeb, 0xe3, 0xad, 0x5e, 0xc4, 0xc7, 0xd3, 0x3c, 0x61,
+	0xc9, 0x41, 0xb0, 0x9a, 0xa2, 0x35, 0x16, 0x43, 0xde, 0xc9, 0x94, 0x08, 0xfa, 0xef, 0xf4, 0xdf,
+	0x31, 0x1e, 0x56, 0xdf, 0xcf, 0xf3, 0x6c, 0xdd, 0xfd, 0x05, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x6d,
+	0xf4, 0xe8, 0x41, 0x01, 0x00, 0x00,
+}