Files
zot/pkg/meta/proto/gen/meta.pb.go
Andrei Aaron 3c7d5a5f1d feat: add TaggedTimestamp to ImageSummary returned by graphql API (#3731)
feat(meta): add TaggedTimestamp field and preserve during re-parsing

Add TaggedTimestamp field to track when image tags were created, exposed
through GraphQL API. Previously, when zot restarted and re-parsed storage,
ResetRepoReferences would clear all tags, causing timestamp information to
be lost and reset to the service restart time for existing images.

This change adds TaggedTimestamp support and modifies ResetRepoReferences to
selectively preserve tags that still exist in storage, maintaining their
TaggedTimestamp values. Tags that no longer exist in storage are removed as
before.

Changes:
- Add TaggedTimestamp field to GraphQL ImageSummary schema
- Update GraphQL conversion functions to populate TaggedTimestamp with
  fallback to PushTimestamp when unavailable
- Updated ResetRepoReferences interface to accept tagsToKeep parameter
- Modified ParseRepo to collect tags from storage before resetting
- Updated all backend implementations (Redis, DynamoDB, BoltDB) to preserve
  tags in tagsToKeep instead of clearing all tags
- Updated tests and mocks to match new signature

This ensures TaggedTimestamp accurately reflects when tags were originally
created, and exposes this information through the GraphQL API.

Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com>
2026-01-30 23:05:14 +02:00

1582 lines
57 KiB
Go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v4.24.4
// source: meta/meta.proto
package gen
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type TagDescriptor struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MediaType string `protobuf:"bytes,1,opt,name=MediaType,proto3" json:"MediaType,omitempty"`
Digest string `protobuf:"bytes,2,opt,name=Digest,proto3" json:"Digest,omitempty"`
TaggedTimestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=TaggedTimestamp,proto3" json:"TaggedTimestamp,omitempty"`
}
func (x *TagDescriptor) Reset() {
*x = TagDescriptor{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TagDescriptor) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TagDescriptor) ProtoMessage() {}
func (x *TagDescriptor) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TagDescriptor.ProtoReflect.Descriptor instead.
func (*TagDescriptor) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{0}
}
func (x *TagDescriptor) GetMediaType() string {
if x != nil {
return x.MediaType
}
return ""
}
func (x *TagDescriptor) GetDigest() string {
if x != nil {
return x.Digest
}
return ""
}
func (x *TagDescriptor) GetTaggedTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.TaggedTimestamp
}
return nil
}
type ImageMeta struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MediaType string `protobuf:"bytes,1,opt,name=MediaType,proto3" json:"MediaType,omitempty"`
Manifests []*ManifestMeta `protobuf:"bytes,2,rep,name=Manifests,proto3" json:"Manifests,omitempty"`
Index *IndexMeta `protobuf:"bytes,3,opt,name=Index,proto3,oneof" json:"Index,omitempty"`
}
func (x *ImageMeta) Reset() {
*x = ImageMeta{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ImageMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ImageMeta) ProtoMessage() {}
func (x *ImageMeta) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ImageMeta.ProtoReflect.Descriptor instead.
func (*ImageMeta) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{1}
}
func (x *ImageMeta) GetMediaType() string {
if x != nil {
return x.MediaType
}
return ""
}
func (x *ImageMeta) GetManifests() []*ManifestMeta {
if x != nil {
return x.Manifests
}
return nil
}
func (x *ImageMeta) GetIndex() *IndexMeta {
if x != nil {
return x.Index
}
return nil
}
type ManifestMeta struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Digest string `protobuf:"bytes,1,opt,name=Digest,proto3" json:"Digest,omitempty"`
Size int64 `protobuf:"varint,2,opt,name=Size,proto3" json:"Size,omitempty"`
Manifest *Manifest `protobuf:"bytes,3,opt,name=Manifest,proto3" json:"Manifest,omitempty"`
Config *Image `protobuf:"bytes,4,opt,name=Config,proto3" json:"Config,omitempty"`
}
func (x *ManifestMeta) Reset() {
*x = ManifestMeta{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ManifestMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ManifestMeta) ProtoMessage() {}
func (x *ManifestMeta) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ManifestMeta.ProtoReflect.Descriptor instead.
func (*ManifestMeta) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{2}
}
func (x *ManifestMeta) GetDigest() string {
if x != nil {
return x.Digest
}
return ""
}
func (x *ManifestMeta) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
func (x *ManifestMeta) GetManifest() *Manifest {
if x != nil {
return x.Manifest
}
return nil
}
func (x *ManifestMeta) GetConfig() *Image {
if x != nil {
return x.Config
}
return nil
}
type IndexMeta struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Digest string `protobuf:"bytes,1,opt,name=Digest,proto3" json:"Digest,omitempty"`
Size int64 `protobuf:"varint,2,opt,name=Size,proto3" json:"Size,omitempty"`
Index *Index `protobuf:"bytes,3,opt,name=Index,proto3" json:"Index,omitempty"`
}
func (x *IndexMeta) Reset() {
*x = IndexMeta{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *IndexMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*IndexMeta) ProtoMessage() {}
func (x *IndexMeta) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use IndexMeta.ProtoReflect.Descriptor instead.
func (*IndexMeta) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{3}
}
func (x *IndexMeta) GetDigest() string {
if x != nil {
return x.Digest
}
return ""
}
func (x *IndexMeta) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
func (x *IndexMeta) GetIndex() *Index {
if x != nil {
return x.Index
}
return nil
}
type RepoLastUpdatedImage struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
LastUpdated *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=LastUpdated,proto3,oneof" json:"LastUpdated,omitempty"`
MediaType string `protobuf:"bytes,2,opt,name=MediaType,proto3" json:"MediaType,omitempty"`
Digest string `protobuf:"bytes,3,opt,name=Digest,proto3" json:"Digest,omitempty"`
Tag string `protobuf:"bytes,4,opt,name=Tag,proto3" json:"Tag,omitempty"`
}
func (x *RepoLastUpdatedImage) Reset() {
*x = RepoLastUpdatedImage{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RepoLastUpdatedImage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RepoLastUpdatedImage) ProtoMessage() {}
func (x *RepoLastUpdatedImage) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RepoLastUpdatedImage.ProtoReflect.Descriptor instead.
func (*RepoLastUpdatedImage) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{4}
}
func (x *RepoLastUpdatedImage) GetLastUpdated() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdated
}
return nil
}
func (x *RepoLastUpdatedImage) GetMediaType() string {
if x != nil {
return x.MediaType
}
return ""
}
func (x *RepoLastUpdatedImage) GetDigest() string {
if x != nil {
return x.Digest
}
return ""
}
func (x *RepoLastUpdatedImage) GetTag() string {
if x != nil {
return x.Tag
}
return ""
}
type RepoMeta struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Tags map[string]*TagDescriptor `protobuf:"bytes,2,rep,name=Tags,proto3" json:"Tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Statistics map[string]*DescriptorStatistics `protobuf:"bytes,3,rep,name=Statistics,proto3" json:"Statistics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Signatures map[string]*ManifestSignatures `protobuf:"bytes,4,rep,name=Signatures,proto3" json:"Signatures,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Referrers map[string]*ReferrersInfo `protobuf:"bytes,5,rep,name=Referrers,proto3" json:"Referrers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
IsStarred bool `protobuf:"varint,6,opt,name=IsStarred,proto3" json:"IsStarred,omitempty"`
IsBookmarked bool `protobuf:"varint,7,opt,name=IsBookmarked,proto3" json:"IsBookmarked,omitempty"`
Rank int32 `protobuf:"varint,8,opt,name=Rank,proto3" json:"Rank,omitempty"`
Stars int32 `protobuf:"varint,9,opt,name=Stars,proto3" json:"Stars,omitempty"`
Size int64 `protobuf:"varint,10,opt,name=Size,proto3" json:"Size,omitempty"`
Vendors []string `protobuf:"bytes,11,rep,name=Vendors,proto3" json:"Vendors,omitempty"`
Platforms []*Platform `protobuf:"bytes,12,rep,name=Platforms,proto3" json:"Platforms,omitempty"`
LastUpdatedImage *RepoLastUpdatedImage `protobuf:"bytes,13,opt,name=LastUpdatedImage,proto3,oneof" json:"LastUpdatedImage,omitempty"`
Downloads int32 `protobuf:"varint,14,opt,name=Downloads,proto3" json:"Downloads,omitempty"`
}
func (x *RepoMeta) Reset() {
*x = RepoMeta{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RepoMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RepoMeta) ProtoMessage() {}
func (x *RepoMeta) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RepoMeta.ProtoReflect.Descriptor instead.
func (*RepoMeta) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{5}
}
func (x *RepoMeta) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *RepoMeta) GetTags() map[string]*TagDescriptor {
if x != nil {
return x.Tags
}
return nil
}
func (x *RepoMeta) GetStatistics() map[string]*DescriptorStatistics {
if x != nil {
return x.Statistics
}
return nil
}
func (x *RepoMeta) GetSignatures() map[string]*ManifestSignatures {
if x != nil {
return x.Signatures
}
return nil
}
func (x *RepoMeta) GetReferrers() map[string]*ReferrersInfo {
if x != nil {
return x.Referrers
}
return nil
}
func (x *RepoMeta) GetIsStarred() bool {
if x != nil {
return x.IsStarred
}
return false
}
func (x *RepoMeta) GetIsBookmarked() bool {
if x != nil {
return x.IsBookmarked
}
return false
}
func (x *RepoMeta) GetRank() int32 {
if x != nil {
return x.Rank
}
return 0
}
func (x *RepoMeta) GetStars() int32 {
if x != nil {
return x.Stars
}
return 0
}
func (x *RepoMeta) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
func (x *RepoMeta) GetVendors() []string {
if x != nil {
return x.Vendors
}
return nil
}
func (x *RepoMeta) GetPlatforms() []*Platform {
if x != nil {
return x.Platforms
}
return nil
}
func (x *RepoMeta) GetLastUpdatedImage() *RepoLastUpdatedImage {
if x != nil {
return x.LastUpdatedImage
}
return nil
}
func (x *RepoMeta) GetDownloads() int32 {
if x != nil {
return x.Downloads
}
return 0
}
type RepoBlobs struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Blobs map[string]*BlobInfo `protobuf:"bytes,2,rep,name=Blobs,proto3" json:"Blobs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *RepoBlobs) Reset() {
*x = RepoBlobs{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RepoBlobs) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RepoBlobs) ProtoMessage() {}
func (x *RepoBlobs) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RepoBlobs.ProtoReflect.Descriptor instead.
func (*RepoBlobs) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{6}
}
func (x *RepoBlobs) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *RepoBlobs) GetBlobs() map[string]*BlobInfo {
if x != nil {
return x.Blobs
}
return nil
}
// for example this is a manifest and it has a config, and layers
// or index and has manifests
type BlobInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Size int64 `protobuf:"varint,1,opt,name=Size,proto3" json:"Size,omitempty"`
Vendors []string `protobuf:"bytes,2,rep,name=Vendors,proto3" json:"Vendors,omitempty"`
SubBlobs []string `protobuf:"bytes,3,rep,name=SubBlobs,proto3" json:"SubBlobs,omitempty"`
Platforms []*Platform `protobuf:"bytes,4,rep,name=Platforms,proto3" json:"Platforms,omitempty"`
LastUpdated *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=LastUpdated,proto3,oneof" json:"LastUpdated,omitempty"`
}
func (x *BlobInfo) Reset() {
*x = BlobInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BlobInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BlobInfo) ProtoMessage() {}
func (x *BlobInfo) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BlobInfo.ProtoReflect.Descriptor instead.
func (*BlobInfo) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{7}
}
func (x *BlobInfo) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
func (x *BlobInfo) GetVendors() []string {
if x != nil {
return x.Vendors
}
return nil
}
func (x *BlobInfo) GetSubBlobs() []string {
if x != nil {
return x.SubBlobs
}
return nil
}
func (x *BlobInfo) GetPlatforms() []*Platform {
if x != nil {
return x.Platforms
}
return nil
}
func (x *BlobInfo) GetLastUpdated() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdated
}
return nil
}
type DescriptorStatistics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DownloadCount int32 `protobuf:"varint,1,opt,name=DownloadCount,proto3" json:"DownloadCount,omitempty"`
LastPullTimestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=LastPullTimestamp,proto3" json:"LastPullTimestamp,omitempty"`
PushTimestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=PushTimestamp,proto3" json:"PushTimestamp,omitempty"`
PushedBy string `protobuf:"bytes,4,opt,name=PushedBy,proto3" json:"PushedBy,omitempty"`
}
func (x *DescriptorStatistics) Reset() {
*x = DescriptorStatistics{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DescriptorStatistics) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DescriptorStatistics) ProtoMessage() {}
func (x *DescriptorStatistics) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DescriptorStatistics.ProtoReflect.Descriptor instead.
func (*DescriptorStatistics) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{8}
}
func (x *DescriptorStatistics) GetDownloadCount() int32 {
if x != nil {
return x.DownloadCount
}
return 0
}
func (x *DescriptorStatistics) GetLastPullTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.LastPullTimestamp
}
return nil
}
func (x *DescriptorStatistics) GetPushTimestamp() *timestamppb.Timestamp {
if x != nil {
return x.PushTimestamp
}
return nil
}
func (x *DescriptorStatistics) GetPushedBy() string {
if x != nil {
return x.PushedBy
}
return ""
}
type ReferrersInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
List []*ReferrerInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
}
func (x *ReferrersInfo) Reset() {
*x = ReferrersInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReferrersInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReferrersInfo) ProtoMessage() {}
func (x *ReferrersInfo) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ReferrersInfo.ProtoReflect.Descriptor instead.
func (*ReferrersInfo) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{9}
}
func (x *ReferrersInfo) GetList() []*ReferrerInfo {
if x != nil {
return x.List
}
return nil
}
type ReferrerInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Digest string `protobuf:"bytes,1,opt,name=Digest,proto3" json:"Digest,omitempty"`
Count int64 `protobuf:"varint,2,opt,name=Count,proto3" json:"Count,omitempty"`
MediaType string `protobuf:"bytes,3,opt,name=MediaType,proto3" json:"MediaType,omitempty"`
ArtifactType string `protobuf:"bytes,4,opt,name=ArtifactType,proto3" json:"ArtifactType,omitempty"`
Size int64 `protobuf:"varint,5,opt,name=Size,proto3" json:"Size,omitempty"`
Annotations map[string]string `protobuf:"bytes,6,rep,name=Annotations,proto3" json:"Annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *ReferrerInfo) Reset() {
*x = ReferrerInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReferrerInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReferrerInfo) ProtoMessage() {}
func (x *ReferrerInfo) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ReferrerInfo.ProtoReflect.Descriptor instead.
func (*ReferrerInfo) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{10}
}
func (x *ReferrerInfo) GetDigest() string {
if x != nil {
return x.Digest
}
return ""
}
func (x *ReferrerInfo) GetCount() int64 {
if x != nil {
return x.Count
}
return 0
}
func (x *ReferrerInfo) GetMediaType() string {
if x != nil {
return x.MediaType
}
return ""
}
func (x *ReferrerInfo) GetArtifactType() string {
if x != nil {
return x.ArtifactType
}
return ""
}
func (x *ReferrerInfo) GetSize() int64 {
if x != nil {
return x.Size
}
return 0
}
func (x *ReferrerInfo) GetAnnotations() map[string]string {
if x != nil {
return x.Annotations
}
return nil
}
type ManifestSignatures struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Map map[string]*SignaturesInfo `protobuf:"bytes,1,rep,name=map,proto3" json:"map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *ManifestSignatures) Reset() {
*x = ManifestSignatures{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ManifestSignatures) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ManifestSignatures) ProtoMessage() {}
func (x *ManifestSignatures) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ManifestSignatures.ProtoReflect.Descriptor instead.
func (*ManifestSignatures) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{11}
}
func (x *ManifestSignatures) GetMap() map[string]*SignaturesInfo {
if x != nil {
return x.Map
}
return nil
}
type SignaturesInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
List []*SignatureInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
}
func (x *SignaturesInfo) Reset() {
*x = SignaturesInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignaturesInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignaturesInfo) ProtoMessage() {}
func (x *SignaturesInfo) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SignaturesInfo.ProtoReflect.Descriptor instead.
func (*SignaturesInfo) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{12}
}
func (x *SignaturesInfo) GetList() []*SignatureInfo {
if x != nil {
return x.List
}
return nil
}
type SignatureInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SignatureManifestDigest string `protobuf:"bytes,1,opt,name=SignatureManifestDigest,proto3" json:"SignatureManifestDigest,omitempty"`
LayersInfo []*LayersInfo `protobuf:"bytes,2,rep,name=LayersInfo,proto3" json:"LayersInfo,omitempty"`
}
func (x *SignatureInfo) Reset() {
*x = SignatureInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignatureInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignatureInfo) ProtoMessage() {}
func (x *SignatureInfo) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SignatureInfo.ProtoReflect.Descriptor instead.
func (*SignatureInfo) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{13}
}
func (x *SignatureInfo) GetSignatureManifestDigest() string {
if x != nil {
return x.SignatureManifestDigest
}
return ""
}
func (x *SignatureInfo) GetLayersInfo() []*LayersInfo {
if x != nil {
return x.LayersInfo
}
return nil
}
type LayersInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
LayerDigest string `protobuf:"bytes,1,opt,name=LayerDigest,proto3" json:"LayerDigest,omitempty"`
LayerContent []byte `protobuf:"bytes,2,opt,name=LayerContent,proto3" json:"LayerContent,omitempty"`
SignatureKey string `protobuf:"bytes,3,opt,name=SignatureKey,proto3" json:"SignatureKey,omitempty"`
Signer string `protobuf:"bytes,4,opt,name=Signer,proto3" json:"Signer,omitempty"`
Date *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=Date,proto3" json:"Date,omitempty"`
}
func (x *LayersInfo) Reset() {
*x = LayersInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_meta_meta_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LayersInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LayersInfo) ProtoMessage() {}
func (x *LayersInfo) ProtoReflect() protoreflect.Message {
mi := &file_meta_meta_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use LayersInfo.ProtoReflect.Descriptor instead.
func (*LayersInfo) Descriptor() ([]byte, []int) {
return file_meta_meta_proto_rawDescGZIP(), []int{14}
}
func (x *LayersInfo) GetLayerDigest() string {
if x != nil {
return x.LayerDigest
}
return ""
}
func (x *LayersInfo) GetLayerContent() []byte {
if x != nil {
return x.LayerContent
}
return nil
}
func (x *LayersInfo) GetSignatureKey() string {
if x != nil {
return x.SignatureKey
}
return ""
}
func (x *LayersInfo) GetSigner() string {
if x != nil {
return x.Signer
}
return ""
}
func (x *LayersInfo) GetDate() *timestamppb.Timestamp {
if x != nil {
return x.Date
}
return nil
}
var File_meta_meta_proto protoreflect.FileDescriptor
var file_meta_meta_proto_rawDesc = []byte{
0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x12, 0x07, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x1a, 0x10, 0x6f, 0x63, 0x69, 0x2f,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x6f, 0x63,
0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x0f, 0x6f, 0x63, 0x69, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x13, 0x6f, 0x63, 0x69, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x6f, 0x63, 0x69, 0x2f, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x01, 0x0a,
0x0d, 0x54, 0x61, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x1c,
0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x69,
0x67, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x54, 0x61, 0x67, 0x67, 0x65,
0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x97, 0x01, 0x0a, 0x09, 0x49,
0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69,
0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x65, 0x64,
0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x74, 0x61,
0x5f, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
0x52, 0x09, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x5f, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00,
0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x22, 0x8f, 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x2c, 0x0a, 0x08, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x63, 0x69, 0x5f, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e,
0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x08, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12,
0x25, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0d, 0x2e, 0x6f, 0x63, 0x69, 0x5f, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5c, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d,
0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53,
0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x12,
0x23, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d,
0x2e, 0x6f, 0x63, 0x69, 0x5f, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x61, 0x73,
0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a,
0x0b, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00,
0x52, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01,
0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16,
0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x4c, 0x61, 0x73,
0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0xc3, 0x07, 0x0a, 0x08, 0x52, 0x65, 0x70,
0x6f, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x54, 0x61, 0x67,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76,
0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x53, 0x74,
0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74,
0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x52, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x41, 0x0a,
0x0a, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f,
0x4d, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
0x12, 0x3e, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65,
0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x53, 0x74, 0x61, 0x72, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20,
0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x73, 0x53, 0x74, 0x61, 0x72, 0x72, 0x65, 0x64, 0x12, 0x22,
0x0a, 0x0c, 0x49, 0x73, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x18, 0x07,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x49, 0x73, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b,
0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x73, 0x18,
0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04,
0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x53, 0x69, 0x7a, 0x65,
0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
0x09, 0x52, 0x07, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x09, 0x50, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e,
0x6f, 0x63, 0x69, 0x5f, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52,
0x09, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x10, 0x4c, 0x61,
0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x52,
0x65, 0x70, 0x6f, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x10, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f,
0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44,
0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x4f, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31,
0x2e, 0x54, 0x61, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x0f, 0x53, 0x74, 0x61,
0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61,
0x74, 0x75, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x65,
0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x53, 0x69,
0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31,
0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x4c, 0x61,
0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xa1,
0x01, 0x0a, 0x09, 0x52, 0x65, 0x70, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x12, 0x0a, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x33, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1d, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x42, 0x6c,
0x6f, 0x62, 0x73, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
0x42, 0x6c, 0x6f, 0x62, 0x73, 0x1a, 0x4b, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x42,
0x6c, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x08, 0x42, 0x6c, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x12, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x53,
0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x73, 0x18, 0x02,
0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x73, 0x12, 0x1a, 0x0a,
0x08, 0x53, 0x75, 0x62, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
0x08, 0x53, 0x75, 0x62, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x2e, 0x0a, 0x09, 0x50, 0x6c, 0x61,
0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f,
0x63, 0x69, 0x5f, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09,
0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x4c, 0x61, 0x73,
0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x4c, 0x61,
0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c,
0x5f, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0xe4, 0x01, 0x0a,
0x14, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69,
0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x6f,
0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x4c,
0x61, 0x73, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x52, 0x11, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x40, 0x0a, 0x0d, 0x50, 0x75, 0x73, 0x68, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x50, 0x75, 0x73, 0x68, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x75, 0x73, 0x68, 0x65,
0x64, 0x42, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x75, 0x73, 0x68, 0x65,
0x64, 0x42, 0x79, 0x22, 0x3a, 0x0a, 0x0d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x73,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66,
0x65, 0x72, 0x72, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22,
0x9c, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x16, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c,
0x0a, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c,
0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0c, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65,
0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
0x53, 0x69, 0x7a, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x65, 0x74, 0x61,
0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x52, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e,
0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9d,
0x01, 0x0a, 0x12, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61,
0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e,
0x69, 0x66, 0x65, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e,
0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x4f, 0x0a,
0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x65, 0x74,
0x61, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c,
0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
0x2e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x0d,
0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a,
0x17, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
0x73, 0x74, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17,
0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
0x74, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x4c, 0x61, 0x79, 0x65, 0x72,
0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x65,
0x74, 0x61, 0x5f, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x0a, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xbe, 0x01, 0x0a,
0x0a, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x4c,
0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a,
0x0c, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x0c, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4b, 0x65,
0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
0x72, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x2e, 0x0a,
0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_meta_meta_proto_rawDescOnce sync.Once
file_meta_meta_proto_rawDescData = file_meta_meta_proto_rawDesc
)
func file_meta_meta_proto_rawDescGZIP() []byte {
file_meta_meta_proto_rawDescOnce.Do(func() {
file_meta_meta_proto_rawDescData = protoimpl.X.CompressGZIP(file_meta_meta_proto_rawDescData)
})
return file_meta_meta_proto_rawDescData
}
var file_meta_meta_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_meta_meta_proto_goTypes = []interface{}{
(*TagDescriptor)(nil), // 0: meta_v1.TagDescriptor
(*ImageMeta)(nil), // 1: meta_v1.ImageMeta
(*ManifestMeta)(nil), // 2: meta_v1.ManifestMeta
(*IndexMeta)(nil), // 3: meta_v1.IndexMeta
(*RepoLastUpdatedImage)(nil), // 4: meta_v1.RepoLastUpdatedImage
(*RepoMeta)(nil), // 5: meta_v1.RepoMeta
(*RepoBlobs)(nil), // 6: meta_v1.RepoBlobs
(*BlobInfo)(nil), // 7: meta_v1.BlobInfo
(*DescriptorStatistics)(nil), // 8: meta_v1.DescriptorStatistics
(*ReferrersInfo)(nil), // 9: meta_v1.ReferrersInfo
(*ReferrerInfo)(nil), // 10: meta_v1.ReferrerInfo
(*ManifestSignatures)(nil), // 11: meta_v1.ManifestSignatures
(*SignaturesInfo)(nil), // 12: meta_v1.SignaturesInfo
(*SignatureInfo)(nil), // 13: meta_v1.SignatureInfo
(*LayersInfo)(nil), // 14: meta_v1.LayersInfo
nil, // 15: meta_v1.RepoMeta.TagsEntry
nil, // 16: meta_v1.RepoMeta.StatisticsEntry
nil, // 17: meta_v1.RepoMeta.SignaturesEntry
nil, // 18: meta_v1.RepoMeta.ReferrersEntry
nil, // 19: meta_v1.RepoBlobs.BlobsEntry
nil, // 20: meta_v1.ReferrerInfo.AnnotationsEntry
nil, // 21: meta_v1.ManifestSignatures.MapEntry
(*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp
(*Manifest)(nil), // 23: oci_v1.Manifest
(*Image)(nil), // 24: oci_v1.Image
(*Index)(nil), // 25: oci_v1.Index
(*Platform)(nil), // 26: oci_v1.Platform
}
var file_meta_meta_proto_depIdxs = []int32{
22, // 0: meta_v1.TagDescriptor.TaggedTimestamp:type_name -> google.protobuf.Timestamp
2, // 1: meta_v1.ImageMeta.Manifests:type_name -> meta_v1.ManifestMeta
3, // 2: meta_v1.ImageMeta.Index:type_name -> meta_v1.IndexMeta
23, // 3: meta_v1.ManifestMeta.Manifest:type_name -> oci_v1.Manifest
24, // 4: meta_v1.ManifestMeta.Config:type_name -> oci_v1.Image
25, // 5: meta_v1.IndexMeta.Index:type_name -> oci_v1.Index
22, // 6: meta_v1.RepoLastUpdatedImage.LastUpdated:type_name -> google.protobuf.Timestamp
15, // 7: meta_v1.RepoMeta.Tags:type_name -> meta_v1.RepoMeta.TagsEntry
16, // 8: meta_v1.RepoMeta.Statistics:type_name -> meta_v1.RepoMeta.StatisticsEntry
17, // 9: meta_v1.RepoMeta.Signatures:type_name -> meta_v1.RepoMeta.SignaturesEntry
18, // 10: meta_v1.RepoMeta.Referrers:type_name -> meta_v1.RepoMeta.ReferrersEntry
26, // 11: meta_v1.RepoMeta.Platforms:type_name -> oci_v1.Platform
4, // 12: meta_v1.RepoMeta.LastUpdatedImage:type_name -> meta_v1.RepoLastUpdatedImage
19, // 13: meta_v1.RepoBlobs.Blobs:type_name -> meta_v1.RepoBlobs.BlobsEntry
26, // 14: meta_v1.BlobInfo.Platforms:type_name -> oci_v1.Platform
22, // 15: meta_v1.BlobInfo.LastUpdated:type_name -> google.protobuf.Timestamp
22, // 16: meta_v1.DescriptorStatistics.LastPullTimestamp:type_name -> google.protobuf.Timestamp
22, // 17: meta_v1.DescriptorStatistics.PushTimestamp:type_name -> google.protobuf.Timestamp
10, // 18: meta_v1.ReferrersInfo.list:type_name -> meta_v1.ReferrerInfo
20, // 19: meta_v1.ReferrerInfo.Annotations:type_name -> meta_v1.ReferrerInfo.AnnotationsEntry
21, // 20: meta_v1.ManifestSignatures.map:type_name -> meta_v1.ManifestSignatures.MapEntry
13, // 21: meta_v1.SignaturesInfo.list:type_name -> meta_v1.SignatureInfo
14, // 22: meta_v1.SignatureInfo.LayersInfo:type_name -> meta_v1.LayersInfo
22, // 23: meta_v1.LayersInfo.Date:type_name -> google.protobuf.Timestamp
0, // 24: meta_v1.RepoMeta.TagsEntry.value:type_name -> meta_v1.TagDescriptor
8, // 25: meta_v1.RepoMeta.StatisticsEntry.value:type_name -> meta_v1.DescriptorStatistics
11, // 26: meta_v1.RepoMeta.SignaturesEntry.value:type_name -> meta_v1.ManifestSignatures
9, // 27: meta_v1.RepoMeta.ReferrersEntry.value:type_name -> meta_v1.ReferrersInfo
7, // 28: meta_v1.RepoBlobs.BlobsEntry.value:type_name -> meta_v1.BlobInfo
12, // 29: meta_v1.ManifestSignatures.MapEntry.value:type_name -> meta_v1.SignaturesInfo
30, // [30:30] is the sub-list for method output_type
30, // [30:30] is the sub-list for method input_type
30, // [30:30] is the sub-list for extension type_name
30, // [30:30] is the sub-list for extension extendee
0, // [0:30] is the sub-list for field type_name
}
func init() { file_meta_meta_proto_init() }
func file_meta_meta_proto_init() {
if File_meta_meta_proto != nil {
return
}
file_oci_config_proto_init()
file_oci_manifest_proto_init()
file_oci_index_proto_init()
file_oci_descriptor_proto_init()
if !protoimpl.UnsafeEnabled {
file_meta_meta_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TagDescriptor); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ImageMeta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ManifestMeta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IndexMeta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RepoLastUpdatedImage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RepoMeta); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RepoBlobs); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BlobInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DescriptorStatistics); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReferrersInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReferrerInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ManifestSignatures); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignaturesInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignatureInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_meta_meta_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LayersInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_meta_meta_proto_msgTypes[1].OneofWrappers = []interface{}{}
file_meta_meta_proto_msgTypes[4].OneofWrappers = []interface{}{}
file_meta_meta_proto_msgTypes[5].OneofWrappers = []interface{}{}
file_meta_meta_proto_msgTypes[7].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_meta_meta_proto_rawDesc,
NumEnums: 0,
NumMessages: 22,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_meta_meta_proto_goTypes,
DependencyIndexes: file_meta_meta_proto_depIdxs,
MessageInfos: file_meta_meta_proto_msgTypes,
}.Build()
File_meta_meta_proto = out.File
file_meta_meta_proto_rawDesc = nil
file_meta_meta_proto_goTypes = nil
file_meta_meta_proto_depIdxs = nil
}