diff --git a/protocol/communities/community.go b/protocol/communities/community.go index a71a0efc285..fe00d12f5d4 100644 --- a/protocol/communities/community.go +++ b/protocol/communities/community.go @@ -59,9 +59,10 @@ type Community struct { config *Config mutex sync.Mutex timesource common.TimeSource + encryptor DescriptionEncryptor } -func New(config Config, timesource common.TimeSource) (*Community, error) { +func New(config Config, timesource common.TimeSource, encryptor DescriptionEncryptor) (*Community, error) { if config.MemberIdentity == nil { return nil, errors.New("no member identity") } @@ -70,6 +71,10 @@ func New(config Config, timesource common.TimeSource) (*Community, error) { return nil, errors.New("no timesource") } + if encryptor == nil { + return nil, errors.New("no encryptor") + } + if config.Logger == nil { logger, err := zap.NewDevelopment() if err != nil { @@ -78,9 +83,11 @@ func New(config Config, timesource common.TimeSource) (*Community, error) { config.Logger = logger } - community := &Community{config: &config, timesource: timesource} - community.initialize() - return community, nil + if config.CommunityDescription == nil { + config.CommunityDescription = &protobuf.CommunityDescription{} + } + + return &Community{config: &config, timesource: timesource, encryptor: encryptor}, nil } type CommunityAdminSettings struct { @@ -494,13 +501,6 @@ func (o *Community) GetMemberPubkeys() []*ecdsa.PublicKey { return nil } -func (o *Community) initialize() { - if o.config.CommunityDescription == nil { - o.config.CommunityDescription = &protobuf.CommunityDescription{} - - } -} - type CommunitySettings struct { CommunityID string `json:"communityId"` HistoryArchiveSupportEnabled bool `json:"historyArchiveSupportEnabled"` @@ -1370,11 +1370,20 @@ func (o *Community) Description() *protobuf.CommunityDescription { } func (o *Community) marshaledDescription() ([]byte, error) { + clone := proto.Clone(o.config.CommunityDescription).(*protobuf.CommunityDescription) + // This is only workaround to lower the size of the message that goes over the wire, // see https://github.com/status-im/status-desktop/issues/12188 - clone := o.CreateDeepCopy() - clone.DehydrateChannelsMembers() - return proto.Marshal(clone.config.CommunityDescription) + dehydrateChannelsMembers(o.IDString(), clone) + + if o.encryptor != nil && o.Encrypted() { + err := encryptDescription(o.encryptor, o, clone) + if err != nil { + return nil, err + } + } + + return proto.Marshal(clone) } func (o *Community) MarshaledDescription() ([]byte, error) { @@ -1412,28 +1421,28 @@ func (o *Community) ToProtocolMessageBytes() ([]byte, error) { return o.toProtocolMessageBytes() } -func (o *Community) DehydrateChannelsMembers() { - // To save space, we don't attach members for channels without permissions, - // otherwise the message will hit waku msg size limit. - for channelID, channel := range o.chats() { - if !o.ChannelHasTokenPermissions(o.ChatID(channelID)) { - channel.Members = map[string]*protobuf.CommunityMember{} // clean members +func channelHasTokenPermissions(communityID string, channelID string, permissions map[string]*protobuf.CommunityTokenPermission) bool { + for _, tokenPermission := range permissions { + if includes(tokenPermission.ChatIds, communityID+channelID) { + return true } } + return false } -func HydrateChannelsMembers(communityID string, description *protobuf.CommunityDescription) { - channelHasTokenPermissions := func(channelID string) bool { - for _, tokenPermission := range description.TokenPermissions { - if includes(tokenPermission.ChatIds, communityID+channelID) { - return true - } +func dehydrateChannelsMembers(communityID string, description *protobuf.CommunityDescription) { + // To save space, we don't attach members for channels without permissions, + // otherwise the message will hit waku msg size limit. + for channelID, channel := range description.Chats { + if !channelHasTokenPermissions(communityID, channelID, description.TokenPermissions) { + channel.Members = map[string]*protobuf.CommunityMember{} // clean members } - return false } +} +func hydrateChannelsMembers(communityID string, description *protobuf.CommunityDescription) { for channelID, channel := range description.Chats { - if !channelHasTokenPermissions(channelID) { + if !channelHasTokenPermissions(communityID, channelID, description.TokenPermissions) { channel.Members = make(map[string]*protobuf.CommunityMember) for pubKey, member := range description.Members { channel.Members[pubKey] = member diff --git a/protocol/communities/community_description_encryption.go b/protocol/communities/community_description_encryption.go new file mode 100644 index 00000000000..c52804ad25b --- /dev/null +++ b/protocol/communities/community_description_encryption.go @@ -0,0 +1,63 @@ +package communities + +import ( + "go.uber.org/zap" + + "github.com/status-im/status-go/protocol/protobuf" +) + +type DescriptionEncryptor interface { + encryptCommunityDescription(community *Community, d *protobuf.CommunityDescription) (string, []byte, error) + decryptCommunityDescription(keyIDSeqNo string, d []byte) (*protobuf.CommunityDescription, error) +} + +// Encrypts members and chats +func encryptDescription(encryptor DescriptionEncryptor, community *Community, description *protobuf.CommunityDescription) error { + descriptionToEncrypt := &protobuf.CommunityDescription{ + Members: description.Members, + Chats: description.Chats, + } + + keyIDSeqNo, encryptedDescription, err := encryptor.encryptCommunityDescription(community, descriptionToEncrypt) + if err != nil { + return err + } + + // Set private data and cleanup unencrypted members and chats + if description.PrivateData == nil { + description.PrivateData = make(map[string][]byte) + } + description.PrivateData[keyIDSeqNo] = encryptedDescription + description.Members = make(map[string]*protobuf.CommunityMember) + description.Chats = make(map[string]*protobuf.CommunityChat) + + return nil +} + +// Decrypts members and chats +func decryptDescription(encryptor DescriptionEncryptor, description *protobuf.CommunityDescription, logger *zap.Logger) error { + for keyIDSeqNo, encryptedDescription := range description.PrivateData { + decryptedDescription, err := encryptor.decryptCommunityDescription(keyIDSeqNo, encryptedDescription) + if err != nil { + // ignore error, try to decrypt next data + logger.Debug("failed to decrypt community private data", zap.String("keyIDSeqNo", keyIDSeqNo), zap.Error(err)) + continue + } + + for pk, member := range decryptedDescription.Members { + if description.Members == nil { + description.Members = make(map[string]*protobuf.CommunityMember) + } + description.Members[pk] = member + } + + for id, channel := range decryptedDescription.Chats { + if description.Chats == nil { + description.Chats = make(map[string]*protobuf.CommunityChat) + } + description.Chats[id] = channel + } + } + + return nil +} diff --git a/protocol/communities/community_description_encryption_test.go b/protocol/communities/community_description_encryption_test.go new file mode 100644 index 00000000000..dc73b1baa7c --- /dev/null +++ b/protocol/communities/community_description_encryption_test.go @@ -0,0 +1,106 @@ +package communities + +import ( + "errors" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/suite" + "go.uber.org/zap" + + "github.com/status-im/status-go/protocol/protobuf" +) + +func TestCommunityEncryptionDescriptionSuite(t *testing.T) { + suite.Run(t, new(CommunityEncryptionDescriptionSuite)) +} + +type CommunityEncryptionDescriptionSuite struct { + suite.Suite + + descriptionEncryptor *DescriptionEncryptorMock + logger *zap.Logger +} + +func (s *CommunityEncryptionDescriptionSuite) SetupTest() { + s.descriptionEncryptor = &DescriptionEncryptorMock{ + descriptions: map[string]*protobuf.CommunityDescription{}, + } + var err error + s.logger, err = zap.NewDevelopment() + s.Require().NoError(err) +} + +type DescriptionEncryptorMock struct { + descriptions map[string]*protobuf.CommunityDescription +} + +func (dem *DescriptionEncryptorMock) encryptCommunityDescription(community *Community, d *protobuf.CommunityDescription) (string, []byte, error) { + keyIDSeqNo := uuid.New().String() + dem.descriptions[keyIDSeqNo] = d + return keyIDSeqNo, []byte("encryptedDescription"), nil +} + +func (dem *DescriptionEncryptorMock) decryptCommunityDescription(keyIDSeqNo string, d []byte) (*protobuf.CommunityDescription, error) { + description := dem.descriptions[keyIDSeqNo] + if description == nil { + return nil, errors.New("no key to decrypt private data") + } + return description, nil +} + +func (dem *DescriptionEncryptorMock) forgetKeys() { + dem.descriptions = make(map[string]*protobuf.CommunityDescription) +} + +func (s *CommunityEncryptionDescriptionSuite) description() *protobuf.CommunityDescription { + return &protobuf.CommunityDescription{ + IntroMessage: "one of not encrypted fields", + Members: map[string]*protobuf.CommunityMember{ + "a": &protobuf.CommunityMember{}, + "b": &protobuf.CommunityMember{}, + }, + Chats: map[string]*protobuf.CommunityChat{ + "c": &protobuf.CommunityChat{}, + "d": &protobuf.CommunityChat{}, + }, + PrivateData: map[string][]byte{}, + } +} + +func (s *CommunityEncryptionDescriptionSuite) TestEncryptionDecryption() { + description := s.description() + + err := encryptDescription(s.descriptionEncryptor, &Community{}, description) + s.Require().NoError(err) + s.Require().Len(description.PrivateData, 1) + + // members and chats should become empty (encrypted) + s.Require().Empty(description.Members) + s.Require().Empty(description.Chats) + s.Require().Equal(description.IntroMessage, "one of not encrypted fields") + + // members and chats should be brought back + err = decryptDescription(s.descriptionEncryptor, description, s.logger) + s.Require().NoError(err) + s.Require().Len(description.Members, 2) + s.Require().Len(description.Chats, 2) + s.Require().Equal(description.IntroMessage, "one of not encrypted fields") +} + +func (s *CommunityEncryptionDescriptionSuite) TestDecryption_NoKeys() { + description := s.description() + + err := encryptDescription(s.descriptionEncryptor, &Community{}, description) + s.Require().NoError(err) + + // forget the keys, so description can't be decrypted + s.descriptionEncryptor.forgetKeys() + + // members and chats should NOT be brought back + err = decryptDescription(s.descriptionEncryptor, description, s.logger) + s.Require().NoError(err) + s.Require().Empty(description.Members) + s.Require().Empty(description.Chats) + s.Require().Equal(description.IntroMessage, "one of not encrypted fields") +} diff --git a/protocol/communities/community_encryption_key_action_test.go b/protocol/communities/community_encryption_key_action_test.go index 19514ea12be..be237e945fd 100644 --- a/protocol/communities/community_encryption_key_action_test.go +++ b/protocol/communities/community_encryption_key_action_test.go @@ -33,7 +33,7 @@ func createTestCommunity(identity *ecdsa.PrivateKey) (*Community, error) { MemberIdentity: &identity.PublicKey, } - return New(config, &TimeSourceStub{}) + return New(config, &TimeSourceStub{}, &DescriptionEncryptorMock{}) } func TestCommunityEncryptionKeyActionSuite(t *testing.T) { diff --git a/protocol/communities/community_test.go b/protocol/communities/community_test.go index dc575e70e4b..90591e2c191 100644 --- a/protocol/communities/community_test.go +++ b/protocol/communities/community_test.go @@ -440,7 +440,7 @@ func (s *CommunitySuite) TestValidateRequestToJoin() { for _, tc := range testCases { s.Run(tc.name, func() { - org, err := New(tc.config, &TimeSourceStub{}) + org, err := New(tc.config, &TimeSourceStub{}, &DescriptionEncryptorMock{}) s.Require().NoError(err) err = org.ValidateRequestToJoin(tc.signer, tc.request) s.Require().Equal(tc.err, err) @@ -512,7 +512,7 @@ func (s *CommunitySuite) TestCanPost() { s.Run(tc.name, func() { var grant []byte var err error - org, err := New(tc.config, &TimeSourceStub{}) + org, err := New(tc.config, &TimeSourceStub{}, &DescriptionEncryptorMock{}) s.Require().NoError(err) if tc.grant == validGrant { @@ -882,7 +882,7 @@ func (s *CommunitySuite) buildCommunity(owner *ecdsa.PublicKey) *Community { config.ID = owner config.CommunityDescription = s.buildCommunityDescription() - org, err := New(config, &TimeSourceStub{}) + org, err := New(config, &TimeSourceStub{}, &DescriptionEncryptorMock{}) s.Require().NoError(err) return org } diff --git a/protocol/communities/manager.go b/protocol/communities/manager.go index 66e2ec0a7f0..6a414823648 100644 --- a/protocol/communities/manager.go +++ b/protocol/communities/manager.go @@ -4,11 +4,13 @@ import ( "context" "crypto/ecdsa" "database/sql" + "encoding/hex" "fmt" "io/ioutil" "net" "os" "sort" + "strconv" "strings" "sync" "syscall" @@ -742,7 +744,7 @@ func (m *Manager) CreateCommunity(request *requests.CreateCommunity, publish boo CommunityDescription: description, Shard: nil, } - community, err := New(config, m.timesource) + community, err := New(config, m.timesource, m) if err != nil { return nil, err } @@ -783,6 +785,15 @@ func (m *Manager) CreateCommunityTokenPermission(request *requests.CreateCommuni return nil, nil, err } + if m.encryptor != nil && community.Encrypted() { + // ensure key is generated before marshaling, + // as it requires key to encrypt description + _, err = m.encryptor.GenerateHashRatchetKey(community.ID()) + if err != nil { + return nil, nil, err + } + } + err = m.saveAndPublish(community) if err != nil { return nil, nil, err @@ -1205,7 +1216,7 @@ func (m *Manager) ImportCommunity(key *ecdsa.PrivateKey, clock uint64) (*Communi MemberIdentity: &m.identity.PublicKey, CommunityDescription: description, } - community, err = New(config, m.timesource) + community, err = New(config, m.timesource, m) if err != nil { return nil, err } @@ -1535,13 +1546,15 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des id = crypto.CompressPubkey(signer) } - community, err := m.GetByID(id) + err = m.preprocessDescription(id, description) if err != nil { return nil, err } - // Workaround for https://github.com/status-im/status-desktop/issues/12188 - HydrateChannelsMembers(types.EncodeHex(id), description) + community, err := m.GetByID(id) + if err != nil { + return nil, err + } // We should queue only if the community has a token owner, and the owner has been verified hasTokenOwnership := HasTokenOwnership(description) @@ -1562,7 +1575,7 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des Shard: shard.FromProtobuff(communityShard), } - community, err = New(config, m.timesource) + community, err = New(config, m.timesource, m) if err != nil { return nil, err } @@ -1602,7 +1615,20 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des return m.handleCommunityDescriptionMessageCommon(community, description, payload, verifiedOwner) } +func (m *Manager) preprocessDescription(id types.HexBytes, description *protobuf.CommunityDescription) error { + err := decryptDescription(m, description, m.logger) + if err != nil { + return err + } + + // Workaround for https://github.com/status-im/status-desktop/issues/12188 + hydrateChannelsMembers(types.EncodeHex(id), description) + + return nil +} + func (m *Manager) handleCommunityDescriptionMessageCommon(community *Community, description *protobuf.CommunityDescription, payload []byte, newControlNode *ecdsa.PublicKey) (*CommunityResponse, error) { + changes, err := community.UpdateCommunityDescription(description, payload, newControlNode) if err != nil { return nil, err @@ -2814,6 +2840,11 @@ func (m *Manager) HandleCommunityRequestToJoinResponse(signer *ecdsa.PublicKey, return nil, ErrNotAuthorized } + err = m.preprocessDescription(community.ID(), request.Community) + if err != nil { + return nil, err + } + _, err = community.UpdateCommunityDescription(request.Community, appMetadataMsg, nil) if err != nil { return nil, err @@ -3181,8 +3212,13 @@ func (m *Manager) BanUserFromCommunity(request *requests.BanUserFromCommunity) ( } func (m *Manager) dbRecordBundleToCommunity(r *CommunityRecordBundle) (*Community, error) { - return recordBundleToCommunity(r, &m.identity.PublicKey, m.installationID, m.logger, m.timesource, func(community *Community) error { - err := community.updateCommunityDescriptionByEvents() + return recordBundleToCommunity(r, &m.identity.PublicKey, m.installationID, m.logger, m.timesource, m, func(community *Community) error { + err := m.preprocessDescription(community.ID(), community.config.CommunityDescription) + if err != nil { + return err + } + + err = community.updateCommunityDescriptionByEvents() if err != nil { return err } @@ -3196,9 +3232,6 @@ func (m *Manager) dbRecordBundleToCommunity(r *CommunityRecordBundle) (*Communit community.config.PubsubTopicPrivateKey = privKey } - // Workaround for https://github.com/status-im/status-desktop/issues/12188 - HydrateChannelsMembers(community.IDString(), community.config.CommunityDescription) - return nil }) } @@ -5103,6 +5136,57 @@ func (m *Manager) SetCuratedCommunities(communities *CuratedCommunities) error { return m.persistence.SetCuratedCommunities(communities) } +func (m *Manager) encryptCommunityDescription(community *Community, d *protobuf.CommunityDescription) (string, []byte, error) { + payload, err := proto.Marshal(d) + if err != nil { + return "", nil, err + } + + encryptedPayload, ratchet, newSeqNo, err := m.encryptor.EncryptWithHashRatchet(community.ID(), payload) + if err != nil { + return "", nil, err + } + + keyID, err := ratchet.GetKeyID() + if err != nil { + return "", nil, err + } + + keyIDSeqNo := fmt.Sprintf("%s%d", hex.EncodeToString(keyID), newSeqNo) + + return keyIDSeqNo, encryptedPayload, nil +} + +func (m *Manager) decryptCommunityDescription(keyIDSeqNo string, d []byte) (*protobuf.CommunityDescription, error) { + const hashHexLength = 64 + if len(keyIDSeqNo) <= hashHexLength { + return nil, errors.New("invalid keyIDSeqNo") + } + + keyID, err := hex.DecodeString(keyIDSeqNo[:hashHexLength]) + if err != nil { + return nil, err + } + + seqNo, err := strconv.ParseUint(keyIDSeqNo[hashHexLength:], 10, 32) + if err != nil { + return nil, err + } + + decryptedPayload, err := m.encryptor.DecryptWithHashRatchet(keyID, uint32(seqNo), d) + if err != nil { + return nil, err + } + + var description protobuf.CommunityDescription + err = proto.Unmarshal(decryptedPayload, &description) + if err != nil { + return nil, err + } + + return &description, nil +} + func ToLinkPreveiwThumbnail(image images.IdentityImage) (*common.LinkPreviewThumbnail, error) { thumbnail := &common.LinkPreviewThumbnail{} diff --git a/protocol/communities/persistence.go b/protocol/communities/persistence.go index 89493d6f5e4..2646d6f9c11 100644 --- a/protocol/communities/persistence.go +++ b/protocol/communities/persistence.go @@ -257,32 +257,7 @@ func (p *Persistence) queryCommunities(memberIdentity *ecdsa.PublicKey, query st return nil, err } - defer func() { - if err != nil { - // Don't shadow original error - _ = rows.Close() - return - - } - err = rows.Close() - }() - - for rows.Next() { - r, err := scanCommunity(rows.Scan) - if err != nil { - return nil, err - } - - org, err := p.recordBundleToCommunity(r) - if err != nil { - return nil, err - } - - response = append(response, org) - } - - return response, nil - + return p.rowsToCommunities(rows) } func (p *Persistence) AllCommunities(memberIdentity *ecdsa.PublicKey) ([]*Community, error) { @@ -299,7 +274,7 @@ func (p *Persistence) SpectatedCommunities(memberIdentity *ecdsa.PublicKey) ([]* return p.queryCommunities(memberIdentity, query) } -func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *sql.Rows) (comms []*Community, err error) { +func (p *Persistence) rowsToCommunityRecords(rows *sql.Rows) (result []*CommunityRecordBundle, err error) { defer func() { if err != nil { // Don't shadow original error @@ -315,8 +290,20 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s if err != nil { return nil, err } + result = append(result, r) + } + + return result, nil +} + +func (p *Persistence) rowsToCommunities(rows *sql.Rows) (comms []*Community, err error) { + records, err := p.rowsToCommunityRecords(rows) + if err != nil { + return nil, err + } - org, err := p.recordBundleToCommunity(r) + for _, record := range records { + org, err := p.recordBundleToCommunity(record) if err != nil { return nil, err } @@ -335,7 +322,7 @@ func (p *Persistence) JoinedAndPendingCommunitiesWithRequests(memberIdentity *ec return nil, err } - return p.rowsToCommunities(memberIdentity, rows) + return p.rowsToCommunities(rows) } func (p *Persistence) DeletedCommunities(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) { @@ -346,7 +333,7 @@ func (p *Persistence) DeletedCommunities(memberIdentity *ecdsa.PublicKey) (comms return nil, err } - return p.rowsToCommunities(memberIdentity, rows) + return p.rowsToCommunities(rows) } func (p *Persistence) CommunitiesWithPrivateKey(memberIdentity *ecdsa.PublicKey) ([]*Community, error) { diff --git a/protocol/communities/persistence_mapping.go b/protocol/communities/persistence_mapping.go index 7c8b43fc4e9..dc499461b9c 100644 --- a/protocol/communities/persistence_mapping.go +++ b/protocol/communities/persistence_mapping.go @@ -70,7 +70,7 @@ func recordToRequestToJoin(r *RequestToJoinRecord) *RequestToJoin { } func recordBundleToCommunity(r *CommunityRecordBundle, memberIdentity *ecdsa.PublicKey, installationID string, - logger *zap.Logger, timesource common.TimeSource, initializer func(*Community) error) (*Community, error) { + logger *zap.Logger, timesource common.TimeSource, encryptor DescriptionEncryptor, initializer func(*Community) error) (*Community, error) { var privateKey *ecdsa.PrivateKey var controlNode *ecdsa.PublicKey var err error @@ -135,7 +135,7 @@ func recordBundleToCommunity(r *CommunityRecordBundle, memberIdentity *ecdsa.Pub Shard: s, } - community, err := New(config, timesource) + community, err := New(config, timesource, encryptor) if err != nil { return nil, err } diff --git a/protocol/communities/persistence_test.go b/protocol/communities/persistence_test.go index 7ee2b74f4ef..25343dd6ff4 100644 --- a/protocol/communities/persistence_test.go +++ b/protocol/communities/persistence_test.go @@ -45,7 +45,7 @@ func (s *PersistenceSuite) SetupTest() { s.Require().NoError(err) s.db = &Persistence{db: db, recordBundleToCommunity: func(r *CommunityRecordBundle) (*Community, error) { - return recordBundleToCommunity(r, &s.identity.PublicKey, "", nil, &TimeSourceStub{}, nil) + return recordBundleToCommunity(r, &s.identity.PublicKey, "", nil, &TimeSourceStub{}, &DescriptionEncryptorMock{}, nil) }} } @@ -262,7 +262,7 @@ func (s *PersistenceSuite) makeNewCommunity(identity *ecdsa.PrivateKey) *Communi ControlNode: &comPrivKey.PublicKey, ControlDevice: true, ID: &comPrivKey.PublicKey, - }, &TimeSourceStub{}) + }, &TimeSourceStub{}, &DescriptionEncryptorMock{}) s.NoError(err, "New shouldn't give any error") md, err := com.MarshaledDescription() diff --git a/protocol/communities_messenger_token_permissions_test.go b/protocol/communities_messenger_token_permissions_test.go index 6413ad65fcb..8d7e7274a5d 100644 --- a/protocol/communities_messenger_token_permissions_test.go +++ b/protocol/communities_messenger_token_permissions_test.go @@ -659,12 +659,14 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) TestBecomeMemberPermissions( s.Require().Len(community.Members(), 1) // bob receives community changes + // chats and members should be empty, + // this info is available only to members _, err = WaitOnMessengerResponse( s.bob, func(r *MessengerResponse) bool { - return len(r.Communities()) > 0 + return len(r.Communities()) > 0 && len(r.Communities()[0].Members()) == 0 && len(r.Communities()[0].Chats()) == 0 }, - "no community", + "no community that satisfies criteria", ) s.Require().NoError(err) diff --git a/protocol/encryption/encryptor.go b/protocol/encryption/encryptor.go index 5496fc8c2c9..9a283b01403 100644 --- a/protocol/encryption/encryptor.go +++ b/protocol/encryption/encryptor.go @@ -348,7 +348,7 @@ func (s *encryptor) DecryptPayload(myIdentityKey *ecdsa.PrivateKey, theirIdentit ratchet.Timestamp = uint64(header.DeprecatedKeyId) } - decryptedPayload, err := s.decryptWithHR(ratchet, header.SeqNo, payload) + decryptedPayload, err := s.DecryptWithHR(ratchet, header.SeqNo, payload) return decryptedPayload, err } @@ -650,7 +650,26 @@ func (s *encryptor) EncryptHashRatchetPayload(ratchet *HashRatchetKeyCompatibili defer s.mutex.Unlock() logger.Debug("encrypting hash ratchet message") - dmp, err := s.encryptWithHR(ratchet, payload) + encryptedPayload, newSeqNo, err := s.EncryptWithHR(ratchet, payload) + if err != nil { + return nil, err + } + + keyID, err := ratchet.GetKeyID() + if err != nil { + return nil, err + } + + dmp := &EncryptedMessageProtocol{ + HRHeader: &HRHeader{ + DeprecatedKeyId: ratchet.DeprecatedKeyID(), + GroupId: ratchet.GroupID, + KeyId: keyID, + SeqNo: newSeqNo, + }, + Payload: encryptedPayload, + } + response := make(map[string]*EncryptedMessageProtocol) response[noInstallationID] = dmp return response, err @@ -660,14 +679,14 @@ func samePublicKeys(pubKey1, pubKey2 ecdsa.PublicKey) bool { return pubKey1.X.Cmp(pubKey2.X) == 0 && pubKey1.Y.Cmp(pubKey2.Y) == 0 } -func (s *encryptor) encryptWithHR(ratchet *HashRatchetKeyCompatibility, payload []byte) (*EncryptedMessageProtocol, error) { - hrCache, err := s.persistence.GetHashRatchetKeyByID(ratchet, 0) // Get latest seqNo +func (s *encryptor) EncryptWithHR(ratchet *HashRatchetKeyCompatibility, payload []byte) ([]byte, uint32, error) { + hrCache, err := s.persistence.GetHashRatchetCache(ratchet, 0) // Get latest seqNo if err != nil { - return nil, err + return nil, 0, err } if hrCache == nil { - return nil, errors.New("no encryption key found for the community") + return nil, 0, errors.New("no encryption key found for the community") } var dbHash []byte @@ -680,37 +699,24 @@ func (s *encryptor) encryptWithHR(ratchet *HashRatchetKeyCompatibility, payload hash := crypto.Keccak256Hash(dbHash) encryptedPayload, err := crypto.EncryptSymmetric(hash.Bytes(), payload) if err != nil { - return nil, err + return nil, 0, err } newSeqNo := hrCache.SeqNo + 1 err = s.persistence.SaveHashRatchetKeyHash(ratchet, hash.Bytes(), newSeqNo) if err != nil { - return nil, err - } - keyID, err := ratchet.GetKeyID() - if err != nil { - return nil, err + return nil, 0, err } - dmp := &EncryptedMessageProtocol{ - HRHeader: &HRHeader{ - DeprecatedKeyId: ratchet.DeprecatedKeyID(), - GroupId: ratchet.GroupID, - KeyId: keyID, - SeqNo: newSeqNo, - }, - Payload: encryptedPayload, - } - return dmp, nil + return encryptedPayload, newSeqNo, nil } -func (s *encryptor) decryptWithHR(ratchet *HashRatchetKeyCompatibility, seqNo uint32, payload []byte) ([]byte, error) { +func (s *encryptor) DecryptWithHR(ratchet *HashRatchetKeyCompatibility, seqNo uint32, payload []byte) ([]byte, error) { // Key exchange message, nothing to decrypt if seqNo == 0 { return payload, nil } - hrCache, err := s.persistence.GetHashRatchetKeyByID(ratchet, seqNo) + hrCache, err := s.persistence.GetHashRatchetCache(ratchet, seqNo) if err != nil { return nil, err } diff --git a/protocol/encryption/persistence.go b/protocol/encryption/persistence.go index 88ea47a30c5..2d7b48db715 100644 --- a/protocol/encryption/persistence.go +++ b/protocol/encryption/persistence.go @@ -738,10 +738,10 @@ type HRCache struct { SeqNo uint32 } -// GetHashRatchetKeyByID retrieves a hash ratchet key by group ID and seqNo. +// GetHashRatchetCache retrieves a hash ratchet key by group ID and seqNo. // If cache data with given seqNo (e.g. 0) is not found, // then the query will return the cache data with the latest seqNo -func (s *sqlitePersistence) GetHashRatchetKeyByID(ratchet *HashRatchetKeyCompatibility, seqNo uint32) (*HRCache, error) { +func (s *sqlitePersistence) GetHashRatchetCache(ratchet *HashRatchetKeyCompatibility, seqNo uint32) (*HRCache, error) { stmt, err := s.DB.Prepare(`WITH input AS ( select ? AS group_id, ? AS key_id, ? as seq_no, ? AS old_key_id ), @@ -983,3 +983,23 @@ func (s *sqlitePersistence) SaveHashRatchetKey(ratchet *HashRatchetKeyCompatibil return err } + +func (s *sqlitePersistence) GetHashRatchetKeyByID(keyID []byte) (*HashRatchetKeyCompatibility, error) { + ratchet := &HashRatchetKeyCompatibility{ + keyID: keyID, + } + + err := s.DB.QueryRow(` + SELECT group_id, key_timestamp, key + FROM hash_ratchet_encryption + WHERE key_id = ?`, keyID).Scan(&ratchet.GroupID, &ratchet.Timestamp, &ratchet.Key) + + if err != nil { + if err == sql.ErrNoRows { + return nil, nil + } + return nil, err + } + + return ratchet, nil +} diff --git a/protocol/encryption/persistence_test.go b/protocol/encryption/persistence_test.go index 16dc0deb090..5edda83911e 100644 --- a/protocol/encryption/persistence_test.go +++ b/protocol/encryption/persistence_test.go @@ -1,6 +1,7 @@ package encryption import ( + "reflect" "testing" "github.com/stretchr/testify/suite" @@ -336,3 +337,27 @@ func (s *SQLLitePersistenceTestSuite) TestRatchetInfoNoBundle() { } // TODO: Add test for MarkBundleExpired + +func (s *SQLLitePersistenceTestSuite) TestGetHashRatchetKeyByID() { + key := &HashRatchetKeyCompatibility{ + GroupID: []byte{1, 2, 3}, + keyID: []byte{4, 5, 6}, + Timestamp: 1, + Key: []byte{7, 8, 9}, + } + err := s.service.SaveHashRatchetKey(key) + s.Require().NoError(err) + + retrievedKey, err := s.service.GetHashRatchetKeyByID(key.keyID) + s.Require().NoError(err) + s.Require().True(reflect.DeepEqual(key.GroupID, retrievedKey.GroupID)) + s.Require().True(reflect.DeepEqual(key.keyID, retrievedKey.keyID)) + s.Require().True(reflect.DeepEqual(key.Key, retrievedKey.Key)) + s.Require().Equal(key.Timestamp, retrievedKey.Timestamp) + + cachedKey, err := s.service.GetHashRatchetCache(retrievedKey, 0) + s.Require().NoError(err) + s.Require().True(reflect.DeepEqual(key.keyID, cachedKey.KeyID)) + s.Require().True(reflect.DeepEqual(key.Key, cachedKey.Key)) + s.Require().EqualValues(0, cachedKey.SeqNo) +} diff --git a/protocol/encryption/protocol.go b/protocol/encryption/protocol.go index 6a5c72fe204..99da38eb176 100644 --- a/protocol/encryption/protocol.go +++ b/protocol/encryption/protocol.go @@ -751,3 +751,29 @@ func getProtocolVersion(bundles []*Bundle, installationID string) uint32 { return defaultMinVersion } + +func (p *Protocol) EncryptWithHashRatchet(groupID []byte, payload []byte) ([]byte, *HashRatchetKeyCompatibility, uint32, error) { + ratchet, err := p.encryptor.persistence.GetCurrentKeyForGroup(groupID) + if err != nil { + return nil, nil, 0, err + } + + encryptedPayload, newSeqNo, err := p.encryptor.EncryptWithHR(ratchet, payload) + if err != nil { + return nil, nil, 0, err + } + + return encryptedPayload, ratchet, newSeqNo, nil +} + +func (p *Protocol) DecryptWithHashRatchet(keyID []byte, seqNo uint32, payload []byte) ([]byte, error) { + ratchet, err := p.encryptor.persistence.GetHashRatchetKeyByID(keyID) + if err != nil { + return nil, err + } + if ratchet == nil { + return nil, errors.New("no ratchet key for given keyID") + } + + return p.encryptor.DecryptWithHR(ratchet, seqNo, payload) +} diff --git a/protocol/protobuf/communities.pb.go b/protocol/protobuf/communities.pb.go index 61ef2cf6c6a..44e051cb0d0 100644 --- a/protocol/protobuf/communities.pb.go +++ b/protocol/protobuf/communities.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.4 // source: communities.proto package protobuf import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" ) -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) -) +// 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 type CommunityMember_Roles int32 @@ -29,100 +29,57 @@ const ( CommunityMember_ROLE_TOKEN_MASTER CommunityMember_Roles = 5 ) -// Enum value maps for CommunityMember_Roles. -var ( - CommunityMember_Roles_name = map[int32]string{ - 0: "ROLE_NONE", - 1: "ROLE_OWNER", - 4: "ROLE_ADMIN", - 5: "ROLE_TOKEN_MASTER", - } - CommunityMember_Roles_value = map[string]int32{ - "ROLE_NONE": 0, - "ROLE_OWNER": 1, - "ROLE_ADMIN": 4, - "ROLE_TOKEN_MASTER": 5, - } -) - -func (x CommunityMember_Roles) Enum() *CommunityMember_Roles { - p := new(CommunityMember_Roles) - *p = x - return p -} - -func (x CommunityMember_Roles) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CommunityMember_Roles) Descriptor() protoreflect.EnumDescriptor { - return file_communities_proto_enumTypes[0].Descriptor() +var CommunityMember_Roles_name = map[int32]string{ + 0: "ROLE_NONE", + 1: "ROLE_OWNER", + 4: "ROLE_ADMIN", + 5: "ROLE_TOKEN_MASTER", } -func (CommunityMember_Roles) Type() protoreflect.EnumType { - return &file_communities_proto_enumTypes[0] +var CommunityMember_Roles_value = map[string]int32{ + "ROLE_NONE": 0, + "ROLE_OWNER": 1, + "ROLE_ADMIN": 4, + "ROLE_TOKEN_MASTER": 5, } -func (x CommunityMember_Roles) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x CommunityMember_Roles) String() string { + return proto.EnumName(CommunityMember_Roles_name, int32(x)) } -// Deprecated: Use CommunityMember_Roles.Descriptor instead. func (CommunityMember_Roles) EnumDescriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{1, 0} + return fileDescriptor_f937943d74c1cd8b, []int{1, 0} } type CommunityPermissions_Access int32 const ( - CommunityPermissions_UNKNOWN_ACCESS CommunityPermissions_Access = 0 - CommunityPermissions_AUTO_ACCEPT CommunityPermissions_Access = 1 - // Deprecated: Marked as deprecated in communities.proto. - CommunityPermissions_INVITATION_ONLY CommunityPermissions_Access = 2 + CommunityPermissions_UNKNOWN_ACCESS CommunityPermissions_Access = 0 + CommunityPermissions_AUTO_ACCEPT CommunityPermissions_Access = 1 + CommunityPermissions_INVITATION_ONLY CommunityPermissions_Access = 2 // Deprecated: Do not use. CommunityPermissions_MANUAL_ACCEPT CommunityPermissions_Access = 3 ) -// Enum value maps for CommunityPermissions_Access. -var ( - CommunityPermissions_Access_name = map[int32]string{ - 0: "UNKNOWN_ACCESS", - 1: "AUTO_ACCEPT", - 2: "INVITATION_ONLY", - 3: "MANUAL_ACCEPT", - } - CommunityPermissions_Access_value = map[string]int32{ - "UNKNOWN_ACCESS": 0, - "AUTO_ACCEPT": 1, - "INVITATION_ONLY": 2, - "MANUAL_ACCEPT": 3, - } -) - -func (x CommunityPermissions_Access) Enum() *CommunityPermissions_Access { - p := new(CommunityPermissions_Access) - *p = x - return p +var CommunityPermissions_Access_name = map[int32]string{ + 0: "UNKNOWN_ACCESS", + 1: "AUTO_ACCEPT", + 2: "INVITATION_ONLY", + 3: "MANUAL_ACCEPT", } -func (x CommunityPermissions_Access) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +var CommunityPermissions_Access_value = map[string]int32{ + "UNKNOWN_ACCESS": 0, + "AUTO_ACCEPT": 1, + "INVITATION_ONLY": 2, + "MANUAL_ACCEPT": 3, } -func (CommunityPermissions_Access) Descriptor() protoreflect.EnumDescriptor { - return file_communities_proto_enumTypes[1].Descriptor() -} - -func (CommunityPermissions_Access) Type() protoreflect.EnumType { - return &file_communities_proto_enumTypes[1] -} - -func (x CommunityPermissions_Access) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x CommunityPermissions_Access) String() string { + return proto.EnumName(CommunityPermissions_Access_name, int32(x)) } -// Deprecated: Use CommunityPermissions_Access.Descriptor instead. func (CommunityPermissions_Access) EnumDescriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{3, 0} + return fileDescriptor_f937943d74c1cd8b, []int{3, 0} } type CommunityTokenPermission_Type int32 @@ -137,1203 +94,1073 @@ const ( CommunityTokenPermission_BECOME_TOKEN_OWNER CommunityTokenPermission_Type = 6 ) -// Enum value maps for CommunityTokenPermission_Type. -var ( - CommunityTokenPermission_Type_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_PERMISSION", - 1: "BECOME_ADMIN", - 2: "BECOME_MEMBER", - 3: "CAN_VIEW_CHANNEL", - 4: "CAN_VIEW_AND_POST_CHANNEL", - 5: "BECOME_TOKEN_MASTER", - 6: "BECOME_TOKEN_OWNER", - } - CommunityTokenPermission_Type_value = map[string]int32{ - "UNKNOWN_TOKEN_PERMISSION": 0, - "BECOME_ADMIN": 1, - "BECOME_MEMBER": 2, - "CAN_VIEW_CHANNEL": 3, - "CAN_VIEW_AND_POST_CHANNEL": 4, - "BECOME_TOKEN_MASTER": 5, - "BECOME_TOKEN_OWNER": 6, - } -) - -func (x CommunityTokenPermission_Type) Enum() *CommunityTokenPermission_Type { - p := new(CommunityTokenPermission_Type) - *p = x - return p +var CommunityTokenPermission_Type_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_PERMISSION", + 1: "BECOME_ADMIN", + 2: "BECOME_MEMBER", + 3: "CAN_VIEW_CHANNEL", + 4: "CAN_VIEW_AND_POST_CHANNEL", + 5: "BECOME_TOKEN_MASTER", + 6: "BECOME_TOKEN_OWNER", } -func (x CommunityTokenPermission_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +var CommunityTokenPermission_Type_value = map[string]int32{ + "UNKNOWN_TOKEN_PERMISSION": 0, + "BECOME_ADMIN": 1, + "BECOME_MEMBER": 2, + "CAN_VIEW_CHANNEL": 3, + "CAN_VIEW_AND_POST_CHANNEL": 4, + "BECOME_TOKEN_MASTER": 5, + "BECOME_TOKEN_OWNER": 6, } -func (CommunityTokenPermission_Type) Descriptor() protoreflect.EnumDescriptor { - return file_communities_proto_enumTypes[2].Descriptor() -} - -func (CommunityTokenPermission_Type) Type() protoreflect.EnumType { - return &file_communities_proto_enumTypes[2] -} - -func (x CommunityTokenPermission_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x CommunityTokenPermission_Type) String() string { + return proto.EnumName(CommunityTokenPermission_Type_name, int32(x)) } -// Deprecated: Use CommunityTokenPermission_Type.Descriptor instead. func (CommunityTokenPermission_Type) EnumDescriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{5, 0} + return fileDescriptor_f937943d74c1cd8b, []int{5, 0} } type Grant struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Grant) Reset() { *m = Grant{} } +func (m *Grant) String() string { return proto.CompactTextString(m) } +func (*Grant) ProtoMessage() {} +func (*Grant) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{0} } -func (x *Grant) Reset() { - *x = Grant{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Grant) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Grant.Unmarshal(m, b) } - -func (x *Grant) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Grant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Grant.Marshal(b, m, deterministic) } - -func (*Grant) ProtoMessage() {} - -func (x *Grant) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *Grant) XXX_Merge(src proto.Message) { + xxx_messageInfo_Grant.Merge(m, src) } - -// Deprecated: Use Grant.ProtoReflect.Descriptor instead. -func (*Grant) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{0} +func (m *Grant) XXX_Size() int { + return xxx_messageInfo_Grant.Size(m) +} +func (m *Grant) XXX_DiscardUnknown() { + xxx_messageInfo_Grant.DiscardUnknown(m) } -func (x *Grant) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +var xxx_messageInfo_Grant proto.InternalMessageInfo + +func (m *Grant) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } -func (x *Grant) GetMemberId() []byte { - if x != nil { - return x.MemberId +func (m *Grant) GetMemberId() []byte { + if m != nil { + return m.MemberId } return nil } -func (x *Grant) GetChatId() string { - if x != nil { - return x.ChatId +func (m *Grant) GetChatId() string { + if m != nil { + return m.ChatId } return "" } -func (x *Grant) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *Grant) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } type CommunityMember struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` - // Deprecated: Marked as deprecated in communities.proto. - RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"` + Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` // Deprecated: Do not use. + LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityMember) Reset() { - *x = CommunityMember{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityMember) Reset() { *m = CommunityMember{} } +func (m *CommunityMember) String() string { return proto.CompactTextString(m) } +func (*CommunityMember) ProtoMessage() {} +func (*CommunityMember) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{1} } -func (x *CommunityMember) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityMember) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityMember.Unmarshal(m, b) } - -func (*CommunityMember) ProtoMessage() {} - -func (x *CommunityMember) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityMember.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityMember.ProtoReflect.Descriptor instead. -func (*CommunityMember) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{1} +func (m *CommunityMember) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityMember.Merge(m, src) +} +func (m *CommunityMember) XXX_Size() int { + return xxx_messageInfo_CommunityMember.Size(m) +} +func (m *CommunityMember) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityMember.DiscardUnknown(m) } -func (x *CommunityMember) GetRoles() []CommunityMember_Roles { - if x != nil { - return x.Roles +var xxx_messageInfo_CommunityMember proto.InternalMessageInfo + +func (m *CommunityMember) GetRoles() []CommunityMember_Roles { + if m != nil { + return m.Roles } return nil } -// Deprecated: Marked as deprecated in communities.proto. -func (x *CommunityMember) GetRevealedAccounts() []*RevealedAccount { - if x != nil { - return x.RevealedAccounts +// Deprecated: Do not use. +func (m *CommunityMember) GetRevealedAccounts() []*RevealedAccount { + if m != nil { + return m.RevealedAccounts } return nil } -func (x *CommunityMember) GetLastUpdateClock() uint64 { - if x != nil { - return x.LastUpdateClock +func (m *CommunityMember) GetLastUpdateClock() uint64 { + if m != nil { + return m.LastUpdateClock } return 0 } type CommunityTokenMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` - TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"` - Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` + ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` + TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"` + Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityTokenMetadata) Reset() { *m = CommunityTokenMetadata{} } +func (m *CommunityTokenMetadata) String() string { return proto.CompactTextString(m) } +func (*CommunityTokenMetadata) ProtoMessage() {} +func (*CommunityTokenMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{2} } -func (x *CommunityTokenMetadata) Reset() { - *x = CommunityTokenMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityTokenMetadata) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityTokenMetadata.Unmarshal(m, b) } - -func (x *CommunityTokenMetadata) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityTokenMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityTokenMetadata.Marshal(b, m, deterministic) } - -func (*CommunityTokenMetadata) ProtoMessage() {} - -func (x *CommunityTokenMetadata) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityTokenMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityTokenMetadata.Merge(m, src) } - -// Deprecated: Use CommunityTokenMetadata.ProtoReflect.Descriptor instead. -func (*CommunityTokenMetadata) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{2} +func (m *CommunityTokenMetadata) XXX_Size() int { + return xxx_messageInfo_CommunityTokenMetadata.Size(m) +} +func (m *CommunityTokenMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityTokenMetadata.DiscardUnknown(m) } -func (x *CommunityTokenMetadata) GetContractAddresses() map[uint64]string { - if x != nil { - return x.ContractAddresses +var xxx_messageInfo_CommunityTokenMetadata proto.InternalMessageInfo + +func (m *CommunityTokenMetadata) GetContractAddresses() map[uint64]string { + if m != nil { + return m.ContractAddresses } return nil } -func (x *CommunityTokenMetadata) GetDescription() string { - if x != nil { - return x.Description +func (m *CommunityTokenMetadata) GetDescription() string { + if m != nil { + return m.Description } return "" } -func (x *CommunityTokenMetadata) GetImage() string { - if x != nil { - return x.Image +func (m *CommunityTokenMetadata) GetImage() string { + if m != nil { + return m.Image } return "" } -func (x *CommunityTokenMetadata) GetTokenType() CommunityTokenType { - if x != nil { - return x.TokenType +func (m *CommunityTokenMetadata) GetTokenType() CommunityTokenType { + if m != nil { + return m.TokenType } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (x *CommunityTokenMetadata) GetSymbol() string { - if x != nil { - return x.Symbol +func (m *CommunityTokenMetadata) GetSymbol() string { + if m != nil { + return m.Symbol } return "" } -func (x *CommunityTokenMetadata) GetName() string { - if x != nil { - return x.Name +func (m *CommunityTokenMetadata) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *CommunityTokenMetadata) GetDecimals() uint32 { - if x != nil { - return x.Decimals +func (m *CommunityTokenMetadata) GetDecimals() uint32 { + if m != nil { + return m.Decimals } return 0 } type CommunityPermissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - EnsOnly bool `protobuf:"varint,1,opt,name=ens_only,json=ensOnly,proto3" json:"ens_only,omitempty"` // https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md is a candidate for the algorithm to be used in case we want to have private communityal chats, lighter than pairwise encryption using the DR, less secure, but more efficient for large number of participants - Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` - Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"` + Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` + Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityPermissions) Reset() { - *x = CommunityPermissions{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityPermissions) Reset() { *m = CommunityPermissions{} } +func (m *CommunityPermissions) String() string { return proto.CompactTextString(m) } +func (*CommunityPermissions) ProtoMessage() {} +func (*CommunityPermissions) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{3} } -func (x *CommunityPermissions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityPermissions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityPermissions.Unmarshal(m, b) } - -func (*CommunityPermissions) ProtoMessage() {} - -func (x *CommunityPermissions) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityPermissions.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityPermissions.ProtoReflect.Descriptor instead. -func (*CommunityPermissions) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{3} +func (m *CommunityPermissions) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityPermissions.Merge(m, src) +} +func (m *CommunityPermissions) XXX_Size() int { + return xxx_messageInfo_CommunityPermissions.Size(m) +} +func (m *CommunityPermissions) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityPermissions.DiscardUnknown(m) } -func (x *CommunityPermissions) GetEnsOnly() bool { - if x != nil { - return x.EnsOnly +var xxx_messageInfo_CommunityPermissions proto.InternalMessageInfo + +func (m *CommunityPermissions) GetEnsOnly() bool { + if m != nil { + return m.EnsOnly } return false } -func (x *CommunityPermissions) GetPrivate() bool { - if x != nil { - return x.Private +func (m *CommunityPermissions) GetPrivate() bool { + if m != nil { + return m.Private } return false } -func (x *CommunityPermissions) GetAccess() CommunityPermissions_Access { - if x != nil { - return x.Access +func (m *CommunityPermissions) GetAccess() CommunityPermissions_Access { + if m != nil { + return m.Access } return CommunityPermissions_UNKNOWN_ACCESS } type TokenCriteria struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` - TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"` - EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"` - Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"` + ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"` + EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"` + Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TokenCriteria) Reset() { *m = TokenCriteria{} } +func (m *TokenCriteria) String() string { return proto.CompactTextString(m) } +func (*TokenCriteria) ProtoMessage() {} +func (*TokenCriteria) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{4} } -func (x *TokenCriteria) Reset() { - *x = TokenCriteria{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *TokenCriteria) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TokenCriteria.Unmarshal(m, b) } - -func (x *TokenCriteria) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *TokenCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TokenCriteria.Marshal(b, m, deterministic) } - -func (*TokenCriteria) ProtoMessage() {} - -func (x *TokenCriteria) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *TokenCriteria) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenCriteria.Merge(m, src) } - -// Deprecated: Use TokenCriteria.ProtoReflect.Descriptor instead. -func (*TokenCriteria) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{4} +func (m *TokenCriteria) XXX_Size() int { + return xxx_messageInfo_TokenCriteria.Size(m) +} +func (m *TokenCriteria) XXX_DiscardUnknown() { + xxx_messageInfo_TokenCriteria.DiscardUnknown(m) } -func (x *TokenCriteria) GetContractAddresses() map[uint64]string { - if x != nil { - return x.ContractAddresses +var xxx_messageInfo_TokenCriteria proto.InternalMessageInfo + +func (m *TokenCriteria) GetContractAddresses() map[uint64]string { + if m != nil { + return m.ContractAddresses } return nil } -func (x *TokenCriteria) GetType() CommunityTokenType { - if x != nil { - return x.Type +func (m *TokenCriteria) GetType() CommunityTokenType { + if m != nil { + return m.Type } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (x *TokenCriteria) GetSymbol() string { - if x != nil { - return x.Symbol +func (m *TokenCriteria) GetSymbol() string { + if m != nil { + return m.Symbol } return "" } -func (x *TokenCriteria) GetName() string { - if x != nil { - return x.Name +func (m *TokenCriteria) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *TokenCriteria) GetAmount() string { - if x != nil { - return x.Amount +func (m *TokenCriteria) GetAmount() string { + if m != nil { + return m.Amount } return "" } -func (x *TokenCriteria) GetTokenIds() []uint64 { - if x != nil { - return x.TokenIds +func (m *TokenCriteria) GetTokenIds() []uint64 { + if m != nil { + return m.TokenIds } return nil } -func (x *TokenCriteria) GetEnsPattern() string { - if x != nil { - return x.EnsPattern +func (m *TokenCriteria) GetEnsPattern() string { + if m != nil { + return m.EnsPattern } return "" } -func (x *TokenCriteria) GetDecimals() uint64 { - if x != nil { - return x.Decimals +func (m *TokenCriteria) GetDecimals() uint64 { + if m != nil { + return m.Decimals } return 0 } type CommunityTokenPermission struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"` - TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"` - ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"` - IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"` + TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"` + ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"` + IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityTokenPermission) Reset() { *m = CommunityTokenPermission{} } +func (m *CommunityTokenPermission) String() string { return proto.CompactTextString(m) } +func (*CommunityTokenPermission) ProtoMessage() {} +func (*CommunityTokenPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{5} } -func (x *CommunityTokenPermission) Reset() { - *x = CommunityTokenPermission{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityTokenPermission) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityTokenPermission.Unmarshal(m, b) } - -func (x *CommunityTokenPermission) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityTokenPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityTokenPermission.Marshal(b, m, deterministic) } - -func (*CommunityTokenPermission) ProtoMessage() {} - -func (x *CommunityTokenPermission) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityTokenPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityTokenPermission.Merge(m, src) } - -// Deprecated: Use CommunityTokenPermission.ProtoReflect.Descriptor instead. -func (*CommunityTokenPermission) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{5} +func (m *CommunityTokenPermission) XXX_Size() int { + return xxx_messageInfo_CommunityTokenPermission.Size(m) +} +func (m *CommunityTokenPermission) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityTokenPermission.DiscardUnknown(m) } -func (x *CommunityTokenPermission) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_CommunityTokenPermission proto.InternalMessageInfo + +func (m *CommunityTokenPermission) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *CommunityTokenPermission) GetType() CommunityTokenPermission_Type { - if x != nil { - return x.Type +func (m *CommunityTokenPermission) GetType() CommunityTokenPermission_Type { + if m != nil { + return m.Type } return CommunityTokenPermission_UNKNOWN_TOKEN_PERMISSION } -func (x *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria { - if x != nil { - return x.TokenCriteria +func (m *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria { + if m != nil { + return m.TokenCriteria } return nil } -func (x *CommunityTokenPermission) GetChatIds() []string { - if x != nil { - return x.ChatIds +func (m *CommunityTokenPermission) GetChatIds() []string { + if m != nil { + return m.ChatIds } return nil } -func (x *CommunityTokenPermission) GetIsPrivate() bool { - if x != nil { - return x.IsPrivate +func (m *CommunityTokenPermission) GetIsPrivate() bool { + if m != nil { + return m.IsPrivate } return false } type CommunityDescription struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Members map[string]*CommunityMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Permissions *CommunityPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` - Identity *ChatIdentity `protobuf:"bytes,5,opt,name=identity,proto3" json:"identity,omitempty"` - Chats map[string]*CommunityChat `protobuf:"bytes,6,rep,name=chats,proto3" json:"chats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - BanList []string `protobuf:"bytes,7,rep,name=ban_list,json=banList,proto3" json:"ban_list,omitempty"` - Categories map[string]*CommunityCategory `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ArchiveMagnetlinkClock uint64 `protobuf:"varint,9,opt,name=archive_magnetlink_clock,json=archiveMagnetlinkClock,proto3" json:"archive_magnetlink_clock,omitempty"` - AdminSettings *CommunityAdminSettings `protobuf:"bytes,10,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` - IntroMessage string `protobuf:"bytes,11,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` - OutroMessage string `protobuf:"bytes,12,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` - // Deprecated: Marked as deprecated in communities.proto. - Encrypted bool `protobuf:"varint,13,opt,name=encrypted,proto3" json:"encrypted,omitempty"` + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Members map[string]*CommunityMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions *CommunityPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` + Identity *ChatIdentity `protobuf:"bytes,5,opt,name=identity,proto3" json:"identity,omitempty"` + Chats map[string]*CommunityChat `protobuf:"bytes,6,rep,name=chats,proto3" json:"chats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + BanList []string `protobuf:"bytes,7,rep,name=ban_list,json=banList,proto3" json:"ban_list,omitempty"` + Categories map[string]*CommunityCategory `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ArchiveMagnetlinkClock uint64 `protobuf:"varint,9,opt,name=archive_magnetlink_clock,json=archiveMagnetlinkClock,proto3" json:"archive_magnetlink_clock,omitempty"` + AdminSettings *CommunityAdminSettings `protobuf:"bytes,10,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` + IntroMessage string `protobuf:"bytes,11,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` + OutroMessage string `protobuf:"bytes,12,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` + Encrypted bool `protobuf:"varint,13,opt,name=encrypted,proto3" json:"encrypted,omitempty"` // Deprecated: Do not use. Tags []string `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"` TokenPermissions map[string]*CommunityTokenPermission `protobuf:"bytes,15,rep,name=token_permissions,json=tokenPermissions,proto3" json:"token_permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` CommunityTokensMetadata []*CommunityTokenMetadata `protobuf:"bytes,16,rep,name=community_tokens_metadata,json=communityTokensMetadata,proto3" json:"community_tokens_metadata,omitempty"` ActiveMembersCount uint64 `protobuf:"varint,17,opt,name=active_members_count,json=activeMembersCount,proto3" json:"active_members_count,omitempty"` ID string `protobuf:"bytes,18,opt,name=ID,proto3" json:"ID,omitempty"` + // key is hash ratchet key_id + seq_no + PrivateData map[string][]byte `protobuf:"bytes,100,rep,name=privateData,proto3" json:"privateData,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityDescription) Reset() { - *x = CommunityDescription{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityDescription) Reset() { *m = CommunityDescription{} } +func (m *CommunityDescription) String() string { return proto.CompactTextString(m) } +func (*CommunityDescription) ProtoMessage() {} +func (*CommunityDescription) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{6} } -func (x *CommunityDescription) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityDescription) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityDescription.Unmarshal(m, b) } - -func (*CommunityDescription) ProtoMessage() {} - -func (x *CommunityDescription) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityDescription.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityDescription.ProtoReflect.Descriptor instead. -func (*CommunityDescription) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{6} +func (m *CommunityDescription) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityDescription.Merge(m, src) } +func (m *CommunityDescription) XXX_Size() int { + return xxx_messageInfo_CommunityDescription.Size(m) +} +func (m *CommunityDescription) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityDescription.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityDescription proto.InternalMessageInfo -func (x *CommunityDescription) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *CommunityDescription) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityDescription) GetMembers() map[string]*CommunityMember { - if x != nil { - return x.Members +func (m *CommunityDescription) GetMembers() map[string]*CommunityMember { + if m != nil { + return m.Members } return nil } -func (x *CommunityDescription) GetPermissions() *CommunityPermissions { - if x != nil { - return x.Permissions +func (m *CommunityDescription) GetPermissions() *CommunityPermissions { + if m != nil { + return m.Permissions } return nil } -func (x *CommunityDescription) GetIdentity() *ChatIdentity { - if x != nil { - return x.Identity +func (m *CommunityDescription) GetIdentity() *ChatIdentity { + if m != nil { + return m.Identity } return nil } -func (x *CommunityDescription) GetChats() map[string]*CommunityChat { - if x != nil { - return x.Chats +func (m *CommunityDescription) GetChats() map[string]*CommunityChat { + if m != nil { + return m.Chats } return nil } -func (x *CommunityDescription) GetBanList() []string { - if x != nil { - return x.BanList +func (m *CommunityDescription) GetBanList() []string { + if m != nil { + return m.BanList } return nil } -func (x *CommunityDescription) GetCategories() map[string]*CommunityCategory { - if x != nil { - return x.Categories +func (m *CommunityDescription) GetCategories() map[string]*CommunityCategory { + if m != nil { + return m.Categories } return nil } -func (x *CommunityDescription) GetArchiveMagnetlinkClock() uint64 { - if x != nil { - return x.ArchiveMagnetlinkClock +func (m *CommunityDescription) GetArchiveMagnetlinkClock() uint64 { + if m != nil { + return m.ArchiveMagnetlinkClock } return 0 } -func (x *CommunityDescription) GetAdminSettings() *CommunityAdminSettings { - if x != nil { - return x.AdminSettings +func (m *CommunityDescription) GetAdminSettings() *CommunityAdminSettings { + if m != nil { + return m.AdminSettings } return nil } -func (x *CommunityDescription) GetIntroMessage() string { - if x != nil { - return x.IntroMessage +func (m *CommunityDescription) GetIntroMessage() string { + if m != nil { + return m.IntroMessage } return "" } -func (x *CommunityDescription) GetOutroMessage() string { - if x != nil { - return x.OutroMessage +func (m *CommunityDescription) GetOutroMessage() string { + if m != nil { + return m.OutroMessage } return "" } -// Deprecated: Marked as deprecated in communities.proto. -func (x *CommunityDescription) GetEncrypted() bool { - if x != nil { - return x.Encrypted +// Deprecated: Do not use. +func (m *CommunityDescription) GetEncrypted() bool { + if m != nil { + return m.Encrypted } return false } -func (x *CommunityDescription) GetTags() []string { - if x != nil { - return x.Tags +func (m *CommunityDescription) GetTags() []string { + if m != nil { + return m.Tags } return nil } -func (x *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission { - if x != nil { - return x.TokenPermissions +func (m *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission { + if m != nil { + return m.TokenPermissions } return nil } -func (x *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata { - if x != nil { - return x.CommunityTokensMetadata +func (m *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata { + if m != nil { + return m.CommunityTokensMetadata } return nil } -func (x *CommunityDescription) GetActiveMembersCount() uint64 { - if x != nil { - return x.ActiveMembersCount +func (m *CommunityDescription) GetActiveMembersCount() uint64 { + if m != nil { + return m.ActiveMembersCount } return 0 } -func (x *CommunityDescription) GetID() string { - if x != nil { - return x.ID +func (m *CommunityDescription) GetID() string { + if m != nil { + return m.ID } return "" } -type CommunityAdminSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"` -} - -func (x *CommunityAdminSettings) Reset() { - *x = CommunityAdminSettings{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *CommunityDescription) GetPrivateData() map[string][]byte { + if m != nil { + return m.PrivateData } + return nil } -func (x *CommunityAdminSettings) String() string { - return protoimpl.X.MessageStringOf(x) +type CommunityAdminSettings struct { + PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*CommunityAdminSettings) ProtoMessage() {} - -func (x *CommunityAdminSettings) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityAdminSettings) Reset() { *m = CommunityAdminSettings{} } +func (m *CommunityAdminSettings) String() string { return proto.CompactTextString(m) } +func (*CommunityAdminSettings) ProtoMessage() {} +func (*CommunityAdminSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{7} } -// Deprecated: Use CommunityAdminSettings.ProtoReflect.Descriptor instead. -func (*CommunityAdminSettings) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{7} +func (m *CommunityAdminSettings) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityAdminSettings.Unmarshal(m, b) +} +func (m *CommunityAdminSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityAdminSettings.Marshal(b, m, deterministic) } +func (m *CommunityAdminSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityAdminSettings.Merge(m, src) +} +func (m *CommunityAdminSettings) XXX_Size() int { + return xxx_messageInfo_CommunityAdminSettings.Size(m) +} +func (m *CommunityAdminSettings) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityAdminSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityAdminSettings proto.InternalMessageInfo -func (x *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool { - if x != nil { - return x.PinMessageAllMembersEnabled +func (m *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool { + if m != nil { + return m.PinMessageAllMembersEnabled } return false } type CommunityChat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` - Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` - CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` + Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` + CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityChat) Reset() { *m = CommunityChat{} } +func (m *CommunityChat) String() string { return proto.CompactTextString(m) } +func (*CommunityChat) ProtoMessage() {} +func (*CommunityChat) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{8} } -func (x *CommunityChat) Reset() { - *x = CommunityChat{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityChat) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityChat.Unmarshal(m, b) } - -func (x *CommunityChat) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityChat.Marshal(b, m, deterministic) } - -func (*CommunityChat) ProtoMessage() {} - -func (x *CommunityChat) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityChat) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityChat.Merge(m, src) } - -// Deprecated: Use CommunityChat.ProtoReflect.Descriptor instead. -func (*CommunityChat) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{8} +func (m *CommunityChat) XXX_Size() int { + return xxx_messageInfo_CommunityChat.Size(m) } +func (m *CommunityChat) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityChat.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityChat proto.InternalMessageInfo -func (x *CommunityChat) GetMembers() map[string]*CommunityMember { - if x != nil { - return x.Members +func (m *CommunityChat) GetMembers() map[string]*CommunityMember { + if m != nil { + return m.Members } return nil } -func (x *CommunityChat) GetPermissions() *CommunityPermissions { - if x != nil { - return x.Permissions +func (m *CommunityChat) GetPermissions() *CommunityPermissions { + if m != nil { + return m.Permissions } return nil } -func (x *CommunityChat) GetIdentity() *ChatIdentity { - if x != nil { - return x.Identity +func (m *CommunityChat) GetIdentity() *ChatIdentity { + if m != nil { + return m.Identity } return nil } -func (x *CommunityChat) GetCategoryId() string { - if x != nil { - return x.CategoryId +func (m *CommunityChat) GetCategoryId() string { + if m != nil { + return m.CategoryId } return "" } -func (x *CommunityChat) GetPosition() int32 { - if x != nil { - return x.Position +func (m *CommunityChat) GetPosition() int32 { + if m != nil { + return m.Position } return 0 } type CommunityCategory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityCategory) Reset() { - *x = CommunityCategory{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityCategory) Reset() { *m = CommunityCategory{} } +func (m *CommunityCategory) String() string { return proto.CompactTextString(m) } +func (*CommunityCategory) ProtoMessage() {} +func (*CommunityCategory) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{9} } -func (x *CommunityCategory) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityCategory) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityCategory.Unmarshal(m, b) } - -func (*CommunityCategory) ProtoMessage() {} - -func (x *CommunityCategory) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityCategory.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityCategory.ProtoReflect.Descriptor instead. -func (*CommunityCategory) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{9} +func (m *CommunityCategory) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityCategory.Merge(m, src) +} +func (m *CommunityCategory) XXX_Size() int { + return xxx_messageInfo_CommunityCategory.Size(m) } +func (m *CommunityCategory) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityCategory.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityCategory proto.InternalMessageInfo -func (x *CommunityCategory) GetCategoryId() string { - if x != nil { - return x.CategoryId +func (m *CommunityCategory) GetCategoryId() string { + if m != nil { + return m.CategoryId } return "" } -func (x *CommunityCategory) GetName() string { - if x != nil { - return x.Name +func (m *CommunityCategory) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *CommunityCategory) GetPosition() int32 { - if x != nil { - return x.Position +func (m *CommunityCategory) GetPosition() int32 { + if m != nil { + return m.Position } return 0 } type RevealedAccount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - ChainIds []uint64 `protobuf:"varint,3,rep,packed,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"` - IsAirdropAddress bool `protobuf:"varint,4,opt,name=isAirdropAddress,proto3" json:"isAirdropAddress,omitempty"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + ChainIds []uint64 `protobuf:"varint,3,rep,packed,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"` + IsAirdropAddress bool `protobuf:"varint,4,opt,name=isAirdropAddress,proto3" json:"isAirdropAddress,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RevealedAccount) Reset() { *m = RevealedAccount{} } +func (m *RevealedAccount) String() string { return proto.CompactTextString(m) } +func (*RevealedAccount) ProtoMessage() {} +func (*RevealedAccount) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{10} } -func (x *RevealedAccount) Reset() { - *x = RevealedAccount{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *RevealedAccount) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RevealedAccount.Unmarshal(m, b) } - -func (x *RevealedAccount) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *RevealedAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RevealedAccount.Marshal(b, m, deterministic) } - -func (*RevealedAccount) ProtoMessage() {} - -func (x *RevealedAccount) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *RevealedAccount) XXX_Merge(src proto.Message) { + xxx_messageInfo_RevealedAccount.Merge(m, src) } - -// Deprecated: Use RevealedAccount.ProtoReflect.Descriptor instead. -func (*RevealedAccount) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{10} +func (m *RevealedAccount) XXX_Size() int { + return xxx_messageInfo_RevealedAccount.Size(m) } +func (m *RevealedAccount) XXX_DiscardUnknown() { + xxx_messageInfo_RevealedAccount.DiscardUnknown(m) +} + +var xxx_messageInfo_RevealedAccount proto.InternalMessageInfo -func (x *RevealedAccount) GetAddress() string { - if x != nil { - return x.Address +func (m *RevealedAccount) GetAddress() string { + if m != nil { + return m.Address } return "" } -func (x *RevealedAccount) GetSignature() []byte { - if x != nil { - return x.Signature +func (m *RevealedAccount) GetSignature() []byte { + if m != nil { + return m.Signature } return nil } -func (x *RevealedAccount) GetChainIds() []uint64 { - if x != nil { - return x.ChainIds +func (m *RevealedAccount) GetChainIds() []uint64 { + if m != nil { + return m.ChainIds } return nil } -func (x *RevealedAccount) GetIsAirdropAddress() bool { - if x != nil { - return x.IsAirdropAddress +func (m *RevealedAccount) GetIsAirdropAddress() bool { + if m != nil { + return m.IsAirdropAddress } return false } type CommunityRequestToJoin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,6,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,6,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityRequestToJoin) Reset() { *m = CommunityRequestToJoin{} } +func (m *CommunityRequestToJoin) String() string { return proto.CompactTextString(m) } +func (*CommunityRequestToJoin) ProtoMessage() {} +func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{11} } -func (x *CommunityRequestToJoin) Reset() { - *x = CommunityRequestToJoin{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityRequestToJoin.Unmarshal(m, b) } - -func (x *CommunityRequestToJoin) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityRequestToJoin.Marshal(b, m, deterministic) } - -func (*CommunityRequestToJoin) ProtoMessage() {} - -func (x *CommunityRequestToJoin) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityRequestToJoin) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityRequestToJoin.Merge(m, src) } - -// Deprecated: Use CommunityRequestToJoin.ProtoReflect.Descriptor instead. -func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{11} +func (m *CommunityRequestToJoin) XXX_Size() int { + return xxx_messageInfo_CommunityRequestToJoin.Size(m) } +func (m *CommunityRequestToJoin) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityRequestToJoin.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityRequestToJoin proto.InternalMessageInfo -func (x *CommunityRequestToJoin) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *CommunityRequestToJoin) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityRequestToJoin) GetEnsName() string { - if x != nil { - return x.EnsName +func (m *CommunityRequestToJoin) GetEnsName() string { + if m != nil { + return m.EnsName } return "" } -func (x *CommunityRequestToJoin) GetChatId() string { - if x != nil { - return x.ChatId +func (m *CommunityRequestToJoin) GetChatId() string { + if m != nil { + return m.ChatId } return "" } -func (x *CommunityRequestToJoin) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +func (m *CommunityRequestToJoin) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } -func (x *CommunityRequestToJoin) GetDisplayName() string { - if x != nil { - return x.DisplayName +func (m *CommunityRequestToJoin) GetDisplayName() string { + if m != nil { + return m.DisplayName } return "" } -func (x *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { - if x != nil { - return x.RevealedAccounts +func (m *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { + if m != nil { + return m.RevealedAccounts } return nil } type CommunityEditSharedAddresses struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityEditSharedAddresses) Reset() { - *x = CommunityEditSharedAddresses{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityEditSharedAddresses) Reset() { *m = CommunityEditSharedAddresses{} } +func (m *CommunityEditSharedAddresses) String() string { return proto.CompactTextString(m) } +func (*CommunityEditSharedAddresses) ProtoMessage() {} +func (*CommunityEditSharedAddresses) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{12} } -func (x *CommunityEditSharedAddresses) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityEditSharedAddresses) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityEditSharedAddresses.Unmarshal(m, b) } - -func (*CommunityEditSharedAddresses) ProtoMessage() {} - -func (x *CommunityEditSharedAddresses) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityEditSharedAddresses) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityEditSharedAddresses.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityEditSharedAddresses.ProtoReflect.Descriptor instead. -func (*CommunityEditSharedAddresses) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{12} +func (m *CommunityEditSharedAddresses) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityEditSharedAddresses.Merge(m, src) } +func (m *CommunityEditSharedAddresses) XXX_Size() int { + return xxx_messageInfo_CommunityEditSharedAddresses.Size(m) +} +func (m *CommunityEditSharedAddresses) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityEditSharedAddresses.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityEditSharedAddresses proto.InternalMessageInfo -func (x *CommunityEditSharedAddresses) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *CommunityEditSharedAddresses) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityEditSharedAddresses) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +func (m *CommunityEditSharedAddresses) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } -func (x *CommunityEditSharedAddresses) GetRevealedAccounts() []*RevealedAccount { - if x != nil { - return x.RevealedAccounts +func (m *CommunityEditSharedAddresses) GetRevealedAccounts() []*RevealedAccount { + if m != nil { + return m.RevealedAccounts } return nil } type CommunityCancelRequestToJoin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,5,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 *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelRequestToJoin{} } +func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) } +func (*CommunityCancelRequestToJoin) ProtoMessage() {} +func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{13} } -func (x *CommunityCancelRequestToJoin) Reset() { - *x = CommunityCancelRequestToJoin{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityCancelRequestToJoin.Unmarshal(m, b) } - -func (x *CommunityCancelRequestToJoin) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityCancelRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityCancelRequestToJoin.Marshal(b, m, deterministic) } - -func (*CommunityCancelRequestToJoin) ProtoMessage() {} - -func (x *CommunityCancelRequestToJoin) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityCancelRequestToJoin) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityCancelRequestToJoin.Merge(m, src) } - -// Deprecated: Use CommunityCancelRequestToJoin.ProtoReflect.Descriptor instead. -func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{13} +func (m *CommunityCancelRequestToJoin) XXX_Size() int { + return xxx_messageInfo_CommunityCancelRequestToJoin.Size(m) } +func (m *CommunityCancelRequestToJoin) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityCancelRequestToJoin.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityCancelRequestToJoin proto.InternalMessageInfo -func (x *CommunityCancelRequestToJoin) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *CommunityCancelRequestToJoin) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityCancelRequestToJoin) GetEnsName() string { - if x != nil { - return x.EnsName +func (m *CommunityCancelRequestToJoin) GetEnsName() string { + if m != nil { + return m.EnsName } return "" } -func (x *CommunityCancelRequestToJoin) GetChatId() string { - if x != nil { - return x.ChatId +func (m *CommunityCancelRequestToJoin) GetChatId() string { + if m != nil { + return m.ChatId } return "" } -func (x *CommunityCancelRequestToJoin) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +func (m *CommunityCancelRequestToJoin) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } -func (x *CommunityCancelRequestToJoin) GetDisplayName() string { - if x != nil { - return x.DisplayName +func (m *CommunityCancelRequestToJoin) GetDisplayName() string { + if m != nil { + return m.DisplayName } return "" } type CommunityRequestToJoinResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"` Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"` @@ -1342,1323 +1169,678 @@ type CommunityRequestToJoinResponse struct { MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` ProtectedTopicPrivateKey []byte `protobuf:"bytes,7,opt,name=protected_topic_private_key,json=protectedTopicPrivateKey,proto3" json:"protected_topic_private_key,omitempty"` Shard *Shard `protobuf:"bytes,8,opt,name=shard,proto3" json:"shard,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityRequestToJoinResponse) Reset() { - *x = CommunityRequestToJoinResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequestToJoinResponse{} } +func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) } +func (*CommunityRequestToJoinResponse) ProtoMessage() {} +func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{14} } -func (x *CommunityRequestToJoinResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityRequestToJoinResponse.Unmarshal(m, b) } - -func (*CommunityRequestToJoinResponse) ProtoMessage() {} - -func (x *CommunityRequestToJoinResponse) ProtoReflect() protoreflect.Message { - mi := &file_communities_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) +func (m *CommunityRequestToJoinResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityRequestToJoinResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityRequestToJoinResponse.ProtoReflect.Descriptor instead. -func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{14} +func (m *CommunityRequestToJoinResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityRequestToJoinResponse.Merge(m, src) +} +func (m *CommunityRequestToJoinResponse) XXX_Size() int { + return xxx_messageInfo_CommunityRequestToJoinResponse.Size(m) } +func (m *CommunityRequestToJoinResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityRequestToJoinResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityRequestToJoinResponse proto.InternalMessageInfo -func (x *CommunityRequestToJoinResponse) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *CommunityRequestToJoinResponse) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription { - if x != nil { - return x.Community +func (m *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription { + if m != nil { + return m.Community } return nil } -func (x *CommunityRequestToJoinResponse) GetAccepted() bool { - if x != nil { - return x.Accepted +func (m *CommunityRequestToJoinResponse) GetAccepted() bool { + if m != nil { + return m.Accepted } return false } -func (x *CommunityRequestToJoinResponse) GetGrant() []byte { - if x != nil { - return x.Grant +func (m *CommunityRequestToJoinResponse) GetGrant() []byte { + if m != nil { + return m.Grant } return nil } -func (x *CommunityRequestToJoinResponse) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +func (m *CommunityRequestToJoinResponse) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } -func (x *CommunityRequestToJoinResponse) GetMagnetUri() string { - if x != nil { - return x.MagnetUri +func (m *CommunityRequestToJoinResponse) GetMagnetUri() string { + if m != nil { + return m.MagnetUri } return "" } -func (x *CommunityRequestToJoinResponse) GetProtectedTopicPrivateKey() []byte { - if x != nil { - return x.ProtectedTopicPrivateKey +func (m *CommunityRequestToJoinResponse) GetProtectedTopicPrivateKey() []byte { + if m != nil { + return m.ProtectedTopicPrivateKey } return nil } -func (x *CommunityRequestToJoinResponse) GetShard() *Shard { - if x != nil { - return x.Shard +func (m *CommunityRequestToJoinResponse) GetShard() *Shard { + if m != nil { + return m.Shard } return nil } type CommunityRequestToLeave struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityRequestToLeave) Reset() { - *x = CommunityRequestToLeave{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave{} } +func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) } +func (*CommunityRequestToLeave) ProtoMessage() {} +func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{15} } -func (x *CommunityRequestToLeave) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityRequestToLeave.Unmarshal(m, b) } - -func (*CommunityRequestToLeave) ProtoMessage() {} - -func (x *CommunityRequestToLeave) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[15] - 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) +func (m *CommunityRequestToLeave) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityRequestToLeave.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityRequestToLeave.ProtoReflect.Descriptor instead. -func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{15} +func (m *CommunityRequestToLeave) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityRequestToLeave.Merge(m, src) +} +func (m *CommunityRequestToLeave) XXX_Size() int { + return xxx_messageInfo_CommunityRequestToLeave.Size(m) +} +func (m *CommunityRequestToLeave) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityRequestToLeave.DiscardUnknown(m) } -func (x *CommunityRequestToLeave) GetClock() uint64 { - if x != nil { - return x.Clock +var xxx_messageInfo_CommunityRequestToLeave proto.InternalMessageInfo + +func (m *CommunityRequestToLeave) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityRequestToLeave) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +func (m *CommunityRequestToLeave) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } type CommunityMessageArchiveMagnetlink struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityMessageArchiveMagnetlink) Reset() { - *x = CommunityMessageArchiveMagnetlink{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMessageArchiveMagnetlink{} } +func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) } +func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} +func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{16} } -func (x *CommunityMessageArchiveMagnetlink) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Unmarshal(m, b) } - -func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} - -func (x *CommunityMessageArchiveMagnetlink) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[16] - 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) +func (m *CommunityMessageArchiveMagnetlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityMessageArchiveMagnetlink.ProtoReflect.Descriptor instead. -func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{16} +func (m *CommunityMessageArchiveMagnetlink) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityMessageArchiveMagnetlink.Merge(m, src) } +func (m *CommunityMessageArchiveMagnetlink) XXX_Size() int { + return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Size(m) +} +func (m *CommunityMessageArchiveMagnetlink) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityMessageArchiveMagnetlink.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityMessageArchiveMagnetlink proto.InternalMessageInfo -func (x *CommunityMessageArchiveMagnetlink) GetClock() uint64 { - if x != nil { - return x.Clock +func (m *CommunityMessageArchiveMagnetlink) GetClock() uint64 { + if m != nil { + return m.Clock } return 0 } -func (x *CommunityMessageArchiveMagnetlink) GetMagnetUri() string { - if x != nil { - return x.MagnetUri +func (m *CommunityMessageArchiveMagnetlink) GetMagnetUri() string { + if m != nil { + return m.MagnetUri } return "" } type WakuMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"` - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` - Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` - Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"` - Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` - ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"` + Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` + Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` + Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"` + Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` + ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WakuMessage) Reset() { *m = WakuMessage{} } +func (m *WakuMessage) String() string { return proto.CompactTextString(m) } +func (*WakuMessage) ProtoMessage() {} +func (*WakuMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{17} } -func (x *WakuMessage) Reset() { - *x = WakuMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *WakuMessage) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WakuMessage.Unmarshal(m, b) } - -func (x *WakuMessage) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *WakuMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WakuMessage.Marshal(b, m, deterministic) } - -func (*WakuMessage) ProtoMessage() {} - -func (x *WakuMessage) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[17] - 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) +func (m *WakuMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_WakuMessage.Merge(m, src) } - -// Deprecated: Use WakuMessage.ProtoReflect.Descriptor instead. -func (*WakuMessage) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{17} +func (m *WakuMessage) XXX_Size() int { + return xxx_messageInfo_WakuMessage.Size(m) } +func (m *WakuMessage) XXX_DiscardUnknown() { + xxx_messageInfo_WakuMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_WakuMessage proto.InternalMessageInfo -func (x *WakuMessage) GetSig() []byte { - if x != nil { - return x.Sig +func (m *WakuMessage) GetSig() []byte { + if m != nil { + return m.Sig } return nil } -func (x *WakuMessage) GetTimestamp() uint64 { - if x != nil { - return x.Timestamp +func (m *WakuMessage) GetTimestamp() uint64 { + if m != nil { + return m.Timestamp } return 0 } -func (x *WakuMessage) GetTopic() []byte { - if x != nil { - return x.Topic +func (m *WakuMessage) GetTopic() []byte { + if m != nil { + return m.Topic } return nil } -func (x *WakuMessage) GetPayload() []byte { - if x != nil { - return x.Payload +func (m *WakuMessage) GetPayload() []byte { + if m != nil { + return m.Payload } return nil } -func (x *WakuMessage) GetPadding() []byte { - if x != nil { - return x.Padding +func (m *WakuMessage) GetPadding() []byte { + if m != nil { + return m.Padding } return nil } -func (x *WakuMessage) GetHash() []byte { - if x != nil { - return x.Hash +func (m *WakuMessage) GetHash() []byte { + if m != nil { + return m.Hash } return nil } -func (x *WakuMessage) GetThirdPartyId() string { - if x != nil { - return x.ThirdPartyId +func (m *WakuMessage) GetThirdPartyId() string { + if m != nil { + return m.ThirdPartyId } return "" } type WakuMessageArchiveMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` - To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` - ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` + To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` + ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMetadata{} } +func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) } +func (*WakuMessageArchiveMetadata) ProtoMessage() {} +func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{18} } -func (x *WakuMessageArchiveMetadata) Reset() { - *x = WakuMessageArchiveMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WakuMessageArchiveMetadata.Unmarshal(m, b) } - -func (x *WakuMessageArchiveMetadata) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *WakuMessageArchiveMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WakuMessageArchiveMetadata.Marshal(b, m, deterministic) } - -func (*WakuMessageArchiveMetadata) ProtoMessage() {} - -func (x *WakuMessageArchiveMetadata) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[18] - 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) +func (m *WakuMessageArchiveMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_WakuMessageArchiveMetadata.Merge(m, src) } - -// Deprecated: Use WakuMessageArchiveMetadata.ProtoReflect.Descriptor instead. -func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{18} +func (m *WakuMessageArchiveMetadata) XXX_Size() int { + return xxx_messageInfo_WakuMessageArchiveMetadata.Size(m) +} +func (m *WakuMessageArchiveMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_WakuMessageArchiveMetadata.DiscardUnknown(m) } -func (x *WakuMessageArchiveMetadata) GetVersion() uint32 { - if x != nil { - return x.Version +var xxx_messageInfo_WakuMessageArchiveMetadata proto.InternalMessageInfo + +func (m *WakuMessageArchiveMetadata) GetVersion() uint32 { + if m != nil { + return m.Version } return 0 } -func (x *WakuMessageArchiveMetadata) GetFrom() uint64 { - if x != nil { - return x.From +func (m *WakuMessageArchiveMetadata) GetFrom() uint64 { + if m != nil { + return m.From } return 0 } -func (x *WakuMessageArchiveMetadata) GetTo() uint64 { - if x != nil { - return x.To +func (m *WakuMessageArchiveMetadata) GetTo() uint64 { + if m != nil { + return m.To } return 0 } -func (x *WakuMessageArchiveMetadata) GetContentTopic() [][]byte { - if x != nil { - return x.ContentTopic +func (m *WakuMessageArchiveMetadata) GetContentTopic() [][]byte { + if m != nil { + return m.ContentTopic } return nil } type WakuMessageArchive struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *WakuMessageArchive) Reset() { - *x = WakuMessageArchive{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} } +func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) } +func (*WakuMessageArchive) ProtoMessage() {} +func (*WakuMessageArchive) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{19} } -func (x *WakuMessageArchive) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WakuMessageArchive.Unmarshal(m, b) } - -func (*WakuMessageArchive) ProtoMessage() {} - -func (x *WakuMessageArchive) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[19] - 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) +func (m *WakuMessageArchive) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WakuMessageArchive.Marshal(b, m, deterministic) } - -// Deprecated: Use WakuMessageArchive.ProtoReflect.Descriptor instead. -func (*WakuMessageArchive) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{19} +func (m *WakuMessageArchive) XXX_Merge(src proto.Message) { + xxx_messageInfo_WakuMessageArchive.Merge(m, src) +} +func (m *WakuMessageArchive) XXX_Size() int { + return xxx_messageInfo_WakuMessageArchive.Size(m) +} +func (m *WakuMessageArchive) XXX_DiscardUnknown() { + xxx_messageInfo_WakuMessageArchive.DiscardUnknown(m) } -func (x *WakuMessageArchive) GetVersion() uint32 { - if x != nil { - return x.Version +var xxx_messageInfo_WakuMessageArchive proto.InternalMessageInfo + +func (m *WakuMessageArchive) GetVersion() uint32 { + if m != nil { + return m.Version } return 0 } -func (x *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata { - if x != nil { - return x.Metadata +func (m *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata { + if m != nil { + return m.Metadata } return nil } -func (x *WakuMessageArchive) GetMessages() []*WakuMessage { - if x != nil { - return x.Messages +func (m *WakuMessageArchive) GetMessages() []*WakuMessage { + if m != nil { + return m.Messages } return nil } type WakuMessageArchiveIndexMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` - Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArchiveIndexMetadata{} } +func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) } +func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} +func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{20} } -func (x *WakuMessageArchiveIndexMetadata) Reset() { - *x = WakuMessageArchiveIndexMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Unmarshal(m, b) } - -func (x *WakuMessageArchiveIndexMetadata) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *WakuMessageArchiveIndexMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Marshal(b, m, deterministic) } - -func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} - -func (x *WakuMessageArchiveIndexMetadata) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[20] - 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) +func (m *WakuMessageArchiveIndexMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_WakuMessageArchiveIndexMetadata.Merge(m, src) } - -// Deprecated: Use WakuMessageArchiveIndexMetadata.ProtoReflect.Descriptor instead. -func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{20} +func (m *WakuMessageArchiveIndexMetadata) XXX_Size() int { + return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Size(m) +} +func (m *WakuMessageArchiveIndexMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_WakuMessageArchiveIndexMetadata.DiscardUnknown(m) } -func (x *WakuMessageArchiveIndexMetadata) GetVersion() uint32 { - if x != nil { - return x.Version +var xxx_messageInfo_WakuMessageArchiveIndexMetadata proto.InternalMessageInfo + +func (m *WakuMessageArchiveIndexMetadata) GetVersion() uint32 { + if m != nil { + return m.Version } return 0 } -func (x *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata { - if x != nil { - return x.Metadata +func (m *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata { + if m != nil { + return m.Metadata } return nil } -func (x *WakuMessageArchiveIndexMetadata) GetOffset() uint64 { - if x != nil { - return x.Offset +func (m *WakuMessageArchiveIndexMetadata) GetOffset() uint64 { + if m != nil { + return m.Offset } return 0 } -func (x *WakuMessageArchiveIndexMetadata) GetSize() uint64 { - if x != nil { - return x.Size +func (m *WakuMessageArchiveIndexMetadata) GetSize() uint64 { + if m != nil { + return m.Size } return 0 } -func (x *WakuMessageArchiveIndexMetadata) GetPadding() uint64 { - if x != nil { - return x.Padding +func (m *WakuMessageArchiveIndexMetadata) GetPadding() uint64 { + if m != nil { + return m.Padding } return 0 } type WakuMessageArchiveIndex struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *WakuMessageArchiveIndex) Reset() { - *x = WakuMessageArchiveIndex{} - if protoimpl.UnsafeEnabled { - mi := &file_communities_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex{} } +func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) } +func (*WakuMessageArchiveIndex) ProtoMessage() {} +func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{21} } -func (x *WakuMessageArchiveIndex) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WakuMessageArchiveIndex.Unmarshal(m, b) } - -func (*WakuMessageArchiveIndex) ProtoMessage() {} - -func (x *WakuMessageArchiveIndex) ProtoReflect() protoreflect.Message { - mi := &file_communities_proto_msgTypes[21] - 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) +func (m *WakuMessageArchiveIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WakuMessageArchiveIndex.Marshal(b, m, deterministic) } - -// Deprecated: Use WakuMessageArchiveIndex.ProtoReflect.Descriptor instead. -func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { - return file_communities_proto_rawDescGZIP(), []int{21} +func (m *WakuMessageArchiveIndex) XXX_Merge(src proto.Message) { + xxx_messageInfo_WakuMessageArchiveIndex.Merge(m, src) +} +func (m *WakuMessageArchiveIndex) XXX_Size() int { + return xxx_messageInfo_WakuMessageArchiveIndex.Size(m) } +func (m *WakuMessageArchiveIndex) XXX_DiscardUnknown() { + xxx_messageInfo_WakuMessageArchiveIndex.DiscardUnknown(m) +} + +var xxx_messageInfo_WakuMessageArchiveIndex proto.InternalMessageInfo -func (x *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata { - if x != nil { - return x.Archives +func (m *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata { + if m != nil { + return m.Archives } return nil } -var File_communities_proto protoreflect.FileDescriptor - -var file_communities_proto_rawDesc = []byte{ - 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, - 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x76, 0x0a, 0x05, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, - 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, - 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xc6, 0x02, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, - 0x4a, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x72, 0x65, 0x76, 0x65, 0x61, - 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x83, 0x01, 0x0a, 0x05, 0x52, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, - 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, - 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x04, - 0x12, 0x15, 0x0a, 0x11, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, - 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x05, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, - 0x03, 0x10, 0x03, 0x2a, 0x11, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, - 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x2a, 0x15, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x22, 0x82, 0x03, - 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x66, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x1a, 0x44, 0x0a, 0x16, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 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, 0xe5, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, - 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, - 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x12, 0x3d, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, - 0x59, 0x0a, 0x06, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x01, 0x12, 0x17, - 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, - 0x59, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x41, 0x4e, 0x55, 0x41, - 0x4c, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x03, 0x22, 0x84, 0x03, 0x0a, 0x0d, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x5d, 0x0a, 0x12, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, - 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x65, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x73, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x93, 0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, - 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0e, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x52, 0x0d, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x63, - 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x68, 0x61, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, - 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, - 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, - 0x02, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x41, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x41, 0x4e, 0x5f, 0x56, - 0x49, 0x45, 0x57, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, - 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, - 0x16, 0x0a, 0x12, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, - 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x22, 0x8a, 0x0a, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, - 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x32, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, - 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, - 0x68, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x4e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x38, 0x0a, 0x18, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x6e, 0x65, - 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x16, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, - 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x72, 0x6f, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x09, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x17, 0x63, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x49, 0x44, 0x1a, 0x55, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 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, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0a, - 0x43, 0x68, 0x61, 0x74, 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, 0x2d, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x5a, 0x0a, 0x0f, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 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, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x15, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 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, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5e, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, - 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x44, - 0x0a, 0x1f, 0x70, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6c, - 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x22, 0xd9, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x55, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, - 0x62, 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, 0x2f, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x64, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x61, - 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x2a, 0x0a, 0x10, 0x69, 0x73, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x41, 0x69, 0x72, - 0x64, 0x72, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x16, - 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, - 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, - 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, - 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, - 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x72, 0x65, - 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x9f, - 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x64, 0x69, 0x74, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, - 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, - 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, - 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, - 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x22, 0xae, 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0xce, 0x02, 0x0a, 0x1e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x55, 0x72, 0x69, 0x12, 0x3d, 0x0a, 0x1b, - 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, - 0x63, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, - 0x72, 0x64, 0x22, 0x52, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, - 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x21, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, - 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x55, 0x72, 0x69, - 0x22, 0xbf, 0x01, 0x0a, 0x0b, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, - 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, - 0x0a, 0x0c, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x1a, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, - 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, - 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x22, - 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x70, - 0x69, 0x63, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x1f, 0x57, 0x61, 0x6b, - 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xce, - 0x01, 0x0a, 0x17, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4b, 0x0a, 0x08, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x1a, 0x66, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 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, 0x3f, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_communities_proto_rawDescOnce sync.Once - file_communities_proto_rawDescData = file_communities_proto_rawDesc -) - -func file_communities_proto_rawDescGZIP() []byte { - file_communities_proto_rawDescOnce.Do(func() { - file_communities_proto_rawDescData = protoimpl.X.CompressGZIP(file_communities_proto_rawDescData) - }) - return file_communities_proto_rawDescData -} - -var file_communities_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_communities_proto_msgTypes = make([]protoimpl.MessageInfo, 30) -var file_communities_proto_goTypes = []interface{}{ - (CommunityMember_Roles)(0), // 0: protobuf.CommunityMember.Roles - (CommunityPermissions_Access)(0), // 1: protobuf.CommunityPermissions.Access - (CommunityTokenPermission_Type)(0), // 2: protobuf.CommunityTokenPermission.Type - (*Grant)(nil), // 3: protobuf.Grant - (*CommunityMember)(nil), // 4: protobuf.CommunityMember - (*CommunityTokenMetadata)(nil), // 5: protobuf.CommunityTokenMetadata - (*CommunityPermissions)(nil), // 6: protobuf.CommunityPermissions - (*TokenCriteria)(nil), // 7: protobuf.TokenCriteria - (*CommunityTokenPermission)(nil), // 8: protobuf.CommunityTokenPermission - (*CommunityDescription)(nil), // 9: protobuf.CommunityDescription - (*CommunityAdminSettings)(nil), // 10: protobuf.CommunityAdminSettings - (*CommunityChat)(nil), // 11: protobuf.CommunityChat - (*CommunityCategory)(nil), // 12: protobuf.CommunityCategory - (*RevealedAccount)(nil), // 13: protobuf.RevealedAccount - (*CommunityRequestToJoin)(nil), // 14: protobuf.CommunityRequestToJoin - (*CommunityEditSharedAddresses)(nil), // 15: protobuf.CommunityEditSharedAddresses - (*CommunityCancelRequestToJoin)(nil), // 16: protobuf.CommunityCancelRequestToJoin - (*CommunityRequestToJoinResponse)(nil), // 17: protobuf.CommunityRequestToJoinResponse - (*CommunityRequestToLeave)(nil), // 18: protobuf.CommunityRequestToLeave - (*CommunityMessageArchiveMagnetlink)(nil), // 19: protobuf.CommunityMessageArchiveMagnetlink - (*WakuMessage)(nil), // 20: protobuf.WakuMessage - (*WakuMessageArchiveMetadata)(nil), // 21: protobuf.WakuMessageArchiveMetadata - (*WakuMessageArchive)(nil), // 22: protobuf.WakuMessageArchive - (*WakuMessageArchiveIndexMetadata)(nil), // 23: protobuf.WakuMessageArchiveIndexMetadata - (*WakuMessageArchiveIndex)(nil), // 24: protobuf.WakuMessageArchiveIndex - nil, // 25: protobuf.CommunityTokenMetadata.ContractAddressesEntry - nil, // 26: protobuf.TokenCriteria.ContractAddressesEntry - nil, // 27: protobuf.CommunityDescription.MembersEntry - nil, // 28: protobuf.CommunityDescription.ChatsEntry - nil, // 29: protobuf.CommunityDescription.CategoriesEntry - nil, // 30: protobuf.CommunityDescription.TokenPermissionsEntry - nil, // 31: protobuf.CommunityChat.MembersEntry - nil, // 32: protobuf.WakuMessageArchiveIndex.ArchivesEntry - (CommunityTokenType)(0), // 33: protobuf.CommunityTokenType - (*ChatIdentity)(nil), // 34: protobuf.ChatIdentity - (*Shard)(nil), // 35: protobuf.Shard -} -var file_communities_proto_depIdxs = []int32{ - 0, // 0: protobuf.CommunityMember.roles:type_name -> protobuf.CommunityMember.Roles - 13, // 1: protobuf.CommunityMember.revealed_accounts:type_name -> protobuf.RevealedAccount - 25, // 2: protobuf.CommunityTokenMetadata.contract_addresses:type_name -> protobuf.CommunityTokenMetadata.ContractAddressesEntry - 33, // 3: protobuf.CommunityTokenMetadata.tokenType:type_name -> protobuf.CommunityTokenType - 1, // 4: protobuf.CommunityPermissions.access:type_name -> protobuf.CommunityPermissions.Access - 26, // 5: protobuf.TokenCriteria.contract_addresses:type_name -> protobuf.TokenCriteria.ContractAddressesEntry - 33, // 6: protobuf.TokenCriteria.type:type_name -> protobuf.CommunityTokenType - 2, // 7: protobuf.CommunityTokenPermission.type:type_name -> protobuf.CommunityTokenPermission.Type - 7, // 8: protobuf.CommunityTokenPermission.token_criteria:type_name -> protobuf.TokenCriteria - 27, // 9: protobuf.CommunityDescription.members:type_name -> protobuf.CommunityDescription.MembersEntry - 6, // 10: protobuf.CommunityDescription.permissions:type_name -> protobuf.CommunityPermissions - 34, // 11: protobuf.CommunityDescription.identity:type_name -> protobuf.ChatIdentity - 28, // 12: protobuf.CommunityDescription.chats:type_name -> protobuf.CommunityDescription.ChatsEntry - 29, // 13: protobuf.CommunityDescription.categories:type_name -> protobuf.CommunityDescription.CategoriesEntry - 10, // 14: protobuf.CommunityDescription.admin_settings:type_name -> protobuf.CommunityAdminSettings - 30, // 15: protobuf.CommunityDescription.token_permissions:type_name -> protobuf.CommunityDescription.TokenPermissionsEntry - 5, // 16: protobuf.CommunityDescription.community_tokens_metadata:type_name -> protobuf.CommunityTokenMetadata - 31, // 17: protobuf.CommunityChat.members:type_name -> protobuf.CommunityChat.MembersEntry - 6, // 18: protobuf.CommunityChat.permissions:type_name -> protobuf.CommunityPermissions - 34, // 19: protobuf.CommunityChat.identity:type_name -> protobuf.ChatIdentity - 13, // 20: protobuf.CommunityRequestToJoin.revealed_accounts:type_name -> protobuf.RevealedAccount - 13, // 21: protobuf.CommunityEditSharedAddresses.revealed_accounts:type_name -> protobuf.RevealedAccount - 9, // 22: protobuf.CommunityRequestToJoinResponse.community:type_name -> protobuf.CommunityDescription - 35, // 23: protobuf.CommunityRequestToJoinResponse.shard:type_name -> protobuf.Shard - 21, // 24: protobuf.WakuMessageArchive.metadata:type_name -> protobuf.WakuMessageArchiveMetadata - 20, // 25: protobuf.WakuMessageArchive.messages:type_name -> protobuf.WakuMessage - 21, // 26: protobuf.WakuMessageArchiveIndexMetadata.metadata:type_name -> protobuf.WakuMessageArchiveMetadata - 32, // 27: protobuf.WakuMessageArchiveIndex.archives:type_name -> protobuf.WakuMessageArchiveIndex.ArchivesEntry - 4, // 28: protobuf.CommunityDescription.MembersEntry.value:type_name -> protobuf.CommunityMember - 11, // 29: protobuf.CommunityDescription.ChatsEntry.value:type_name -> protobuf.CommunityChat - 12, // 30: protobuf.CommunityDescription.CategoriesEntry.value:type_name -> protobuf.CommunityCategory - 8, // 31: protobuf.CommunityDescription.TokenPermissionsEntry.value:type_name -> protobuf.CommunityTokenPermission - 4, // 32: protobuf.CommunityChat.MembersEntry.value:type_name -> protobuf.CommunityMember - 23, // 33: protobuf.WakuMessageArchiveIndex.ArchivesEntry.value:type_name -> protobuf.WakuMessageArchiveIndexMetadata - 34, // [34:34] is the sub-list for method output_type - 34, // [34:34] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name -} - -func init() { file_communities_proto_init() } -func file_communities_proto_init() { - if File_communities_proto != nil { - return - } - file_chat_identity_proto_init() - file_enums_proto_init() - file_shard_proto_init() - if !protoimpl.UnsafeEnabled { - file_communities_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Grant); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityMember); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityTokenMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityPermissions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TokenCriteria); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityTokenPermission); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityDescription); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityAdminSettings); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityChat); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityCategory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevealedAccount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityRequestToJoin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityEditSharedAddresses); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityCancelRequestToJoin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityRequestToJoinResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityRequestToLeave); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityMessageArchiveMagnetlink); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WakuMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WakuMessageArchiveMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WakuMessageArchive); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WakuMessageArchiveIndexMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_communities_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WakuMessageArchiveIndex); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_communities_proto_rawDesc, - NumEnums: 3, - NumMessages: 30, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_communities_proto_goTypes, - DependencyIndexes: file_communities_proto_depIdxs, - EnumInfos: file_communities_proto_enumTypes, - MessageInfos: file_communities_proto_msgTypes, - }.Build() - File_communities_proto = out.File - file_communities_proto_rawDesc = nil - file_communities_proto_goTypes = nil - file_communities_proto_depIdxs = nil +func init() { + proto.RegisterEnum("protobuf.CommunityMember_Roles", CommunityMember_Roles_name, CommunityMember_Roles_value) + proto.RegisterEnum("protobuf.CommunityPermissions_Access", CommunityPermissions_Access_name, CommunityPermissions_Access_value) + proto.RegisterEnum("protobuf.CommunityTokenPermission_Type", CommunityTokenPermission_Type_name, CommunityTokenPermission_Type_value) + proto.RegisterType((*Grant)(nil), "protobuf.Grant") + proto.RegisterType((*CommunityMember)(nil), "protobuf.CommunityMember") + proto.RegisterType((*CommunityTokenMetadata)(nil), "protobuf.CommunityTokenMetadata") + proto.RegisterMapType((map[uint64]string)(nil), "protobuf.CommunityTokenMetadata.ContractAddressesEntry") + proto.RegisterType((*CommunityPermissions)(nil), "protobuf.CommunityPermissions") + proto.RegisterType((*TokenCriteria)(nil), "protobuf.TokenCriteria") + proto.RegisterMapType((map[uint64]string)(nil), "protobuf.TokenCriteria.ContractAddressesEntry") + proto.RegisterType((*CommunityTokenPermission)(nil), "protobuf.CommunityTokenPermission") + proto.RegisterType((*CommunityDescription)(nil), "protobuf.CommunityDescription") + proto.RegisterMapType((map[string]*CommunityCategory)(nil), "protobuf.CommunityDescription.CategoriesEntry") + proto.RegisterMapType((map[string]*CommunityChat)(nil), "protobuf.CommunityDescription.ChatsEntry") + proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityDescription.MembersEntry") + proto.RegisterMapType((map[string][]byte)(nil), "protobuf.CommunityDescription.PrivateDataEntry") + proto.RegisterMapType((map[string]*CommunityTokenPermission)(nil), "protobuf.CommunityDescription.TokenPermissionsEntry") + proto.RegisterType((*CommunityAdminSettings)(nil), "protobuf.CommunityAdminSettings") + proto.RegisterType((*CommunityChat)(nil), "protobuf.CommunityChat") + proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry") + proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory") + proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount") + proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin") + proto.RegisterType((*CommunityEditSharedAddresses)(nil), "protobuf.CommunityEditSharedAddresses") + proto.RegisterType((*CommunityCancelRequestToJoin)(nil), "protobuf.CommunityCancelRequestToJoin") + proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse") + proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave") + proto.RegisterType((*CommunityMessageArchiveMagnetlink)(nil), "protobuf.CommunityMessageArchiveMagnetlink") + proto.RegisterType((*WakuMessage)(nil), "protobuf.WakuMessage") + proto.RegisterType((*WakuMessageArchiveMetadata)(nil), "protobuf.WakuMessageArchiveMetadata") + proto.RegisterType((*WakuMessageArchive)(nil), "protobuf.WakuMessageArchive") + proto.RegisterType((*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndexMetadata") + proto.RegisterType((*WakuMessageArchiveIndex)(nil), "protobuf.WakuMessageArchiveIndex") + proto.RegisterMapType((map[string]*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndex.ArchivesEntry") +} + +func init() { + proto.RegisterFile("communities.proto", fileDescriptor_f937943d74c1cd8b) +} + +var fileDescriptor_f937943d74c1cd8b = []byte{ + // 2166 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x51, 0x73, 0x23, 0x47, + 0x11, 0xbe, 0xd5, 0x4a, 0xb6, 0xd4, 0x92, 0x6c, 0x79, 0x72, 0x67, 0xef, 0xf9, 0xee, 0x72, 0xba, + 0x85, 0x14, 0xce, 0x51, 0xe8, 0x12, 0x03, 0xc5, 0x55, 0x42, 0x2e, 0xd1, 0xc9, 0xe2, 0x50, 0xce, + 0x5a, 0x39, 0x63, 0x39, 0x47, 0x52, 0xc0, 0xd6, 0x78, 0x77, 0x6c, 0x4f, 0x9d, 0xb4, 0x2b, 0x76, + 0x46, 0x2e, 0xc4, 0x03, 0x0f, 0xc0, 0x2f, 0x80, 0x67, 0x8a, 0x07, 0xde, 0xe1, 0x27, 0xf0, 0x40, + 0x15, 0x8f, 0x79, 0xe7, 0x07, 0xf0, 0xce, 0x4f, 0xa0, 0x66, 0x66, 0x77, 0xb5, 0x2b, 0xc9, 0xe7, + 0x0b, 0x81, 0xaa, 0x3c, 0x69, 0xbb, 0xa7, 0xa7, 0xa7, 0xbb, 0xe7, 0xeb, 0x9e, 0x6e, 0xc1, 0x96, + 0x17, 0x8e, 0xc7, 0xd3, 0x80, 0x09, 0x46, 0x79, 0x6b, 0x12, 0x85, 0x22, 0x44, 0x65, 0xf5, 0x73, + 0x3a, 0x3d, 0xdb, 0x7d, 0xc3, 0xbb, 0x20, 0xc2, 0x65, 0x3e, 0x0d, 0x04, 0x13, 0x33, 0xbd, 0xbc, + 0x5b, 0xa5, 0xc1, 0x74, 0xcc, 0x13, 0x82, 0x5f, 0x90, 0xc8, 0xd7, 0x84, 0x7d, 0x09, 0xa5, 0x67, + 0x11, 0x09, 0x04, 0x7a, 0x00, 0xb5, 0x44, 0xed, 0xcc, 0x65, 0xbe, 0x65, 0x34, 0x8d, 0xbd, 0x1a, + 0xae, 0xa6, 0xbc, 0x9e, 0x8f, 0xee, 0x40, 0x65, 0x4c, 0xc7, 0xa7, 0x34, 0x92, 0xeb, 0x05, 0xb5, + 0x5e, 0xd6, 0x8c, 0x9e, 0x8f, 0x76, 0x60, 0x3d, 0x3e, 0xd9, 0x32, 0x9b, 0xc6, 0x5e, 0x05, 0xaf, + 0x49, 0xb2, 0xe7, 0xa3, 0x9b, 0x50, 0xf2, 0x46, 0xa1, 0xf7, 0xd2, 0x2a, 0x36, 0x8d, 0xbd, 0x22, + 0xd6, 0x84, 0xfd, 0x8f, 0x02, 0x6c, 0x76, 0x12, 0xdd, 0x7d, 0xa5, 0x04, 0x7d, 0x1f, 0x4a, 0x51, + 0x38, 0xa2, 0xdc, 0x32, 0x9a, 0xe6, 0xde, 0xc6, 0xfe, 0xfd, 0x56, 0xe2, 0x54, 0x6b, 0x41, 0xb2, + 0x85, 0xa5, 0x18, 0xd6, 0xd2, 0xe8, 0x63, 0xd8, 0x8a, 0xe8, 0x25, 0x25, 0x23, 0xea, 0xbb, 0xc4, + 0xf3, 0xc2, 0x69, 0x20, 0xb8, 0x55, 0x68, 0x9a, 0x7b, 0xd5, 0xfd, 0xdb, 0x73, 0x15, 0x38, 0x16, + 0x69, 0x6b, 0x89, 0xa7, 0x05, 0xcb, 0xc0, 0x8d, 0x28, 0xcf, 0xe4, 0xe8, 0x21, 0x6c, 0x8d, 0x08, + 0x17, 0xee, 0x74, 0xe2, 0x13, 0x41, 0x5d, 0x6d, 0xb8, 0xa9, 0x0c, 0xdf, 0x94, 0x0b, 0x27, 0x8a, + 0xdf, 0x51, 0x2e, 0xfc, 0xd6, 0x80, 0x92, 0x32, 0x04, 0xd5, 0xa1, 0x82, 0x07, 0x87, 0x5d, 0xd7, + 0x19, 0x38, 0xdd, 0xc6, 0x0d, 0xb4, 0x01, 0xa0, 0xc8, 0xc1, 0x0b, 0xa7, 0x8b, 0x1b, 0x46, 0x4a, + 0xb7, 0x0f, 0xfa, 0x3d, 0xa7, 0x51, 0x44, 0xb7, 0x60, 0x4b, 0xd1, 0xc3, 0xc1, 0xf3, 0xae, 0xe3, + 0xf6, 0xdb, 0xc7, 0xc3, 0x2e, 0x6e, 0x94, 0xec, 0x62, 0xb9, 0xd0, 0x28, 0xd8, 0xc5, 0xb2, 0xd9, + 0x30, 0x1f, 0x6a, 0x81, 0x7e, 0xdb, 0x69, 0x3f, 0xeb, 0xba, 0x27, 0xc7, 0x5d, 0x7c, 0xfc, 0xf0, + 0x96, 0x66, 0x0d, 0x0e, 0xba, 0xb8, 0x3d, 0xec, 0xba, 0x9d, 0x81, 0x33, 0xec, 0x3a, 0x43, 0xfb, + 0x37, 0x26, 0x6c, 0xa7, 0xe1, 0x19, 0x86, 0x2f, 0x69, 0xd0, 0xa7, 0x82, 0xf8, 0x44, 0x10, 0x74, + 0x06, 0xc8, 0x0b, 0x03, 0x11, 0x11, 0x4f, 0xb8, 0xc4, 0xf7, 0x23, 0xca, 0x79, 0x1c, 0xdc, 0xea, + 0xfe, 0x0f, 0x56, 0x04, 0x37, 0xb7, 0xbb, 0xd5, 0x89, 0xb7, 0xb6, 0x93, 0x9d, 0xdd, 0x40, 0x44, + 0x33, 0xbc, 0xe5, 0x2d, 0xf2, 0x51, 0x13, 0xaa, 0x3e, 0xe5, 0x5e, 0xc4, 0x26, 0x82, 0x85, 0x81, + 0x42, 0x46, 0x05, 0x67, 0x59, 0x12, 0x03, 0x6c, 0x4c, 0xce, 0x69, 0x0c, 0x0d, 0x4d, 0xa0, 0xf7, + 0xa0, 0x22, 0xe4, 0x91, 0xc3, 0xd9, 0x84, 0x2a, 0x74, 0x6c, 0xec, 0xdf, 0xbd, 0xca, 0x2c, 0x29, + 0x83, 0xe7, 0xe2, 0x68, 0x1b, 0xd6, 0xf8, 0x6c, 0x7c, 0x1a, 0x8e, 0xac, 0x92, 0x46, 0x9b, 0xa6, + 0x10, 0x82, 0x62, 0x40, 0xc6, 0xd4, 0x5a, 0x53, 0x5c, 0xf5, 0x8d, 0x76, 0xa1, 0xec, 0x53, 0x8f, + 0x8d, 0xc9, 0x88, 0x5b, 0xeb, 0x4d, 0x63, 0xaf, 0x8e, 0x53, 0x7a, 0xf7, 0x40, 0x46, 0x6f, 0x95, + 0xa3, 0xa8, 0x01, 0xe6, 0x4b, 0x3a, 0x53, 0x79, 0x50, 0xc4, 0xf2, 0x53, 0x7a, 0x71, 0x49, 0x46, + 0x53, 0x1a, 0x7b, 0xa8, 0x89, 0xf7, 0x0a, 0x8f, 0x0d, 0xfb, 0x5f, 0x06, 0xdc, 0x4c, 0xed, 0x3d, + 0xa2, 0xd1, 0x98, 0x71, 0xce, 0xc2, 0x80, 0xa3, 0xdb, 0x50, 0xa6, 0x01, 0x77, 0xc3, 0x60, 0xa4, + 0x35, 0x95, 0xf1, 0x3a, 0x0d, 0xf8, 0x20, 0x18, 0xcd, 0x90, 0x05, 0xeb, 0x93, 0x88, 0x5d, 0x12, + 0xa1, 0xf5, 0x95, 0x71, 0x42, 0xa2, 0x0f, 0x60, 0x8d, 0x78, 0x1e, 0xe5, 0x5c, 0x85, 0x6b, 0x63, + 0xff, 0xad, 0x15, 0x41, 0xc9, 0x1c, 0xd2, 0x6a, 0x2b, 0x61, 0x1c, 0x6f, 0xb2, 0x3f, 0x83, 0x35, + 0xcd, 0x41, 0x08, 0x36, 0x4e, 0x9c, 0xe7, 0xce, 0xe0, 0x85, 0xe3, 0xb6, 0x3b, 0x9d, 0xee, 0xf1, + 0x71, 0xe3, 0x06, 0xda, 0x84, 0x6a, 0xfb, 0x64, 0x38, 0x50, 0x8c, 0xa3, 0x61, 0xc3, 0x40, 0x3b, + 0xb0, 0xd9, 0x73, 0x3e, 0xed, 0x0d, 0xdb, 0xc3, 0xde, 0xc0, 0x71, 0x07, 0xce, 0xe1, 0x67, 0x8d, + 0xc2, 0x6e, 0xa1, 0x6c, 0xa0, 0x2d, 0xa8, 0xf7, 0xdb, 0xce, 0x49, 0xfb, 0x30, 0x91, 0x35, 0xed, + 0xdf, 0x99, 0x50, 0x57, 0xd7, 0xd1, 0x89, 0x98, 0xa0, 0x11, 0x23, 0xe8, 0x67, 0xaf, 0xc0, 0x58, + 0x6b, 0x6e, 0x77, 0x6e, 0xd3, 0x97, 0x80, 0xd6, 0x3b, 0x50, 0x14, 0x12, 0x1d, 0x85, 0xd7, 0x40, + 0x87, 0x92, 0xcc, 0x00, 0xc3, 0x5c, 0x09, 0x8c, 0x62, 0x06, 0x18, 0xdb, 0xb0, 0x46, 0xc6, 0x32, + 0xf1, 0x13, 0x10, 0x69, 0x4a, 0x16, 0x3a, 0x85, 0x34, 0x97, 0xf9, 0xdc, 0x5a, 0x6b, 0x9a, 0x7b, + 0x45, 0x5c, 0x56, 0x8c, 0x9e, 0xcf, 0xd1, 0x7d, 0xa8, 0xca, 0x2b, 0x9d, 0x10, 0x21, 0x68, 0x14, + 0x28, 0x40, 0x55, 0x30, 0xd0, 0x80, 0x1f, 0x69, 0x4e, 0x0e, 0x6e, 0x65, 0x85, 0x9e, 0xff, 0x35, + 0xdc, 0xfe, 0x60, 0x82, 0x95, 0x0f, 0xc0, 0x1c, 0x0e, 0x68, 0x03, 0x0a, 0x71, 0xf9, 0xae, 0xe0, + 0x02, 0xf3, 0xd1, 0xfb, 0xb9, 0x10, 0x7e, 0xeb, 0xaa, 0x10, 0xce, 0x35, 0xb4, 0x32, 0xd1, 0x7c, + 0x02, 0x1b, 0x3a, 0x12, 0x5e, 0x7c, 0x77, 0x96, 0xa9, 0xae, 0x76, 0xe7, 0x8a, 0xab, 0xc5, 0x75, + 0x91, 0x83, 0xc7, 0x6d, 0x28, 0xc7, 0xaf, 0x02, 0xb7, 0x8a, 0x4d, 0x73, 0xaf, 0x82, 0xd7, 0xf5, + 0xb3, 0xc0, 0xd1, 0x3d, 0x00, 0xc6, 0xdd, 0x24, 0x05, 0x4a, 0x2a, 0x05, 0x2a, 0x8c, 0x1f, 0x69, + 0x86, 0xfd, 0x57, 0x03, 0x8a, 0x2a, 0xd3, 0xef, 0x82, 0x95, 0x80, 0x58, 0x17, 0xcc, 0xa3, 0x2e, + 0xee, 0xf7, 0x8e, 0x8f, 0x7b, 0x03, 0xa7, 0x71, 0x03, 0x35, 0xa0, 0xf6, 0xb4, 0xdb, 0x19, 0xf4, + 0x93, 0xea, 0xaa, 0x60, 0x1b, 0x73, 0xfa, 0xdd, 0xfe, 0xd3, 0x2e, 0x6e, 0x14, 0xd0, 0x4d, 0x68, + 0x74, 0xda, 0x8e, 0xfb, 0x69, 0xaf, 0xfb, 0xc2, 0xed, 0xfc, 0xb8, 0xed, 0x38, 0xdd, 0xc3, 0x86, + 0x89, 0xee, 0xc1, 0xed, 0x94, 0xdb, 0x76, 0x0e, 0xdc, 0xa3, 0xc1, 0xf1, 0x30, 0x5d, 0x2e, 0xa2, + 0x1d, 0x78, 0x23, 0xd6, 0x93, 0xaf, 0xd3, 0x68, 0x1b, 0x50, 0x6e, 0x41, 0x97, 0xf9, 0x35, 0xfb, + 0x8f, 0xd5, 0x4c, 0x11, 0x38, 0xc8, 0x57, 0x3f, 0xfd, 0x90, 0x18, 0x99, 0x17, 0x10, 0x75, 0x61, + 0x5d, 0x3f, 0x9e, 0xc9, 0x63, 0xf5, 0xed, 0x15, 0x57, 0x93, 0x51, 0xd3, 0xd2, 0x6f, 0x5f, 0x9c, + 0x2b, 0xc9, 0x5e, 0xf4, 0x11, 0x54, 0x27, 0xf3, 0x5a, 0xa0, 0x40, 0x5f, 0xdd, 0x7f, 0xf3, 0xd5, + 0x15, 0x03, 0x67, 0xb7, 0xa0, 0x7d, 0x28, 0x27, 0xed, 0x82, 0xba, 0x86, 0xea, 0xfe, 0x76, 0x66, + 0xbb, 0xba, 0x2d, 0xbd, 0x8a, 0x53, 0x39, 0xf4, 0x21, 0x94, 0xe4, 0x3d, 0xea, 0xec, 0xa8, 0xee, + 0xbf, 0x7d, 0x8d, 0xe9, 0x52, 0x4b, 0x6c, 0xb8, 0xde, 0x27, 0x81, 0x71, 0x4a, 0x02, 0x77, 0xc4, + 0xb8, 0xb0, 0xd6, 0x35, 0x30, 0x4e, 0x49, 0x70, 0xc8, 0xb8, 0x40, 0x0e, 0x80, 0x47, 0x04, 0x3d, + 0x0f, 0x23, 0x46, 0x65, 0x06, 0x2d, 0x94, 0x92, 0xd5, 0x07, 0xa4, 0x1b, 0xf4, 0x29, 0x19, 0x0d, + 0xe8, 0x31, 0x58, 0x24, 0xf2, 0x2e, 0xd8, 0x25, 0x75, 0xc7, 0xe4, 0x3c, 0xa0, 0x62, 0xc4, 0x82, + 0x97, 0xf1, 0xd3, 0x5e, 0x51, 0x37, 0xb2, 0x1d, 0xaf, 0xf7, 0xd3, 0x65, 0xf5, 0xc2, 0xa3, 0x67, + 0xb0, 0x41, 0xfc, 0x31, 0x0b, 0x5c, 0x4e, 0x85, 0x60, 0xc1, 0x39, 0xb7, 0x40, 0xc5, 0xa7, 0xb9, + 0xc2, 0x9a, 0xb6, 0x14, 0x3c, 0x8e, 0xe5, 0x70, 0x9d, 0x64, 0x49, 0xf4, 0x0d, 0xa8, 0xb3, 0x40, + 0x44, 0xa1, 0x3b, 0xa6, 0x9c, 0xcb, 0x77, 0xb0, 0xaa, 0xd2, 0xb3, 0xa6, 0x98, 0x7d, 0xcd, 0x93, + 0x42, 0xe1, 0x34, 0x2b, 0x54, 0xd3, 0x42, 0x8a, 0x99, 0x08, 0x35, 0xa1, 0x42, 0x03, 0x2f, 0x9a, + 0x4d, 0x04, 0xf5, 0xad, 0xba, 0x4c, 0x1a, 0xd5, 0xc9, 0xcc, 0x99, 0xb2, 0xd0, 0x09, 0x72, 0xce, + 0xad, 0x0d, 0x15, 0x55, 0xf5, 0x8d, 0x08, 0x6c, 0xe9, 0x34, 0xce, 0x42, 0x65, 0x53, 0x45, 0xf6, + 0x7b, 0xd7, 0x44, 0x76, 0xa1, 0x38, 0xc4, 0xf1, 0x6d, 0x88, 0x05, 0x36, 0xfa, 0x29, 0xdc, 0x9e, + 0xf7, 0x8f, 0x6a, 0x95, 0xbb, 0xe3, 0xb8, 0x97, 0xb0, 0x1a, 0xea, 0xa8, 0xe6, 0x75, 0x3d, 0x07, + 0xde, 0xf1, 0x72, 0x7c, 0x9e, 0xb6, 0x32, 0xef, 0xc0, 0x4d, 0xe2, 0x09, 0x75, 0x85, 0x1a, 0xf7, + 0xae, 0x6a, 0xd8, 0xac, 0x2d, 0x75, 0x7f, 0x48, 0xaf, 0xc5, 0x09, 0xd2, 0x51, 0x35, 0x7c, 0x03, + 0x0a, 0xbd, 0x03, 0x0b, 0xe9, 0x32, 0xd8, 0x3b, 0x40, 0x9f, 0x40, 0x35, 0xae, 0x35, 0x07, 0xd2, + 0x22, 0x5f, 0x59, 0xf4, 0xe8, 0x1a, 0xe7, 0x8f, 0xe6, 0x3b, 0xb4, 0xdf, 0x59, 0x1d, 0xbb, 0x27, + 0x50, 0xcb, 0xe6, 0x64, 0xb6, 0x84, 0x57, 0x74, 0x09, 0x7f, 0x94, 0x2d, 0xe1, 0xb9, 0x76, 0x74, + 0xa1, 0xa3, 0xcd, 0x54, 0xf7, 0xdd, 0x4f, 0x00, 0xe6, 0xf9, 0xb2, 0x42, 0xe9, 0x77, 0xf2, 0x4a, + 0x77, 0x56, 0x28, 0x95, 0xfb, 0xb3, 0x2a, 0x3f, 0x87, 0xcd, 0x85, 0x0c, 0x59, 0xa1, 0xf7, 0xdd, + 0xbc, 0xde, 0x3b, 0xab, 0xf4, 0x6a, 0x25, 0xb3, 0xac, 0xee, 0x73, 0xb8, 0xb5, 0x12, 0x23, 0x2b, + 0x4e, 0x78, 0x9c, 0x3f, 0xc1, 0xbe, 0xfe, 0x2d, 0xca, 0x1e, 0xf4, 0x04, 0x1a, 0x8b, 0xf7, 0xb1, + 0xe2, 0x8c, 0xdc, 0xab, 0x59, 0xcb, 0xbe, 0x9a, 0x3f, 0xcf, 0x34, 0xca, 0xb9, 0x6c, 0x45, 0x07, + 0x70, 0x7f, 0xc2, 0x82, 0x24, 0xef, 0x5c, 0x32, 0x1a, 0xa5, 0x30, 0xa3, 0x01, 0x39, 0x1d, 0x51, + 0x3f, 0x6e, 0xde, 0xee, 0x4c, 0x58, 0x10, 0x67, 0x62, 0x7b, 0x34, 0x4a, 0x2f, 0x5f, 0x89, 0xd8, + 0xff, 0x2c, 0x40, 0x3d, 0x77, 0x03, 0xe8, 0xc9, 0xbc, 0xc4, 0xeb, 0x8e, 0xe8, 0x9b, 0x57, 0xdc, + 0xd5, 0xeb, 0xd5, 0xf6, 0xc2, 0x57, 0xab, 0xed, 0xe6, 0x6b, 0xd6, 0xf6, 0xfb, 0x50, 0x8d, 0xab, + 0xa7, 0x1a, 0x04, 0x75, 0xc3, 0x94, 0x14, 0x54, 0x39, 0x07, 0xee, 0x42, 0x79, 0x12, 0x72, 0xa6, + 0x9a, 0x7d, 0xf9, 0x60, 0x94, 0x70, 0x4a, 0xff, 0x9f, 0x72, 0xc2, 0xf6, 0x61, 0x6b, 0x09, 0x84, + 0x8b, 0x86, 0x1a, 0x4b, 0x86, 0x26, 0x3d, 0x5f, 0x21, 0x3f, 0x0c, 0xa4, 0xc6, 0x9b, 0x79, 0xe3, + 0xed, 0xdf, 0x1b, 0xb0, 0xb9, 0x30, 0x27, 0xca, 0x36, 0x3d, 0xee, 0x6b, 0xe3, 0x03, 0x12, 0x12, + 0xdd, 0x85, 0x0a, 0x67, 0xe7, 0x01, 0x11, 0xd3, 0x28, 0x41, 0xdb, 0x9c, 0x21, 0x7b, 0x48, 0xef, + 0x82, 0x30, 0xdd, 0x43, 0x9a, 0xba, 0x87, 0x54, 0x0c, 0xd9, 0xfb, 0x3c, 0x84, 0x06, 0xe3, 0x6d, + 0x16, 0xf9, 0x51, 0x38, 0x89, 0xfb, 0x40, 0x15, 0xe7, 0x32, 0x5e, 0xe2, 0xdb, 0xff, 0x36, 0x32, + 0xb8, 0xc5, 0xf4, 0x17, 0x53, 0xca, 0xc5, 0x30, 0xfc, 0x38, 0x64, 0x57, 0x35, 0x16, 0xf1, 0xcc, + 0x91, 0xf1, 0x5c, 0xce, 0x1c, 0x8e, 0x74, 0xfe, 0xca, 0x21, 0x7d, 0x71, 0xfa, 0x2f, 0x2e, 0x4f, + 0xff, 0x0f, 0xa0, 0xe6, 0x33, 0x3e, 0x19, 0x91, 0x99, 0x56, 0x5d, 0x8a, 0xc7, 0x3c, 0xcd, 0x53, + 0xea, 0x7f, 0xb4, 0x6a, 0x12, 0x5f, 0xbb, 0x66, 0x12, 0x5f, 0x9e, 0xc2, 0xed, 0x3f, 0x19, 0x70, + 0x37, 0x75, 0xb9, 0xeb, 0x33, 0x71, 0x7c, 0x41, 0x22, 0xea, 0xcf, 0xc7, 0x82, 0xd5, 0x8e, 0x2f, + 0x3a, 0x51, 0x58, 0x76, 0x62, 0xa5, 0x85, 0xe6, 0x97, 0xb7, 0xf0, 0x2f, 0x59, 0x0b, 0x3b, 0x24, + 0xf0, 0xe8, 0xe8, 0x6b, 0x7d, 0x35, 0xf6, 0x17, 0x05, 0x78, 0x73, 0x35, 0x8a, 0x30, 0xe5, 0x93, + 0x30, 0xe0, 0xf4, 0x0a, 0x93, 0x7f, 0x08, 0x95, 0xf4, 0xa8, 0x57, 0x54, 0xa0, 0xcc, 0xab, 0x89, + 0xe7, 0x1b, 0x64, 0xb6, 0xc9, 0xa9, 0x54, 0x75, 0x2b, 0xa6, 0x02, 0x78, 0x4a, 0xcb, 0xf3, 0xce, + 0x23, 0x12, 0x88, 0xd8, 0x23, 0x4d, 0x2c, 0xb9, 0x5b, 0x5a, 0x76, 0xf7, 0x1e, 0x80, 0x6e, 0xe4, + 0xdc, 0x69, 0xc4, 0xe2, 0x49, 0xbf, 0xa2, 0x39, 0x27, 0x11, 0x43, 0x1f, 0xc0, 0x1d, 0x69, 0x1f, + 0xf5, 0x04, 0xf5, 0x5d, 0x11, 0x4e, 0x98, 0x97, 0x4c, 0x19, 0xae, 0x2c, 0x45, 0xeb, 0x4a, 0xa1, + 0x95, 0x8a, 0x0c, 0xa5, 0x44, 0xfc, 0xb0, 0x3c, 0xa7, 0x33, 0xf4, 0x16, 0x94, 0xd4, 0x1f, 0x64, + 0x6a, 0x76, 0xab, 0xee, 0x6f, 0xce, 0x9d, 0x95, 0x28, 0xf4, 0xb1, 0x5e, 0xb5, 0x31, 0xec, 0x2c, + 0xc7, 0xf3, 0x90, 0x92, 0x4b, 0xfa, 0x5f, 0xa3, 0xd3, 0xfe, 0x09, 0x3c, 0xc8, 0xd4, 0x40, 0xfd, + 0xcc, 0x2c, 0x76, 0xa6, 0x57, 0x68, 0xcf, 0xc7, 0xa4, 0xb0, 0x10, 0x13, 0xfb, 0x6f, 0x06, 0x54, + 0x5f, 0x90, 0x97, 0xd3, 0xa4, 0x8d, 0x6c, 0x80, 0xc9, 0xd9, 0x79, 0xfc, 0x27, 0x9f, 0xfc, 0x94, + 0xd5, 0x4c, 0xb0, 0x31, 0xe5, 0x82, 0x8c, 0x27, 0x6a, 0x7f, 0x11, 0xcf, 0x19, 0xf2, 0x50, 0x15, + 0x49, 0x75, 0x89, 0x35, 0xac, 0x09, 0xf5, 0x17, 0x06, 0x99, 0x8d, 0x42, 0x92, 0xa0, 0x32, 0x21, + 0xf5, 0x8a, 0xef, 0xb3, 0xe0, 0x3c, 0xbe, 0xc0, 0x84, 0x94, 0x35, 0xf9, 0x82, 0xf0, 0x0b, 0x75, + 0x6d, 0x35, 0xac, 0xbe, 0x91, 0x0d, 0x35, 0x71, 0xc1, 0x22, 0xff, 0x88, 0x44, 0x32, 0x0e, 0xf1, + 0x4c, 0x9d, 0xe3, 0xd9, 0xbf, 0x86, 0xdd, 0x8c, 0x03, 0x49, 0x58, 0x92, 0xfe, 0xd0, 0x82, 0xf5, + 0x4b, 0x1a, 0xc9, 0x37, 0x4f, 0xf9, 0x54, 0xc7, 0x09, 0x29, 0xcf, 0x3b, 0x8b, 0xc2, 0x71, 0xec, + 0x92, 0xfa, 0x96, 0xbd, 0xa1, 0x08, 0xe3, 0xbf, 0xf5, 0x0a, 0x22, 0x94, 0xe7, 0x7b, 0x61, 0x20, + 0x68, 0x20, 0x14, 0x18, 0xd4, 0xa4, 0x5a, 0xc3, 0x39, 0x9e, 0xfd, 0x67, 0x03, 0xd0, 0xb2, 0x01, + 0xaf, 0x38, 0xf8, 0x23, 0x28, 0xa7, 0xfd, 0xaf, 0xce, 0x9b, 0xcc, 0xeb, 0x7f, 0xb5, 0x2b, 0x38, + 0xdd, 0x85, 0xde, 0x95, 0x1a, 0x94, 0x4c, 0x52, 0xa3, 0x6e, 0xad, 0xd4, 0x80, 0x53, 0x31, 0xfb, + 0xef, 0x06, 0xdc, 0x5f, 0xd6, 0xdd, 0x0b, 0x7c, 0xfa, 0xcb, 0xd7, 0x88, 0xd5, 0x57, 0x37, 0x79, + 0x1b, 0xd6, 0xc2, 0xb3, 0x33, 0x4e, 0x45, 0x1c, 0xdd, 0x98, 0x92, 0xb7, 0xc0, 0xd9, 0xaf, 0x68, + 0xfc, 0x1f, 0xb0, 0xfa, 0x5e, 0xc4, 0x48, 0x31, 0xc5, 0x88, 0xfd, 0x85, 0x01, 0x3b, 0x57, 0x78, + 0x81, 0x9e, 0x43, 0x39, 0x9e, 0xd6, 0x92, 0xa6, 0xea, 0xd1, 0xab, 0x6c, 0x54, 0x9b, 0x5a, 0x31, + 0x11, 0xf7, 0x57, 0xa9, 0x82, 0xdd, 0x33, 0xa8, 0xe7, 0x96, 0x56, 0xb4, 0x2b, 0x1f, 0xe6, 0xdb, + 0x95, 0xb7, 0xaf, 0x3d, 0x2c, 0x8d, 0xca, 0xbc, 0x7d, 0x79, 0x5a, 0xff, 0xbc, 0xda, 0x7a, 0xf4, + 0x7e, 0xb2, 0xf3, 0x74, 0x4d, 0x7d, 0x7d, 0xf7, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x53, 0x4d, + 0x30, 0x03, 0xc9, 0x17, 0x00, 0x00, } diff --git a/protocol/protobuf/communities.proto b/protocol/protobuf/communities.proto index 05ec6413054..44d7bcc812c 100644 --- a/protocol/protobuf/communities.proto +++ b/protocol/protobuf/communities.proto @@ -100,6 +100,9 @@ message CommunityDescription { repeated CommunityTokenMetadata community_tokens_metadata = 16; uint64 active_members_count = 17; string ID = 18; + + // key is hash ratchet key_id + seq_no + map privateData = 100; } message CommunityAdminSettings { diff --git a/protocol/protobuf/community_update.pb.go b/protocol/protobuf/community_update.pb.go index d288f5edbe1..a53e842b9b5 100644 --- a/protocol/protobuf/community_update.pb.go +++ b/protocol/protobuf/community_update.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.4 // source: community_update.proto package protobuf import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" ) -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) -) +// 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 type CommunityEvent_EventType int32 @@ -43,82 +43,57 @@ const ( CommunityEvent_COMMUNITY_TOKEN_ADD CommunityEvent_EventType = 17 ) -// Enum value maps for CommunityEvent_EventType. -var ( - CommunityEvent_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "COMMUNITY_EDIT", - 2: "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE", - 3: "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE", - 4: "COMMUNITY_CATEGORY_CREATE", - 5: "COMMUNITY_CATEGORY_DELETE", - 6: "COMMUNITY_CATEGORY_EDIT", - 7: "COMMUNITY_CHANNEL_CREATE", - 8: "COMMUNITY_CHANNEL_DELETE", - 9: "COMMUNITY_CHANNEL_EDIT", - 10: "COMMUNITY_CATEGORY_REORDER", - 11: "COMMUNITY_CHANNEL_REORDER", - 12: "COMMUNITY_REQUEST_TO_JOIN_ACCEPT", - 13: "COMMUNITY_REQUEST_TO_JOIN_REJECT", - 14: "COMMUNITY_MEMBER_KICK", - 15: "COMMUNITY_MEMBER_BAN", - 16: "COMMUNITY_MEMBER_UNBAN", - 17: "COMMUNITY_TOKEN_ADD", - } - CommunityEvent_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "COMMUNITY_EDIT": 1, - "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE": 2, - "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE": 3, - "COMMUNITY_CATEGORY_CREATE": 4, - "COMMUNITY_CATEGORY_DELETE": 5, - "COMMUNITY_CATEGORY_EDIT": 6, - "COMMUNITY_CHANNEL_CREATE": 7, - "COMMUNITY_CHANNEL_DELETE": 8, - "COMMUNITY_CHANNEL_EDIT": 9, - "COMMUNITY_CATEGORY_REORDER": 10, - "COMMUNITY_CHANNEL_REORDER": 11, - "COMMUNITY_REQUEST_TO_JOIN_ACCEPT": 12, - "COMMUNITY_REQUEST_TO_JOIN_REJECT": 13, - "COMMUNITY_MEMBER_KICK": 14, - "COMMUNITY_MEMBER_BAN": 15, - "COMMUNITY_MEMBER_UNBAN": 16, - "COMMUNITY_TOKEN_ADD": 17, - } -) - -func (x CommunityEvent_EventType) Enum() *CommunityEvent_EventType { - p := new(CommunityEvent_EventType) - *p = x - return p +var CommunityEvent_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "COMMUNITY_EDIT", + 2: "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE", + 3: "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE", + 4: "COMMUNITY_CATEGORY_CREATE", + 5: "COMMUNITY_CATEGORY_DELETE", + 6: "COMMUNITY_CATEGORY_EDIT", + 7: "COMMUNITY_CHANNEL_CREATE", + 8: "COMMUNITY_CHANNEL_DELETE", + 9: "COMMUNITY_CHANNEL_EDIT", + 10: "COMMUNITY_CATEGORY_REORDER", + 11: "COMMUNITY_CHANNEL_REORDER", + 12: "COMMUNITY_REQUEST_TO_JOIN_ACCEPT", + 13: "COMMUNITY_REQUEST_TO_JOIN_REJECT", + 14: "COMMUNITY_MEMBER_KICK", + 15: "COMMUNITY_MEMBER_BAN", + 16: "COMMUNITY_MEMBER_UNBAN", + 17: "COMMUNITY_TOKEN_ADD", +} + +var CommunityEvent_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "COMMUNITY_EDIT": 1, + "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE": 2, + "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE": 3, + "COMMUNITY_CATEGORY_CREATE": 4, + "COMMUNITY_CATEGORY_DELETE": 5, + "COMMUNITY_CATEGORY_EDIT": 6, + "COMMUNITY_CHANNEL_CREATE": 7, + "COMMUNITY_CHANNEL_DELETE": 8, + "COMMUNITY_CHANNEL_EDIT": 9, + "COMMUNITY_CATEGORY_REORDER": 10, + "COMMUNITY_CHANNEL_REORDER": 11, + "COMMUNITY_REQUEST_TO_JOIN_ACCEPT": 12, + "COMMUNITY_REQUEST_TO_JOIN_REJECT": 13, + "COMMUNITY_MEMBER_KICK": 14, + "COMMUNITY_MEMBER_BAN": 15, + "COMMUNITY_MEMBER_UNBAN": 16, + "COMMUNITY_TOKEN_ADD": 17, } func (x CommunityEvent_EventType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CommunityEvent_EventType) Descriptor() protoreflect.EnumDescriptor { - return file_community_update_proto_enumTypes[0].Descriptor() -} - -func (CommunityEvent_EventType) Type() protoreflect.EnumType { - return &file_community_update_proto_enumTypes[0] -} - -func (x CommunityEvent_EventType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(CommunityEvent_EventType_name, int32(x)) } -// Deprecated: Use CommunityEvent_EventType.Descriptor instead. func (CommunityEvent_EventType) EnumDescriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{0, 0} + return fileDescriptor_52ed23dfc73918ab, []int{0, 0} } type CommunityEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - CommunityEventClock uint64 `protobuf:"varint,1,opt,name=community_event_clock,json=communityEventClock,proto3" json:"community_event_clock,omitempty"` Type CommunityEvent_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityEvent_EventType" json:"type,omitempty"` CommunityConfig *CommunityConfig `protobuf:"bytes,3,opt,name=community_config,json=communityConfig,proto3" json:"community_config,omitempty"` @@ -130,399 +105,363 @@ type CommunityEvent struct { RejectedRequestsToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,9,rep,name=rejectedRequestsToJoin,proto3" json:"rejectedRequestsToJoin,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` AcceptedRequestsToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,10,rep,name=acceptedRequestsToJoin,proto3" json:"acceptedRequestsToJoin,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` TokenMetadata *CommunityTokenMetadata `protobuf:"bytes,11,opt,name=token_metadata,json=tokenMetadata,proto3" json:"token_metadata,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityEvent) Reset() { - *x = CommunityEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityEvent) Reset() { *m = CommunityEvent{} } +func (m *CommunityEvent) String() string { return proto.CompactTextString(m) } +func (*CommunityEvent) ProtoMessage() {} +func (*CommunityEvent) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{0} } -func (x *CommunityEvent) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityEvent) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityEvent.Unmarshal(m, b) } - -func (*CommunityEvent) ProtoMessage() {} - -func (x *CommunityEvent) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *CommunityEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityEvent.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityEvent.ProtoReflect.Descriptor instead. -func (*CommunityEvent) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{0} +func (m *CommunityEvent) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityEvent.Merge(m, src) +} +func (m *CommunityEvent) XXX_Size() int { + return xxx_messageInfo_CommunityEvent.Size(m) } +func (m *CommunityEvent) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityEvent.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityEvent proto.InternalMessageInfo -func (x *CommunityEvent) GetCommunityEventClock() uint64 { - if x != nil { - return x.CommunityEventClock +func (m *CommunityEvent) GetCommunityEventClock() uint64 { + if m != nil { + return m.CommunityEventClock } return 0 } -func (x *CommunityEvent) GetType() CommunityEvent_EventType { - if x != nil { - return x.Type +func (m *CommunityEvent) GetType() CommunityEvent_EventType { + if m != nil { + return m.Type } return CommunityEvent_UNKNOWN } -func (x *CommunityEvent) GetCommunityConfig() *CommunityConfig { - if x != nil { - return x.CommunityConfig +func (m *CommunityEvent) GetCommunityConfig() *CommunityConfig { + if m != nil { + return m.CommunityConfig } return nil } -func (x *CommunityEvent) GetTokenPermission() *CommunityTokenPermission { - if x != nil { - return x.TokenPermission +func (m *CommunityEvent) GetTokenPermission() *CommunityTokenPermission { + if m != nil { + return m.TokenPermission } return nil } -func (x *CommunityEvent) GetCategoryData() *CategoryData { - if x != nil { - return x.CategoryData +func (m *CommunityEvent) GetCategoryData() *CategoryData { + if m != nil { + return m.CategoryData } return nil } -func (x *CommunityEvent) GetChannelData() *ChannelData { - if x != nil { - return x.ChannelData +func (m *CommunityEvent) GetChannelData() *ChannelData { + if m != nil { + return m.ChannelData } return nil } -func (x *CommunityEvent) GetMemberToAction() string { - if x != nil { - return x.MemberToAction +func (m *CommunityEvent) GetMemberToAction() string { + if m != nil { + return m.MemberToAction } return "" } -func (x *CommunityEvent) GetMembersAdded() map[string]*CommunityMember { - if x != nil { - return x.MembersAdded +func (m *CommunityEvent) GetMembersAdded() map[string]*CommunityMember { + if m != nil { + return m.MembersAdded } return nil } -func (x *CommunityEvent) GetRejectedRequestsToJoin() map[string]*CommunityRequestToJoin { - if x != nil { - return x.RejectedRequestsToJoin +func (m *CommunityEvent) GetRejectedRequestsToJoin() map[string]*CommunityRequestToJoin { + if m != nil { + return m.RejectedRequestsToJoin } return nil } -func (x *CommunityEvent) GetAcceptedRequestsToJoin() map[string]*CommunityRequestToJoin { - if x != nil { - return x.AcceptedRequestsToJoin +func (m *CommunityEvent) GetAcceptedRequestsToJoin() map[string]*CommunityRequestToJoin { + if m != nil { + return m.AcceptedRequestsToJoin } return nil } -func (x *CommunityEvent) GetTokenMetadata() *CommunityTokenMetadata { - if x != nil { - return x.TokenMetadata +func (m *CommunityEvent) GetTokenMetadata() *CommunityTokenMetadata { + if m != nil { + return m.TokenMetadata } return nil } type CommunityConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Identity *ChatIdentity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` - AdminSettings *CommunityAdminSettings `protobuf:"bytes,3,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` - IntroMessage string `protobuf:"bytes,4,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` - OutroMessage string `protobuf:"bytes,5,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + Identity *ChatIdentity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` + Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + AdminSettings *CommunityAdminSettings `protobuf:"bytes,3,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` + IntroMessage string `protobuf:"bytes,4,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` + OutroMessage string `protobuf:"bytes,5,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityConfig) Reset() { *m = CommunityConfig{} } +func (m *CommunityConfig) String() string { return proto.CompactTextString(m) } +func (*CommunityConfig) ProtoMessage() {} +func (*CommunityConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{1} } -func (x *CommunityConfig) Reset() { - *x = CommunityConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityConfig.Unmarshal(m, b) } - -func (x *CommunityConfig) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityConfig.Marshal(b, m, deterministic) } - -func (*CommunityConfig) ProtoMessage() {} - -func (x *CommunityConfig) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *CommunityConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityConfig.Merge(m, src) } - -// Deprecated: Use CommunityConfig.ProtoReflect.Descriptor instead. -func (*CommunityConfig) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{1} +func (m *CommunityConfig) XXX_Size() int { + return xxx_messageInfo_CommunityConfig.Size(m) } +func (m *CommunityConfig) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityConfig proto.InternalMessageInfo -func (x *CommunityConfig) GetIdentity() *ChatIdentity { - if x != nil { - return x.Identity +func (m *CommunityConfig) GetIdentity() *ChatIdentity { + if m != nil { + return m.Identity } return nil } -func (x *CommunityConfig) GetPermissions() *CommunityPermissions { - if x != nil { - return x.Permissions +func (m *CommunityConfig) GetPermissions() *CommunityPermissions { + if m != nil { + return m.Permissions } return nil } -func (x *CommunityConfig) GetAdminSettings() *CommunityAdminSettings { - if x != nil { - return x.AdminSettings +func (m *CommunityConfig) GetAdminSettings() *CommunityAdminSettings { + if m != nil { + return m.AdminSettings } return nil } -func (x *CommunityConfig) GetIntroMessage() string { - if x != nil { - return x.IntroMessage +func (m *CommunityConfig) GetIntroMessage() string { + if m != nil { + return m.IntroMessage } return "" } -func (x *CommunityConfig) GetOutroMessage() string { - if x != nil { - return x.OutroMessage +func (m *CommunityConfig) GetOutroMessage() string { + if m != nil { + return m.OutroMessage } return "" } -func (x *CommunityConfig) GetTags() []string { - if x != nil { - return x.Tags +func (m *CommunityConfig) GetTags() []string { + if m != nil { + return m.Tags } return nil } type CategoryData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ChannelsIds []string `protobuf:"bytes,3,rep,name=channels_ids,json=channelsIds,proto3" json:"channels_ids,omitempty"` - Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ChannelsIds []string `protobuf:"bytes,3,rep,name=channels_ids,json=channelsIds,proto3" json:"channels_ids,omitempty"` + Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CategoryData) Reset() { *m = CategoryData{} } +func (m *CategoryData) String() string { return proto.CompactTextString(m) } +func (*CategoryData) ProtoMessage() {} +func (*CategoryData) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{2} } -func (x *CategoryData) Reset() { - *x = CategoryData{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CategoryData) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CategoryData.Unmarshal(m, b) } - -func (x *CategoryData) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CategoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CategoryData.Marshal(b, m, deterministic) } - -func (*CategoryData) ProtoMessage() {} - -func (x *CategoryData) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *CategoryData) XXX_Merge(src proto.Message) { + xxx_messageInfo_CategoryData.Merge(m, src) } - -// Deprecated: Use CategoryData.ProtoReflect.Descriptor instead. -func (*CategoryData) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{2} +func (m *CategoryData) XXX_Size() int { + return xxx_messageInfo_CategoryData.Size(m) +} +func (m *CategoryData) XXX_DiscardUnknown() { + xxx_messageInfo_CategoryData.DiscardUnknown(m) } -func (x *CategoryData) GetCategoryId() string { - if x != nil { - return x.CategoryId +var xxx_messageInfo_CategoryData proto.InternalMessageInfo + +func (m *CategoryData) GetCategoryId() string { + if m != nil { + return m.CategoryId } return "" } -func (x *CategoryData) GetName() string { - if x != nil { - return x.Name +func (m *CategoryData) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *CategoryData) GetChannelsIds() []string { - if x != nil { - return x.ChannelsIds +func (m *CategoryData) GetChannelsIds() []string { + if m != nil { + return m.ChannelsIds } return nil } -func (x *CategoryData) GetPosition() int32 { - if x != nil { - return x.Position +func (m *CategoryData) GetPosition() int32 { + if m != nil { + return m.Position } return 0 } type ChannelData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - ChannelId string `protobuf:"bytes,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` - Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` - Channel *CommunityChat `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + ChannelId string `protobuf:"bytes,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + Channel *CommunityChat `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ChannelData) Reset() { *m = ChannelData{} } +func (m *ChannelData) String() string { return proto.CompactTextString(m) } +func (*ChannelData) ProtoMessage() {} +func (*ChannelData) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{3} } -func (x *ChannelData) Reset() { - *x = ChannelData{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ChannelData) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChannelData.Unmarshal(m, b) } - -func (x *ChannelData) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ChannelData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChannelData.Marshal(b, m, deterministic) } - -func (*ChannelData) ProtoMessage() {} - -func (x *ChannelData) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *ChannelData) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChannelData.Merge(m, src) } - -// Deprecated: Use ChannelData.ProtoReflect.Descriptor instead. -func (*ChannelData) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{3} +func (m *ChannelData) XXX_Size() int { + return xxx_messageInfo_ChannelData.Size(m) +} +func (m *ChannelData) XXX_DiscardUnknown() { + xxx_messageInfo_ChannelData.DiscardUnknown(m) } -func (x *ChannelData) GetCategoryId() string { - if x != nil { - return x.CategoryId +var xxx_messageInfo_ChannelData proto.InternalMessageInfo + +func (m *ChannelData) GetCategoryId() string { + if m != nil { + return m.CategoryId } return "" } -func (x *ChannelData) GetChannelId() string { - if x != nil { - return x.ChannelId +func (m *ChannelData) GetChannelId() string { + if m != nil { + return m.ChannelId } return "" } -func (x *ChannelData) GetPosition() int32 { - if x != nil { - return x.Position +func (m *ChannelData) GetPosition() int32 { + if m != nil { + return m.Position } return 0 } -func (x *ChannelData) GetChannel() *CommunityChat { - if x != nil { - return x.Channel +func (m *ChannelData) GetChannel() *CommunityChat { + if m != nil { + return m.Channel } return nil } type SignedCommunityEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Signature of the payload field Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // Marshaled CommunityEvent - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SignedCommunityEvent) Reset() { - *x = SignedCommunityEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SignedCommunityEvent) Reset() { *m = SignedCommunityEvent{} } +func (m *SignedCommunityEvent) String() string { return proto.CompactTextString(m) } +func (*SignedCommunityEvent) ProtoMessage() {} +func (*SignedCommunityEvent) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{4} } -func (x *SignedCommunityEvent) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SignedCommunityEvent) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SignedCommunityEvent.Unmarshal(m, b) } - -func (*SignedCommunityEvent) ProtoMessage() {} - -func (x *SignedCommunityEvent) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *SignedCommunityEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SignedCommunityEvent.Marshal(b, m, deterministic) } - -// Deprecated: Use SignedCommunityEvent.ProtoReflect.Descriptor instead. -func (*SignedCommunityEvent) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{4} +func (m *SignedCommunityEvent) XXX_Merge(src proto.Message) { + xxx_messageInfo_SignedCommunityEvent.Merge(m, src) } +func (m *SignedCommunityEvent) XXX_Size() int { + return xxx_messageInfo_SignedCommunityEvent.Size(m) +} +func (m *SignedCommunityEvent) XXX_DiscardUnknown() { + xxx_messageInfo_SignedCommunityEvent.DiscardUnknown(m) +} + +var xxx_messageInfo_SignedCommunityEvent proto.InternalMessageInfo -func (x *SignedCommunityEvent) GetSignature() []byte { - if x != nil { - return x.Signature +func (m *SignedCommunityEvent) GetSignature() []byte { + if m != nil { + return m.Signature } return nil } -func (x *SignedCommunityEvent) GetPayload() []byte { - if x != nil { - return x.Payload +func (m *SignedCommunityEvent) GetPayload() []byte { + if m != nil { + return m.Payload } return nil } @@ -530,480 +469,199 @@ func (x *SignedCommunityEvent) GetPayload() []byte { // CommunityEventsMessage is a message used to propagate information // about community changes. type CommunityEventsMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` // Events base CommunityDescription with owner signature on top of which events were generated EventsBaseCommunityDescription []byte `protobuf:"bytes,2,opt,name=events_base_community_description,json=eventsBaseCommunityDescription,proto3" json:"events_base_community_description,omitempty"` // A list of admins events for the channel in bytes // Deprecated: use signed_events instead. - // - // Deprecated: Marked as deprecated in community_update.proto. - Events [][]byte `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + Events [][]byte `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` // Deprecated: Do not use. // A list of signed community events - SignedEvents []*SignedCommunityEvent `protobuf:"bytes,4,rep,name=signed_events,json=signedEvents,proto3" json:"signed_events,omitempty"` + SignedEvents []*SignedCommunityEvent `protobuf:"bytes,4,rep,name=signed_events,json=signedEvents,proto3" json:"signed_events,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityEventsMessage) Reset() { - *x = CommunityEventsMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityEventsMessage) Reset() { *m = CommunityEventsMessage{} } +func (m *CommunityEventsMessage) String() string { return proto.CompactTextString(m) } +func (*CommunityEventsMessage) ProtoMessage() {} +func (*CommunityEventsMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{5} } -func (x *CommunityEventsMessage) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityEventsMessage) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityEventsMessage.Unmarshal(m, b) } - -func (*CommunityEventsMessage) ProtoMessage() {} - -func (x *CommunityEventsMessage) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *CommunityEventsMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityEventsMessage.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityEventsMessage.ProtoReflect.Descriptor instead. -func (*CommunityEventsMessage) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{5} +func (m *CommunityEventsMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityEventsMessage.Merge(m, src) } +func (m *CommunityEventsMessage) XXX_Size() int { + return xxx_messageInfo_CommunityEventsMessage.Size(m) +} +func (m *CommunityEventsMessage) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityEventsMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityEventsMessage proto.InternalMessageInfo -func (x *CommunityEventsMessage) GetCommunityId() []byte { - if x != nil { - return x.CommunityId +func (m *CommunityEventsMessage) GetCommunityId() []byte { + if m != nil { + return m.CommunityId } return nil } -func (x *CommunityEventsMessage) GetEventsBaseCommunityDescription() []byte { - if x != nil { - return x.EventsBaseCommunityDescription +func (m *CommunityEventsMessage) GetEventsBaseCommunityDescription() []byte { + if m != nil { + return m.EventsBaseCommunityDescription } return nil } -// Deprecated: Marked as deprecated in community_update.proto. -func (x *CommunityEventsMessage) GetEvents() [][]byte { - if x != nil { - return x.Events +// Deprecated: Do not use. +func (m *CommunityEventsMessage) GetEvents() [][]byte { + if m != nil { + return m.Events } return nil } -func (x *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { - if x != nil { - return x.SignedEvents +func (m *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { + if m != nil { + return m.SignedEvents } return nil } type CommunityEventsMessageRejected struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CommunityEventsMessageRejected) Reset() { - *x = CommunityEventsMessageRejected{} - if protoimpl.UnsafeEnabled { - mi := &file_community_update_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CommunityEventsMessageRejected) Reset() { *m = CommunityEventsMessageRejected{} } +func (m *CommunityEventsMessageRejected) String() string { return proto.CompactTextString(m) } +func (*CommunityEventsMessageRejected) ProtoMessage() {} +func (*CommunityEventsMessageRejected) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{6} } -func (x *CommunityEventsMessageRejected) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CommunityEventsMessageRejected) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityEventsMessageRejected.Unmarshal(m, b) } - -func (*CommunityEventsMessageRejected) ProtoMessage() {} - -func (x *CommunityEventsMessageRejected) ProtoReflect() protoreflect.Message { - mi := &file_community_update_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) +func (m *CommunityEventsMessageRejected) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityEventsMessageRejected.Marshal(b, m, deterministic) } - -// Deprecated: Use CommunityEventsMessageRejected.ProtoReflect.Descriptor instead. -func (*CommunityEventsMessageRejected) Descriptor() ([]byte, []int) { - return file_community_update_proto_rawDescGZIP(), []int{6} +func (m *CommunityEventsMessageRejected) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityEventsMessageRejected.Merge(m, src) } +func (m *CommunityEventsMessageRejected) XXX_Size() int { + return xxx_messageInfo_CommunityEventsMessageRejected.Size(m) +} +func (m *CommunityEventsMessageRejected) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityEventsMessageRejected.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityEventsMessageRejected proto.InternalMessageInfo -func (x *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { - if x != nil { - return x.Msg +func (m *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { + if m != nil { + return m.Msg } return nil } -var File_community_update_proto protoreflect.FileDescriptor - -var file_community_update_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x90, 0x0d, 0x0a, 0x0e, 0x43, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, - 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x63, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, - 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6d, - 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, - 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x4d, 0x0a, 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, - 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0c, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x4e, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, - 0x6c, 0x0a, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, - 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x6c, 0x0a, - 0x16, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x47, 0x0a, 0x0e, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5a, 0x0a, 0x11, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, - 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x6b, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, - 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6b, 0x0a, - 0x1b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x04, 0x0a, 0x09, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, - 0x54, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, - 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x54, 0x4f, - 0x4b, 0x45, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, 0x4d, 0x55, - 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x4b, 0x45, - 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, - 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, - 0x54, 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, - 0x54, 0x45, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, - 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, - 0x45, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, - 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x06, - 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, - 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, - 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4d, 0x4d, - 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x52, - 0x45, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, - 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x52, 0x45, - 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x0b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, - 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x0c, 0x12, 0x24, 0x0a, - 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, - 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, - 0x54, 0x10, 0x0d, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, - 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x10, 0x0e, 0x12, 0x18, - 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, - 0x45, 0x52, 0x5f, 0x42, 0x41, 0x4e, 0x10, 0x0f, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, - 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x42, - 0x41, 0x4e, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, - 0x59, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x11, 0x22, 0xae, 0x02, - 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x32, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, - 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, - 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, - 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x82, - 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x31, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x22, 0x4e, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x22, 0xe7, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, - 0x12, 0x49, 0x0a, 0x21, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x06, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x54, 0x0a, 0x1e, - 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x32, - 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, - 0x73, 0x67, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_community_update_proto_rawDescOnce sync.Once - file_community_update_proto_rawDescData = file_community_update_proto_rawDesc -) - -func file_community_update_proto_rawDescGZIP() []byte { - file_community_update_proto_rawDescOnce.Do(func() { - file_community_update_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_update_proto_rawDescData) - }) - return file_community_update_proto_rawDescData -} - -var file_community_update_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_community_update_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_community_update_proto_goTypes = []interface{}{ - (CommunityEvent_EventType)(0), // 0: protobuf.CommunityEvent.EventType - (*CommunityEvent)(nil), // 1: protobuf.CommunityEvent - (*CommunityConfig)(nil), // 2: protobuf.CommunityConfig - (*CategoryData)(nil), // 3: protobuf.CategoryData - (*ChannelData)(nil), // 4: protobuf.ChannelData - (*SignedCommunityEvent)(nil), // 5: protobuf.SignedCommunityEvent - (*CommunityEventsMessage)(nil), // 6: protobuf.CommunityEventsMessage - (*CommunityEventsMessageRejected)(nil), // 7: protobuf.CommunityEventsMessageRejected - nil, // 8: protobuf.CommunityEvent.MembersAddedEntry - nil, // 9: protobuf.CommunityEvent.RejectedRequestsToJoinEntry - nil, // 10: protobuf.CommunityEvent.AcceptedRequestsToJoinEntry - (*CommunityTokenPermission)(nil), // 11: protobuf.CommunityTokenPermission - (*CommunityTokenMetadata)(nil), // 12: protobuf.CommunityTokenMetadata - (*ChatIdentity)(nil), // 13: protobuf.ChatIdentity - (*CommunityPermissions)(nil), // 14: protobuf.CommunityPermissions - (*CommunityAdminSettings)(nil), // 15: protobuf.CommunityAdminSettings - (*CommunityChat)(nil), // 16: protobuf.CommunityChat - (*CommunityMember)(nil), // 17: protobuf.CommunityMember - (*CommunityRequestToJoin)(nil), // 18: protobuf.CommunityRequestToJoin -} -var file_community_update_proto_depIdxs = []int32{ - 0, // 0: protobuf.CommunityEvent.type:type_name -> protobuf.CommunityEvent.EventType - 2, // 1: protobuf.CommunityEvent.community_config:type_name -> protobuf.CommunityConfig - 11, // 2: protobuf.CommunityEvent.token_permission:type_name -> protobuf.CommunityTokenPermission - 3, // 3: protobuf.CommunityEvent.category_data:type_name -> protobuf.CategoryData - 4, // 4: protobuf.CommunityEvent.channel_data:type_name -> protobuf.ChannelData - 8, // 5: protobuf.CommunityEvent.membersAdded:type_name -> protobuf.CommunityEvent.MembersAddedEntry - 9, // 6: protobuf.CommunityEvent.rejectedRequestsToJoin:type_name -> protobuf.CommunityEvent.RejectedRequestsToJoinEntry - 10, // 7: protobuf.CommunityEvent.acceptedRequestsToJoin:type_name -> protobuf.CommunityEvent.AcceptedRequestsToJoinEntry - 12, // 8: protobuf.CommunityEvent.token_metadata:type_name -> protobuf.CommunityTokenMetadata - 13, // 9: protobuf.CommunityConfig.identity:type_name -> protobuf.ChatIdentity - 14, // 10: protobuf.CommunityConfig.permissions:type_name -> protobuf.CommunityPermissions - 15, // 11: protobuf.CommunityConfig.admin_settings:type_name -> protobuf.CommunityAdminSettings - 16, // 12: protobuf.ChannelData.channel:type_name -> protobuf.CommunityChat - 5, // 13: protobuf.CommunityEventsMessage.signed_events:type_name -> protobuf.SignedCommunityEvent - 6, // 14: protobuf.CommunityEventsMessageRejected.msg:type_name -> protobuf.CommunityEventsMessage - 17, // 15: protobuf.CommunityEvent.MembersAddedEntry.value:type_name -> protobuf.CommunityMember - 18, // 16: protobuf.CommunityEvent.RejectedRequestsToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin - 18, // 17: protobuf.CommunityEvent.AcceptedRequestsToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin - 18, // [18:18] is the sub-list for method output_type - 18, // [18:18] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name -} - -func init() { file_community_update_proto_init() } -func file_community_update_proto_init() { - if File_community_update_proto != nil { - return - } - file_chat_identity_proto_init() - file_communities_proto_init() - if !protoimpl.UnsafeEnabled { - file_community_update_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_community_update_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_community_update_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CategoryData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_community_update_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChannelData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_community_update_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignedCommunityEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_community_update_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityEventsMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_community_update_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommunityEventsMessageRejected); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_community_update_proto_rawDesc, - NumEnums: 1, - NumMessages: 10, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_community_update_proto_goTypes, - DependencyIndexes: file_community_update_proto_depIdxs, - EnumInfos: file_community_update_proto_enumTypes, - MessageInfos: file_community_update_proto_msgTypes, - }.Build() - File_community_update_proto = out.File - file_community_update_proto_rawDesc = nil - file_community_update_proto_goTypes = nil - file_community_update_proto_depIdxs = nil +func init() { + proto.RegisterEnum("protobuf.CommunityEvent_EventType", CommunityEvent_EventType_name, CommunityEvent_EventType_value) + proto.RegisterType((*CommunityEvent)(nil), "protobuf.CommunityEvent") + proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityEvent.AcceptedRequestsToJoinEntry") + proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityEvent.MembersAddedEntry") + proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityEvent.RejectedRequestsToJoinEntry") + proto.RegisterType((*CommunityConfig)(nil), "protobuf.CommunityConfig") + proto.RegisterType((*CategoryData)(nil), "protobuf.CategoryData") + proto.RegisterType((*ChannelData)(nil), "protobuf.ChannelData") + proto.RegisterType((*SignedCommunityEvent)(nil), "protobuf.SignedCommunityEvent") + proto.RegisterType((*CommunityEventsMessage)(nil), "protobuf.CommunityEventsMessage") + proto.RegisterType((*CommunityEventsMessageRejected)(nil), "protobuf.CommunityEventsMessageRejected") +} + +func init() { + proto.RegisterFile("community_update.proto", fileDescriptor_52ed23dfc73918ab) +} + +var fileDescriptor_52ed23dfc73918ab = []byte{ + // 1095 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcb, 0x6e, 0xdb, 0x46, + 0x14, 0xad, 0x2c, 0xf9, 0xa1, 0xab, 0x87, 0xe9, 0x71, 0x6c, 0xd3, 0x4a, 0xe2, 0x2a, 0x6a, 0x17, + 0x42, 0x51, 0x38, 0xa8, 0x5a, 0x04, 0x41, 0xb3, 0xa9, 0x4c, 0x0d, 0x1c, 0xda, 0x11, 0xe5, 0x8e, + 0x69, 0x14, 0xc9, 0x86, 0x18, 0x93, 0x13, 0x99, 0xb5, 0x45, 0xaa, 0x9a, 0x51, 0x00, 0x6d, 0xfb, + 0x05, 0xfd, 0x80, 0x7e, 0x43, 0xd1, 0xbf, 0xea, 0x6f, 0x14, 0x9c, 0x21, 0x45, 0xd2, 0xa6, 0x9c, + 0x2e, 0xba, 0x91, 0x38, 0xf7, 0x9c, 0x7b, 0xce, 0xdc, 0x79, 0xf0, 0x12, 0xf6, 0xdd, 0x70, 0x32, + 0x99, 0x07, 0xbe, 0x58, 0x38, 0xf3, 0xa9, 0x47, 0x05, 0x3b, 0x9e, 0xce, 0x42, 0x11, 0xa2, 0x2d, + 0xf9, 0x77, 0x3d, 0xff, 0xd8, 0xda, 0x75, 0x6f, 0xa8, 0x70, 0x7c, 0x8f, 0x05, 0xc2, 0x17, 0x0b, + 0x05, 0xb7, 0x76, 0x92, 0x34, 0x9f, 0x71, 0x15, 0xea, 0xfc, 0xd1, 0x80, 0xa6, 0x91, 0x88, 0xe1, + 0x4f, 0x2c, 0x10, 0xa8, 0x07, 0x7b, 0xa9, 0x3c, 0x8b, 0x42, 0x8e, 0x7b, 0x17, 0xba, 0xb7, 0x7a, + 0xa9, 0x5d, 0xea, 0x56, 0xc8, 0xae, 0x9b, 0xa3, 0x1b, 0x11, 0x84, 0x5e, 0x41, 0x45, 0x2c, 0xa6, + 0x4c, 0x5f, 0x6b, 0x97, 0xba, 0xcd, 0x5e, 0xe7, 0x38, 0x99, 0xc7, 0x71, 0x5e, 0xfb, 0x58, 0xfe, + 0xda, 0x8b, 0x29, 0x23, 0x92, 0x8f, 0x06, 0xa0, 0xa5, 0x5e, 0x6e, 0x18, 0x7c, 0xf4, 0xc7, 0x7a, + 0xb9, 0x5d, 0xea, 0xd6, 0x7a, 0x87, 0x05, 0x1a, 0x86, 0x24, 0x90, 0x6d, 0x37, 0x1f, 0x40, 0x43, + 0xd0, 0x44, 0x78, 0xcb, 0x02, 0x67, 0xca, 0x66, 0x13, 0x9f, 0x73, 0x3f, 0x0c, 0xf4, 0x8a, 0x54, + 0x29, 0x9a, 0x89, 0x1d, 0x51, 0x2f, 0x96, 0x4c, 0xb2, 0x2d, 0xf2, 0x01, 0xf4, 0x06, 0x1a, 0x2e, + 0x15, 0x6c, 0x1c, 0xce, 0x16, 0x8e, 0x47, 0x05, 0xd5, 0xd7, 0xa5, 0xd6, 0x7e, 0x46, 0x2b, 0x86, + 0x07, 0x54, 0x50, 0x52, 0x77, 0x33, 0x23, 0xf4, 0x1a, 0xea, 0xee, 0x0d, 0x0d, 0x02, 0x76, 0xa7, + 0x72, 0x37, 0x64, 0xee, 0x5e, 0x26, 0x57, 0xa1, 0x32, 0xb5, 0xe6, 0xa6, 0x03, 0xd4, 0x05, 0x6d, + 0xc2, 0x26, 0xd7, 0x6c, 0xe6, 0x88, 0xd0, 0xa1, 0xae, 0x88, 0xaa, 0xd8, 0x6c, 0x97, 0xba, 0x55, + 0xd2, 0x54, 0x71, 0x3b, 0xec, 0xcb, 0x28, 0xb2, 0xa0, 0xae, 0x22, 0xbc, 0xef, 0x79, 0xcc, 0xd3, + 0xb7, 0xda, 0xe5, 0x6e, 0xad, 0xf7, 0xcd, 0xca, 0x55, 0x1f, 0x66, 0xc8, 0x38, 0x10, 0xb3, 0x05, + 0xc9, 0xe5, 0xa3, 0x3b, 0xd8, 0x9f, 0xb1, 0x5f, 0x99, 0x2b, 0x98, 0x47, 0xd8, 0x6f, 0x73, 0xc6, + 0x05, 0xb7, 0xc3, 0xb3, 0xd0, 0x0f, 0xf4, 0xaa, 0x54, 0xfe, 0x61, 0xa5, 0x32, 0x29, 0x4c, 0x53, + 0x1e, 0x2b, 0x34, 0x23, 0x37, 0xea, 0xba, 0x6c, 0xfa, 0xd0, 0x0d, 0x3e, 0xe3, 0xd6, 0x2f, 0x4c, + 0x8b, 0xdd, 0x8a, 0x35, 0xd1, 0x29, 0x34, 0xd5, 0xd9, 0x98, 0x30, 0x41, 0xe5, 0x8e, 0xd4, 0xe4, + 0x8e, 0xb4, 0x57, 0x9d, 0x8c, 0x61, 0xcc, 0x23, 0x0d, 0x91, 0x1d, 0xb6, 0x3e, 0xc0, 0xce, 0x83, + 0x75, 0x44, 0x1a, 0x94, 0x6f, 0xd9, 0x42, 0xde, 0x8c, 0x2a, 0x89, 0x1e, 0xd1, 0x4b, 0x58, 0xff, + 0x44, 0xef, 0xe6, 0xea, 0x2a, 0x14, 0x1f, 0x63, 0x25, 0x43, 0x14, 0xef, 0xc7, 0xb5, 0xd7, 0xa5, + 0xd6, 0x2d, 0x3c, 0x7d, 0x64, 0x25, 0x0b, 0x5c, 0x5e, 0xe5, 0x5d, 0x8a, 0x8a, 0x89, 0x85, 0x94, + 0xce, 0x3d, 0xb3, 0x47, 0x16, 0xf2, 0xff, 0x35, 0xeb, 0xfc, 0x5d, 0x81, 0xea, 0xf2, 0xd2, 0xa3, + 0x1a, 0x6c, 0x5e, 0x59, 0xe7, 0xd6, 0xe8, 0x17, 0x4b, 0xfb, 0x02, 0x21, 0x68, 0x1a, 0xa3, 0xe1, + 0xf0, 0xca, 0x32, 0xed, 0xf7, 0x0e, 0x1e, 0x98, 0xb6, 0x56, 0x42, 0xdf, 0x42, 0x37, 0x8d, 0x0d, + 0xf1, 0xf0, 0x04, 0x13, 0xc7, 0x1e, 0x9d, 0x63, 0xcb, 0xb9, 0xc0, 0x64, 0x68, 0x5e, 0x5e, 0x9a, + 0x23, 0xcb, 0x31, 0xde, 0xf6, 0xad, 0x53, 0xac, 0xad, 0xfd, 0x37, 0xf6, 0x00, 0xbf, 0xc3, 0x36, + 0xd6, 0xca, 0xe8, 0x39, 0x1c, 0xa6, 0x6c, 0xa3, 0x6f, 0xe3, 0xd3, 0x11, 0x79, 0xef, 0x18, 0x04, + 0xf7, 0x6d, 0xac, 0x55, 0x56, 0xc0, 0x71, 0xf6, 0x3a, 0x7a, 0x0a, 0x07, 0x05, 0xb0, 0x9c, 0xf6, + 0x06, 0x7a, 0x06, 0x7a, 0x06, 0x7c, 0xdb, 0xb7, 0x2c, 0xfc, 0x2e, 0x51, 0xde, 0x2c, 0x46, 0x63, + 0xe1, 0x2d, 0xd4, 0x82, 0xfd, 0x87, 0xa8, 0xd4, 0xad, 0xa2, 0x23, 0x68, 0x15, 0x98, 0x12, 0x3c, + 0x22, 0x03, 0x4c, 0x34, 0xb8, 0x37, 0xe7, 0x38, 0x37, 0x81, 0x6b, 0xe8, 0x6b, 0x68, 0xa7, 0x30, + 0xc1, 0x3f, 0x5f, 0xe1, 0x4b, 0xdb, 0xb1, 0x47, 0xce, 0xd9, 0xc8, 0xb4, 0x9c, 0xbe, 0x61, 0xe0, + 0x0b, 0x5b, 0xab, 0x3f, 0xce, 0x22, 0xf8, 0x0c, 0x1b, 0xb6, 0xd6, 0x40, 0x87, 0xb0, 0xf7, 0x60, + 0xad, 0xcf, 0x4d, 0xe3, 0x5c, 0x6b, 0x22, 0x1d, 0x9e, 0x3c, 0x80, 0x4e, 0xfa, 0x96, 0xb6, 0x9d, + 0xaf, 0x2d, 0x46, 0xae, 0xac, 0x08, 0xd3, 0xd0, 0x01, 0xec, 0xa6, 0x98, 0xda, 0xb5, 0xfe, 0x60, + 0xa0, 0xed, 0x74, 0xfe, 0x5a, 0x83, 0xed, 0x7b, 0xaf, 0x7c, 0xd4, 0x83, 0xad, 0xa4, 0x97, 0xc9, + 0x93, 0x99, 0x7f, 0x1b, 0xdf, 0x50, 0x61, 0xc6, 0x28, 0x59, 0xf2, 0xd0, 0x4f, 0x50, 0x4b, 0xfb, + 0x01, 0x8f, 0x0f, 0xef, 0x51, 0xc1, 0xe1, 0x4d, 0x5f, 0xfd, 0x9c, 0x64, 0x53, 0xa2, 0x77, 0x07, + 0xf5, 0x26, 0x7e, 0xe0, 0x70, 0x26, 0x84, 0x1f, 0x8c, 0x79, 0xdc, 0x9b, 0x8a, 0x6e, 0x40, 0x3f, + 0x22, 0x5e, 0xc6, 0x3c, 0xd2, 0xa0, 0xd9, 0x21, 0xfa, 0x0a, 0x1a, 0x7e, 0x20, 0x66, 0xa1, 0x33, + 0x61, 0x9c, 0xd3, 0x31, 0x93, 0xdd, 0xa9, 0x4a, 0xea, 0x32, 0x38, 0x54, 0xb1, 0x88, 0x14, 0xce, + 0xb3, 0xa4, 0x75, 0x45, 0x92, 0xc1, 0x84, 0x84, 0xa0, 0x22, 0xe8, 0x98, 0xeb, 0x1b, 0xed, 0x72, + 0xb7, 0x4a, 0xe4, 0x73, 0xe7, 0xf7, 0x12, 0xd4, 0xb3, 0x1d, 0x09, 0x7d, 0x09, 0xb5, 0x65, 0x03, + 0xf3, 0xbd, 0xf8, 0x2a, 0x43, 0x12, 0x32, 0xbd, 0x48, 0x25, 0xa0, 0x13, 0x75, 0xa1, 0xab, 0x44, + 0x3e, 0xa3, 0x17, 0xcb, 0xc6, 0xc5, 0x1d, 0xdf, 0x8b, 0x4a, 0x8d, 0x1c, 0x92, 0x0e, 0xc5, 0x4d, + 0x8f, 0xa3, 0x16, 0x6c, 0x4d, 0x43, 0xee, 0x8b, 0xa4, 0xbf, 0xae, 0x93, 0xe5, 0xb8, 0xf3, 0x67, + 0x09, 0x6a, 0x99, 0xd6, 0xf6, 0xf9, 0x39, 0x3c, 0x07, 0x48, 0x1a, 0xa5, 0xef, 0xc5, 0x33, 0xa9, + 0xc6, 0x11, 0xd3, 0xcb, 0x79, 0x95, 0xf3, 0x5e, 0xe8, 0x3b, 0xd8, 0x8c, 0x89, 0x71, 0x9b, 0x3f, + 0x28, 0xfa, 0x58, 0xb8, 0xa1, 0x82, 0x24, 0xbc, 0x8e, 0x05, 0x4f, 0x2e, 0xfd, 0x71, 0xc0, 0xbc, + 0x7b, 0x1f, 0x3b, 0xcf, 0xa0, 0xca, 0xfd, 0x71, 0x40, 0xc5, 0x7c, 0xc6, 0xe4, 0x24, 0xeb, 0x24, + 0x0d, 0x20, 0x1d, 0x36, 0xa7, 0x74, 0x71, 0x17, 0x52, 0x35, 0xc1, 0x3a, 0x49, 0x86, 0x9d, 0x7f, + 0x4a, 0xb0, 0x9f, 0x97, 0xe2, 0xc9, 0x16, 0x45, 0x0b, 0xb9, 0xfc, 0xa6, 0x89, 0x4b, 0xaf, 0x93, + 0xda, 0x32, 0x66, 0x7a, 0xc8, 0x84, 0x17, 0xf2, 0xc3, 0x8a, 0x3b, 0xd7, 0x94, 0x33, 0x27, 0xa5, + 0x7b, 0x8c, 0xbb, 0x33, 0x7f, 0x2a, 0xab, 0x56, 0x8e, 0x47, 0x8a, 0x78, 0x42, 0x39, 0x5b, 0xfa, + 0x0d, 0x52, 0x16, 0x6a, 0xc1, 0x86, 0x62, 0xc8, 0x0d, 0xab, 0x9f, 0xac, 0xe9, 0x25, 0x12, 0x47, + 0x90, 0x01, 0x0d, 0x2e, 0x8b, 0x76, 0x62, 0x4a, 0x45, 0x36, 0xd8, 0xcc, 0x1d, 0x28, 0x5a, 0x13, + 0x52, 0x57, 0x49, 0xaa, 0xaa, 0x8e, 0x0d, 0x47, 0xc5, 0x85, 0x26, 0x1d, 0x0b, 0xf5, 0xa0, 0x3c, + 0xe1, 0xe3, 0xf8, 0x5e, 0xb6, 0x57, 0x75, 0xef, 0x65, 0x5a, 0x44, 0x3e, 0x69, 0x7c, 0xa8, 0x1d, + 0xbf, 0x7c, 0x93, 0x50, 0xaf, 0x37, 0xe4, 0xd3, 0xf7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x92, + 0x1f, 0x8f, 0xf4, 0xd9, 0x0a, 0x00, 0x00, }