From 01f7d4fae07ce3083ee1fd8c422aa63af44b7ff3 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Tue, 12 Dec 2023 18:21:54 +0800 Subject: [PATCH 01/11] feat: add some api about admin --- config/config.yaml | 20 +- internal/api/admin.go | 20 + internal/api/router.go | 11 +- internal/rpc/admin/admin.go | 109 +- internal/rpc/chat/user.go | 86 + pkg/common/db/database/admin.go | 19 + pkg/common/db/model/admin/admin.go | 18 +- pkg/common/db/table/admin/admin.go | 4 + pkg/proto/admin/admin.go | 43 + pkg/proto/admin/admin.pb.go | 3632 +++++++++++++++++----------- pkg/proto/admin/admin.proto | 40 + pkg/proto/chat/chat.go | 10 + pkg/proto/chat/chat.pb.go | 1644 +++++++------ pkg/proto/chat/chat.proto | 11 + pkg/rpclient/chat/chat.go | 4 + 15 files changed, 3477 insertions(+), 2194 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 6ae122a1d..744313339 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -44,16 +44,16 @@ rpcRegisterName: # 没有配置表示和OpenIM一致 mysql: - # address: [ 127.0.0.1:13306 ] #目前仅支持单机 - # username: root #用户名 - # password: openIM123 #密码 - # database: openIM_v2 #不建议修改 - # maxOpenConn: 1000 #最大连接数 - # maxIdleConn: 100 #最大空闲连接数 - # maxLifeTime: 60 #连接可以重复使用的最长时间(秒) - # logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info - # slowThreshold: 500 #慢语句阈值 (毫秒) - # database: openim_enterprise + address: [ 127.0.0.1:13306 ] #目前仅支持单机 + username: root #用户名 + password: openIM123 #密码 + database: openIM_v2 #不建议修改 + maxOpenConn: 1000 #最大连接数 + maxIdleConn: 100 #最大空闲连接数 + maxLifeTime: 60 #连接可以重复使用的最长时间(秒) + logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info + slowThreshold: 500 #慢语句阈值 (毫秒) +# database: openim_enterprise # 没有配置表示和OpenIM一致 log: diff --git a/internal/api/admin.go b/internal/api/admin.go index 5eb65c937..3499691ae 100644 --- a/internal/api/admin.go +++ b/internal/api/admin.go @@ -115,6 +115,26 @@ func (o *AdminApi) AdminInfo(c *gin.Context) { a2r.Call(admin.AdminClient.GetAdminInfo, o.adminClient, c) } +func (o *AdminApi) ChangeAdminPassword(c *gin.Context) { + a2r.Call(admin.AdminClient.ChangeAdminPassword, o.adminClient, c) +} + +func (o *AdminApi) AddAdminAccount(c *gin.Context) { + a2r.Call(admin.AdminClient.AddAdminAccount, o.adminClient, c) +} + +func (o *AdminApi) AddUserAccount(c *gin.Context) { + a2r.Call(chat.ChatClient.AddUserAccount, o.chatClient, c) +} + +func (o *AdminApi) DelAdminAccount(c *gin.Context) { + a2r.Call(admin.AdminClient.DelAdminAccount, o.adminClient, c) +} + +func (o *AdminApi) SearchAdminAccount(c *gin.Context) { + a2r.Call(admin.AdminClient.SearchAdminAccount, o.adminClient, c) +} + func (o *AdminApi) AddDefaultFriend(c *gin.Context) { a2r.Call(admin.AdminClient.AddDefaultFriend, o.adminClient, c) } diff --git a/internal/api/router.go b/internal/api/router.go index d7d52db9e..0ba57bed3 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -72,9 +72,14 @@ func NewAdminRoute(router gin.IRouter, discov discoveryregistry.SvcDiscoveryRegi mw := NewMW(adminConn) admin := NewAdmin(chatConn, adminConn) adminRouterGroup := router.Group("/account") - adminRouterGroup.POST("/login", admin.AdminLogin) // 登录 - adminRouterGroup.POST("/update", mw.CheckAdmin, admin.AdminUpdateInfo) // 修改信息 - adminRouterGroup.POST("/info", mw.CheckAdmin, admin.AdminInfo) // 获取信息 + adminRouterGroup.POST("/login", admin.AdminLogin) // 登录 + adminRouterGroup.POST("/update", mw.CheckAdmin, admin.AdminUpdateInfo) // 修改信息 + adminRouterGroup.POST("/info", mw.CheckAdmin, admin.AdminInfo) // 获取信息 + adminRouterGroup.POST("/change_password", mw.CheckAdmin, admin.ChangeAdminPassword) // 修改管理员账号的密码 + adminRouterGroup.POST("/add_admin", mw.CheckAdmin, admin.AddAdminAccount) // 添加管理员账号 + adminRouterGroup.POST("/add_user", mw.CheckAdmin, admin.AddUserAccount) // 添加用户账号 + adminRouterGroup.POST("/del_admin", mw.CheckAdmin, admin.DelAdminAccount) + adminRouterGroup.POST("/search", mw.CheckAdmin, admin.SearchAdminAccount) defaultRouter := router.Group("/default", mw.CheckAdmin) defaultUserRouter := defaultRouter.Group("/user") diff --git a/internal/rpc/admin/admin.go b/internal/rpc/admin/admin.go index 1486ec511..e268bf119 100644 --- a/internal/rpc/admin/admin.go +++ b/internal/rpc/admin/admin.go @@ -16,11 +16,16 @@ package admin import ( "context" - + "crypto/md5" + "encoding/hex" "github.com/OpenIMSDK/chat/pkg/common/db/cache" "github.com/OpenIMSDK/tools/discoveryregistry" + "github.com/OpenIMSDK/tools/errs" + "github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/mcontext" "google.golang.org/grpc" + "math/rand" + "time" "github.com/OpenIMSDK/chat/pkg/common/config" "github.com/OpenIMSDK/chat/pkg/common/constant" @@ -95,6 +100,88 @@ func (o *adminServer) GetAdminInfo(ctx context.Context, req *admin.GetAdminInfoR }, nil } +func (o *adminServer) ChangeAdminPassword(ctx context.Context, req *admin.ChangeAdminPasswordReq) (*admin.ChangeAdminPasswordResp, error) { + _, err := o.Database.GetAdmin(ctx, req.UserID) + if err != nil { + return nil, err + } + + if err := o.Database.ChangePassword(ctx, req.UserID, o.passwordEncryption(req.NewPassword)); err != nil { + return nil, err + } + return &admin.ChangeAdminPasswordResp{}, nil +} + +func (o *adminServer) AddAdminAccount(ctx context.Context, req *admin.AddAdminAccountReq) (*admin.AddAdminAccountResp, error) { + userID, err := mctx.CheckAdmin(ctx) + if err != nil { + return nil, err + } + + adminUser, err := o.Database.GetAdminUserID(ctx, userID) + if err != nil { + return nil, err + } + + if adminUser.Level != constant.AdvancedUserLevel { + return nil, errs.ErrNoPermission.Wrap() + } + + _, err = o.Database.GetAdmin(ctx, req.Account) + if err == nil { + return nil, errs.ErrRegisteredAlready.Wrap("the account is registered") + } + + adm := &admin2.Admin{ + Account: req.Account, + Password: o.passwordEncryption(req.Password), + FaceURL: req.FaceURL, + Nickname: req.Nickname, + UserID: o.genUserID(), + Level: 80, + CreateTime: time.Now(), + } + if err = o.Database.AddAdminAccount(ctx, adm); err != nil { + return nil, err + } + return &admin.AddAdminAccountResp{}, nil +} + +func (o *adminServer) DelAdminAccount(ctx context.Context, req *admin.DelAdminAccountReq) (*admin.DelAdminAccountResp, error) { + if err := o.Database.DelAdminAccount(ctx, req.UserIDs); err != nil { + return nil, err + } + return &admin.DelAdminAccountResp{}, nil +} + +func (o *adminServer) SearchAdminAccount(ctx context.Context, req *admin.SearchAdminAccountReq) (*admin.SearchAdminAccountResp, error) { + defer log.ZDebug(ctx, "return") + if _, err := mctx.CheckAdmin(ctx); err != nil { + return nil, err + } + var resp *admin.SearchAdminAccountResp + total, adminAccounts, err := o.Database.SearchAdminAccount(ctx, req.Keyword, req.Pagination.ShowNumber, req.Pagination.PageNumber) + if err != nil { + return nil, err + } + resp.Total = total + accounts := make([]*admin.GetAdminInfoResp, len(adminAccounts)) + for _, v := range adminAccounts { + temp := &admin.GetAdminInfoResp{ + Account: v.Account, + Password: v.Password, + FaceURL: v.FaceURL, + Nickname: v.Nickname, + UserID: v.UserID, + Level: v.Level, + CreateTime: v.CreateTime.Unix(), + } + accounts = append(accounts, temp) + } + resp.AdminAccounts = accounts + return resp, nil +} + func (o *adminServer) AdminUpdateInfo(ctx context.Context, req *admin.AdminUpdateInfoReq) (*admin.AdminUpdateInfoResp, error) { userID, err := mctx.CheckAdmin(ctx) if err != nil { @@ -168,3 +255,23 @@ func (o *adminServer) ChangePassword(ctx context.Context, req *admin.ChangePassw } return &admin.ChangePasswordResp{}, nil } + +func (o *adminServer) genUserID() string { + const l = 10 + data := make([]byte, l) + rand.Read(data) + chars := []byte("0123456789") + for i := 0; i < len(data); i++ { + if i == 0 { + data[i] = chars[1:][data[i]%9] + } else { + data[i] = chars[data[i]%10] + } + } + return string(data) +} + +func (o *adminServer) passwordEncryption(password string) string { + paswd := md5.Sum([]byte(password)) + return hex.EncodeToString(paswd[:]) +} diff --git a/internal/rpc/chat/user.go b/internal/rpc/chat/user.go index c8ce76d8f..c13351c8c 100644 --- a/internal/rpc/chat/user.go +++ b/internal/rpc/chat/user.go @@ -16,6 +16,11 @@ package chat import ( "context" + chat2 "github.com/OpenIMSDK/chat/pkg/common/db/table/chat" + constant2 "github.com/OpenIMSDK/protocol/constant" + "github.com/OpenIMSDK/tools/mcontext" + "strconv" + "time" "github.com/OpenIMSDK/chat/pkg/common/constant" "github.com/OpenIMSDK/chat/pkg/common/mctx" @@ -113,6 +118,87 @@ func (o *chatSvr) FindUserPublicInfo(ctx context.Context, req *chat.FindUserPubl }, nil } +func (o *chatSvr) AddUserAccount(ctx context.Context, req *chat.AddUserAccountReq) (*chat.AddUserAccountResp, error) { + if _, _, err := mctx.Check(ctx); err != nil { + return nil, err + } + + if req.User.PhoneNumber != "" { + if req.User.AreaCode[0] != '+' { + req.User.AreaCode = "+" + req.User.AreaCode + } + if _, err := strconv.ParseUint(req.User.AreaCode[1:], 10, 64); err != nil { + return nil, errs.ErrArgs.Wrap("area code must be number") + } + if _, err := strconv.ParseUint(req.User.PhoneNumber, 10, 64); err != nil { + return nil, errs.ErrArgs.Wrap("phone number must be number") + } + _, err := o.Database.TakeAttributeByPhone(ctx, req.User.AreaCode, req.User.PhoneNumber) + if err == nil { + return nil, eerrs.ErrPhoneAlreadyRegister.Wrap() + } else if !o.Database.IsNotFound(err) { + return nil, err + } + } + + if req.User.Account != "" { + _, err := o.Database.TakeAttributeByAccount(ctx, req.User.Account) + if err == nil { + return nil, eerrs.ErrAccountAlreadyRegister.Wrap() + } else if !o.Database.IsNotFound(err) { + return nil, err + } + } + + if req.User.Email != "" { + _, err := o.Database.TakeAttributeByEmail(ctx, req.User.Email) + if err == nil { + return nil, eerrs.ErrEmailAlreadyRegister.Wrap() + } else if !o.Database.IsNotFound(err) { + return nil, err + } + } + + register := &chat2.Register{ + UserID: req.User.UserID, + DeviceID: req.DeviceID, + IP: req.Ip, + Platform: constant2.PlatformID2Name[int(req.Platform)], + AccountType: "", + Mode: constant.UserMode, + CreateTime: time.Now(), + } + account := &chat2.Account{ + UserID: req.User.UserID, + Password: req.User.Password, + OperatorUserID: mcontext.GetOpUserID(ctx), + ChangeTime: register.CreateTime, + CreateTime: register.CreateTime, + } + attribute := &chat2.Attribute{ + UserID: req.User.UserID, + Account: req.User.Account, + PhoneNumber: req.User.PhoneNumber, + AreaCode: req.User.AreaCode, + Email: req.User.Email, + Nickname: req.User.Nickname, + FaceURL: req.User.FaceURL, + Gender: req.User.Gender, + BirthTime: time.UnixMilli(req.User.Birth), + ChangeTime: register.CreateTime, + CreateTime: register.CreateTime, + AllowVibration: constant.DefaultAllowVibration, + AllowBeep: constant.DefaultAllowBeep, + AllowAddFriend: constant.DefaultAllowAddFriend, + } + + if err := o.Database.RegisterUser(ctx, register, account, attribute); err != nil { + return nil, err + } + + return &chat.AddUserAccountResp{}, nil +} + func (o *chatSvr) SearchUserPublicInfo(ctx context.Context, req *chat.SearchUserPublicInfoReq) (*chat.SearchUserPublicInfoResp, error) { defer log.ZDebug(ctx, "return") if _, _, err := mctx.Check(ctx); err != nil { diff --git a/pkg/common/db/database/admin.go b/pkg/common/db/database/admin.go index 328840ef5..9de3606d7 100644 --- a/pkg/common/db/database/admin.go +++ b/pkg/common/db/database/admin.go @@ -33,6 +33,10 @@ type AdminDatabaseInterface interface { GetAdmin(ctx context.Context, account string) (*table.Admin, error) GetAdminUserID(ctx context.Context, userID string) (*table.Admin, error) UpdateAdmin(ctx context.Context, userID string, update map[string]any) error + ChangePassword(ctx context.Context, userID string, newPassword string) error + AddAdminAccount(ctx context.Context, admin *table.Admin) error + DelAdminAccount(ctx context.Context, userIDs []string) error + SearchAdminAccount(ctx context.Context, keyword string, page, size int32) (uint32, []*table.Admin, error) CreateApplet(ctx context.Context, applets ...*table.Applet) error DelApplet(ctx context.Context, appletIDs []string) error GetApplet(ctx context.Context, appletID string) (*table.Applet, error) @@ -121,6 +125,21 @@ func (o *AdminDatabase) UpdateAdmin(ctx context.Context, userID string, update m return o.admin.Update(ctx, userID, update) } +func (o *AdminDatabase) ChangePassword(ctx context.Context, userID string, newPassword string) error { + return o.admin.ChangePassword(ctx, userID, newPassword) +} +func (o *AdminDatabase) AddAdminAccount(ctx context.Context, admin *table.Admin) error { + return o.admin.Create(ctx, admin) +} + +func (o *AdminDatabase) DelAdminAccount(ctx context.Context, userIDs []string) error { + return o.admin.Delete(ctx, userIDs) +} + +func (o *AdminDatabase) SearchAdminAccount(ctx context.Context, keyword string, page, size int32) (uint32, []*table.Admin, error) { + return o.admin.Search(ctx, keyword, page, size) +} + func (o *AdminDatabase) CreateApplet(ctx context.Context, applets ...*table.Applet) error { return o.applet.Create(ctx, applets...) } diff --git a/pkg/common/db/model/admin/admin.go b/pkg/common/db/model/admin/admin.go index befd2659f..4a1ed82f2 100644 --- a/pkg/common/db/model/admin/admin.go +++ b/pkg/common/db/model/admin/admin.go @@ -18,9 +18,9 @@ import ( "context" "crypto/md5" "encoding/hex" + "github.com/OpenIMSDK/tools/ormutil" "time" - "github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/chat/pkg/common/config" @@ -53,6 +53,22 @@ func (o *Admin) Update(ctx context.Context, account string, update map[string]an return errs.Wrap(o.db.WithContext(ctx).Model(&admin.Admin{}).Where("user_id = ?", account).Updates(update).Error) } +func (o *Admin) Create(ctx context.Context, admin *admin.Admin) error { + return errs.Wrap(o.db.WithContext(ctx).Create(&admin).Error) +} + +func (o *Admin) ChangePassword(ctx context.Context, userID string, newPassword string) error { + return errs.Wrap(o.db.WithContext(ctx).Model(&admin.Admin{}).Where("account=?", userID).Update("password", newPassword).Error) +} + +func (o *Admin) Delete(ctx context.Context, userIDs []string) error { + return errs.Wrap(o.db.WithContext(ctx).Where("user_id in ?", userIDs).Delete(&admin.Admin{}).Error) +} + +func (o *Admin) Search(ctx context.Context, keyword string, page, size int32) (uint32, []*admin.Admin, error) { + return ormutil.GormSearch[admin.Admin](o.db.WithContext(ctx), []string{}, keyword, page, size) +} + func (o *Admin) InitAdmin(ctx context.Context) error { var count int64 if err := o.db.WithContext(ctx).Model(&admin.Admin{}).Count(&count).Error; err != nil { diff --git a/pkg/common/db/table/admin/admin.go b/pkg/common/db/table/admin/admin.go index 41500f576..a45af67b1 100644 --- a/pkg/common/db/table/admin/admin.go +++ b/pkg/common/db/table/admin/admin.go @@ -35,8 +35,12 @@ func (Admin) TableName() string { } type AdminInterface interface { + Create(ctx context.Context, admin *Admin) error Take(ctx context.Context, account string) (*Admin, error) TakeUserID(ctx context.Context, userID string) (*Admin, error) Update(ctx context.Context, account string, update map[string]any) error + ChangePassword(ctx context.Context, userID string, newPassword string) error + Delete(ctx context.Context, userIDs []string) error + Search(ctx context.Context, key string, page, size int32) (uint32, []*Admin, error) InitAdmin(ctx context.Context) error } diff --git a/pkg/proto/admin/admin.go b/pkg/proto/admin/admin.go index f386ccf43..2e6ff898d 100644 --- a/pkg/proto/admin/admin.go +++ b/pkg/proto/admin/admin.go @@ -344,3 +344,46 @@ func (x *SetClientConfigReq) Check() error { } return nil } + +func (x *ChangeAdminPasswordReq) Check() error { + if x.UserID == "" { + return errs.ErrArgs.Wrap("userID is empty") + } + if x.CurrentPassword == "" { + return errs.ErrArgs.Wrap("currentPassword is empty") + } + if x.NewPassword == "" { + return errs.ErrArgs.Wrap("newPassword is empty") + } + if x.CurrentPassword == x.NewPassword { + return errs.ErrArgs.Wrap("currentPassword is equal to newPassword") + } + return nil +} + +func (x *AddAdminAccountReq) Check() error { + if x.Account == "" { + return errs.ErrArgs.Wrap("account is empty") + } + if x.Password == "" { + return errs.ErrArgs.Wrap("password is empty") + } + return nil +} + +func (x *DelAdminAccountReq) Check() error { + if len(x.UserIDs) == 0 { + return errs.ErrArgs.Wrap("userIDs is empty") + } + return nil +} + +func (x *SearchAdminAccountReq) Check() error { + if x.Pagination.ShowNumber == 0 { + return errs.ErrArgs.Wrap("showNumber is empty") + } + if x.Pagination.PageNumber == 0 { + return errs.ErrArgs.Wrap("pageNumber is empty") + } + return nil +} diff --git a/pkg/proto/admin/admin.pb.go b/pkg/proto/admin/admin.pb.go index a7ceeb7db..b8178cfd7 100644 --- a/pkg/proto/admin/admin.pb.go +++ b/pkg/proto/admin/admin.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.29.1 -// protoc v4.22.0 +// protoc-gen-go v1.31.0 +// protoc v3.21.6 // source: admin/admin.proto package admin @@ -47,8 +47,8 @@ type LoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` } func (x *LoginReq) Reset() { @@ -102,12 +102,12 @@ type LoginResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AdminAccount string `protobuf:"bytes,1,opt,name=adminAccount,proto3" json:"adminAccount"` - AdminToken string `protobuf:"bytes,2,opt,name=adminToken,proto3" json:"adminToken"` - Nickname string `protobuf:"bytes,3,opt,name=nickname,proto3" json:"nickname"` - FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL"` - Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level"` - AdminUserID string `protobuf:"bytes,6,opt,name=adminUserID,proto3" json:"adminUserID"` + AdminAccount string `protobuf:"bytes,1,opt,name=adminAccount,proto3" json:"adminAccount,omitempty"` + AdminToken string `protobuf:"bytes,2,opt,name=adminToken,proto3" json:"adminToken,omitempty"` + Nickname string `protobuf:"bytes,3,opt,name=nickname,proto3" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level,omitempty"` + AdminUserID string `protobuf:"bytes,6,opt,name=adminUserID,proto3" json:"adminUserID,omitempty"` } func (x *LoginResp) Reset() { @@ -184,22 +184,131 @@ func (x *LoginResp) GetAdminUserID() string { return "" } +type AddAdminAccountReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` +} + +func (x *AddAdminAccountReq) Reset() { + *x = AddAdminAccountReq{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddAdminAccountReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddAdminAccountReq) ProtoMessage() {} + +func (x *AddAdminAccountReq) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddAdminAccountReq.ProtoReflect.Descriptor instead. +func (*AddAdminAccountReq) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{2} +} + +func (x *AddAdminAccountReq) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +func (x *AddAdminAccountReq) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *AddAdminAccountReq) GetFaceURL() string { + if x != nil { + return x.FaceURL + } + return "" +} + +func (x *AddAdminAccountReq) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +type AddAdminAccountResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddAdminAccountResp) Reset() { + *x = AddAdminAccountResp{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddAdminAccountResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddAdminAccountResp) ProtoMessage() {} + +func (x *AddAdminAccountResp) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddAdminAccountResp.ProtoReflect.Descriptor instead. +func (*AddAdminAccountResp) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{3} +} + type AdminUpdateInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` - Password *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` - FaceURL *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` - Nickname *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname"` - Level *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=level,proto3" json:"level"` + Account *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Password *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + FaceURL *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Nickname *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + Level *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=level,proto3" json:"level,omitempty"` } func (x *AdminUpdateInfoReq) Reset() { *x = AdminUpdateInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[2] + mi := &file_admin_admin_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -212,7 +321,7 @@ func (x *AdminUpdateInfoReq) String() string { func (*AdminUpdateInfoReq) ProtoMessage() {} func (x *AdminUpdateInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[2] + mi := &file_admin_admin_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -225,7 +334,7 @@ func (x *AdminUpdateInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminUpdateInfoReq.ProtoReflect.Descriptor instead. func (*AdminUpdateInfoReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{2} + return file_admin_admin_proto_rawDescGZIP(), []int{4} } func (x *AdminUpdateInfoReq) GetAccount() *wrapperspb.StringValue { @@ -268,15 +377,15 @@ type AdminUpdateInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` } func (x *AdminUpdateInfoResp) Reset() { *x = AdminUpdateInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[3] + mi := &file_admin_admin_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -289,7 +398,7 @@ func (x *AdminUpdateInfoResp) String() string { func (*AdminUpdateInfoResp) ProtoMessage() {} func (x *AdminUpdateInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[3] + mi := &file_admin_admin_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -302,7 +411,7 @@ func (x *AdminUpdateInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminUpdateInfoResp.ProtoReflect.Descriptor instead. func (*AdminUpdateInfoResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{3} + return file_admin_admin_proto_rawDescGZIP(), []int{5} } func (x *AdminUpdateInfoResp) GetUserID() string { @@ -331,13 +440,13 @@ type ChangePasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password"` + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` } func (x *ChangePasswordReq) Reset() { *x = ChangePasswordReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[4] + mi := &file_admin_admin_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -350,7 +459,7 @@ func (x *ChangePasswordReq) String() string { func (*ChangePasswordReq) ProtoMessage() {} func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[4] + mi := &file_admin_admin_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -363,7 +472,7 @@ func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. func (*ChangePasswordReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{4} + return file_admin_admin_proto_rawDescGZIP(), []int{6} } func (x *ChangePasswordReq) GetPassword() string { @@ -382,7 +491,7 @@ type ChangePasswordResp struct { func (x *ChangePasswordResp) Reset() { *x = ChangePasswordResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[5] + mi := &file_admin_admin_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -395,7 +504,7 @@ func (x *ChangePasswordResp) String() string { func (*ChangePasswordResp) ProtoMessage() {} func (x *ChangePasswordResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[5] + mi := &file_admin_admin_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -408,7 +517,7 @@ func (x *ChangePasswordResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePasswordResp.ProtoReflect.Descriptor instead. func (*ChangePasswordResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{5} + return file_admin_admin_proto_rawDescGZIP(), []int{7} } type GetAdminInfoReq struct { @@ -420,7 +529,7 @@ type GetAdminInfoReq struct { func (x *GetAdminInfoReq) Reset() { *x = GetAdminInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[6] + mi := &file_admin_admin_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -433,7 +542,7 @@ func (x *GetAdminInfoReq) String() string { func (*GetAdminInfoReq) ProtoMessage() {} func (x *GetAdminInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[6] + mi := &file_admin_admin_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -446,7 +555,303 @@ func (x *GetAdminInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAdminInfoReq.ProtoReflect.Descriptor instead. func (*GetAdminInfoReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{6} + return file_admin_admin_proto_rawDescGZIP(), []int{8} +} + +type ChangeAdminPasswordReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword,omitempty"` + NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword,omitempty"` +} + +func (x *ChangeAdminPasswordReq) Reset() { + *x = ChangeAdminPasswordReq{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChangeAdminPasswordReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChangeAdminPasswordReq) ProtoMessage() {} + +func (x *ChangeAdminPasswordReq) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChangeAdminPasswordReq.ProtoReflect.Descriptor instead. +func (*ChangeAdminPasswordReq) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{9} +} + +func (x *ChangeAdminPasswordReq) GetUserID() string { + if x != nil { + return x.UserID + } + return "" +} + +func (x *ChangeAdminPasswordReq) GetCurrentPassword() string { + if x != nil { + return x.CurrentPassword + } + return "" +} + +func (x *ChangeAdminPasswordReq) GetNewPassword() string { + if x != nil { + return x.NewPassword + } + return "" +} + +type ChangeAdminPasswordResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ChangeAdminPasswordResp) Reset() { + *x = ChangeAdminPasswordResp{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChangeAdminPasswordResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChangeAdminPasswordResp) ProtoMessage() {} + +func (x *ChangeAdminPasswordResp) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChangeAdminPasswordResp.ProtoReflect.Descriptor instead. +func (*ChangeAdminPasswordResp) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{10} +} + +type DelAdminAccountReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` +} + +func (x *DelAdminAccountReq) Reset() { + *x = DelAdminAccountReq{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelAdminAccountReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelAdminAccountReq) ProtoMessage() {} + +func (x *DelAdminAccountReq) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DelAdminAccountReq.ProtoReflect.Descriptor instead. +func (*DelAdminAccountReq) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{11} +} + +func (x *DelAdminAccountReq) GetUserIDs() []string { + if x != nil { + return x.UserIDs + } + return nil +} + +type DelAdminAccountResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DelAdminAccountResp) Reset() { + *x = DelAdminAccountResp{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelAdminAccountResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelAdminAccountResp) ProtoMessage() {} + +func (x *DelAdminAccountResp) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DelAdminAccountResp.ProtoReflect.Descriptor instead. +func (*DelAdminAccountResp) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{12} +} + +type SearchAdminAccountReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *SearchAdminAccountReq) Reset() { + *x = SearchAdminAccountReq{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchAdminAccountReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchAdminAccountReq) ProtoMessage() {} + +func (x *SearchAdminAccountReq) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchAdminAccountReq.ProtoReflect.Descriptor instead. +func (*SearchAdminAccountReq) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{13} +} + +func (x *SearchAdminAccountReq) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *SearchAdminAccountReq) GetPagination() *sdkws.RequestPagination { + if x != nil { + return x.Pagination + } + return nil +} + +type SearchAdminAccountResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + AdminAccounts []*GetAdminInfoResp `protobuf:"bytes,2,rep,name=adminAccounts,proto3" json:"adminAccounts,omitempty"` +} + +func (x *SearchAdminAccountResp) Reset() { + *x = SearchAdminAccountResp{} + if protoimpl.UnsafeEnabled { + mi := &file_admin_admin_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchAdminAccountResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchAdminAccountResp) ProtoMessage() {} + +func (x *SearchAdminAccountResp) ProtoReflect() protoreflect.Message { + mi := &file_admin_admin_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchAdminAccountResp.ProtoReflect.Descriptor instead. +func (*SearchAdminAccountResp) Descriptor() ([]byte, []int) { + return file_admin_admin_proto_rawDescGZIP(), []int{14} +} + +func (x *SearchAdminAccountResp) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *SearchAdminAccountResp) GetAdminAccounts() []*GetAdminInfoResp { + if x != nil { + return x.AdminAccounts + } + return nil } type GetAdminInfoResp struct { @@ -454,19 +859,19 @@ type GetAdminInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password"` - FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL"` - Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname"` - UserID string `protobuf:"bytes,6,opt,name=userID,proto3" json:"userID"` - Level int32 `protobuf:"varint,7,opt,name=level,proto3" json:"level"` - CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime"` + Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname,omitempty"` + UserID string `protobuf:"bytes,6,opt,name=userID,proto3" json:"userID,omitempty"` + Level int32 `protobuf:"varint,7,opt,name=level,proto3" json:"level,omitempty"` + CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime,omitempty"` } func (x *GetAdminInfoResp) Reset() { *x = GetAdminInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[7] + mi := &file_admin_admin_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -479,7 +884,7 @@ func (x *GetAdminInfoResp) String() string { func (*GetAdminInfoResp) ProtoMessage() {} func (x *GetAdminInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[7] + mi := &file_admin_admin_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -492,7 +897,7 @@ func (x *GetAdminInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAdminInfoResp.ProtoReflect.Descriptor instead. func (*GetAdminInfoResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{7} + return file_admin_admin_proto_rawDescGZIP(), []int{15} } func (x *GetAdminInfoResp) GetAccount() string { @@ -549,13 +954,13 @@ type AddDefaultFriendReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *AddDefaultFriendReq) Reset() { *x = AddDefaultFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[8] + mi := &file_admin_admin_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -568,7 +973,7 @@ func (x *AddDefaultFriendReq) String() string { func (*AddDefaultFriendReq) ProtoMessage() {} func (x *AddDefaultFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[8] + mi := &file_admin_admin_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -581,7 +986,7 @@ func (x *AddDefaultFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddDefaultFriendReq.ProtoReflect.Descriptor instead. func (*AddDefaultFriendReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{8} + return file_admin_admin_proto_rawDescGZIP(), []int{16} } func (x *AddDefaultFriendReq) GetUserIDs() []string { @@ -600,7 +1005,7 @@ type AddDefaultFriendResp struct { func (x *AddDefaultFriendResp) Reset() { *x = AddDefaultFriendResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[9] + mi := &file_admin_admin_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -613,7 +1018,7 @@ func (x *AddDefaultFriendResp) String() string { func (*AddDefaultFriendResp) ProtoMessage() {} func (x *AddDefaultFriendResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[9] + mi := &file_admin_admin_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -626,7 +1031,7 @@ func (x *AddDefaultFriendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddDefaultFriendResp.ProtoReflect.Descriptor instead. func (*AddDefaultFriendResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{9} + return file_admin_admin_proto_rawDescGZIP(), []int{17} } type DelDefaultFriendReq struct { @@ -634,13 +1039,13 @@ type DelDefaultFriendReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *DelDefaultFriendReq) Reset() { *x = DelDefaultFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[10] + mi := &file_admin_admin_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -653,7 +1058,7 @@ func (x *DelDefaultFriendReq) String() string { func (*DelDefaultFriendReq) ProtoMessage() {} func (x *DelDefaultFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[10] + mi := &file_admin_admin_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -666,7 +1071,7 @@ func (x *DelDefaultFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelDefaultFriendReq.ProtoReflect.Descriptor instead. func (*DelDefaultFriendReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{10} + return file_admin_admin_proto_rawDescGZIP(), []int{18} } func (x *DelDefaultFriendReq) GetUserIDs() []string { @@ -685,7 +1090,7 @@ type DelDefaultFriendResp struct { func (x *DelDefaultFriendResp) Reset() { *x = DelDefaultFriendResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[11] + mi := &file_admin_admin_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -698,7 +1103,7 @@ func (x *DelDefaultFriendResp) String() string { func (*DelDefaultFriendResp) ProtoMessage() {} func (x *DelDefaultFriendResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[11] + mi := &file_admin_admin_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -711,7 +1116,7 @@ func (x *DelDefaultFriendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelDefaultFriendResp.ProtoReflect.Descriptor instead. func (*DelDefaultFriendResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{11} + return file_admin_admin_proto_rawDescGZIP(), []int{19} } type FindDefaultFriendReq struct { @@ -723,7 +1128,7 @@ type FindDefaultFriendReq struct { func (x *FindDefaultFriendReq) Reset() { *x = FindDefaultFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[12] + mi := &file_admin_admin_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -736,7 +1141,7 @@ func (x *FindDefaultFriendReq) String() string { func (*FindDefaultFriendReq) ProtoMessage() {} func (x *FindDefaultFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[12] + mi := &file_admin_admin_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -749,7 +1154,7 @@ func (x *FindDefaultFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindDefaultFriendReq.ProtoReflect.Descriptor instead. func (*FindDefaultFriendReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{12} + return file_admin_admin_proto_rawDescGZIP(), []int{20} } type FindDefaultFriendResp struct { @@ -757,13 +1162,13 @@ type FindDefaultFriendResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *FindDefaultFriendResp) Reset() { *x = FindDefaultFriendResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[13] + mi := &file_admin_admin_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -776,7 +1181,7 @@ func (x *FindDefaultFriendResp) String() string { func (*FindDefaultFriendResp) ProtoMessage() {} func (x *FindDefaultFriendResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[13] + mi := &file_admin_admin_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -789,7 +1194,7 @@ func (x *FindDefaultFriendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindDefaultFriendResp.ProtoReflect.Descriptor instead. func (*FindDefaultFriendResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{13} + return file_admin_admin_proto_rawDescGZIP(), []int{21} } func (x *FindDefaultFriendResp) GetUserIDs() []string { @@ -804,14 +1209,14 @@ type SearchDefaultFriendReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchDefaultFriendReq) Reset() { *x = SearchDefaultFriendReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[14] + mi := &file_admin_admin_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +1229,7 @@ func (x *SearchDefaultFriendReq) String() string { func (*SearchDefaultFriendReq) ProtoMessage() {} func (x *SearchDefaultFriendReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[14] + mi := &file_admin_admin_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +1242,7 @@ func (x *SearchDefaultFriendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchDefaultFriendReq.ProtoReflect.Descriptor instead. func (*SearchDefaultFriendReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{14} + return file_admin_admin_proto_rawDescGZIP(), []int{22} } func (x *SearchDefaultFriendReq) GetKeyword() string { @@ -859,15 +1264,15 @@ type DefaultFriendAttribute struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` - User *common.UserPublicInfo `protobuf:"bytes,3,opt,name=user,proto3" json:"user"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` + User *common.UserPublicInfo `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` } func (x *DefaultFriendAttribute) Reset() { *x = DefaultFriendAttribute{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[15] + mi := &file_admin_admin_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -880,7 +1285,7 @@ func (x *DefaultFriendAttribute) String() string { func (*DefaultFriendAttribute) ProtoMessage() {} func (x *DefaultFriendAttribute) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[15] + mi := &file_admin_admin_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -893,7 +1298,7 @@ func (x *DefaultFriendAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DefaultFriendAttribute.ProtoReflect.Descriptor instead. func (*DefaultFriendAttribute) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{15} + return file_admin_admin_proto_rawDescGZIP(), []int{23} } func (x *DefaultFriendAttribute) GetUserID() string { @@ -922,14 +1327,14 @@ type SearchDefaultFriendResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Users []*DefaultFriendAttribute `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Users []*DefaultFriendAttribute `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` } func (x *SearchDefaultFriendResp) Reset() { *x = SearchDefaultFriendResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[16] + mi := &file_admin_admin_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -942,7 +1347,7 @@ func (x *SearchDefaultFriendResp) String() string { func (*SearchDefaultFriendResp) ProtoMessage() {} func (x *SearchDefaultFriendResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[16] + mi := &file_admin_admin_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -955,7 +1360,7 @@ func (x *SearchDefaultFriendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchDefaultFriendResp.ProtoReflect.Descriptor instead. func (*SearchDefaultFriendResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{16} + return file_admin_admin_proto_rawDescGZIP(), []int{24} } func (x *SearchDefaultFriendResp) GetTotal() uint32 { @@ -977,13 +1382,13 @@ type AddDefaultGroupReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` + GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` } func (x *AddDefaultGroupReq) Reset() { *x = AddDefaultGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[17] + mi := &file_admin_admin_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -996,7 +1401,7 @@ func (x *AddDefaultGroupReq) String() string { func (*AddDefaultGroupReq) ProtoMessage() {} func (x *AddDefaultGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[17] + mi := &file_admin_admin_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1009,7 +1414,7 @@ func (x *AddDefaultGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddDefaultGroupReq.ProtoReflect.Descriptor instead. func (*AddDefaultGroupReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{17} + return file_admin_admin_proto_rawDescGZIP(), []int{25} } func (x *AddDefaultGroupReq) GetGroupIDs() []string { @@ -1028,7 +1433,7 @@ type AddDefaultGroupResp struct { func (x *AddDefaultGroupResp) Reset() { *x = AddDefaultGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[18] + mi := &file_admin_admin_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1041,7 +1446,7 @@ func (x *AddDefaultGroupResp) String() string { func (*AddDefaultGroupResp) ProtoMessage() {} func (x *AddDefaultGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[18] + mi := &file_admin_admin_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1054,7 +1459,7 @@ func (x *AddDefaultGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddDefaultGroupResp.ProtoReflect.Descriptor instead. func (*AddDefaultGroupResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{18} + return file_admin_admin_proto_rawDescGZIP(), []int{26} } type DelDefaultGroupReq struct { @@ -1062,13 +1467,13 @@ type DelDefaultGroupReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` + GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` } func (x *DelDefaultGroupReq) Reset() { *x = DelDefaultGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[19] + mi := &file_admin_admin_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1081,7 +1486,7 @@ func (x *DelDefaultGroupReq) String() string { func (*DelDefaultGroupReq) ProtoMessage() {} func (x *DelDefaultGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[19] + mi := &file_admin_admin_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1094,7 +1499,7 @@ func (x *DelDefaultGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelDefaultGroupReq.ProtoReflect.Descriptor instead. func (*DelDefaultGroupReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{19} + return file_admin_admin_proto_rawDescGZIP(), []int{27} } func (x *DelDefaultGroupReq) GetGroupIDs() []string { @@ -1113,7 +1518,7 @@ type DelDefaultGroupResp struct { func (x *DelDefaultGroupResp) Reset() { *x = DelDefaultGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[20] + mi := &file_admin_admin_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1126,7 +1531,7 @@ func (x *DelDefaultGroupResp) String() string { func (*DelDefaultGroupResp) ProtoMessage() {} func (x *DelDefaultGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[20] + mi := &file_admin_admin_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1139,7 +1544,7 @@ func (x *DelDefaultGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelDefaultGroupResp.ProtoReflect.Descriptor instead. func (*DelDefaultGroupResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{20} + return file_admin_admin_proto_rawDescGZIP(), []int{28} } type FindDefaultGroupReq struct { @@ -1151,7 +1556,7 @@ type FindDefaultGroupReq struct { func (x *FindDefaultGroupReq) Reset() { *x = FindDefaultGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[21] + mi := &file_admin_admin_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1164,7 +1569,7 @@ func (x *FindDefaultGroupReq) String() string { func (*FindDefaultGroupReq) ProtoMessage() {} func (x *FindDefaultGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[21] + mi := &file_admin_admin_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1177,7 +1582,7 @@ func (x *FindDefaultGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindDefaultGroupReq.ProtoReflect.Descriptor instead. func (*FindDefaultGroupReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{21} + return file_admin_admin_proto_rawDescGZIP(), []int{29} } type FindDefaultGroupResp struct { @@ -1185,13 +1590,13 @@ type FindDefaultGroupResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` + GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` } func (x *FindDefaultGroupResp) Reset() { *x = FindDefaultGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[22] + mi := &file_admin_admin_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1204,7 +1609,7 @@ func (x *FindDefaultGroupResp) String() string { func (*FindDefaultGroupResp) ProtoMessage() {} func (x *FindDefaultGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[22] + mi := &file_admin_admin_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1217,7 +1622,7 @@ func (x *FindDefaultGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindDefaultGroupResp.ProtoReflect.Descriptor instead. func (*FindDefaultGroupResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{22} + return file_admin_admin_proto_rawDescGZIP(), []int{30} } func (x *FindDefaultGroupResp) GetGroupIDs() []string { @@ -1232,14 +1637,14 @@ type SearchDefaultGroupReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchDefaultGroupReq) Reset() { *x = SearchDefaultGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[23] + mi := &file_admin_admin_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1252,7 +1657,7 @@ func (x *SearchDefaultGroupReq) String() string { func (*SearchDefaultGroupReq) ProtoMessage() {} func (x *SearchDefaultGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[23] + mi := &file_admin_admin_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1265,7 +1670,7 @@ func (x *SearchDefaultGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchDefaultGroupReq.ProtoReflect.Descriptor instead. func (*SearchDefaultGroupReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{23} + return file_admin_admin_proto_rawDescGZIP(), []int{31} } func (x *SearchDefaultGroupReq) GetKeyword() string { @@ -1287,15 +1692,15 @@ type GroupAttribute struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID"` - CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` - Group *sdkws.GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group"` + GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` + CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` + Group *sdkws.GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"` } func (x *GroupAttribute) Reset() { *x = GroupAttribute{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[24] + mi := &file_admin_admin_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1308,7 +1713,7 @@ func (x *GroupAttribute) String() string { func (*GroupAttribute) ProtoMessage() {} func (x *GroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[24] + mi := &file_admin_admin_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1321,7 +1726,7 @@ func (x *GroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupAttribute.ProtoReflect.Descriptor instead. func (*GroupAttribute) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{24} + return file_admin_admin_proto_rawDescGZIP(), []int{32} } func (x *GroupAttribute) GetGroupID() string { @@ -1350,14 +1755,14 @@ type SearchDefaultGroupResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - GroupIDs []string `protobuf:"bytes,2,rep,name=groupIDs,proto3" json:"groupIDs"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + GroupIDs []string `protobuf:"bytes,2,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` } func (x *SearchDefaultGroupResp) Reset() { *x = SearchDefaultGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[25] + mi := &file_admin_admin_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1370,7 +1775,7 @@ func (x *SearchDefaultGroupResp) String() string { func (*SearchDefaultGroupResp) ProtoMessage() {} func (x *SearchDefaultGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[25] + mi := &file_admin_admin_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1383,7 +1788,7 @@ func (x *SearchDefaultGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchDefaultGroupResp.ProtoReflect.Descriptor instead. func (*SearchDefaultGroupResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{25} + return file_admin_admin_proto_rawDescGZIP(), []int{33} } func (x *SearchDefaultGroupResp) GetTotal() uint32 { @@ -1405,13 +1810,13 @@ type AddInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` + Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` } func (x *AddInvitationCodeReq) Reset() { *x = AddInvitationCodeReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[26] + mi := &file_admin_admin_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1424,7 +1829,7 @@ func (x *AddInvitationCodeReq) String() string { func (*AddInvitationCodeReq) ProtoMessage() {} func (x *AddInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[26] + mi := &file_admin_admin_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1437,7 +1842,7 @@ func (x *AddInvitationCodeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddInvitationCodeReq.ProtoReflect.Descriptor instead. func (*AddInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{26} + return file_admin_admin_proto_rawDescGZIP(), []int{34} } func (x *AddInvitationCodeReq) GetCodes() []string { @@ -1456,7 +1861,7 @@ type AddInvitationCodeResp struct { func (x *AddInvitationCodeResp) Reset() { *x = AddInvitationCodeResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[27] + mi := &file_admin_admin_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1469,7 +1874,7 @@ func (x *AddInvitationCodeResp) String() string { func (*AddInvitationCodeResp) ProtoMessage() {} func (x *AddInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[27] + mi := &file_admin_admin_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1482,7 +1887,7 @@ func (x *AddInvitationCodeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddInvitationCodeResp.ProtoReflect.Descriptor instead. func (*AddInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{27} + return file_admin_admin_proto_rawDescGZIP(), []int{35} } type GenInvitationCodeReq struct { @@ -1490,15 +1895,15 @@ type GenInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Len int32 `protobuf:"varint,1,opt,name=len,proto3" json:"len"` - Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` - Chars string `protobuf:"bytes,3,opt,name=chars,proto3" json:"chars"` + Len int32 `protobuf:"varint,1,opt,name=len,proto3" json:"len,omitempty"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` + Chars string `protobuf:"bytes,3,opt,name=chars,proto3" json:"chars,omitempty"` } func (x *GenInvitationCodeReq) Reset() { *x = GenInvitationCodeReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[28] + mi := &file_admin_admin_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1511,7 +1916,7 @@ func (x *GenInvitationCodeReq) String() string { func (*GenInvitationCodeReq) ProtoMessage() {} func (x *GenInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[28] + mi := &file_admin_admin_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1524,7 +1929,7 @@ func (x *GenInvitationCodeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GenInvitationCodeReq.ProtoReflect.Descriptor instead. func (*GenInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{28} + return file_admin_admin_proto_rawDescGZIP(), []int{36} } func (x *GenInvitationCodeReq) GetLen() int32 { @@ -1557,7 +1962,7 @@ type GenInvitationCodeResp struct { func (x *GenInvitationCodeResp) Reset() { *x = GenInvitationCodeResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[29] + mi := &file_admin_admin_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +1975,7 @@ func (x *GenInvitationCodeResp) String() string { func (*GenInvitationCodeResp) ProtoMessage() {} func (x *GenInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[29] + mi := &file_admin_admin_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +1988,7 @@ func (x *GenInvitationCodeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GenInvitationCodeResp.ProtoReflect.Descriptor instead. func (*GenInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{29} + return file_admin_admin_proto_rawDescGZIP(), []int{37} } type FindInvitationCodeReq struct { @@ -1591,13 +1996,13 @@ type FindInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` + Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` } func (x *FindInvitationCodeReq) Reset() { *x = FindInvitationCodeReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[30] + mi := &file_admin_admin_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1610,7 +2015,7 @@ func (x *FindInvitationCodeReq) String() string { func (*FindInvitationCodeReq) ProtoMessage() {} func (x *FindInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[30] + mi := &file_admin_admin_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1623,7 +2028,7 @@ func (x *FindInvitationCodeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindInvitationCodeReq.ProtoReflect.Descriptor instead. func (*FindInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{30} + return file_admin_admin_proto_rawDescGZIP(), []int{38} } func (x *FindInvitationCodeReq) GetCodes() []string { @@ -1638,13 +2043,13 @@ type FindInvitationCodeResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []*InvitationRegister `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` + Codes []*InvitationRegister `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` } func (x *FindInvitationCodeResp) Reset() { *x = FindInvitationCodeResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[31] + mi := &file_admin_admin_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1657,7 +2062,7 @@ func (x *FindInvitationCodeResp) String() string { func (*FindInvitationCodeResp) ProtoMessage() {} func (x *FindInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[31] + mi := &file_admin_admin_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1670,7 +2075,7 @@ func (x *FindInvitationCodeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindInvitationCodeResp.ProtoReflect.Descriptor instead. func (*FindInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{31} + return file_admin_admin_proto_rawDescGZIP(), []int{39} } func (x *FindInvitationCodeResp) GetCodes() []*InvitationRegister { @@ -1685,14 +2090,14 @@ type UseInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` } func (x *UseInvitationCodeReq) Reset() { *x = UseInvitationCodeReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[32] + mi := &file_admin_admin_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1705,7 +2110,7 @@ func (x *UseInvitationCodeReq) String() string { func (*UseInvitationCodeReq) ProtoMessage() {} func (x *UseInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[32] + mi := &file_admin_admin_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1718,7 +2123,7 @@ func (x *UseInvitationCodeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UseInvitationCodeReq.ProtoReflect.Descriptor instead. func (*UseInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{32} + return file_admin_admin_proto_rawDescGZIP(), []int{40} } func (x *UseInvitationCodeReq) GetCode() string { @@ -1744,7 +2149,7 @@ type UseInvitationCodeResp struct { func (x *UseInvitationCodeResp) Reset() { *x = UseInvitationCodeResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[33] + mi := &file_admin_admin_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1757,7 +2162,7 @@ func (x *UseInvitationCodeResp) String() string { func (*UseInvitationCodeResp) ProtoMessage() {} func (x *UseInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[33] + mi := &file_admin_admin_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1770,7 +2175,7 @@ func (x *UseInvitationCodeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UseInvitationCodeResp.ProtoReflect.Descriptor instead. func (*UseInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{33} + return file_admin_admin_proto_rawDescGZIP(), []int{41} } type DelInvitationCodeReq struct { @@ -1778,13 +2183,13 @@ type DelInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` + Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` } func (x *DelInvitationCodeReq) Reset() { *x = DelInvitationCodeReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[34] + mi := &file_admin_admin_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1797,7 +2202,7 @@ func (x *DelInvitationCodeReq) String() string { func (*DelInvitationCodeReq) ProtoMessage() {} func (x *DelInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[34] + mi := &file_admin_admin_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1810,7 +2215,7 @@ func (x *DelInvitationCodeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelInvitationCodeReq.ProtoReflect.Descriptor instead. func (*DelInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{34} + return file_admin_admin_proto_rawDescGZIP(), []int{42} } func (x *DelInvitationCodeReq) GetCodes() []string { @@ -1829,7 +2234,7 @@ type DelInvitationCodeResp struct { func (x *DelInvitationCodeResp) Reset() { *x = DelInvitationCodeResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[35] + mi := &file_admin_admin_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1842,7 +2247,7 @@ func (x *DelInvitationCodeResp) String() string { func (*DelInvitationCodeResp) ProtoMessage() {} func (x *DelInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[35] + mi := &file_admin_admin_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1855,7 +2260,7 @@ func (x *DelInvitationCodeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelInvitationCodeResp.ProtoReflect.Descriptor instead. func (*DelInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{35} + return file_admin_admin_proto_rawDescGZIP(), []int{43} } type InvitationRegister struct { @@ -1863,16 +2268,16 @@ type InvitationRegister struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode"` - CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` - UsedUserID string `protobuf:"bytes,3,opt,name=usedUserID,proto3" json:"usedUserID"` - UsedUser *common.UserPublicInfo `protobuf:"bytes,4,opt,name=usedUser,proto3" json:"usedUser"` + InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` + CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` + UsedUserID string `protobuf:"bytes,3,opt,name=usedUserID,proto3" json:"usedUserID,omitempty"` + UsedUser *common.UserPublicInfo `protobuf:"bytes,4,opt,name=usedUser,proto3" json:"usedUser,omitempty"` } func (x *InvitationRegister) Reset() { *x = InvitationRegister{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[36] + mi := &file_admin_admin_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1885,7 +2290,7 @@ func (x *InvitationRegister) String() string { func (*InvitationRegister) ProtoMessage() {} func (x *InvitationRegister) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[36] + mi := &file_admin_admin_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1898,7 +2303,7 @@ func (x *InvitationRegister) ProtoReflect() protoreflect.Message { // Deprecated: Use InvitationRegister.ProtoReflect.Descriptor instead. func (*InvitationRegister) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{36} + return file_admin_admin_proto_rawDescGZIP(), []int{44} } func (x *InvitationRegister) GetInvitationCode() string { @@ -1934,17 +2339,17 @@ type SearchInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status"` - UserIDs []string `protobuf:"bytes,2,rep,name=userIDs,proto3" json:"userIDs"` - Codes []string `protobuf:"bytes,3,rep,name=codes,proto3" json:"codes"` - Keyword string `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination"` + Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` + UserIDs []string `protobuf:"bytes,2,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + Codes []string `protobuf:"bytes,3,rep,name=codes,proto3" json:"codes,omitempty"` + Keyword string `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchInvitationCodeReq) Reset() { *x = SearchInvitationCodeReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[37] + mi := &file_admin_admin_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1957,7 +2362,7 @@ func (x *SearchInvitationCodeReq) String() string { func (*SearchInvitationCodeReq) ProtoMessage() {} func (x *SearchInvitationCodeReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[37] + mi := &file_admin_admin_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1970,7 +2375,7 @@ func (x *SearchInvitationCodeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchInvitationCodeReq.ProtoReflect.Descriptor instead. func (*SearchInvitationCodeReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{37} + return file_admin_admin_proto_rawDescGZIP(), []int{45} } func (x *SearchInvitationCodeReq) GetStatus() int32 { @@ -2013,14 +2418,14 @@ type SearchInvitationCodeResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - List []*InvitationRegister `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + List []*InvitationRegister `protobuf:"bytes,2,rep,name=list,proto3" json:"list,omitempty"` } func (x *SearchInvitationCodeResp) Reset() { *x = SearchInvitationCodeResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[38] + mi := &file_admin_admin_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2033,7 +2438,7 @@ func (x *SearchInvitationCodeResp) String() string { func (*SearchInvitationCodeResp) ProtoMessage() {} func (x *SearchInvitationCodeResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[38] + mi := &file_admin_admin_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2046,7 +2451,7 @@ func (x *SearchInvitationCodeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchInvitationCodeResp.ProtoReflect.Descriptor instead. func (*SearchInvitationCodeResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{38} + return file_admin_admin_proto_rawDescGZIP(), []int{46} } func (x *SearchInvitationCodeResp) GetTotal() uint32 { @@ -2068,14 +2473,14 @@ type SearchUserIPLimitLoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchUserIPLimitLoginReq) Reset() { *x = SearchUserIPLimitLoginReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[39] + mi := &file_admin_admin_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2088,7 +2493,7 @@ func (x *SearchUserIPLimitLoginReq) String() string { func (*SearchUserIPLimitLoginReq) ProtoMessage() {} func (x *SearchUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[39] + mi := &file_admin_admin_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2101,7 +2506,7 @@ func (x *SearchUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserIPLimitLoginReq.ProtoReflect.Descriptor instead. func (*SearchUserIPLimitLoginReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{39} + return file_admin_admin_proto_rawDescGZIP(), []int{47} } func (x *SearchUserIPLimitLoginReq) GetKeyword() string { @@ -2123,16 +2528,16 @@ type LimitUserLoginIP struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` - CreateTime int64 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime"` - User *common.UserPublicInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` + CreateTime int64 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime,omitempty"` + User *common.UserPublicInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"` } func (x *LimitUserLoginIP) Reset() { *x = LimitUserLoginIP{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[40] + mi := &file_admin_admin_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2145,7 +2550,7 @@ func (x *LimitUserLoginIP) String() string { func (*LimitUserLoginIP) ProtoMessage() {} func (x *LimitUserLoginIP) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[40] + mi := &file_admin_admin_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2158,7 +2563,7 @@ func (x *LimitUserLoginIP) ProtoReflect() protoreflect.Message { // Deprecated: Use LimitUserLoginIP.ProtoReflect.Descriptor instead. func (*LimitUserLoginIP) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{40} + return file_admin_admin_proto_rawDescGZIP(), []int{48} } func (x *LimitUserLoginIP) GetUserID() string { @@ -2194,14 +2599,14 @@ type SearchUserIPLimitLoginResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Limits []*LimitUserLoginIP `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Limits []*LimitUserLoginIP `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits,omitempty"` } func (x *SearchUserIPLimitLoginResp) Reset() { *x = SearchUserIPLimitLoginResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[41] + mi := &file_admin_admin_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2214,7 +2619,7 @@ func (x *SearchUserIPLimitLoginResp) String() string { func (*SearchUserIPLimitLoginResp) ProtoMessage() {} func (x *SearchUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[41] + mi := &file_admin_admin_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2227,7 +2632,7 @@ func (x *SearchUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserIPLimitLoginResp.ProtoReflect.Descriptor instead. func (*SearchUserIPLimitLoginResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{41} + return file_admin_admin_proto_rawDescGZIP(), []int{49} } func (x *SearchUserIPLimitLoginResp) GetTotal() uint32 { @@ -2249,14 +2654,14 @@ type UserIPLimitLogin struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` } func (x *UserIPLimitLogin) Reset() { *x = UserIPLimitLogin{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[42] + mi := &file_admin_admin_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2269,7 +2674,7 @@ func (x *UserIPLimitLogin) String() string { func (*UserIPLimitLogin) ProtoMessage() {} func (x *UserIPLimitLogin) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[42] + mi := &file_admin_admin_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2282,7 +2687,7 @@ func (x *UserIPLimitLogin) ProtoReflect() protoreflect.Message { // Deprecated: Use UserIPLimitLogin.ProtoReflect.Descriptor instead. func (*UserIPLimitLogin) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{42} + return file_admin_admin_proto_rawDescGZIP(), []int{50} } func (x *UserIPLimitLogin) GetUserID() string { @@ -2304,13 +2709,13 @@ type AddUserIPLimitLoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits"` + Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits,omitempty"` } func (x *AddUserIPLimitLoginReq) Reset() { *x = AddUserIPLimitLoginReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[43] + mi := &file_admin_admin_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2323,7 +2728,7 @@ func (x *AddUserIPLimitLoginReq) String() string { func (*AddUserIPLimitLoginReq) ProtoMessage() {} func (x *AddUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[43] + mi := &file_admin_admin_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2336,7 +2741,7 @@ func (x *AddUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddUserIPLimitLoginReq.ProtoReflect.Descriptor instead. func (*AddUserIPLimitLoginReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{43} + return file_admin_admin_proto_rawDescGZIP(), []int{51} } func (x *AddUserIPLimitLoginReq) GetLimits() []*UserIPLimitLogin { @@ -2355,7 +2760,7 @@ type AddUserIPLimitLoginResp struct { func (x *AddUserIPLimitLoginResp) Reset() { *x = AddUserIPLimitLoginResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[44] + mi := &file_admin_admin_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2368,7 +2773,7 @@ func (x *AddUserIPLimitLoginResp) String() string { func (*AddUserIPLimitLoginResp) ProtoMessage() {} func (x *AddUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[44] + mi := &file_admin_admin_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2381,7 +2786,7 @@ func (x *AddUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddUserIPLimitLoginResp.ProtoReflect.Descriptor instead. func (*AddUserIPLimitLoginResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{44} + return file_admin_admin_proto_rawDescGZIP(), []int{52} } type DelUserIPLimitLoginReq struct { @@ -2389,13 +2794,13 @@ type DelUserIPLimitLoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits"` + Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits,omitempty"` } func (x *DelUserIPLimitLoginReq) Reset() { *x = DelUserIPLimitLoginReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[45] + mi := &file_admin_admin_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2408,7 +2813,7 @@ func (x *DelUserIPLimitLoginReq) String() string { func (*DelUserIPLimitLoginReq) ProtoMessage() {} func (x *DelUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[45] + mi := &file_admin_admin_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2421,7 +2826,7 @@ func (x *DelUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelUserIPLimitLoginReq.ProtoReflect.Descriptor instead. func (*DelUserIPLimitLoginReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{45} + return file_admin_admin_proto_rawDescGZIP(), []int{53} } func (x *DelUserIPLimitLoginReq) GetLimits() []*UserIPLimitLogin { @@ -2440,7 +2845,7 @@ type DelUserIPLimitLoginResp struct { func (x *DelUserIPLimitLoginResp) Reset() { *x = DelUserIPLimitLoginResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[46] + mi := &file_admin_admin_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2453,7 +2858,7 @@ func (x *DelUserIPLimitLoginResp) String() string { func (*DelUserIPLimitLoginResp) ProtoMessage() {} func (x *DelUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[46] + mi := &file_admin_admin_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2466,7 +2871,7 @@ func (x *DelUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelUserIPLimitLoginResp.ProtoReflect.Descriptor instead. func (*DelUserIPLimitLoginResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{46} + return file_admin_admin_proto_rawDescGZIP(), []int{54} } type IPForbidden struct { @@ -2474,16 +2879,16 @@ type IPForbidden struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` - LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister"` - LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin"` - CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister,omitempty"` + LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin,omitempty"` + CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime,omitempty"` } func (x *IPForbidden) Reset() { *x = IPForbidden{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[47] + mi := &file_admin_admin_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2496,7 +2901,7 @@ func (x *IPForbidden) String() string { func (*IPForbidden) ProtoMessage() {} func (x *IPForbidden) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[47] + mi := &file_admin_admin_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2509,7 +2914,7 @@ func (x *IPForbidden) ProtoReflect() protoreflect.Message { // Deprecated: Use IPForbidden.ProtoReflect.Descriptor instead. func (*IPForbidden) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{47} + return file_admin_admin_proto_rawDescGZIP(), []int{55} } func (x *IPForbidden) GetIp() string { @@ -2545,15 +2950,15 @@ type IPForbiddenAdd struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` - LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister"` - LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister,omitempty"` + LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin,omitempty"` } func (x *IPForbiddenAdd) Reset() { *x = IPForbiddenAdd{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[48] + mi := &file_admin_admin_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2566,7 +2971,7 @@ func (x *IPForbiddenAdd) String() string { func (*IPForbiddenAdd) ProtoMessage() {} func (x *IPForbiddenAdd) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[48] + mi := &file_admin_admin_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2579,7 +2984,7 @@ func (x *IPForbiddenAdd) ProtoReflect() protoreflect.Message { // Deprecated: Use IPForbiddenAdd.ProtoReflect.Descriptor instead. func (*IPForbiddenAdd) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{48} + return file_admin_admin_proto_rawDescGZIP(), []int{56} } func (x *IPForbiddenAdd) GetIp() string { @@ -2608,15 +3013,15 @@ type SearchIPForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchIPForbiddenReq) Reset() { *x = SearchIPForbiddenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[49] + mi := &file_admin_admin_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2629,7 +3034,7 @@ func (x *SearchIPForbiddenReq) String() string { func (*SearchIPForbiddenReq) ProtoMessage() {} func (x *SearchIPForbiddenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[49] + mi := &file_admin_admin_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2642,7 +3047,7 @@ func (x *SearchIPForbiddenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchIPForbiddenReq.ProtoReflect.Descriptor instead. func (*SearchIPForbiddenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{49} + return file_admin_admin_proto_rawDescGZIP(), []int{57} } func (x *SearchIPForbiddenReq) GetKeyword() string { @@ -2671,14 +3076,14 @@ type SearchIPForbiddenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Forbiddens []*IPForbidden `protobuf:"bytes,2,rep,name=forbiddens,proto3" json:"forbiddens"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Forbiddens []*IPForbidden `protobuf:"bytes,2,rep,name=forbiddens,proto3" json:"forbiddens,omitempty"` } func (x *SearchIPForbiddenResp) Reset() { *x = SearchIPForbiddenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[50] + mi := &file_admin_admin_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2691,7 +3096,7 @@ func (x *SearchIPForbiddenResp) String() string { func (*SearchIPForbiddenResp) ProtoMessage() {} func (x *SearchIPForbiddenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[50] + mi := &file_admin_admin_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2704,7 +3109,7 @@ func (x *SearchIPForbiddenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchIPForbiddenResp.ProtoReflect.Descriptor instead. func (*SearchIPForbiddenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{50} + return file_admin_admin_proto_rawDescGZIP(), []int{58} } func (x *SearchIPForbiddenResp) GetTotal() uint32 { @@ -2726,13 +3131,13 @@ type AddIPForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Forbiddens []*IPForbiddenAdd `protobuf:"bytes,1,rep,name=forbiddens,proto3" json:"forbiddens"` + Forbiddens []*IPForbiddenAdd `protobuf:"bytes,1,rep,name=forbiddens,proto3" json:"forbiddens,omitempty"` } func (x *AddIPForbiddenReq) Reset() { *x = AddIPForbiddenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[51] + mi := &file_admin_admin_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2745,7 +3150,7 @@ func (x *AddIPForbiddenReq) String() string { func (*AddIPForbiddenReq) ProtoMessage() {} func (x *AddIPForbiddenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[51] + mi := &file_admin_admin_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2758,7 +3163,7 @@ func (x *AddIPForbiddenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddIPForbiddenReq.ProtoReflect.Descriptor instead. func (*AddIPForbiddenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{51} + return file_admin_admin_proto_rawDescGZIP(), []int{59} } func (x *AddIPForbiddenReq) GetForbiddens() []*IPForbiddenAdd { @@ -2777,7 +3182,7 @@ type AddIPForbiddenResp struct { func (x *AddIPForbiddenResp) Reset() { *x = AddIPForbiddenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[52] + mi := &file_admin_admin_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2790,7 +3195,7 @@ func (x *AddIPForbiddenResp) String() string { func (*AddIPForbiddenResp) ProtoMessage() {} func (x *AddIPForbiddenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[52] + mi := &file_admin_admin_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2803,7 +3208,7 @@ func (x *AddIPForbiddenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddIPForbiddenResp.ProtoReflect.Descriptor instead. func (*AddIPForbiddenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{52} + return file_admin_admin_proto_rawDescGZIP(), []int{60} } type DelIPForbiddenReq struct { @@ -2811,13 +3216,13 @@ type DelIPForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ips []string `protobuf:"bytes,1,rep,name=ips,proto3" json:"ips"` + Ips []string `protobuf:"bytes,1,rep,name=ips,proto3" json:"ips,omitempty"` } func (x *DelIPForbiddenReq) Reset() { *x = DelIPForbiddenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[53] + mi := &file_admin_admin_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2830,7 +3235,7 @@ func (x *DelIPForbiddenReq) String() string { func (*DelIPForbiddenReq) ProtoMessage() {} func (x *DelIPForbiddenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[53] + mi := &file_admin_admin_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2843,7 +3248,7 @@ func (x *DelIPForbiddenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelIPForbiddenReq.ProtoReflect.Descriptor instead. func (*DelIPForbiddenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{53} + return file_admin_admin_proto_rawDescGZIP(), []int{61} } func (x *DelIPForbiddenReq) GetIps() []string { @@ -2862,7 +3267,7 @@ type DelIPForbiddenResp struct { func (x *DelIPForbiddenResp) Reset() { *x = DelIPForbiddenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[54] + mi := &file_admin_admin_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2875,7 +3280,7 @@ func (x *DelIPForbiddenResp) String() string { func (*DelIPForbiddenResp) ProtoMessage() {} func (x *DelIPForbiddenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[54] + mi := &file_admin_admin_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2888,7 +3293,7 @@ func (x *DelIPForbiddenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelIPForbiddenResp.ProtoReflect.Descriptor instead. func (*DelIPForbiddenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{54} + return file_admin_admin_proto_rawDescGZIP(), []int{62} } // ################### 用户限制 ################### @@ -2897,13 +3302,13 @@ type CheckRegisterForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` } func (x *CheckRegisterForbiddenReq) Reset() { *x = CheckRegisterForbiddenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[55] + mi := &file_admin_admin_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2916,7 +3321,7 @@ func (x *CheckRegisterForbiddenReq) String() string { func (*CheckRegisterForbiddenReq) ProtoMessage() {} func (x *CheckRegisterForbiddenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[55] + mi := &file_admin_admin_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2929,7 +3334,7 @@ func (x *CheckRegisterForbiddenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRegisterForbiddenReq.ProtoReflect.Descriptor instead. func (*CheckRegisterForbiddenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{55} + return file_admin_admin_proto_rawDescGZIP(), []int{63} } func (x *CheckRegisterForbiddenReq) GetIp() string { @@ -2948,7 +3353,7 @@ type CheckRegisterForbiddenResp struct { func (x *CheckRegisterForbiddenResp) Reset() { *x = CheckRegisterForbiddenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[56] + mi := &file_admin_admin_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2961,7 +3366,7 @@ func (x *CheckRegisterForbiddenResp) String() string { func (*CheckRegisterForbiddenResp) ProtoMessage() {} func (x *CheckRegisterForbiddenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[56] + mi := &file_admin_admin_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2974,7 +3379,7 @@ func (x *CheckRegisterForbiddenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRegisterForbiddenResp.ProtoReflect.Descriptor instead. func (*CheckRegisterForbiddenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{56} + return file_admin_admin_proto_rawDescGZIP(), []int{64} } type CheckLoginForbiddenReq struct { @@ -2982,14 +3387,14 @@ type CheckLoginForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` } func (x *CheckLoginForbiddenReq) Reset() { *x = CheckLoginForbiddenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[57] + mi := &file_admin_admin_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3002,7 +3407,7 @@ func (x *CheckLoginForbiddenReq) String() string { func (*CheckLoginForbiddenReq) ProtoMessage() {} func (x *CheckLoginForbiddenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[57] + mi := &file_admin_admin_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3015,7 +3420,7 @@ func (x *CheckLoginForbiddenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckLoginForbiddenReq.ProtoReflect.Descriptor instead. func (*CheckLoginForbiddenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{57} + return file_admin_admin_proto_rawDescGZIP(), []int{65} } func (x *CheckLoginForbiddenReq) GetIp() string { @@ -3041,7 +3446,7 @@ type CheckLoginForbiddenResp struct { func (x *CheckLoginForbiddenResp) Reset() { *x = CheckLoginForbiddenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[58] + mi := &file_admin_admin_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3054,7 +3459,7 @@ func (x *CheckLoginForbiddenResp) String() string { func (*CheckLoginForbiddenResp) ProtoMessage() {} func (x *CheckLoginForbiddenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[58] + mi := &file_admin_admin_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3067,7 +3472,7 @@ func (x *CheckLoginForbiddenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckLoginForbiddenResp.ProtoReflect.Descriptor instead. func (*CheckLoginForbiddenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{58} + return file_admin_admin_proto_rawDescGZIP(), []int{66} } // ################### 注销 ################### @@ -3076,14 +3481,14 @@ type CancellationUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *CancellationUserReq) Reset() { *x = CancellationUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[59] + mi := &file_admin_admin_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3096,7 +3501,7 @@ func (x *CancellationUserReq) String() string { func (*CancellationUserReq) ProtoMessage() {} func (x *CancellationUserReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[59] + mi := &file_admin_admin_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3109,7 +3514,7 @@ func (x *CancellationUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CancellationUserReq.ProtoReflect.Descriptor instead. func (*CancellationUserReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{59} + return file_admin_admin_proto_rawDescGZIP(), []int{67} } func (x *CancellationUserReq) GetUserID() string { @@ -3135,7 +3540,7 @@ type CancellationUserResp struct { func (x *CancellationUserResp) Reset() { *x = CancellationUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[60] + mi := &file_admin_admin_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3148,7 +3553,7 @@ func (x *CancellationUserResp) String() string { func (*CancellationUserResp) ProtoMessage() {} func (x *CancellationUserResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[60] + mi := &file_admin_admin_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3161,7 +3566,7 @@ func (x *CancellationUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CancellationUserResp.ProtoReflect.Descriptor instead. func (*CancellationUserResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{60} + return file_admin_admin_proto_rawDescGZIP(), []int{68} } // ################### 封号、解封 ################### @@ -3170,14 +3575,14 @@ type BlockUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *BlockUserReq) Reset() { *x = BlockUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[61] + mi := &file_admin_admin_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3190,7 +3595,7 @@ func (x *BlockUserReq) String() string { func (*BlockUserReq) ProtoMessage() {} func (x *BlockUserReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[61] + mi := &file_admin_admin_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3203,7 +3608,7 @@ func (x *BlockUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockUserReq.ProtoReflect.Descriptor instead. func (*BlockUserReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{61} + return file_admin_admin_proto_rawDescGZIP(), []int{69} } func (x *BlockUserReq) GetUserID() string { @@ -3229,7 +3634,7 @@ type BlockUserResp struct { func (x *BlockUserResp) Reset() { *x = BlockUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[62] + mi := &file_admin_admin_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3242,7 +3647,7 @@ func (x *BlockUserResp) String() string { func (*BlockUserResp) ProtoMessage() {} func (x *BlockUserResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[62] + mi := &file_admin_admin_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3255,7 +3660,7 @@ func (x *BlockUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockUserResp.ProtoReflect.Descriptor instead. func (*BlockUserResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{62} + return file_admin_admin_proto_rawDescGZIP(), []int{70} } type UnblockUserReq struct { @@ -3263,13 +3668,13 @@ type UnblockUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *UnblockUserReq) Reset() { *x = UnblockUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[63] + mi := &file_admin_admin_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3282,7 +3687,7 @@ func (x *UnblockUserReq) String() string { func (*UnblockUserReq) ProtoMessage() {} func (x *UnblockUserReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[63] + mi := &file_admin_admin_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3295,7 +3700,7 @@ func (x *UnblockUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UnblockUserReq.ProtoReflect.Descriptor instead. func (*UnblockUserReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{63} + return file_admin_admin_proto_rawDescGZIP(), []int{71} } func (x *UnblockUserReq) GetUserIDs() []string { @@ -3314,7 +3719,7 @@ type UnblockUserResp struct { func (x *UnblockUserResp) Reset() { *x = UnblockUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[64] + mi := &file_admin_admin_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3327,7 +3732,7 @@ func (x *UnblockUserResp) String() string { func (*UnblockUserResp) ProtoMessage() {} func (x *UnblockUserResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[64] + mi := &file_admin_admin_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3340,7 +3745,7 @@ func (x *UnblockUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UnblockUserResp.ProtoReflect.Descriptor instead. func (*UnblockUserResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{64} + return file_admin_admin_proto_rawDescGZIP(), []int{72} } type SearchBlockUserReq struct { @@ -3348,14 +3753,14 @@ type SearchBlockUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchBlockUserReq) Reset() { *x = SearchBlockUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[65] + mi := &file_admin_admin_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3368,7 +3773,7 @@ func (x *SearchBlockUserReq) String() string { func (*SearchBlockUserReq) ProtoMessage() {} func (x *SearchBlockUserReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[65] + mi := &file_admin_admin_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3381,7 +3786,7 @@ func (x *SearchBlockUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchBlockUserReq.ProtoReflect.Descriptor instead. func (*SearchBlockUserReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{65} + return file_admin_admin_proto_rawDescGZIP(), []int{73} } func (x *SearchBlockUserReq) GetKeyword() string { @@ -3403,23 +3808,23 @@ type BlockUserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` - PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` - AreaCode string `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` - Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname"` - FaceURL string `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL"` - Gender int32 `protobuf:"varint,8,opt,name=gender,proto3" json:"gender"` - Reason string `protobuf:"bytes,9,opt,name=reason,proto3" json:"reason"` - OpUserID string `protobuf:"bytes,10,opt,name=opUserID,proto3" json:"opUserID"` - CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + AreaCode string `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Gender int32 `protobuf:"varint,8,opt,name=gender,proto3" json:"gender,omitempty"` + Reason string `protobuf:"bytes,9,opt,name=reason,proto3" json:"reason,omitempty"` + OpUserID string `protobuf:"bytes,10,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` } func (x *BlockUserInfo) Reset() { *x = BlockUserInfo{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[66] + mi := &file_admin_admin_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3432,7 +3837,7 @@ func (x *BlockUserInfo) String() string { func (*BlockUserInfo) ProtoMessage() {} func (x *BlockUserInfo) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[66] + mi := &file_admin_admin_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3445,7 +3850,7 @@ func (x *BlockUserInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockUserInfo.ProtoReflect.Descriptor instead. func (*BlockUserInfo) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{66} + return file_admin_admin_proto_rawDescGZIP(), []int{74} } func (x *BlockUserInfo) GetUserID() string { @@ -3530,14 +3935,14 @@ type SearchBlockUserResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Users []*BlockUserInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Users []*BlockUserInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` } func (x *SearchBlockUserResp) Reset() { *x = SearchBlockUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[67] + mi := &file_admin_admin_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3550,7 +3955,7 @@ func (x *SearchBlockUserResp) String() string { func (*SearchBlockUserResp) ProtoMessage() {} func (x *SearchBlockUserResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[67] + mi := &file_admin_admin_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3563,7 +3968,7 @@ func (x *SearchBlockUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchBlockUserResp.ProtoReflect.Descriptor instead. func (*SearchBlockUserResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{67} + return file_admin_admin_proto_rawDescGZIP(), []int{75} } func (x *SearchBlockUserResp) GetTotal() uint32 { @@ -3585,13 +3990,13 @@ type FindUserBlockInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *FindUserBlockInfoReq) Reset() { *x = FindUserBlockInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[68] + mi := &file_admin_admin_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3604,7 +4009,7 @@ func (x *FindUserBlockInfoReq) String() string { func (*FindUserBlockInfoReq) ProtoMessage() {} func (x *FindUserBlockInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[68] + mi := &file_admin_admin_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3617,7 +4022,7 @@ func (x *FindUserBlockInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserBlockInfoReq.ProtoReflect.Descriptor instead. func (*FindUserBlockInfoReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{68} + return file_admin_admin_proto_rawDescGZIP(), []int{76} } func (x *FindUserBlockInfoReq) GetUserIDs() []string { @@ -3632,16 +4037,16 @@ type BlockInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID,proto3" json:"opUserID"` - CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID,proto3" json:"opUserID,omitempty"` + CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime,omitempty"` } func (x *BlockInfo) Reset() { *x = BlockInfo{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[69] + mi := &file_admin_admin_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3654,7 +4059,7 @@ func (x *BlockInfo) String() string { func (*BlockInfo) ProtoMessage() {} func (x *BlockInfo) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[69] + mi := &file_admin_admin_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3667,7 +4072,7 @@ func (x *BlockInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockInfo.ProtoReflect.Descriptor instead. func (*BlockInfo) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{69} + return file_admin_admin_proto_rawDescGZIP(), []int{77} } func (x *BlockInfo) GetUserID() string { @@ -3703,13 +4108,13 @@ type FindUserBlockInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Blocks []*BlockInfo `protobuf:"bytes,2,rep,name=blocks,proto3" json:"blocks"` + Blocks []*BlockInfo `protobuf:"bytes,2,rep,name=blocks,proto3" json:"blocks,omitempty"` } func (x *FindUserBlockInfoResp) Reset() { *x = FindUserBlockInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[70] + mi := &file_admin_admin_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3722,7 +4127,7 @@ func (x *FindUserBlockInfoResp) String() string { func (*FindUserBlockInfoResp) ProtoMessage() {} func (x *FindUserBlockInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[70] + mi := &file_admin_admin_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3735,7 +4140,7 @@ func (x *FindUserBlockInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserBlockInfoResp.ProtoReflect.Descriptor instead. func (*FindUserBlockInfoResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{70} + return file_admin_admin_proto_rawDescGZIP(), []int{78} } func (x *FindUserBlockInfoResp) GetBlocks() []*BlockInfo { @@ -3750,14 +4155,14 @@ type CreateTokenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` - UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` + UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType,omitempty"` } func (x *CreateTokenReq) Reset() { *x = CreateTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[71] + mi := &file_admin_admin_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3770,7 +4175,7 @@ func (x *CreateTokenReq) String() string { func (*CreateTokenReq) ProtoMessage() {} func (x *CreateTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[71] + mi := &file_admin_admin_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3783,7 +4188,7 @@ func (x *CreateTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTokenReq.ProtoReflect.Descriptor instead. func (*CreateTokenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{71} + return file_admin_admin_proto_rawDescGZIP(), []int{79} } func (x *CreateTokenReq) GetUserID() string { @@ -3805,13 +4210,13 @@ type CreateTokenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` } func (x *CreateTokenResp) Reset() { *x = CreateTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[72] + mi := &file_admin_admin_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3824,7 +4229,7 @@ func (x *CreateTokenResp) String() string { func (*CreateTokenResp) ProtoMessage() {} func (x *CreateTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[72] + mi := &file_admin_admin_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3837,7 +4242,7 @@ func (x *CreateTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTokenResp.ProtoReflect.Descriptor instead. func (*CreateTokenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{72} + return file_admin_admin_proto_rawDescGZIP(), []int{80} } func (x *CreateTokenResp) GetToken() string { @@ -3852,13 +4257,13 @@ type ParseTokenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` } func (x *ParseTokenReq) Reset() { *x = ParseTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[73] + mi := &file_admin_admin_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3871,7 +4276,7 @@ func (x *ParseTokenReq) String() string { func (*ParseTokenReq) ProtoMessage() {} func (x *ParseTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[73] + mi := &file_admin_admin_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3884,7 +4289,7 @@ func (x *ParseTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ParseTokenReq.ProtoReflect.Descriptor instead. func (*ParseTokenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{73} + return file_admin_admin_proto_rawDescGZIP(), []int{81} } func (x *ParseTokenReq) GetToken() string { @@ -3899,15 +4304,15 @@ type ParseTokenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` - UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType"` - ExpireTimeSeconds int64 `protobuf:"varint,4,opt,name=expireTimeSeconds,proto3" json:"expireTimeSeconds"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` + UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType,omitempty"` + ExpireTimeSeconds int64 `protobuf:"varint,4,opt,name=expireTimeSeconds,proto3" json:"expireTimeSeconds,omitempty"` } func (x *ParseTokenResp) Reset() { *x = ParseTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[74] + mi := &file_admin_admin_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3920,7 +4325,7 @@ func (x *ParseTokenResp) String() string { func (*ParseTokenResp) ProtoMessage() {} func (x *ParseTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[74] + mi := &file_admin_admin_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3933,7 +4338,7 @@ func (x *ParseTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ParseTokenResp.ProtoReflect.Descriptor instead. func (*ParseTokenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{74} + return file_admin_admin_proto_rawDescGZIP(), []int{82} } func (x *ParseTokenResp) GetUserID() string { @@ -3962,23 +4367,23 @@ type AddAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` - AppID string `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID"` - Icon string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon"` - Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url"` - Md5 string `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5"` - Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version"` - Priority uint32 `protobuf:"varint,9,opt,name=priority,proto3" json:"priority"` - Status uint32 `protobuf:"varint,10,opt,name=status,proto3" json:"status"` - CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AppID string `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID,omitempty"` + Icon string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` + Md5 string `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5,omitempty"` + Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` + Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` + Priority uint32 `protobuf:"varint,9,opt,name=priority,proto3" json:"priority,omitempty"` + Status uint32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` + CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` } func (x *AddAppletReq) Reset() { *x = AddAppletReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[75] + mi := &file_admin_admin_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3991,7 +4396,7 @@ func (x *AddAppletReq) String() string { func (*AddAppletReq) ProtoMessage() {} func (x *AddAppletReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[75] + mi := &file_admin_admin_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4004,7 +4409,7 @@ func (x *AddAppletReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddAppletReq.ProtoReflect.Descriptor instead. func (*AddAppletReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{75} + return file_admin_admin_proto_rawDescGZIP(), []int{83} } func (x *AddAppletReq) GetId() string { @@ -4093,7 +4498,7 @@ type AddAppletResp struct { func (x *AddAppletResp) Reset() { *x = AddAppletResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[76] + mi := &file_admin_admin_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4106,7 +4511,7 @@ func (x *AddAppletResp) String() string { func (*AddAppletResp) ProtoMessage() {} func (x *AddAppletResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[76] + mi := &file_admin_admin_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4119,7 +4524,7 @@ func (x *AddAppletResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddAppletResp.ProtoReflect.Descriptor instead. func (*AddAppletResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{76} + return file_admin_admin_proto_rawDescGZIP(), []int{84} } type DelAppletReq struct { @@ -4127,13 +4532,13 @@ type DelAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppletIds []string `protobuf:"bytes,1,rep,name=appletIds,proto3" json:"appletIds"` + AppletIds []string `protobuf:"bytes,1,rep,name=appletIds,proto3" json:"appletIds,omitempty"` } func (x *DelAppletReq) Reset() { *x = DelAppletReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[77] + mi := &file_admin_admin_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4146,7 +4551,7 @@ func (x *DelAppletReq) String() string { func (*DelAppletReq) ProtoMessage() {} func (x *DelAppletReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[77] + mi := &file_admin_admin_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4159,7 +4564,7 @@ func (x *DelAppletReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelAppletReq.ProtoReflect.Descriptor instead. func (*DelAppletReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{77} + return file_admin_admin_proto_rawDescGZIP(), []int{85} } func (x *DelAppletReq) GetAppletIds() []string { @@ -4178,7 +4583,7 @@ type DelAppletResp struct { func (x *DelAppletResp) Reset() { *x = DelAppletResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[78] + mi := &file_admin_admin_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4191,7 +4596,7 @@ func (x *DelAppletResp) String() string { func (*DelAppletResp) ProtoMessage() {} func (x *DelAppletResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[78] + mi := &file_admin_admin_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4204,7 +4609,7 @@ func (x *DelAppletResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelAppletResp.ProtoReflect.Descriptor instead. func (*DelAppletResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{78} + return file_admin_admin_proto_rawDescGZIP(), []int{86} } type UpdateAppletReq struct { @@ -4212,23 +4617,23 @@ type UpdateAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` - Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` - AppID *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID"` - Icon *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon"` - Url *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=url,proto3" json:"url"` - Md5 *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5"` - Size *wrapperspb.Int64Value `protobuf:"bytes,7,opt,name=size,proto3" json:"size"` - Version *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=version,proto3" json:"version"` - Priority *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=priority,proto3" json:"priority"` - Status *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=status,proto3" json:"status"` - CreateTime *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=createTime,proto3" json:"createTime"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AppID *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID,omitempty"` + Icon *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` + Md5 *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5,omitempty"` + Size *wrapperspb.Int64Value `protobuf:"bytes,7,opt,name=size,proto3" json:"size,omitempty"` + Version *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` + Priority *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=priority,proto3" json:"priority,omitempty"` + Status *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` + CreateTime *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=createTime,proto3" json:"createTime,omitempty"` } func (x *UpdateAppletReq) Reset() { *x = UpdateAppletReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[79] + mi := &file_admin_admin_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4241,7 +4646,7 @@ func (x *UpdateAppletReq) String() string { func (*UpdateAppletReq) ProtoMessage() {} func (x *UpdateAppletReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[79] + mi := &file_admin_admin_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4254,7 +4659,7 @@ func (x *UpdateAppletReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppletReq.ProtoReflect.Descriptor instead. func (*UpdateAppletReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{79} + return file_admin_admin_proto_rawDescGZIP(), []int{87} } func (x *UpdateAppletReq) GetId() string { @@ -4343,7 +4748,7 @@ type UpdateAppletResp struct { func (x *UpdateAppletResp) Reset() { *x = UpdateAppletResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[80] + mi := &file_admin_admin_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4356,7 +4761,7 @@ func (x *UpdateAppletResp) String() string { func (*UpdateAppletResp) ProtoMessage() {} func (x *UpdateAppletResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[80] + mi := &file_admin_admin_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4369,7 +4774,7 @@ func (x *UpdateAppletResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppletResp.ProtoReflect.Descriptor instead. func (*UpdateAppletResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{80} + return file_admin_admin_proto_rawDescGZIP(), []int{88} } type FindAppletReq struct { @@ -4381,7 +4786,7 @@ type FindAppletReq struct { func (x *FindAppletReq) Reset() { *x = FindAppletReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[81] + mi := &file_admin_admin_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4394,7 +4799,7 @@ func (x *FindAppletReq) String() string { func (*FindAppletReq) ProtoMessage() {} func (x *FindAppletReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[81] + mi := &file_admin_admin_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4407,7 +4812,7 @@ func (x *FindAppletReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindAppletReq.ProtoReflect.Descriptor instead. func (*FindAppletReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{81} + return file_admin_admin_proto_rawDescGZIP(), []int{89} } type FindAppletResp struct { @@ -4415,13 +4820,13 @@ type FindAppletResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Applets []*common.AppletInfo `protobuf:"bytes,1,rep,name=applets,proto3" json:"applets"` + Applets []*common.AppletInfo `protobuf:"bytes,1,rep,name=applets,proto3" json:"applets,omitempty"` } func (x *FindAppletResp) Reset() { *x = FindAppletResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[82] + mi := &file_admin_admin_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4434,7 +4839,7 @@ func (x *FindAppletResp) String() string { func (*FindAppletResp) ProtoMessage() {} func (x *FindAppletResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[82] + mi := &file_admin_admin_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4447,7 +4852,7 @@ func (x *FindAppletResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindAppletResp.ProtoReflect.Descriptor instead. func (*FindAppletResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{82} + return file_admin_admin_proto_rawDescGZIP(), []int{90} } func (x *FindAppletResp) GetApplets() []*common.AppletInfo { @@ -4462,14 +4867,14 @@ type SearchAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchAppletReq) Reset() { *x = SearchAppletReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[83] + mi := &file_admin_admin_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4482,7 +4887,7 @@ func (x *SearchAppletReq) String() string { func (*SearchAppletReq) ProtoMessage() {} func (x *SearchAppletReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[83] + mi := &file_admin_admin_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4495,7 +4900,7 @@ func (x *SearchAppletReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchAppletReq.ProtoReflect.Descriptor instead. func (*SearchAppletReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{83} + return file_admin_admin_proto_rawDescGZIP(), []int{91} } func (x *SearchAppletReq) GetKeyword() string { @@ -4517,14 +4922,14 @@ type SearchAppletResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Applets []*common.AppletInfo `protobuf:"bytes,2,rep,name=applets,proto3" json:"applets"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Applets []*common.AppletInfo `protobuf:"bytes,2,rep,name=applets,proto3" json:"applets,omitempty"` } func (x *SearchAppletResp) Reset() { *x = SearchAppletResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[84] + mi := &file_admin_admin_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4537,7 +4942,7 @@ func (x *SearchAppletResp) String() string { func (*SearchAppletResp) ProtoMessage() {} func (x *SearchAppletResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[84] + mi := &file_admin_admin_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4550,7 +4955,7 @@ func (x *SearchAppletResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchAppletResp.ProtoReflect.Descriptor instead. func (*SearchAppletResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{84} + return file_admin_admin_proto_rawDescGZIP(), []int{92} } func (x *SearchAppletResp) GetTotal() uint32 { @@ -4572,13 +4977,13 @@ type SetClientConfigReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SetClientConfigReq) Reset() { *x = SetClientConfigReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[85] + mi := &file_admin_admin_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4591,7 +4996,7 @@ func (x *SetClientConfigReq) String() string { func (*SetClientConfigReq) ProtoMessage() {} func (x *SetClientConfigReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[85] + mi := &file_admin_admin_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4604,7 +5009,7 @@ func (x *SetClientConfigReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetClientConfigReq.ProtoReflect.Descriptor instead. func (*SetClientConfigReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{85} + return file_admin_admin_proto_rawDescGZIP(), []int{93} } func (x *SetClientConfigReq) GetConfig() map[string]string { @@ -4623,7 +5028,7 @@ type SetClientConfigResp struct { func (x *SetClientConfigResp) Reset() { *x = SetClientConfigResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[86] + mi := &file_admin_admin_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4636,7 +5041,7 @@ func (x *SetClientConfigResp) String() string { func (*SetClientConfigResp) ProtoMessage() {} func (x *SetClientConfigResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[86] + mi := &file_admin_admin_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4649,7 +5054,7 @@ func (x *SetClientConfigResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetClientConfigResp.ProtoReflect.Descriptor instead. func (*SetClientConfigResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{86} + return file_admin_admin_proto_rawDescGZIP(), []int{94} } type DelClientConfigReq struct { @@ -4657,13 +5062,13 @@ type DelClientConfigReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys"` + Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` } func (x *DelClientConfigReq) Reset() { *x = DelClientConfigReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[87] + mi := &file_admin_admin_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4676,7 +5081,7 @@ func (x *DelClientConfigReq) String() string { func (*DelClientConfigReq) ProtoMessage() {} func (x *DelClientConfigReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[87] + mi := &file_admin_admin_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4689,7 +5094,7 @@ func (x *DelClientConfigReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelClientConfigReq.ProtoReflect.Descriptor instead. func (*DelClientConfigReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{87} + return file_admin_admin_proto_rawDescGZIP(), []int{95} } func (x *DelClientConfigReq) GetKeys() []string { @@ -4708,7 +5113,7 @@ type DelClientConfigResp struct { func (x *DelClientConfigResp) Reset() { *x = DelClientConfigResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[88] + mi := &file_admin_admin_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4721,7 +5126,7 @@ func (x *DelClientConfigResp) String() string { func (*DelClientConfigResp) ProtoMessage() {} func (x *DelClientConfigResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[88] + mi := &file_admin_admin_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4734,7 +5139,7 @@ func (x *DelClientConfigResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DelClientConfigResp.ProtoReflect.Descriptor instead. func (*DelClientConfigResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{88} + return file_admin_admin_proto_rawDescGZIP(), []int{96} } type GetClientConfigReq struct { @@ -4746,7 +5151,7 @@ type GetClientConfigReq struct { func (x *GetClientConfigReq) Reset() { *x = GetClientConfigReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[89] + mi := &file_admin_admin_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4759,7 +5164,7 @@ func (x *GetClientConfigReq) String() string { func (*GetClientConfigReq) ProtoMessage() {} func (x *GetClientConfigReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[89] + mi := &file_admin_admin_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4772,7 +5177,7 @@ func (x *GetClientConfigReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientConfigReq.ProtoReflect.Descriptor instead. func (*GetClientConfigReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{89} + return file_admin_admin_proto_rawDescGZIP(), []int{97} } type GetClientConfigResp struct { @@ -4780,13 +5185,13 @@ type GetClientConfigResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetClientConfigResp) Reset() { *x = GetClientConfigResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[90] + mi := &file_admin_admin_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4799,7 +5204,7 @@ func (x *GetClientConfigResp) String() string { func (*GetClientConfigResp) ProtoMessage() {} func (x *GetClientConfigResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[90] + mi := &file_admin_admin_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4812,7 +5217,7 @@ func (x *GetClientConfigResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientConfigResp.ProtoReflect.Descriptor instead. func (*GetClientConfigResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{90} + return file_admin_admin_proto_rawDescGZIP(), []int{98} } func (x *GetClientConfigResp) GetConfig() map[string]string { @@ -4827,13 +5232,13 @@ type GetUserTokenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` } func (x *GetUserTokenReq) Reset() { *x = GetUserTokenReq{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[91] + mi := &file_admin_admin_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4846,7 +5251,7 @@ func (x *GetUserTokenReq) String() string { func (*GetUserTokenReq) ProtoMessage() {} func (x *GetUserTokenReq) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[91] + mi := &file_admin_admin_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4859,7 +5264,7 @@ func (x *GetUserTokenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserTokenReq.ProtoReflect.Descriptor instead. func (*GetUserTokenReq) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{91} + return file_admin_admin_proto_rawDescGZIP(), []int{99} } func (x *GetUserTokenReq) GetUserID() string { @@ -4874,13 +5279,13 @@ type GetUserTokenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TokensMap map[string]int32 `protobuf:"bytes,1,rep,name=tokensMap,proto3" json:"tokensMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + TokensMap map[string]int32 `protobuf:"bytes,1,rep,name=tokensMap,proto3" json:"tokensMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *GetUserTokenResp) Reset() { *x = GetUserTokenResp{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_proto_msgTypes[92] + mi := &file_admin_admin_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4893,7 +5298,7 @@ func (x *GetUserTokenResp) String() string { func (*GetUserTokenResp) ProtoMessage() {} func (x *GetUserTokenResp) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_proto_msgTypes[92] + mi := &file_admin_admin_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4906,7 +5311,7 @@ func (x *GetUserTokenResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserTokenResp.ProtoReflect.Descriptor instead. func (*GetUserTokenResp) Descriptor() ([]byte, []int) { - return file_admin_admin_proto_rawDescGZIP(), []int{92} + return file_admin_admin_proto_rawDescGZIP(), []int{100} } func (x *GetUserTokenResp) GetTokensMap() map[string]int32 { @@ -4941,734 +5346,799 @@ var file_admin_admin_proto_rawDesc = []byte{ 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x22, 0xc9, 0x02, 0x0a, 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, - 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x66, - 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x3e, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, - 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, - 0x63, 0x0a, 0x13, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, - 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, - 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, - 0x65, 0x55, 0x52, 0x4c, 0x22, 0x2f, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x47, - 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x22, 0xcc, - 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, - 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, - 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2f, 0x0a, - 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, - 0x0a, 0x14, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x16, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x79, 0x0a, 0x16, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x72, 0x49, 0x44, 0x22, 0x80, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xc9, 0x02, + 0x0a, 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, + 0x12, 0x3e, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x63, 0x0a, 0x13, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x2f, + 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, + 0x14, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x22, 0x7c, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x78, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, + 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0d, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xcc, 0x01, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, + 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, + 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x41, + 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, + 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x16, 0x0a, + 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x79, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6f, 0x0a, + 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3e, + 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, + 0x0a, 0x12, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, + 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, + 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x15, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x78, 0x0a, 0x15, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, - 0x6f, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x12, 0x3e, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x22, 0x30, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, - 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, - 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x15, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x14, 0x46, 0x69, 0x6e, - 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x78, 0x0a, - 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x0e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x4a, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x44, 0x73, 0x22, 0x2c, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, - 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x0a, 0x14, 0x47, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x0e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x33, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x4a, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x44, 0x73, 0x22, 0x2c, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, + 0x22, 0x17, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x6e, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6c, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x22, 0x17, 0x0a, - 0x15, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, - 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x3a, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x55, - 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, - 0x17, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, - 0xbb, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3d, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0xc2, 0x01, - 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, + 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x73, 0x65, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x17, 0x0a, + 0x15, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, + 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbb, 0x01, + 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x17, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, + 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x6a, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x7c, 0x0a, 0x19, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6e, + 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x3a, + 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x54, 0x0a, 0x16, 0x41, 0x64, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x22, 0x19, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x0a, 0x16, 0x44, + 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x83, 0x01, 0x0a, + 0x0b, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x41, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x15, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x66, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x0a, + 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x22, 0x55, 0x0a, 0x11, 0x41, 0x64, + 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x40, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x73, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, + 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, 0x50, + 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x22, 0x14, + 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x40, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, + 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x0a, 0x13, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x0a, 0x0c, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x0e, + 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, + 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x6e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x0a, 0x12, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x7c, - 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, - 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, - 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, - 0x50, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x22, 0x6e, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x22, 0x3a, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x54, 0x0a, 0x16, - 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x0a, - 0x16, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x83, - 0x01, 0x0a, 0x0b, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, - 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x8f, 0x01, 0x0a, - 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, - 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, - 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3d, 0x0a, - 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x22, 0x55, 0x0a, 0x11, - 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, - 0x64, 0x64, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, - 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, 0x11, 0x44, 0x65, 0x6c, - 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, - 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, - 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x40, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, - 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x6f, 0x6e, 0x22, 0xb7, 0x02, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, + 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, + 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, + 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, + 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x13, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x22, 0x30, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x73, 0x22, 0x77, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x15, 0x46, + 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x44, 0x0a, 0x0e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, - 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x0a, - 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, - 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, - 0x0a, 0x0e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x6e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x0a, - 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x02, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, - 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, - 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, - 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, - 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, - 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, - 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x62, - 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x22, 0x30, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x73, 0x22, 0x77, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4c, 0x0a, - 0x15, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x44, 0x0a, 0x0e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x25, 0x0a, 0x0d, 0x50, 0x61, - 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x72, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x82, 0x02, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, - 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, - 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, - 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x0c, 0x44, - 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, - 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xeb, 0x04, 0x0a, 0x0f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, - 0x12, 0x36, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x34, - 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x03, 0x6d, 0x64, 0x35, 0x12, 0x35, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, + 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x27, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x25, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x72, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x22, 0x82, 0x02, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x12, + 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, + 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x70, 0x70, + 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, + 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x41, 0x70, + 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xeb, 0x04, 0x0a, 0x0f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x36, + 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x03, + 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, + 0x64, 0x35, 0x12, 0x35, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0f, 0x0a, 0x0d, - 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x22, 0x49, 0x0a, - 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x37, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, - 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x10, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, - 0x99, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, 0x53, - 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x28, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x15, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xc1, 0x1f, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x12, 0x40, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, - 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x44, 0x65, 0x6c, + 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0f, 0x0a, 0x0d, 0x46, 0x69, + 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x22, 0x49, 0x0a, 0x0e, 0x46, + 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, + 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, + 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x10, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x99, 0x01, + 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, + 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x28, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, + 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x49, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, + 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x32, 0xd6, 0x22, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x40, + 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x5b, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, + 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, - 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, - 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, - 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, + 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, - 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x41, 0x64, - 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x64, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x2e, 0x4f, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x64, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, + 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, + 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, - 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6d, 0x0a, 0x14, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x2a, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x61, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, + 0x11, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, + 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x46, 0x69, 0x6e, + 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6d, + 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, + 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x6a, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x44, - 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x26, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, + 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, + 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, + 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, + 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x5b, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, - 0x0e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, + 0x0e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, + 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, - 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0e, 0x44, 0x65, - 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x4f, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, + 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x25, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, + 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x55, + 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x5e, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x55, 0x6e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x2b, 0x2e, 0x4f, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, + 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, - 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x28, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, - 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x73, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x41, - 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x6c, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0a, 0x50, 0x61, + 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, + 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x41, + 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, + 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x44, 0x65, 0x6c, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0a, 0x46, - 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x4f, + 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, + 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x55, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, + 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, + 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, + 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, + 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, - 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x2b, 0x5a, + 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -5683,244 +6153,262 @@ func file_admin_admin_proto_rawDescGZIP() []byte { return file_admin_admin_proto_rawDescData } -var file_admin_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 96) +var file_admin_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 104) var file_admin_admin_proto_goTypes = []interface{}{ (*LoginReq)(nil), // 0: OpenIMChat.admin.LoginReq (*LoginResp)(nil), // 1: OpenIMChat.admin.LoginResp - (*AdminUpdateInfoReq)(nil), // 2: OpenIMChat.admin.AdminUpdateInfoReq - (*AdminUpdateInfoResp)(nil), // 3: OpenIMChat.admin.AdminUpdateInfoResp - (*ChangePasswordReq)(nil), // 4: OpenIMChat.admin.ChangePasswordReq - (*ChangePasswordResp)(nil), // 5: OpenIMChat.admin.ChangePasswordResp - (*GetAdminInfoReq)(nil), // 6: OpenIMChat.admin.GetAdminInfoReq - (*GetAdminInfoResp)(nil), // 7: OpenIMChat.admin.GetAdminInfoResp - (*AddDefaultFriendReq)(nil), // 8: OpenIMChat.admin.AddDefaultFriendReq - (*AddDefaultFriendResp)(nil), // 9: OpenIMChat.admin.AddDefaultFriendResp - (*DelDefaultFriendReq)(nil), // 10: OpenIMChat.admin.DelDefaultFriendReq - (*DelDefaultFriendResp)(nil), // 11: OpenIMChat.admin.DelDefaultFriendResp - (*FindDefaultFriendReq)(nil), // 12: OpenIMChat.admin.FindDefaultFriendReq - (*FindDefaultFriendResp)(nil), // 13: OpenIMChat.admin.FindDefaultFriendResp - (*SearchDefaultFriendReq)(nil), // 14: OpenIMChat.admin.SearchDefaultFriendReq - (*DefaultFriendAttribute)(nil), // 15: OpenIMChat.admin.DefaultFriendAttribute - (*SearchDefaultFriendResp)(nil), // 16: OpenIMChat.admin.SearchDefaultFriendResp - (*AddDefaultGroupReq)(nil), // 17: OpenIMChat.admin.AddDefaultGroupReq - (*AddDefaultGroupResp)(nil), // 18: OpenIMChat.admin.AddDefaultGroupResp - (*DelDefaultGroupReq)(nil), // 19: OpenIMChat.admin.DelDefaultGroupReq - (*DelDefaultGroupResp)(nil), // 20: OpenIMChat.admin.DelDefaultGroupResp - (*FindDefaultGroupReq)(nil), // 21: OpenIMChat.admin.FindDefaultGroupReq - (*FindDefaultGroupResp)(nil), // 22: OpenIMChat.admin.FindDefaultGroupResp - (*SearchDefaultGroupReq)(nil), // 23: OpenIMChat.admin.SearchDefaultGroupReq - (*GroupAttribute)(nil), // 24: OpenIMChat.admin.GroupAttribute - (*SearchDefaultGroupResp)(nil), // 25: OpenIMChat.admin.SearchDefaultGroupResp - (*AddInvitationCodeReq)(nil), // 26: OpenIMChat.admin.AddInvitationCodeReq - (*AddInvitationCodeResp)(nil), // 27: OpenIMChat.admin.AddInvitationCodeResp - (*GenInvitationCodeReq)(nil), // 28: OpenIMChat.admin.GenInvitationCodeReq - (*GenInvitationCodeResp)(nil), // 29: OpenIMChat.admin.GenInvitationCodeResp - (*FindInvitationCodeReq)(nil), // 30: OpenIMChat.admin.FindInvitationCodeReq - (*FindInvitationCodeResp)(nil), // 31: OpenIMChat.admin.FindInvitationCodeResp - (*UseInvitationCodeReq)(nil), // 32: OpenIMChat.admin.UseInvitationCodeReq - (*UseInvitationCodeResp)(nil), // 33: OpenIMChat.admin.UseInvitationCodeResp - (*DelInvitationCodeReq)(nil), // 34: OpenIMChat.admin.DelInvitationCodeReq - (*DelInvitationCodeResp)(nil), // 35: OpenIMChat.admin.DelInvitationCodeResp - (*InvitationRegister)(nil), // 36: OpenIMChat.admin.InvitationRegister - (*SearchInvitationCodeReq)(nil), // 37: OpenIMChat.admin.SearchInvitationCodeReq - (*SearchInvitationCodeResp)(nil), // 38: OpenIMChat.admin.SearchInvitationCodeResp - (*SearchUserIPLimitLoginReq)(nil), // 39: OpenIMChat.admin.SearchUserIPLimitLoginReq - (*LimitUserLoginIP)(nil), // 40: OpenIMChat.admin.LimitUserLoginIP - (*SearchUserIPLimitLoginResp)(nil), // 41: OpenIMChat.admin.SearchUserIPLimitLoginResp - (*UserIPLimitLogin)(nil), // 42: OpenIMChat.admin.UserIPLimitLogin - (*AddUserIPLimitLoginReq)(nil), // 43: OpenIMChat.admin.AddUserIPLimitLoginReq - (*AddUserIPLimitLoginResp)(nil), // 44: OpenIMChat.admin.AddUserIPLimitLoginResp - (*DelUserIPLimitLoginReq)(nil), // 45: OpenIMChat.admin.DelUserIPLimitLoginReq - (*DelUserIPLimitLoginResp)(nil), // 46: OpenIMChat.admin.DelUserIPLimitLoginResp - (*IPForbidden)(nil), // 47: OpenIMChat.admin.IPForbidden - (*IPForbiddenAdd)(nil), // 48: OpenIMChat.admin.IPForbiddenAdd - (*SearchIPForbiddenReq)(nil), // 49: OpenIMChat.admin.SearchIPForbiddenReq - (*SearchIPForbiddenResp)(nil), // 50: OpenIMChat.admin.SearchIPForbiddenResp - (*AddIPForbiddenReq)(nil), // 51: OpenIMChat.admin.AddIPForbiddenReq - (*AddIPForbiddenResp)(nil), // 52: OpenIMChat.admin.AddIPForbiddenResp - (*DelIPForbiddenReq)(nil), // 53: OpenIMChat.admin.DelIPForbiddenReq - (*DelIPForbiddenResp)(nil), // 54: OpenIMChat.admin.DelIPForbiddenResp - (*CheckRegisterForbiddenReq)(nil), // 55: OpenIMChat.admin.CheckRegisterForbiddenReq - (*CheckRegisterForbiddenResp)(nil), // 56: OpenIMChat.admin.CheckRegisterForbiddenResp - (*CheckLoginForbiddenReq)(nil), // 57: OpenIMChat.admin.CheckLoginForbiddenReq - (*CheckLoginForbiddenResp)(nil), // 58: OpenIMChat.admin.CheckLoginForbiddenResp - (*CancellationUserReq)(nil), // 59: OpenIMChat.admin.CancellationUserReq - (*CancellationUserResp)(nil), // 60: OpenIMChat.admin.CancellationUserResp - (*BlockUserReq)(nil), // 61: OpenIMChat.admin.BlockUserReq - (*BlockUserResp)(nil), // 62: OpenIMChat.admin.BlockUserResp - (*UnblockUserReq)(nil), // 63: OpenIMChat.admin.UnblockUserReq - (*UnblockUserResp)(nil), // 64: OpenIMChat.admin.UnblockUserResp - (*SearchBlockUserReq)(nil), // 65: OpenIMChat.admin.SearchBlockUserReq - (*BlockUserInfo)(nil), // 66: OpenIMChat.admin.BlockUserInfo - (*SearchBlockUserResp)(nil), // 67: OpenIMChat.admin.SearchBlockUserResp - (*FindUserBlockInfoReq)(nil), // 68: OpenIMChat.admin.FindUserBlockInfoReq - (*BlockInfo)(nil), // 69: OpenIMChat.admin.BlockInfo - (*FindUserBlockInfoResp)(nil), // 70: OpenIMChat.admin.FindUserBlockInfoResp - (*CreateTokenReq)(nil), // 71: OpenIMChat.admin.CreateTokenReq - (*CreateTokenResp)(nil), // 72: OpenIMChat.admin.CreateTokenResp - (*ParseTokenReq)(nil), // 73: OpenIMChat.admin.ParseTokenReq - (*ParseTokenResp)(nil), // 74: OpenIMChat.admin.ParseTokenResp - (*AddAppletReq)(nil), // 75: OpenIMChat.admin.AddAppletReq - (*AddAppletResp)(nil), // 76: OpenIMChat.admin.AddAppletResp - (*DelAppletReq)(nil), // 77: OpenIMChat.admin.DelAppletReq - (*DelAppletResp)(nil), // 78: OpenIMChat.admin.DelAppletResp - (*UpdateAppletReq)(nil), // 79: OpenIMChat.admin.UpdateAppletReq - (*UpdateAppletResp)(nil), // 80: OpenIMChat.admin.UpdateAppletResp - (*FindAppletReq)(nil), // 81: OpenIMChat.admin.FindAppletReq - (*FindAppletResp)(nil), // 82: OpenIMChat.admin.FindAppletResp - (*SearchAppletReq)(nil), // 83: OpenIMChat.admin.SearchAppletReq - (*SearchAppletResp)(nil), // 84: OpenIMChat.admin.SearchAppletResp - (*SetClientConfigReq)(nil), // 85: OpenIMChat.admin.SetClientConfigReq - (*SetClientConfigResp)(nil), // 86: OpenIMChat.admin.SetClientConfigResp - (*DelClientConfigReq)(nil), // 87: OpenIMChat.admin.DelClientConfigReq - (*DelClientConfigResp)(nil), // 88: OpenIMChat.admin.DelClientConfigResp - (*GetClientConfigReq)(nil), // 89: OpenIMChat.admin.GetClientConfigReq - (*GetClientConfigResp)(nil), // 90: OpenIMChat.admin.GetClientConfigResp - (*GetUserTokenReq)(nil), // 91: OpenIMChat.admin.GetUserTokenReq - (*GetUserTokenResp)(nil), // 92: OpenIMChat.admin.GetUserTokenResp - nil, // 93: OpenIMChat.admin.SetClientConfigReq.ConfigEntry - nil, // 94: OpenIMChat.admin.GetClientConfigResp.ConfigEntry - nil, // 95: OpenIMChat.admin.GetUserTokenResp.TokensMapEntry - (*wrapperspb.StringValue)(nil), // 96: OpenIMServer.protobuf.StringValue - (*wrapperspb.Int32Value)(nil), // 97: OpenIMServer.protobuf.Int32Value - (*sdkws.RequestPagination)(nil), // 98: OpenIMServer.sdkws.RequestPagination - (*common.UserPublicInfo)(nil), // 99: OpenIMChat.common.UserPublicInfo - (*sdkws.GroupInfo)(nil), // 100: OpenIMServer.sdkws.GroupInfo - (*wrapperspb.Int64Value)(nil), // 101: OpenIMServer.protobuf.Int64Value - (*wrapperspb.UInt32Value)(nil), // 102: OpenIMServer.protobuf.UInt32Value - (*common.AppletInfo)(nil), // 103: OpenIMChat.common.AppletInfo + (*AddAdminAccountReq)(nil), // 2: OpenIMChat.admin.AddAdminAccountReq + (*AddAdminAccountResp)(nil), // 3: OpenIMChat.admin.AddAdminAccountResp + (*AdminUpdateInfoReq)(nil), // 4: OpenIMChat.admin.AdminUpdateInfoReq + (*AdminUpdateInfoResp)(nil), // 5: OpenIMChat.admin.AdminUpdateInfoResp + (*ChangePasswordReq)(nil), // 6: OpenIMChat.admin.ChangePasswordReq + (*ChangePasswordResp)(nil), // 7: OpenIMChat.admin.ChangePasswordResp + (*GetAdminInfoReq)(nil), // 8: OpenIMChat.admin.GetAdminInfoReq + (*ChangeAdminPasswordReq)(nil), // 9: OpenIMChat.admin.ChangeAdminPasswordReq + (*ChangeAdminPasswordResp)(nil), // 10: OpenIMChat.admin.ChangeAdminPasswordResp + (*DelAdminAccountReq)(nil), // 11: OpenIMChat.admin.DelAdminAccountReq + (*DelAdminAccountResp)(nil), // 12: OpenIMChat.admin.DelAdminAccountResp + (*SearchAdminAccountReq)(nil), // 13: OpenIMChat.admin.SearchAdminAccountReq + (*SearchAdminAccountResp)(nil), // 14: OpenIMChat.admin.SearchAdminAccountResp + (*GetAdminInfoResp)(nil), // 15: OpenIMChat.admin.GetAdminInfoResp + (*AddDefaultFriendReq)(nil), // 16: OpenIMChat.admin.AddDefaultFriendReq + (*AddDefaultFriendResp)(nil), // 17: OpenIMChat.admin.AddDefaultFriendResp + (*DelDefaultFriendReq)(nil), // 18: OpenIMChat.admin.DelDefaultFriendReq + (*DelDefaultFriendResp)(nil), // 19: OpenIMChat.admin.DelDefaultFriendResp + (*FindDefaultFriendReq)(nil), // 20: OpenIMChat.admin.FindDefaultFriendReq + (*FindDefaultFriendResp)(nil), // 21: OpenIMChat.admin.FindDefaultFriendResp + (*SearchDefaultFriendReq)(nil), // 22: OpenIMChat.admin.SearchDefaultFriendReq + (*DefaultFriendAttribute)(nil), // 23: OpenIMChat.admin.DefaultFriendAttribute + (*SearchDefaultFriendResp)(nil), // 24: OpenIMChat.admin.SearchDefaultFriendResp + (*AddDefaultGroupReq)(nil), // 25: OpenIMChat.admin.AddDefaultGroupReq + (*AddDefaultGroupResp)(nil), // 26: OpenIMChat.admin.AddDefaultGroupResp + (*DelDefaultGroupReq)(nil), // 27: OpenIMChat.admin.DelDefaultGroupReq + (*DelDefaultGroupResp)(nil), // 28: OpenIMChat.admin.DelDefaultGroupResp + (*FindDefaultGroupReq)(nil), // 29: OpenIMChat.admin.FindDefaultGroupReq + (*FindDefaultGroupResp)(nil), // 30: OpenIMChat.admin.FindDefaultGroupResp + (*SearchDefaultGroupReq)(nil), // 31: OpenIMChat.admin.SearchDefaultGroupReq + (*GroupAttribute)(nil), // 32: OpenIMChat.admin.GroupAttribute + (*SearchDefaultGroupResp)(nil), // 33: OpenIMChat.admin.SearchDefaultGroupResp + (*AddInvitationCodeReq)(nil), // 34: OpenIMChat.admin.AddInvitationCodeReq + (*AddInvitationCodeResp)(nil), // 35: OpenIMChat.admin.AddInvitationCodeResp + (*GenInvitationCodeReq)(nil), // 36: OpenIMChat.admin.GenInvitationCodeReq + (*GenInvitationCodeResp)(nil), // 37: OpenIMChat.admin.GenInvitationCodeResp + (*FindInvitationCodeReq)(nil), // 38: OpenIMChat.admin.FindInvitationCodeReq + (*FindInvitationCodeResp)(nil), // 39: OpenIMChat.admin.FindInvitationCodeResp + (*UseInvitationCodeReq)(nil), // 40: OpenIMChat.admin.UseInvitationCodeReq + (*UseInvitationCodeResp)(nil), // 41: OpenIMChat.admin.UseInvitationCodeResp + (*DelInvitationCodeReq)(nil), // 42: OpenIMChat.admin.DelInvitationCodeReq + (*DelInvitationCodeResp)(nil), // 43: OpenIMChat.admin.DelInvitationCodeResp + (*InvitationRegister)(nil), // 44: OpenIMChat.admin.InvitationRegister + (*SearchInvitationCodeReq)(nil), // 45: OpenIMChat.admin.SearchInvitationCodeReq + (*SearchInvitationCodeResp)(nil), // 46: OpenIMChat.admin.SearchInvitationCodeResp + (*SearchUserIPLimitLoginReq)(nil), // 47: OpenIMChat.admin.SearchUserIPLimitLoginReq + (*LimitUserLoginIP)(nil), // 48: OpenIMChat.admin.LimitUserLoginIP + (*SearchUserIPLimitLoginResp)(nil), // 49: OpenIMChat.admin.SearchUserIPLimitLoginResp + (*UserIPLimitLogin)(nil), // 50: OpenIMChat.admin.UserIPLimitLogin + (*AddUserIPLimitLoginReq)(nil), // 51: OpenIMChat.admin.AddUserIPLimitLoginReq + (*AddUserIPLimitLoginResp)(nil), // 52: OpenIMChat.admin.AddUserIPLimitLoginResp + (*DelUserIPLimitLoginReq)(nil), // 53: OpenIMChat.admin.DelUserIPLimitLoginReq + (*DelUserIPLimitLoginResp)(nil), // 54: OpenIMChat.admin.DelUserIPLimitLoginResp + (*IPForbidden)(nil), // 55: OpenIMChat.admin.IPForbidden + (*IPForbiddenAdd)(nil), // 56: OpenIMChat.admin.IPForbiddenAdd + (*SearchIPForbiddenReq)(nil), // 57: OpenIMChat.admin.SearchIPForbiddenReq + (*SearchIPForbiddenResp)(nil), // 58: OpenIMChat.admin.SearchIPForbiddenResp + (*AddIPForbiddenReq)(nil), // 59: OpenIMChat.admin.AddIPForbiddenReq + (*AddIPForbiddenResp)(nil), // 60: OpenIMChat.admin.AddIPForbiddenResp + (*DelIPForbiddenReq)(nil), // 61: OpenIMChat.admin.DelIPForbiddenReq + (*DelIPForbiddenResp)(nil), // 62: OpenIMChat.admin.DelIPForbiddenResp + (*CheckRegisterForbiddenReq)(nil), // 63: OpenIMChat.admin.CheckRegisterForbiddenReq + (*CheckRegisterForbiddenResp)(nil), // 64: OpenIMChat.admin.CheckRegisterForbiddenResp + (*CheckLoginForbiddenReq)(nil), // 65: OpenIMChat.admin.CheckLoginForbiddenReq + (*CheckLoginForbiddenResp)(nil), // 66: OpenIMChat.admin.CheckLoginForbiddenResp + (*CancellationUserReq)(nil), // 67: OpenIMChat.admin.CancellationUserReq + (*CancellationUserResp)(nil), // 68: OpenIMChat.admin.CancellationUserResp + (*BlockUserReq)(nil), // 69: OpenIMChat.admin.BlockUserReq + (*BlockUserResp)(nil), // 70: OpenIMChat.admin.BlockUserResp + (*UnblockUserReq)(nil), // 71: OpenIMChat.admin.UnblockUserReq + (*UnblockUserResp)(nil), // 72: OpenIMChat.admin.UnblockUserResp + (*SearchBlockUserReq)(nil), // 73: OpenIMChat.admin.SearchBlockUserReq + (*BlockUserInfo)(nil), // 74: OpenIMChat.admin.BlockUserInfo + (*SearchBlockUserResp)(nil), // 75: OpenIMChat.admin.SearchBlockUserResp + (*FindUserBlockInfoReq)(nil), // 76: OpenIMChat.admin.FindUserBlockInfoReq + (*BlockInfo)(nil), // 77: OpenIMChat.admin.BlockInfo + (*FindUserBlockInfoResp)(nil), // 78: OpenIMChat.admin.FindUserBlockInfoResp + (*CreateTokenReq)(nil), // 79: OpenIMChat.admin.CreateTokenReq + (*CreateTokenResp)(nil), // 80: OpenIMChat.admin.CreateTokenResp + (*ParseTokenReq)(nil), // 81: OpenIMChat.admin.ParseTokenReq + (*ParseTokenResp)(nil), // 82: OpenIMChat.admin.ParseTokenResp + (*AddAppletReq)(nil), // 83: OpenIMChat.admin.AddAppletReq + (*AddAppletResp)(nil), // 84: OpenIMChat.admin.AddAppletResp + (*DelAppletReq)(nil), // 85: OpenIMChat.admin.DelAppletReq + (*DelAppletResp)(nil), // 86: OpenIMChat.admin.DelAppletResp + (*UpdateAppletReq)(nil), // 87: OpenIMChat.admin.UpdateAppletReq + (*UpdateAppletResp)(nil), // 88: OpenIMChat.admin.UpdateAppletResp + (*FindAppletReq)(nil), // 89: OpenIMChat.admin.FindAppletReq + (*FindAppletResp)(nil), // 90: OpenIMChat.admin.FindAppletResp + (*SearchAppletReq)(nil), // 91: OpenIMChat.admin.SearchAppletReq + (*SearchAppletResp)(nil), // 92: OpenIMChat.admin.SearchAppletResp + (*SetClientConfigReq)(nil), // 93: OpenIMChat.admin.SetClientConfigReq + (*SetClientConfigResp)(nil), // 94: OpenIMChat.admin.SetClientConfigResp + (*DelClientConfigReq)(nil), // 95: OpenIMChat.admin.DelClientConfigReq + (*DelClientConfigResp)(nil), // 96: OpenIMChat.admin.DelClientConfigResp + (*GetClientConfigReq)(nil), // 97: OpenIMChat.admin.GetClientConfigReq + (*GetClientConfigResp)(nil), // 98: OpenIMChat.admin.GetClientConfigResp + (*GetUserTokenReq)(nil), // 99: OpenIMChat.admin.GetUserTokenReq + (*GetUserTokenResp)(nil), // 100: OpenIMChat.admin.GetUserTokenResp + nil, // 101: OpenIMChat.admin.SetClientConfigReq.ConfigEntry + nil, // 102: OpenIMChat.admin.GetClientConfigResp.ConfigEntry + nil, // 103: OpenIMChat.admin.GetUserTokenResp.TokensMapEntry + (*wrapperspb.StringValue)(nil), // 104: OpenIMServer.protobuf.StringValue + (*wrapperspb.Int32Value)(nil), // 105: OpenIMServer.protobuf.Int32Value + (*sdkws.RequestPagination)(nil), // 106: OpenIMServer.sdkws.RequestPagination + (*common.UserPublicInfo)(nil), // 107: OpenIMChat.common.UserPublicInfo + (*sdkws.GroupInfo)(nil), // 108: OpenIMServer.sdkws.GroupInfo + (*wrapperspb.Int64Value)(nil), // 109: OpenIMServer.protobuf.Int64Value + (*wrapperspb.UInt32Value)(nil), // 110: OpenIMServer.protobuf.UInt32Value + (*common.AppletInfo)(nil), // 111: OpenIMChat.common.AppletInfo } var file_admin_admin_proto_depIdxs = []int32{ - 96, // 0: OpenIMChat.admin.AdminUpdateInfoReq.account:type_name -> OpenIMServer.protobuf.StringValue - 96, // 1: OpenIMChat.admin.AdminUpdateInfoReq.password:type_name -> OpenIMServer.protobuf.StringValue - 96, // 2: OpenIMChat.admin.AdminUpdateInfoReq.faceURL:type_name -> OpenIMServer.protobuf.StringValue - 96, // 3: OpenIMChat.admin.AdminUpdateInfoReq.nickname:type_name -> OpenIMServer.protobuf.StringValue - 97, // 4: OpenIMChat.admin.AdminUpdateInfoReq.level:type_name -> OpenIMServer.protobuf.Int32Value - 98, // 5: OpenIMChat.admin.SearchDefaultFriendReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 99, // 6: OpenIMChat.admin.DefaultFriendAttribute.user:type_name -> OpenIMChat.common.UserPublicInfo - 15, // 7: OpenIMChat.admin.SearchDefaultFriendResp.users:type_name -> OpenIMChat.admin.DefaultFriendAttribute - 98, // 8: OpenIMChat.admin.SearchDefaultGroupReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 100, // 9: OpenIMChat.admin.GroupAttribute.group:type_name -> OpenIMServer.sdkws.GroupInfo - 36, // 10: OpenIMChat.admin.FindInvitationCodeResp.codes:type_name -> OpenIMChat.admin.InvitationRegister - 99, // 11: OpenIMChat.admin.InvitationRegister.usedUser:type_name -> OpenIMChat.common.UserPublicInfo - 98, // 12: OpenIMChat.admin.SearchInvitationCodeReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 36, // 13: OpenIMChat.admin.SearchInvitationCodeResp.list:type_name -> OpenIMChat.admin.InvitationRegister - 98, // 14: OpenIMChat.admin.SearchUserIPLimitLoginReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 99, // 15: OpenIMChat.admin.LimitUserLoginIP.user:type_name -> OpenIMChat.common.UserPublicInfo - 40, // 16: OpenIMChat.admin.SearchUserIPLimitLoginResp.limits:type_name -> OpenIMChat.admin.LimitUserLoginIP - 42, // 17: OpenIMChat.admin.AddUserIPLimitLoginReq.limits:type_name -> OpenIMChat.admin.UserIPLimitLogin - 42, // 18: OpenIMChat.admin.DelUserIPLimitLoginReq.limits:type_name -> OpenIMChat.admin.UserIPLimitLogin - 98, // 19: OpenIMChat.admin.SearchIPForbiddenReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 47, // 20: OpenIMChat.admin.SearchIPForbiddenResp.forbiddens:type_name -> OpenIMChat.admin.IPForbidden - 48, // 21: OpenIMChat.admin.AddIPForbiddenReq.forbiddens:type_name -> OpenIMChat.admin.IPForbiddenAdd - 98, // 22: OpenIMChat.admin.SearchBlockUserReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 66, // 23: OpenIMChat.admin.SearchBlockUserResp.users:type_name -> OpenIMChat.admin.BlockUserInfo - 69, // 24: OpenIMChat.admin.FindUserBlockInfoResp.blocks:type_name -> OpenIMChat.admin.BlockInfo - 96, // 25: OpenIMChat.admin.UpdateAppletReq.name:type_name -> OpenIMServer.protobuf.StringValue - 96, // 26: OpenIMChat.admin.UpdateAppletReq.appID:type_name -> OpenIMServer.protobuf.StringValue - 96, // 27: OpenIMChat.admin.UpdateAppletReq.icon:type_name -> OpenIMServer.protobuf.StringValue - 96, // 28: OpenIMChat.admin.UpdateAppletReq.url:type_name -> OpenIMServer.protobuf.StringValue - 96, // 29: OpenIMChat.admin.UpdateAppletReq.md5:type_name -> OpenIMServer.protobuf.StringValue - 101, // 30: OpenIMChat.admin.UpdateAppletReq.size:type_name -> OpenIMServer.protobuf.Int64Value - 96, // 31: OpenIMChat.admin.UpdateAppletReq.version:type_name -> OpenIMServer.protobuf.StringValue - 102, // 32: OpenIMChat.admin.UpdateAppletReq.priority:type_name -> OpenIMServer.protobuf.UInt32Value - 102, // 33: OpenIMChat.admin.UpdateAppletReq.status:type_name -> OpenIMServer.protobuf.UInt32Value - 101, // 34: OpenIMChat.admin.UpdateAppletReq.createTime:type_name -> OpenIMServer.protobuf.Int64Value - 103, // 35: OpenIMChat.admin.FindAppletResp.applets:type_name -> OpenIMChat.common.AppletInfo - 98, // 36: OpenIMChat.admin.SearchAppletReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 103, // 37: OpenIMChat.admin.SearchAppletResp.applets:type_name -> OpenIMChat.common.AppletInfo - 93, // 38: OpenIMChat.admin.SetClientConfigReq.config:type_name -> OpenIMChat.admin.SetClientConfigReq.ConfigEntry - 94, // 39: OpenIMChat.admin.GetClientConfigResp.config:type_name -> OpenIMChat.admin.GetClientConfigResp.ConfigEntry - 95, // 40: OpenIMChat.admin.GetUserTokenResp.tokensMap:type_name -> OpenIMChat.admin.GetUserTokenResp.TokensMapEntry - 0, // 41: OpenIMChat.admin.admin.Login:input_type -> OpenIMChat.admin.LoginReq - 4, // 42: OpenIMChat.admin.admin.ChangePassword:input_type -> OpenIMChat.admin.ChangePasswordReq - 2, // 43: OpenIMChat.admin.admin.AdminUpdateInfo:input_type -> OpenIMChat.admin.AdminUpdateInfoReq - 6, // 44: OpenIMChat.admin.admin.GetAdminInfo:input_type -> OpenIMChat.admin.GetAdminInfoReq - 8, // 45: OpenIMChat.admin.admin.AddDefaultFriend:input_type -> OpenIMChat.admin.AddDefaultFriendReq - 10, // 46: OpenIMChat.admin.admin.DelDefaultFriend:input_type -> OpenIMChat.admin.DelDefaultFriendReq - 12, // 47: OpenIMChat.admin.admin.FindDefaultFriend:input_type -> OpenIMChat.admin.FindDefaultFriendReq - 14, // 48: OpenIMChat.admin.admin.SearchDefaultFriend:input_type -> OpenIMChat.admin.SearchDefaultFriendReq - 17, // 49: OpenIMChat.admin.admin.AddDefaultGroup:input_type -> OpenIMChat.admin.AddDefaultGroupReq - 19, // 50: OpenIMChat.admin.admin.DelDefaultGroup:input_type -> OpenIMChat.admin.DelDefaultGroupReq - 21, // 51: OpenIMChat.admin.admin.FindDefaultGroup:input_type -> OpenIMChat.admin.FindDefaultGroupReq - 23, // 52: OpenIMChat.admin.admin.SearchDefaultGroup:input_type -> OpenIMChat.admin.SearchDefaultGroupReq - 26, // 53: OpenIMChat.admin.admin.AddInvitationCode:input_type -> OpenIMChat.admin.AddInvitationCodeReq - 28, // 54: OpenIMChat.admin.admin.GenInvitationCode:input_type -> OpenIMChat.admin.GenInvitationCodeReq - 30, // 55: OpenIMChat.admin.admin.FindInvitationCode:input_type -> OpenIMChat.admin.FindInvitationCodeReq - 32, // 56: OpenIMChat.admin.admin.UseInvitationCode:input_type -> OpenIMChat.admin.UseInvitationCodeReq - 34, // 57: OpenIMChat.admin.admin.DelInvitationCode:input_type -> OpenIMChat.admin.DelInvitationCodeReq - 37, // 58: OpenIMChat.admin.admin.SearchInvitationCode:input_type -> OpenIMChat.admin.SearchInvitationCodeReq - 39, // 59: OpenIMChat.admin.admin.SearchUserIPLimitLogin:input_type -> OpenIMChat.admin.SearchUserIPLimitLoginReq - 43, // 60: OpenIMChat.admin.admin.AddUserIPLimitLogin:input_type -> OpenIMChat.admin.AddUserIPLimitLoginReq - 45, // 61: OpenIMChat.admin.admin.DelUserIPLimitLogin:input_type -> OpenIMChat.admin.DelUserIPLimitLoginReq - 49, // 62: OpenIMChat.admin.admin.SearchIPForbidden:input_type -> OpenIMChat.admin.SearchIPForbiddenReq - 51, // 63: OpenIMChat.admin.admin.AddIPForbidden:input_type -> OpenIMChat.admin.AddIPForbiddenReq - 53, // 64: OpenIMChat.admin.admin.DelIPForbidden:input_type -> OpenIMChat.admin.DelIPForbiddenReq - 59, // 65: OpenIMChat.admin.admin.CancellationUser:input_type -> OpenIMChat.admin.CancellationUserReq - 61, // 66: OpenIMChat.admin.admin.BlockUser:input_type -> OpenIMChat.admin.BlockUserReq - 63, // 67: OpenIMChat.admin.admin.UnblockUser:input_type -> OpenIMChat.admin.UnblockUserReq - 65, // 68: OpenIMChat.admin.admin.SearchBlockUser:input_type -> OpenIMChat.admin.SearchBlockUserReq - 68, // 69: OpenIMChat.admin.admin.FindUserBlockInfo:input_type -> OpenIMChat.admin.FindUserBlockInfoReq - 55, // 70: OpenIMChat.admin.admin.CheckRegisterForbidden:input_type -> OpenIMChat.admin.CheckRegisterForbiddenReq - 57, // 71: OpenIMChat.admin.admin.CheckLoginForbidden:input_type -> OpenIMChat.admin.CheckLoginForbiddenReq - 71, // 72: OpenIMChat.admin.admin.CreateToken:input_type -> OpenIMChat.admin.CreateTokenReq - 73, // 73: OpenIMChat.admin.admin.ParseToken:input_type -> OpenIMChat.admin.ParseTokenReq - 75, // 74: OpenIMChat.admin.admin.AddApplet:input_type -> OpenIMChat.admin.AddAppletReq - 77, // 75: OpenIMChat.admin.admin.DelApplet:input_type -> OpenIMChat.admin.DelAppletReq - 79, // 76: OpenIMChat.admin.admin.UpdateApplet:input_type -> OpenIMChat.admin.UpdateAppletReq - 81, // 77: OpenIMChat.admin.admin.FindApplet:input_type -> OpenIMChat.admin.FindAppletReq - 83, // 78: OpenIMChat.admin.admin.SearchApplet:input_type -> OpenIMChat.admin.SearchAppletReq - 89, // 79: OpenIMChat.admin.admin.GetClientConfig:input_type -> OpenIMChat.admin.GetClientConfigReq - 85, // 80: OpenIMChat.admin.admin.SetClientConfig:input_type -> OpenIMChat.admin.SetClientConfigReq - 87, // 81: OpenIMChat.admin.admin.DelClientConfig:input_type -> OpenIMChat.admin.DelClientConfigReq - 91, // 82: OpenIMChat.admin.admin.GetUserToken:input_type -> OpenIMChat.admin.GetUserTokenReq - 1, // 83: OpenIMChat.admin.admin.Login:output_type -> OpenIMChat.admin.LoginResp - 5, // 84: OpenIMChat.admin.admin.ChangePassword:output_type -> OpenIMChat.admin.ChangePasswordResp - 3, // 85: OpenIMChat.admin.admin.AdminUpdateInfo:output_type -> OpenIMChat.admin.AdminUpdateInfoResp - 7, // 86: OpenIMChat.admin.admin.GetAdminInfo:output_type -> OpenIMChat.admin.GetAdminInfoResp - 9, // 87: OpenIMChat.admin.admin.AddDefaultFriend:output_type -> OpenIMChat.admin.AddDefaultFriendResp - 11, // 88: OpenIMChat.admin.admin.DelDefaultFriend:output_type -> OpenIMChat.admin.DelDefaultFriendResp - 13, // 89: OpenIMChat.admin.admin.FindDefaultFriend:output_type -> OpenIMChat.admin.FindDefaultFriendResp - 16, // 90: OpenIMChat.admin.admin.SearchDefaultFriend:output_type -> OpenIMChat.admin.SearchDefaultFriendResp - 18, // 91: OpenIMChat.admin.admin.AddDefaultGroup:output_type -> OpenIMChat.admin.AddDefaultGroupResp - 20, // 92: OpenIMChat.admin.admin.DelDefaultGroup:output_type -> OpenIMChat.admin.DelDefaultGroupResp - 22, // 93: OpenIMChat.admin.admin.FindDefaultGroup:output_type -> OpenIMChat.admin.FindDefaultGroupResp - 25, // 94: OpenIMChat.admin.admin.SearchDefaultGroup:output_type -> OpenIMChat.admin.SearchDefaultGroupResp - 27, // 95: OpenIMChat.admin.admin.AddInvitationCode:output_type -> OpenIMChat.admin.AddInvitationCodeResp - 29, // 96: OpenIMChat.admin.admin.GenInvitationCode:output_type -> OpenIMChat.admin.GenInvitationCodeResp - 31, // 97: OpenIMChat.admin.admin.FindInvitationCode:output_type -> OpenIMChat.admin.FindInvitationCodeResp - 33, // 98: OpenIMChat.admin.admin.UseInvitationCode:output_type -> OpenIMChat.admin.UseInvitationCodeResp - 35, // 99: OpenIMChat.admin.admin.DelInvitationCode:output_type -> OpenIMChat.admin.DelInvitationCodeResp - 38, // 100: OpenIMChat.admin.admin.SearchInvitationCode:output_type -> OpenIMChat.admin.SearchInvitationCodeResp - 41, // 101: OpenIMChat.admin.admin.SearchUserIPLimitLogin:output_type -> OpenIMChat.admin.SearchUserIPLimitLoginResp - 44, // 102: OpenIMChat.admin.admin.AddUserIPLimitLogin:output_type -> OpenIMChat.admin.AddUserIPLimitLoginResp - 46, // 103: OpenIMChat.admin.admin.DelUserIPLimitLogin:output_type -> OpenIMChat.admin.DelUserIPLimitLoginResp - 50, // 104: OpenIMChat.admin.admin.SearchIPForbidden:output_type -> OpenIMChat.admin.SearchIPForbiddenResp - 52, // 105: OpenIMChat.admin.admin.AddIPForbidden:output_type -> OpenIMChat.admin.AddIPForbiddenResp - 54, // 106: OpenIMChat.admin.admin.DelIPForbidden:output_type -> OpenIMChat.admin.DelIPForbiddenResp - 60, // 107: OpenIMChat.admin.admin.CancellationUser:output_type -> OpenIMChat.admin.CancellationUserResp - 62, // 108: OpenIMChat.admin.admin.BlockUser:output_type -> OpenIMChat.admin.BlockUserResp - 64, // 109: OpenIMChat.admin.admin.UnblockUser:output_type -> OpenIMChat.admin.UnblockUserResp - 67, // 110: OpenIMChat.admin.admin.SearchBlockUser:output_type -> OpenIMChat.admin.SearchBlockUserResp - 70, // 111: OpenIMChat.admin.admin.FindUserBlockInfo:output_type -> OpenIMChat.admin.FindUserBlockInfoResp - 56, // 112: OpenIMChat.admin.admin.CheckRegisterForbidden:output_type -> OpenIMChat.admin.CheckRegisterForbiddenResp - 58, // 113: OpenIMChat.admin.admin.CheckLoginForbidden:output_type -> OpenIMChat.admin.CheckLoginForbiddenResp - 72, // 114: OpenIMChat.admin.admin.CreateToken:output_type -> OpenIMChat.admin.CreateTokenResp - 74, // 115: OpenIMChat.admin.admin.ParseToken:output_type -> OpenIMChat.admin.ParseTokenResp - 76, // 116: OpenIMChat.admin.admin.AddApplet:output_type -> OpenIMChat.admin.AddAppletResp - 78, // 117: OpenIMChat.admin.admin.DelApplet:output_type -> OpenIMChat.admin.DelAppletResp - 80, // 118: OpenIMChat.admin.admin.UpdateApplet:output_type -> OpenIMChat.admin.UpdateAppletResp - 82, // 119: OpenIMChat.admin.admin.FindApplet:output_type -> OpenIMChat.admin.FindAppletResp - 84, // 120: OpenIMChat.admin.admin.SearchApplet:output_type -> OpenIMChat.admin.SearchAppletResp - 90, // 121: OpenIMChat.admin.admin.GetClientConfig:output_type -> OpenIMChat.admin.GetClientConfigResp - 86, // 122: OpenIMChat.admin.admin.SetClientConfig:output_type -> OpenIMChat.admin.SetClientConfigResp - 88, // 123: OpenIMChat.admin.admin.DelClientConfig:output_type -> OpenIMChat.admin.DelClientConfigResp - 92, // 124: OpenIMChat.admin.admin.GetUserToken:output_type -> OpenIMChat.admin.GetUserTokenResp - 83, // [83:125] is the sub-list for method output_type - 41, // [41:83] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 104, // 0: OpenIMChat.admin.AdminUpdateInfoReq.account:type_name -> OpenIMServer.protobuf.StringValue + 104, // 1: OpenIMChat.admin.AdminUpdateInfoReq.password:type_name -> OpenIMServer.protobuf.StringValue + 104, // 2: OpenIMChat.admin.AdminUpdateInfoReq.faceURL:type_name -> OpenIMServer.protobuf.StringValue + 104, // 3: OpenIMChat.admin.AdminUpdateInfoReq.nickname:type_name -> OpenIMServer.protobuf.StringValue + 105, // 4: OpenIMChat.admin.AdminUpdateInfoReq.level:type_name -> OpenIMServer.protobuf.Int32Value + 106, // 5: OpenIMChat.admin.SearchAdminAccountReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 15, // 6: OpenIMChat.admin.SearchAdminAccountResp.adminAccounts:type_name -> OpenIMChat.admin.GetAdminInfoResp + 106, // 7: OpenIMChat.admin.SearchDefaultFriendReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 107, // 8: OpenIMChat.admin.DefaultFriendAttribute.user:type_name -> OpenIMChat.common.UserPublicInfo + 23, // 9: OpenIMChat.admin.SearchDefaultFriendResp.users:type_name -> OpenIMChat.admin.DefaultFriendAttribute + 106, // 10: OpenIMChat.admin.SearchDefaultGroupReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 108, // 11: OpenIMChat.admin.GroupAttribute.group:type_name -> OpenIMServer.sdkws.GroupInfo + 44, // 12: OpenIMChat.admin.FindInvitationCodeResp.codes:type_name -> OpenIMChat.admin.InvitationRegister + 107, // 13: OpenIMChat.admin.InvitationRegister.usedUser:type_name -> OpenIMChat.common.UserPublicInfo + 106, // 14: OpenIMChat.admin.SearchInvitationCodeReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 44, // 15: OpenIMChat.admin.SearchInvitationCodeResp.list:type_name -> OpenIMChat.admin.InvitationRegister + 106, // 16: OpenIMChat.admin.SearchUserIPLimitLoginReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 107, // 17: OpenIMChat.admin.LimitUserLoginIP.user:type_name -> OpenIMChat.common.UserPublicInfo + 48, // 18: OpenIMChat.admin.SearchUserIPLimitLoginResp.limits:type_name -> OpenIMChat.admin.LimitUserLoginIP + 50, // 19: OpenIMChat.admin.AddUserIPLimitLoginReq.limits:type_name -> OpenIMChat.admin.UserIPLimitLogin + 50, // 20: OpenIMChat.admin.DelUserIPLimitLoginReq.limits:type_name -> OpenIMChat.admin.UserIPLimitLogin + 106, // 21: OpenIMChat.admin.SearchIPForbiddenReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 55, // 22: OpenIMChat.admin.SearchIPForbiddenResp.forbiddens:type_name -> OpenIMChat.admin.IPForbidden + 56, // 23: OpenIMChat.admin.AddIPForbiddenReq.forbiddens:type_name -> OpenIMChat.admin.IPForbiddenAdd + 106, // 24: OpenIMChat.admin.SearchBlockUserReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 74, // 25: OpenIMChat.admin.SearchBlockUserResp.users:type_name -> OpenIMChat.admin.BlockUserInfo + 77, // 26: OpenIMChat.admin.FindUserBlockInfoResp.blocks:type_name -> OpenIMChat.admin.BlockInfo + 104, // 27: OpenIMChat.admin.UpdateAppletReq.name:type_name -> OpenIMServer.protobuf.StringValue + 104, // 28: OpenIMChat.admin.UpdateAppletReq.appID:type_name -> OpenIMServer.protobuf.StringValue + 104, // 29: OpenIMChat.admin.UpdateAppletReq.icon:type_name -> OpenIMServer.protobuf.StringValue + 104, // 30: OpenIMChat.admin.UpdateAppletReq.url:type_name -> OpenIMServer.protobuf.StringValue + 104, // 31: OpenIMChat.admin.UpdateAppletReq.md5:type_name -> OpenIMServer.protobuf.StringValue + 109, // 32: OpenIMChat.admin.UpdateAppletReq.size:type_name -> OpenIMServer.protobuf.Int64Value + 104, // 33: OpenIMChat.admin.UpdateAppletReq.version:type_name -> OpenIMServer.protobuf.StringValue + 110, // 34: OpenIMChat.admin.UpdateAppletReq.priority:type_name -> OpenIMServer.protobuf.UInt32Value + 110, // 35: OpenIMChat.admin.UpdateAppletReq.status:type_name -> OpenIMServer.protobuf.UInt32Value + 109, // 36: OpenIMChat.admin.UpdateAppletReq.createTime:type_name -> OpenIMServer.protobuf.Int64Value + 111, // 37: OpenIMChat.admin.FindAppletResp.applets:type_name -> OpenIMChat.common.AppletInfo + 106, // 38: OpenIMChat.admin.SearchAppletReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 111, // 39: OpenIMChat.admin.SearchAppletResp.applets:type_name -> OpenIMChat.common.AppletInfo + 101, // 40: OpenIMChat.admin.SetClientConfigReq.config:type_name -> OpenIMChat.admin.SetClientConfigReq.ConfigEntry + 102, // 41: OpenIMChat.admin.GetClientConfigResp.config:type_name -> OpenIMChat.admin.GetClientConfigResp.ConfigEntry + 103, // 42: OpenIMChat.admin.GetUserTokenResp.tokensMap:type_name -> OpenIMChat.admin.GetUserTokenResp.TokensMapEntry + 0, // 43: OpenIMChat.admin.admin.Login:input_type -> OpenIMChat.admin.LoginReq + 6, // 44: OpenIMChat.admin.admin.ChangePassword:input_type -> OpenIMChat.admin.ChangePasswordReq + 4, // 45: OpenIMChat.admin.admin.AdminUpdateInfo:input_type -> OpenIMChat.admin.AdminUpdateInfoReq + 8, // 46: OpenIMChat.admin.admin.GetAdminInfo:input_type -> OpenIMChat.admin.GetAdminInfoReq + 2, // 47: OpenIMChat.admin.admin.AddAdminAccount:input_type -> OpenIMChat.admin.AddAdminAccountReq + 9, // 48: OpenIMChat.admin.admin.ChangeAdminPassword:input_type -> OpenIMChat.admin.ChangeAdminPasswordReq + 11, // 49: OpenIMChat.admin.admin.DelAdminAccount:input_type -> OpenIMChat.admin.DelAdminAccountReq + 13, // 50: OpenIMChat.admin.admin.SearchAdminAccount:input_type -> OpenIMChat.admin.SearchAdminAccountReq + 16, // 51: OpenIMChat.admin.admin.AddDefaultFriend:input_type -> OpenIMChat.admin.AddDefaultFriendReq + 18, // 52: OpenIMChat.admin.admin.DelDefaultFriend:input_type -> OpenIMChat.admin.DelDefaultFriendReq + 20, // 53: OpenIMChat.admin.admin.FindDefaultFriend:input_type -> OpenIMChat.admin.FindDefaultFriendReq + 22, // 54: OpenIMChat.admin.admin.SearchDefaultFriend:input_type -> OpenIMChat.admin.SearchDefaultFriendReq + 25, // 55: OpenIMChat.admin.admin.AddDefaultGroup:input_type -> OpenIMChat.admin.AddDefaultGroupReq + 27, // 56: OpenIMChat.admin.admin.DelDefaultGroup:input_type -> OpenIMChat.admin.DelDefaultGroupReq + 29, // 57: OpenIMChat.admin.admin.FindDefaultGroup:input_type -> OpenIMChat.admin.FindDefaultGroupReq + 31, // 58: OpenIMChat.admin.admin.SearchDefaultGroup:input_type -> OpenIMChat.admin.SearchDefaultGroupReq + 34, // 59: OpenIMChat.admin.admin.AddInvitationCode:input_type -> OpenIMChat.admin.AddInvitationCodeReq + 36, // 60: OpenIMChat.admin.admin.GenInvitationCode:input_type -> OpenIMChat.admin.GenInvitationCodeReq + 38, // 61: OpenIMChat.admin.admin.FindInvitationCode:input_type -> OpenIMChat.admin.FindInvitationCodeReq + 40, // 62: OpenIMChat.admin.admin.UseInvitationCode:input_type -> OpenIMChat.admin.UseInvitationCodeReq + 42, // 63: OpenIMChat.admin.admin.DelInvitationCode:input_type -> OpenIMChat.admin.DelInvitationCodeReq + 45, // 64: OpenIMChat.admin.admin.SearchInvitationCode:input_type -> OpenIMChat.admin.SearchInvitationCodeReq + 47, // 65: OpenIMChat.admin.admin.SearchUserIPLimitLogin:input_type -> OpenIMChat.admin.SearchUserIPLimitLoginReq + 51, // 66: OpenIMChat.admin.admin.AddUserIPLimitLogin:input_type -> OpenIMChat.admin.AddUserIPLimitLoginReq + 53, // 67: OpenIMChat.admin.admin.DelUserIPLimitLogin:input_type -> OpenIMChat.admin.DelUserIPLimitLoginReq + 57, // 68: OpenIMChat.admin.admin.SearchIPForbidden:input_type -> OpenIMChat.admin.SearchIPForbiddenReq + 59, // 69: OpenIMChat.admin.admin.AddIPForbidden:input_type -> OpenIMChat.admin.AddIPForbiddenReq + 61, // 70: OpenIMChat.admin.admin.DelIPForbidden:input_type -> OpenIMChat.admin.DelIPForbiddenReq + 67, // 71: OpenIMChat.admin.admin.CancellationUser:input_type -> OpenIMChat.admin.CancellationUserReq + 69, // 72: OpenIMChat.admin.admin.BlockUser:input_type -> OpenIMChat.admin.BlockUserReq + 71, // 73: OpenIMChat.admin.admin.UnblockUser:input_type -> OpenIMChat.admin.UnblockUserReq + 73, // 74: OpenIMChat.admin.admin.SearchBlockUser:input_type -> OpenIMChat.admin.SearchBlockUserReq + 76, // 75: OpenIMChat.admin.admin.FindUserBlockInfo:input_type -> OpenIMChat.admin.FindUserBlockInfoReq + 63, // 76: OpenIMChat.admin.admin.CheckRegisterForbidden:input_type -> OpenIMChat.admin.CheckRegisterForbiddenReq + 65, // 77: OpenIMChat.admin.admin.CheckLoginForbidden:input_type -> OpenIMChat.admin.CheckLoginForbiddenReq + 79, // 78: OpenIMChat.admin.admin.CreateToken:input_type -> OpenIMChat.admin.CreateTokenReq + 81, // 79: OpenIMChat.admin.admin.ParseToken:input_type -> OpenIMChat.admin.ParseTokenReq + 83, // 80: OpenIMChat.admin.admin.AddApplet:input_type -> OpenIMChat.admin.AddAppletReq + 85, // 81: OpenIMChat.admin.admin.DelApplet:input_type -> OpenIMChat.admin.DelAppletReq + 87, // 82: OpenIMChat.admin.admin.UpdateApplet:input_type -> OpenIMChat.admin.UpdateAppletReq + 89, // 83: OpenIMChat.admin.admin.FindApplet:input_type -> OpenIMChat.admin.FindAppletReq + 91, // 84: OpenIMChat.admin.admin.SearchApplet:input_type -> OpenIMChat.admin.SearchAppletReq + 97, // 85: OpenIMChat.admin.admin.GetClientConfig:input_type -> OpenIMChat.admin.GetClientConfigReq + 93, // 86: OpenIMChat.admin.admin.SetClientConfig:input_type -> OpenIMChat.admin.SetClientConfigReq + 95, // 87: OpenIMChat.admin.admin.DelClientConfig:input_type -> OpenIMChat.admin.DelClientConfigReq + 99, // 88: OpenIMChat.admin.admin.GetUserToken:input_type -> OpenIMChat.admin.GetUserTokenReq + 1, // 89: OpenIMChat.admin.admin.Login:output_type -> OpenIMChat.admin.LoginResp + 7, // 90: OpenIMChat.admin.admin.ChangePassword:output_type -> OpenIMChat.admin.ChangePasswordResp + 5, // 91: OpenIMChat.admin.admin.AdminUpdateInfo:output_type -> OpenIMChat.admin.AdminUpdateInfoResp + 15, // 92: OpenIMChat.admin.admin.GetAdminInfo:output_type -> OpenIMChat.admin.GetAdminInfoResp + 3, // 93: OpenIMChat.admin.admin.AddAdminAccount:output_type -> OpenIMChat.admin.AddAdminAccountResp + 10, // 94: OpenIMChat.admin.admin.ChangeAdminPassword:output_type -> OpenIMChat.admin.ChangeAdminPasswordResp + 12, // 95: OpenIMChat.admin.admin.DelAdminAccount:output_type -> OpenIMChat.admin.DelAdminAccountResp + 14, // 96: OpenIMChat.admin.admin.SearchAdminAccount:output_type -> OpenIMChat.admin.SearchAdminAccountResp + 17, // 97: OpenIMChat.admin.admin.AddDefaultFriend:output_type -> OpenIMChat.admin.AddDefaultFriendResp + 19, // 98: OpenIMChat.admin.admin.DelDefaultFriend:output_type -> OpenIMChat.admin.DelDefaultFriendResp + 21, // 99: OpenIMChat.admin.admin.FindDefaultFriend:output_type -> OpenIMChat.admin.FindDefaultFriendResp + 24, // 100: OpenIMChat.admin.admin.SearchDefaultFriend:output_type -> OpenIMChat.admin.SearchDefaultFriendResp + 26, // 101: OpenIMChat.admin.admin.AddDefaultGroup:output_type -> OpenIMChat.admin.AddDefaultGroupResp + 28, // 102: OpenIMChat.admin.admin.DelDefaultGroup:output_type -> OpenIMChat.admin.DelDefaultGroupResp + 30, // 103: OpenIMChat.admin.admin.FindDefaultGroup:output_type -> OpenIMChat.admin.FindDefaultGroupResp + 33, // 104: OpenIMChat.admin.admin.SearchDefaultGroup:output_type -> OpenIMChat.admin.SearchDefaultGroupResp + 35, // 105: OpenIMChat.admin.admin.AddInvitationCode:output_type -> OpenIMChat.admin.AddInvitationCodeResp + 37, // 106: OpenIMChat.admin.admin.GenInvitationCode:output_type -> OpenIMChat.admin.GenInvitationCodeResp + 39, // 107: OpenIMChat.admin.admin.FindInvitationCode:output_type -> OpenIMChat.admin.FindInvitationCodeResp + 41, // 108: OpenIMChat.admin.admin.UseInvitationCode:output_type -> OpenIMChat.admin.UseInvitationCodeResp + 43, // 109: OpenIMChat.admin.admin.DelInvitationCode:output_type -> OpenIMChat.admin.DelInvitationCodeResp + 46, // 110: OpenIMChat.admin.admin.SearchInvitationCode:output_type -> OpenIMChat.admin.SearchInvitationCodeResp + 49, // 111: OpenIMChat.admin.admin.SearchUserIPLimitLogin:output_type -> OpenIMChat.admin.SearchUserIPLimitLoginResp + 52, // 112: OpenIMChat.admin.admin.AddUserIPLimitLogin:output_type -> OpenIMChat.admin.AddUserIPLimitLoginResp + 54, // 113: OpenIMChat.admin.admin.DelUserIPLimitLogin:output_type -> OpenIMChat.admin.DelUserIPLimitLoginResp + 58, // 114: OpenIMChat.admin.admin.SearchIPForbidden:output_type -> OpenIMChat.admin.SearchIPForbiddenResp + 60, // 115: OpenIMChat.admin.admin.AddIPForbidden:output_type -> OpenIMChat.admin.AddIPForbiddenResp + 62, // 116: OpenIMChat.admin.admin.DelIPForbidden:output_type -> OpenIMChat.admin.DelIPForbiddenResp + 68, // 117: OpenIMChat.admin.admin.CancellationUser:output_type -> OpenIMChat.admin.CancellationUserResp + 70, // 118: OpenIMChat.admin.admin.BlockUser:output_type -> OpenIMChat.admin.BlockUserResp + 72, // 119: OpenIMChat.admin.admin.UnblockUser:output_type -> OpenIMChat.admin.UnblockUserResp + 75, // 120: OpenIMChat.admin.admin.SearchBlockUser:output_type -> OpenIMChat.admin.SearchBlockUserResp + 78, // 121: OpenIMChat.admin.admin.FindUserBlockInfo:output_type -> OpenIMChat.admin.FindUserBlockInfoResp + 64, // 122: OpenIMChat.admin.admin.CheckRegisterForbidden:output_type -> OpenIMChat.admin.CheckRegisterForbiddenResp + 66, // 123: OpenIMChat.admin.admin.CheckLoginForbidden:output_type -> OpenIMChat.admin.CheckLoginForbiddenResp + 80, // 124: OpenIMChat.admin.admin.CreateToken:output_type -> OpenIMChat.admin.CreateTokenResp + 82, // 125: OpenIMChat.admin.admin.ParseToken:output_type -> OpenIMChat.admin.ParseTokenResp + 84, // 126: OpenIMChat.admin.admin.AddApplet:output_type -> OpenIMChat.admin.AddAppletResp + 86, // 127: OpenIMChat.admin.admin.DelApplet:output_type -> OpenIMChat.admin.DelAppletResp + 88, // 128: OpenIMChat.admin.admin.UpdateApplet:output_type -> OpenIMChat.admin.UpdateAppletResp + 90, // 129: OpenIMChat.admin.admin.FindApplet:output_type -> OpenIMChat.admin.FindAppletResp + 92, // 130: OpenIMChat.admin.admin.SearchApplet:output_type -> OpenIMChat.admin.SearchAppletResp + 98, // 131: OpenIMChat.admin.admin.GetClientConfig:output_type -> OpenIMChat.admin.GetClientConfigResp + 94, // 132: OpenIMChat.admin.admin.SetClientConfig:output_type -> OpenIMChat.admin.SetClientConfigResp + 96, // 133: OpenIMChat.admin.admin.DelClientConfig:output_type -> OpenIMChat.admin.DelClientConfigResp + 100, // 134: OpenIMChat.admin.admin.GetUserToken:output_type -> OpenIMChat.admin.GetUserTokenResp + 89, // [89:135] is the sub-list for method output_type + 43, // [43:89] is the sub-list for method input_type + 43, // [43:43] is the sub-list for extension type_name + 43, // [43:43] is the sub-list for extension extendee + 0, // [0:43] is the sub-list for field type_name } func init() { file_admin_admin_proto_init() } @@ -5954,7 +6442,7 @@ func file_admin_admin_proto_init() { } } file_admin_admin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminUpdateInfoReq); i { + switch v := v.(*AddAdminAccountReq); i { case 0: return &v.state case 1: @@ -5966,7 +6454,7 @@ func file_admin_admin_proto_init() { } } file_admin_admin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdminUpdateInfoResp); i { + switch v := v.(*AddAdminAccountResp); i { case 0: return &v.state case 1: @@ -5978,7 +6466,7 @@ func file_admin_admin_proto_init() { } } file_admin_admin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordReq); i { + switch v := v.(*AdminUpdateInfoReq); i { case 0: return &v.state case 1: @@ -5990,6 +6478,30 @@ func file_admin_admin_proto_init() { } } file_admin_admin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdminUpdateInfoResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChangePasswordReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangePasswordResp); i { case 0: return &v.state @@ -6001,8 +6513,80 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAdminInfoReq); i { + file_admin_admin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAdminInfoReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChangeAdminPasswordReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChangeAdminPasswordResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelAdminAccountReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelAdminAccountResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchAdminAccountReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_admin_admin_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchAdminAccountResp); i { case 0: return &v.state case 1: @@ -6013,7 +6597,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAdminInfoResp); i { case 0: return &v.state @@ -6025,7 +6609,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultFriendReq); i { case 0: return &v.state @@ -6037,7 +6621,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultFriendResp); i { case 0: return &v.state @@ -6049,7 +6633,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultFriendReq); i { case 0: return &v.state @@ -6061,7 +6645,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultFriendResp); i { case 0: return &v.state @@ -6073,7 +6657,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultFriendReq); i { case 0: return &v.state @@ -6085,7 +6669,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultFriendResp); i { case 0: return &v.state @@ -6097,7 +6681,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultFriendReq); i { case 0: return &v.state @@ -6109,7 +6693,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultFriendAttribute); i { case 0: return &v.state @@ -6121,7 +6705,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultFriendResp); i { case 0: return &v.state @@ -6133,7 +6717,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultGroupReq); i { case 0: return &v.state @@ -6145,7 +6729,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultGroupResp); i { case 0: return &v.state @@ -6157,7 +6741,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultGroupReq); i { case 0: return &v.state @@ -6169,7 +6753,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultGroupResp); i { case 0: return &v.state @@ -6181,7 +6765,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultGroupReq); i { case 0: return &v.state @@ -6193,7 +6777,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultGroupResp); i { case 0: return &v.state @@ -6205,7 +6789,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultGroupReq); i { case 0: return &v.state @@ -6217,7 +6801,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupAttribute); i { case 0: return &v.state @@ -6229,7 +6813,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultGroupResp); i { case 0: return &v.state @@ -6241,7 +6825,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddInvitationCodeReq); i { case 0: return &v.state @@ -6253,7 +6837,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddInvitationCodeResp); i { case 0: return &v.state @@ -6265,7 +6849,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenInvitationCodeReq); i { case 0: return &v.state @@ -6277,7 +6861,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenInvitationCodeResp); i { case 0: return &v.state @@ -6289,7 +6873,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindInvitationCodeReq); i { case 0: return &v.state @@ -6301,7 +6885,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindInvitationCodeResp); i { case 0: return &v.state @@ -6313,7 +6897,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UseInvitationCodeReq); i { case 0: return &v.state @@ -6325,7 +6909,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UseInvitationCodeResp); i { case 0: return &v.state @@ -6337,7 +6921,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelInvitationCodeReq); i { case 0: return &v.state @@ -6349,7 +6933,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelInvitationCodeResp); i { case 0: return &v.state @@ -6361,7 +6945,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvitationRegister); i { case 0: return &v.state @@ -6373,7 +6957,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchInvitationCodeReq); i { case 0: return &v.state @@ -6385,7 +6969,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchInvitationCodeResp); i { case 0: return &v.state @@ -6397,7 +6981,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserIPLimitLoginReq); i { case 0: return &v.state @@ -6409,7 +6993,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LimitUserLoginIP); i { case 0: return &v.state @@ -6421,7 +7005,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserIPLimitLoginResp); i { case 0: return &v.state @@ -6433,7 +7017,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserIPLimitLogin); i { case 0: return &v.state @@ -6445,7 +7029,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUserIPLimitLoginReq); i { case 0: return &v.state @@ -6457,7 +7041,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUserIPLimitLoginResp); i { case 0: return &v.state @@ -6469,7 +7053,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelUserIPLimitLoginReq); i { case 0: return &v.state @@ -6481,7 +7065,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelUserIPLimitLoginResp); i { case 0: return &v.state @@ -6493,7 +7077,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPForbidden); i { case 0: return &v.state @@ -6505,7 +7089,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPForbiddenAdd); i { case 0: return &v.state @@ -6517,7 +7101,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchIPForbiddenReq); i { case 0: return &v.state @@ -6529,7 +7113,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchIPForbiddenResp); i { case 0: return &v.state @@ -6541,7 +7125,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddIPForbiddenReq); i { case 0: return &v.state @@ -6553,7 +7137,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddIPForbiddenResp); i { case 0: return &v.state @@ -6565,7 +7149,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelIPForbiddenReq); i { case 0: return &v.state @@ -6577,7 +7161,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelIPForbiddenResp); i { case 0: return &v.state @@ -6589,7 +7173,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRegisterForbiddenReq); i { case 0: return &v.state @@ -6601,7 +7185,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRegisterForbiddenResp); i { case 0: return &v.state @@ -6613,7 +7197,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckLoginForbiddenReq); i { case 0: return &v.state @@ -6625,7 +7209,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckLoginForbiddenResp); i { case 0: return &v.state @@ -6637,7 +7221,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancellationUserReq); i { case 0: return &v.state @@ -6649,7 +7233,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancellationUserResp); i { case 0: return &v.state @@ -6661,7 +7245,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserReq); i { case 0: return &v.state @@ -6673,7 +7257,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserResp); i { case 0: return &v.state @@ -6685,7 +7269,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnblockUserReq); i { case 0: return &v.state @@ -6697,7 +7281,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnblockUserResp); i { case 0: return &v.state @@ -6709,7 +7293,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchBlockUserReq); i { case 0: return &v.state @@ -6721,7 +7305,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserInfo); i { case 0: return &v.state @@ -6733,7 +7317,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchBlockUserResp); i { case 0: return &v.state @@ -6745,7 +7329,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserBlockInfoReq); i { case 0: return &v.state @@ -6757,7 +7341,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockInfo); i { case 0: return &v.state @@ -6769,7 +7353,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserBlockInfoResp); i { case 0: return &v.state @@ -6781,7 +7365,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTokenReq); i { case 0: return &v.state @@ -6793,7 +7377,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTokenResp); i { case 0: return &v.state @@ -6805,7 +7389,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParseTokenReq); i { case 0: return &v.state @@ -6817,7 +7401,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParseTokenResp); i { case 0: return &v.state @@ -6829,7 +7413,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddAppletReq); i { case 0: return &v.state @@ -6841,7 +7425,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddAppletResp); i { case 0: return &v.state @@ -6853,7 +7437,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelAppletReq); i { case 0: return &v.state @@ -6865,7 +7449,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelAppletResp); i { case 0: return &v.state @@ -6877,7 +7461,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAppletReq); i { case 0: return &v.state @@ -6889,7 +7473,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAppletResp); i { case 0: return &v.state @@ -6901,7 +7485,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindAppletReq); i { case 0: return &v.state @@ -6913,7 +7497,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindAppletResp); i { case 0: return &v.state @@ -6925,7 +7509,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchAppletReq); i { case 0: return &v.state @@ -6937,7 +7521,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchAppletResp); i { case 0: return &v.state @@ -6949,7 +7533,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetClientConfigReq); i { case 0: return &v.state @@ -6961,7 +7545,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetClientConfigResp); i { case 0: return &v.state @@ -6973,7 +7557,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelClientConfigReq); i { case 0: return &v.state @@ -6985,7 +7569,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelClientConfigResp); i { case 0: return &v.state @@ -6997,7 +7581,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClientConfigReq); i { case 0: return &v.state @@ -7009,7 +7593,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClientConfigResp); i { case 0: return &v.state @@ -7021,7 +7605,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserTokenReq); i { case 0: return &v.state @@ -7033,7 +7617,7 @@ func file_admin_admin_proto_init() { return nil } } - file_admin_admin_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_admin_admin_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserTokenResp); i { case 0: return &v.state @@ -7052,7 +7636,7 @@ func file_admin_admin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_admin_admin_proto_rawDesc, NumEnums: 0, - NumMessages: 96, + NumMessages: 104, NumExtensions: 0, NumServices: 1, }, @@ -7084,6 +7668,10 @@ type AdminClient interface { AdminUpdateInfo(ctx context.Context, in *AdminUpdateInfoReq, opts ...grpc.CallOption) (*AdminUpdateInfoResp, error) // 获取管理员信息 GetAdminInfo(ctx context.Context, in *GetAdminInfoReq, opts ...grpc.CallOption) (*GetAdminInfoResp, error) + AddAdminAccount(ctx context.Context, in *AddAdminAccountReq, opts ...grpc.CallOption) (*AddAdminAccountResp, error) + ChangeAdminPassword(ctx context.Context, in *ChangeAdminPasswordReq, opts ...grpc.CallOption) (*ChangeAdminPasswordResp, error) + DelAdminAccount(ctx context.Context, in *DelAdminAccountReq, opts ...grpc.CallOption) (*DelAdminAccountResp, error) + SearchAdminAccount(ctx context.Context, in *SearchAdminAccountReq, opts ...grpc.CallOption) (*SearchAdminAccountResp, error) // 添加 移除 获取 注册时默认好友列表 AddDefaultFriend(ctx context.Context, in *AddDefaultFriendReq, opts ...grpc.CallOption) (*AddDefaultFriendResp, error) DelDefaultFriend(ctx context.Context, in *DelDefaultFriendReq, opts ...grpc.CallOption) (*DelDefaultFriendResp, error) @@ -7177,6 +7765,42 @@ func (c *adminClient) GetAdminInfo(ctx context.Context, in *GetAdminInfoReq, opt return out, nil } +func (c *adminClient) AddAdminAccount(ctx context.Context, in *AddAdminAccountReq, opts ...grpc.CallOption) (*AddAdminAccountResp, error) { + out := new(AddAdminAccountResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.admin.admin/AddAdminAccount", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) ChangeAdminPassword(ctx context.Context, in *ChangeAdminPasswordReq, opts ...grpc.CallOption) (*ChangeAdminPasswordResp, error) { + out := new(ChangeAdminPasswordResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.admin.admin/ChangeAdminPassword", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) DelAdminAccount(ctx context.Context, in *DelAdminAccountReq, opts ...grpc.CallOption) (*DelAdminAccountResp, error) { + out := new(DelAdminAccountResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.admin.admin/DelAdminAccount", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) SearchAdminAccount(ctx context.Context, in *SearchAdminAccountReq, opts ...grpc.CallOption) (*SearchAdminAccountResp, error) { + out := new(SearchAdminAccountResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.admin.admin/SearchAdminAccount", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *adminClient) AddDefaultFriend(ctx context.Context, in *AddDefaultFriendReq, opts ...grpc.CallOption) (*AddDefaultFriendResp, error) { out := new(AddDefaultFriendResp) err := c.cc.Invoke(ctx, "/OpenIMChat.admin.admin/AddDefaultFriend", in, out, opts...) @@ -7527,6 +8151,10 @@ type AdminServer interface { AdminUpdateInfo(context.Context, *AdminUpdateInfoReq) (*AdminUpdateInfoResp, error) // 获取管理员信息 GetAdminInfo(context.Context, *GetAdminInfoReq) (*GetAdminInfoResp, error) + AddAdminAccount(context.Context, *AddAdminAccountReq) (*AddAdminAccountResp, error) + ChangeAdminPassword(context.Context, *ChangeAdminPasswordReq) (*ChangeAdminPasswordResp, error) + DelAdminAccount(context.Context, *DelAdminAccountReq) (*DelAdminAccountResp, error) + SearchAdminAccount(context.Context, *SearchAdminAccountReq) (*SearchAdminAccountResp, error) // 添加 移除 获取 注册时默认好友列表 AddDefaultFriend(context.Context, *AddDefaultFriendReq) (*AddDefaultFriendResp, error) DelDefaultFriend(context.Context, *DelDefaultFriendReq) (*DelDefaultFriendResp, error) @@ -7592,6 +8220,18 @@ func (*UnimplementedAdminServer) AdminUpdateInfo(context.Context, *AdminUpdateIn func (*UnimplementedAdminServer) GetAdminInfo(context.Context, *GetAdminInfoReq) (*GetAdminInfoResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAdminInfo not implemented") } +func (*UnimplementedAdminServer) AddAdminAccount(context.Context, *AddAdminAccountReq) (*AddAdminAccountResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddAdminAccount not implemented") +} +func (*UnimplementedAdminServer) ChangeAdminPassword(context.Context, *ChangeAdminPasswordReq) (*ChangeAdminPasswordResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ChangeAdminPassword not implemented") +} +func (*UnimplementedAdminServer) DelAdminAccount(context.Context, *DelAdminAccountReq) (*DelAdminAccountResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelAdminAccount not implemented") +} +func (*UnimplementedAdminServer) SearchAdminAccount(context.Context, *SearchAdminAccountReq) (*SearchAdminAccountResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchAdminAccount not implemented") +} func (*UnimplementedAdminServer) AddDefaultFriend(context.Context, *AddDefaultFriendReq) (*AddDefaultFriendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method AddDefaultFriend not implemented") } @@ -7783,6 +8423,78 @@ func _Admin_GetAdminInfo_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Admin_AddAdminAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddAdminAccountReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).AddAdminAccount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.admin.admin/AddAdminAccount", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).AddAdminAccount(ctx, req.(*AddAdminAccountReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_ChangeAdminPassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ChangeAdminPasswordReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).ChangeAdminPassword(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.admin.admin/ChangeAdminPassword", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).ChangeAdminPassword(ctx, req.(*ChangeAdminPasswordReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_DelAdminAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DelAdminAccountReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).DelAdminAccount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.admin.admin/DelAdminAccount", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).DelAdminAccount(ctx, req.(*DelAdminAccountReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_SearchAdminAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchAdminAccountReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).SearchAdminAccount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.admin.admin/SearchAdminAccount", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).SearchAdminAccount(ctx, req.(*SearchAdminAccountReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Admin_AddDefaultFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddDefaultFriendReq) if err := dec(in); err != nil { @@ -8487,6 +9199,22 @@ var _Admin_serviceDesc = grpc.ServiceDesc{ MethodName: "GetAdminInfo", Handler: _Admin_GetAdminInfo_Handler, }, + { + MethodName: "AddAdminAccount", + Handler: _Admin_AddAdminAccount_Handler, + }, + { + MethodName: "ChangeAdminPassword", + Handler: _Admin_ChangeAdminPassword_Handler, + }, + { + MethodName: "DelAdminAccount", + Handler: _Admin_DelAdminAccount_Handler, + }, + { + MethodName: "SearchAdminAccount", + Handler: _Admin_SearchAdminAccount_Handler, + }, { MethodName: "AddDefaultFriend", Handler: _Admin_AddDefaultFriend_Handler, diff --git a/pkg/proto/admin/admin.proto b/pkg/proto/admin/admin.proto index e25a36184..2db2be457 100644 --- a/pkg/proto/admin/admin.proto +++ b/pkg/proto/admin/admin.proto @@ -34,6 +34,16 @@ message LoginResp { string adminUserID = 6; } +message AddAdminAccountReq{ + string account=1; + string password=2; + string faceURL=3; + string nickname=4; +} + +message AddAdminAccountResp{ +} + message AdminUpdateInfoReq { OpenIMServer.protobuf.StringValue account = 1; OpenIMServer.protobuf.StringValue password = 2; @@ -58,6 +68,32 @@ message ChangePasswordResp {} message GetAdminInfoReq { } +message ChangeAdminPasswordReq{ + string userID = 1; + string currentPassword = 2; + string newPassword = 3; +} + +message ChangeAdminPasswordResp{ +} + +message DelAdminAccountReq{ + repeated string userIDs=1; +} + +message DelAdminAccountResp{ +} + +message SearchAdminAccountReq{ + string keyword = 1; + OpenIMServer.sdkws.RequestPagination pagination = 2; +} + +message SearchAdminAccountResp{ + uint32 total = 1; + repeated GetAdminInfoResp adminAccounts= 2; +} + message GetAdminInfoResp { string account = 2; string password = 3; @@ -477,6 +513,10 @@ service admin { rpc AdminUpdateInfo(AdminUpdateInfoReq)returns(AdminUpdateInfoResp); // 获取管理员信息 rpc GetAdminInfo(GetAdminInfoReq) returns(GetAdminInfoResp); + rpc AddAdminAccount(AddAdminAccountReq)returns(AddAdminAccountResp); + rpc ChangeAdminPassword(ChangeAdminPasswordReq)returns(ChangeAdminPasswordResp); + rpc DelAdminAccount(DelAdminAccountReq)returns(DelAdminAccountResp); + rpc SearchAdminAccount(SearchAdminAccountReq)returns(SearchAdminAccountResp); //添加 移除 获取 注册时默认好友列表 rpc AddDefaultFriend(AddDefaultFriendReq) returns(AddDefaultFriendResp); diff --git a/pkg/proto/chat/chat.go b/pkg/proto/chat/chat.go index 5c6cf5f13..10671ae60 100644 --- a/pkg/proto/chat/chat.go +++ b/pkg/proto/chat/chat.go @@ -310,3 +310,13 @@ func (x *SearchUserInfoReq) Check() error { } return nil } + +func (x *AddUserAccountReq) Check() error { + if x.User.Email == "" { + if (x.User.AreaCode == "" && x.User.PhoneNumber != "") || (x.User.AreaCode != "" && x.User.PhoneNumber == "") { + return errs.ErrArgs.Wrap("area code or phone number error, no email provide") + } + } + + return nil +} diff --git a/pkg/proto/chat/chat.pb.go b/pkg/proto/chat/chat.pb.go index 67ee5326f..17327a1a7 100644 --- a/pkg/proto/chat/chat.pb.go +++ b/pkg/proto/chat/chat.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.29.1 -// protoc v4.22.0 +// protoc-gen-go v1.31.0 +// protoc v3.21.6 // source: chat/chat.proto package chat @@ -46,12 +46,12 @@ type UserIdentity struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email"` - AreaCode string `protobuf:"bytes,2,opt,name=areaCode,proto3" json:"areaCode"` - PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` - DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` - Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` - Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + AreaCode string `protobuf:"bytes,2,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID,omitempty"` + Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform,omitempty"` + Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account,omitempty"` } func (x *UserIdentity) Reset() { @@ -133,20 +133,20 @@ type UpdateUserInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Account *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` - PhoneNumber *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` - AreaCode *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode"` - Email *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` - Nickname *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname"` - FaceURL *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL"` - Gender *wrapperspb.Int32Value `protobuf:"bytes,8,opt,name=gender,proto3" json:"gender"` - Level *wrapperspb.Int32Value `protobuf:"bytes,9,opt,name=level,proto3" json:"level"` - Birth *wrapperspb.Int64Value `protobuf:"bytes,10,opt,name=birth,proto3" json:"birth"` - AllowAddFriend *wrapperspb.Int32Value `protobuf:"bytes,11,opt,name=allowAddFriend,proto3" json:"allowAddFriend"` - AllowBeep *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=allowBeep,proto3" json:"allowBeep"` - AllowVibration *wrapperspb.Int32Value `protobuf:"bytes,13,opt,name=allowVibration,proto3" json:"allowVibration"` - GlobalRecvMsgOpt *wrapperspb.Int32Value `protobuf:"bytes,14,opt,name=globalRecvMsgOpt,proto3" json:"globalRecvMsgOpt"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Account *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + PhoneNumber *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + AreaCode *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + Email *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + Nickname *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` + FaceURL *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Gender *wrapperspb.Int32Value `protobuf:"bytes,8,opt,name=gender,proto3" json:"gender,omitempty"` + Level *wrapperspb.Int32Value `protobuf:"bytes,9,opt,name=level,proto3" json:"level,omitempty"` + Birth *wrapperspb.Int64Value `protobuf:"bytes,10,opt,name=birth,proto3" json:"birth,omitempty"` + AllowAddFriend *wrapperspb.Int32Value `protobuf:"bytes,11,opt,name=allowAddFriend,proto3" json:"allowAddFriend,omitempty"` + AllowBeep *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=allowBeep,proto3" json:"allowBeep,omitempty"` + AllowVibration *wrapperspb.Int32Value `protobuf:"bytes,13,opt,name=allowVibration,proto3" json:"allowVibration,omitempty"` + GlobalRecvMsgOpt *wrapperspb.Int32Value `protobuf:"bytes,14,opt,name=globalRecvMsgOpt,proto3" json:"globalRecvMsgOpt,omitempty"` } func (x *UpdateUserInfoReq) Reset() { @@ -284,8 +284,8 @@ type UpdateUserInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FaceUrl string `protobuf:"bytes,1,opt,name=faceUrl,proto3" json:"faceUrl"` - NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName"` + FaceUrl string `protobuf:"bytes,1,opt,name=faceUrl,proto3" json:"faceUrl,omitempty"` + NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName,omitempty"` } func (x *UpdateUserInfoResp) Reset() { @@ -339,7 +339,7 @@ type FindUserPublicInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *FindUserPublicInfoReq) Reset() { @@ -386,7 +386,7 @@ type FindUserPublicInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Users []*common.UserPublicInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` + Users []*common.UserPublicInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` } func (x *FindUserPublicInfoResp) Reset() { @@ -433,9 +433,9 @@ type SearchUserPublicInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` - Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders,omitempty"` } func (x *SearchUserPublicInfoReq) Reset() { @@ -496,8 +496,8 @@ type SearchUserPublicInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Users []*common.UserPublicInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Users []*common.UserPublicInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` } func (x *SearchUserPublicInfoResp) Reset() { @@ -551,7 +551,7 @@ type FindUserFullInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *FindUserFullInfoReq) Reset() { @@ -598,7 +598,7 @@ type FindUserFullInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Users []*common.UserFullInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` + Users []*common.UserFullInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` } func (x *FindUserFullInfoResp) Reset() { @@ -645,14 +645,14 @@ type SendVerifyCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UsedFor int32 `protobuf:"varint,1,opt,name=usedFor,proto3" json:"usedFor"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` - InvitationCode string `protobuf:"bytes,3,opt,name=invitationCode,proto3" json:"invitationCode"` - DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` - Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` - AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode"` - PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber"` - Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email"` + UsedFor int32 `protobuf:"varint,1,opt,name=usedFor,proto3" json:"usedFor,omitempty"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` + InvitationCode string `protobuf:"bytes,3,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` + DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID,omitempty"` + Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform,omitempty"` + AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email,omitempty"` } func (x *SendVerifyCodeReq) Reset() { @@ -786,10 +786,10 @@ type VerifyCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` - PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` - VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` - Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email"` + AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` + Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` } func (x *VerifyCodeReq) Reset() { @@ -895,16 +895,16 @@ type RegisterUserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` - Birth int64 `protobuf:"varint,4,opt,name=birth,proto3" json:"birth"` - Gender int32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender"` - AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode"` - PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber"` - Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email"` - Account string `protobuf:"bytes,9,opt,name=account,proto3" json:"account"` - Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + Birth int64 `protobuf:"varint,4,opt,name=birth,proto3" json:"birth,omitempty"` + Gender int32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender,omitempty"` + AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email,omitempty"` + Account string `protobuf:"bytes,9,opt,name=account,proto3" json:"account,omitempty"` + Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password,omitempty"` } func (x *RegisterUserInfo) Reset() { @@ -1014,13 +1014,13 @@ type RegisterUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode"` - VerifyCode string `protobuf:"bytes,2,opt,name=verifyCode,proto3" json:"verifyCode"` - Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` - DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` - Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` - AutoLogin bool `protobuf:"varint,6,opt,name=autoLogin,proto3" json:"autoLogin"` - User *RegisterUserInfo `protobuf:"bytes,7,opt,name=user,proto3" json:"user"` + InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` + VerifyCode string `protobuf:"bytes,2,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` + Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` + DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID,omitempty"` + Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform,omitempty"` + AutoLogin bool `protobuf:"varint,6,opt,name=autoLogin,proto3" json:"autoLogin,omitempty"` + User *RegisterUserInfo `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"` } func (x *RegisterUserReq) Reset() { @@ -1109,8 +1109,8 @@ type RegisterUserResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - ChatToken string `protobuf:"bytes,3,opt,name=chatToken,proto3" json:"chatToken"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + ChatToken string `protobuf:"bytes,3,opt,name=chatToken,proto3" json:"chatToken,omitempty"` } func (x *RegisterUserResp) Reset() { @@ -1159,26 +1159,135 @@ func (x *RegisterUserResp) GetChatToken() string { return "" } +type AddUserAccountReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` + Platform int32 `protobuf:"varint,3,opt,name=platform,proto3" json:"platform,omitempty"` + User *RegisterUserInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"` +} + +func (x *AddUserAccountReq) Reset() { + *x = AddUserAccountReq{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddUserAccountReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddUserAccountReq) ProtoMessage() {} + +func (x *AddUserAccountReq) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_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) +} + +// Deprecated: Use AddUserAccountReq.ProtoReflect.Descriptor instead. +func (*AddUserAccountReq) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{16} +} + +func (x *AddUserAccountReq) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +func (x *AddUserAccountReq) GetDeviceID() string { + if x != nil { + return x.DeviceID + } + return "" +} + +func (x *AddUserAccountReq) GetPlatform() int32 { + if x != nil { + return x.Platform + } + return 0 +} + +func (x *AddUserAccountReq) GetUser() *RegisterUserInfo { + if x != nil { + return x.User + } + return nil +} + +type AddUserAccountResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddUserAccountResp) Reset() { + *x = AddUserAccountResp{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddUserAccountResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddUserAccountResp) ProtoMessage() {} + +func (x *AddUserAccountResp) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_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) +} + +// Deprecated: Use AddUserAccountResp.ProtoReflect.Descriptor instead. +func (*AddUserAccountResp) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{17} +} + type LoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` - PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` - VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` - Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account"` - Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password"` - Platform int32 `protobuf:"varint,6,opt,name=platform,proto3" json:"platform"` - DeviceID string `protobuf:"bytes,7,opt,name=deviceID,proto3" json:"deviceID"` - Ip string `protobuf:"bytes,8,opt,name=ip,proto3" json:"ip"` - Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email"` + AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` + Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account,omitempty"` + Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password,omitempty"` + Platform int32 `protobuf:"varint,6,opt,name=platform,proto3" json:"platform,omitempty"` + DeviceID string `protobuf:"bytes,7,opt,name=deviceID,proto3" json:"deviceID,omitempty"` + Ip string `protobuf:"bytes,8,opt,name=ip,proto3" json:"ip,omitempty"` + Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` } func (x *LoginReq) Reset() { *x = LoginReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[16] + mi := &file_chat_chat_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1191,7 +1300,7 @@ func (x *LoginReq) String() string { func (*LoginReq) ProtoMessage() {} func (x *LoginReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[16] + mi := &file_chat_chat_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1204,7 +1313,7 @@ func (x *LoginReq) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. func (*LoginReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{16} + return file_chat_chat_proto_rawDescGZIP(), []int{18} } func (x *LoginReq) GetAreaCode() string { @@ -1275,14 +1384,14 @@ type LoginResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ChatToken string `protobuf:"bytes,2,opt,name=chatToken,proto3" json:"chatToken"` - UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID"` + ChatToken string `protobuf:"bytes,2,opt,name=chatToken,proto3" json:"chatToken,omitempty"` + UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID,omitempty"` } func (x *LoginResp) Reset() { *x = LoginResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[17] + mi := &file_chat_chat_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1295,7 +1404,7 @@ func (x *LoginResp) String() string { func (*LoginResp) ProtoMessage() {} func (x *LoginResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[17] + mi := &file_chat_chat_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1308,7 +1417,7 @@ func (x *LoginResp) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. func (*LoginResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{17} + return file_chat_chat_proto_rawDescGZIP(), []int{19} } func (x *LoginResp) GetChatToken() string { @@ -1330,17 +1439,17 @@ type ResetPasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` - PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` - VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` + AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode,omitempty"` + PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` + VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` + Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` } func (x *ResetPasswordReq) Reset() { *x = ResetPasswordReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[18] + mi := &file_chat_chat_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1353,7 +1462,7 @@ func (x *ResetPasswordReq) String() string { func (*ResetPasswordReq) ProtoMessage() {} func (x *ResetPasswordReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[18] + mi := &file_chat_chat_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1366,7 +1475,7 @@ func (x *ResetPasswordReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetPasswordReq.ProtoReflect.Descriptor instead. func (*ResetPasswordReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{18} + return file_chat_chat_proto_rawDescGZIP(), []int{20} } func (x *ResetPasswordReq) GetAreaCode() string { @@ -1413,7 +1522,7 @@ type ResetPasswordResp struct { func (x *ResetPasswordResp) Reset() { *x = ResetPasswordResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[19] + mi := &file_chat_chat_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1426,7 +1535,7 @@ func (x *ResetPasswordResp) String() string { func (*ResetPasswordResp) ProtoMessage() {} func (x *ResetPasswordResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[19] + mi := &file_chat_chat_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1439,7 +1548,7 @@ func (x *ResetPasswordResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetPasswordResp.ProtoReflect.Descriptor instead. func (*ResetPasswordResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{19} + return file_chat_chat_proto_rawDescGZIP(), []int{21} } type ChangePasswordReq struct { @@ -1447,15 +1556,15 @@ type ChangePasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` - CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword"` - NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword,omitempty"` + NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword,omitempty"` } func (x *ChangePasswordReq) Reset() { *x = ChangePasswordReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[20] + mi := &file_chat_chat_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1468,7 +1577,7 @@ func (x *ChangePasswordReq) String() string { func (*ChangePasswordReq) ProtoMessage() {} func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[20] + mi := &file_chat_chat_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1481,7 +1590,7 @@ func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePasswordReq.ProtoReflect.Descriptor instead. func (*ChangePasswordReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{20} + return file_chat_chat_proto_rawDescGZIP(), []int{22} } func (x *ChangePasswordReq) GetUserID() string { @@ -1514,7 +1623,7 @@ type ChangePasswordResp struct { func (x *ChangePasswordResp) Reset() { *x = ChangePasswordResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[21] + mi := &file_chat_chat_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1636,7 @@ func (x *ChangePasswordResp) String() string { func (*ChangePasswordResp) ProtoMessage() {} func (x *ChangePasswordResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[21] + mi := &file_chat_chat_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1649,7 @@ func (x *ChangePasswordResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePasswordResp.ProtoReflect.Descriptor instead. func (*ChangePasswordResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{21} + return file_chat_chat_proto_rawDescGZIP(), []int{23} } type FindUserAccountReq struct { @@ -1548,13 +1657,13 @@ type FindUserAccountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *FindUserAccountReq) Reset() { *x = FindUserAccountReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[22] + mi := &file_chat_chat_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1567,7 +1676,7 @@ func (x *FindUserAccountReq) String() string { func (*FindUserAccountReq) ProtoMessage() {} func (x *FindUserAccountReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[22] + mi := &file_chat_chat_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1580,7 +1689,7 @@ func (x *FindUserAccountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserAccountReq.ProtoReflect.Descriptor instead. func (*FindUserAccountReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{22} + return file_chat_chat_proto_rawDescGZIP(), []int{24} } func (x *FindUserAccountReq) GetUserIDs() []string { @@ -1595,13 +1704,13 @@ type FindUserAccountResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserAccountMap map[string]string `protobuf:"bytes,1,rep,name=userAccountMap,proto3" json:"userAccountMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // userID account + UserAccountMap map[string]string `protobuf:"bytes,1,rep,name=userAccountMap,proto3" json:"userAccountMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // userID account } func (x *FindUserAccountResp) Reset() { *x = FindUserAccountResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[23] + mi := &file_chat_chat_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1614,7 +1723,7 @@ func (x *FindUserAccountResp) String() string { func (*FindUserAccountResp) ProtoMessage() {} func (x *FindUserAccountResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[23] + mi := &file_chat_chat_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1627,7 +1736,7 @@ func (x *FindUserAccountResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserAccountResp.ProtoReflect.Descriptor instead. func (*FindUserAccountResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{23} + return file_chat_chat_proto_rawDescGZIP(), []int{25} } func (x *FindUserAccountResp) GetUserAccountMap() map[string]string { @@ -1642,13 +1751,13 @@ type FindAccountUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Accounts []string `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts"` + Accounts []string `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` } func (x *FindAccountUserReq) Reset() { *x = FindAccountUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[24] + mi := &file_chat_chat_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1661,7 +1770,7 @@ func (x *FindAccountUserReq) String() string { func (*FindAccountUserReq) ProtoMessage() {} func (x *FindAccountUserReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[24] + mi := &file_chat_chat_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1674,7 +1783,7 @@ func (x *FindAccountUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FindAccountUserReq.ProtoReflect.Descriptor instead. func (*FindAccountUserReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{24} + return file_chat_chat_proto_rawDescGZIP(), []int{26} } func (x *FindAccountUserReq) GetAccounts() []string { @@ -1689,13 +1798,13 @@ type FindAccountUserResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AccountUserMap map[string]string `protobuf:"bytes,1,rep,name=accountUserMap,proto3" json:"accountUserMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account userID + AccountUserMap map[string]string `protobuf:"bytes,1,rep,name=accountUserMap,proto3" json:"accountUserMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account userID } func (x *FindAccountUserResp) Reset() { *x = FindAccountUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[25] + mi := &file_chat_chat_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1708,7 +1817,7 @@ func (x *FindAccountUserResp) String() string { func (*FindAccountUserResp) ProtoMessage() {} func (x *FindAccountUserResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[25] + mi := &file_chat_chat_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1721,7 +1830,7 @@ func (x *FindAccountUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FindAccountUserResp.ProtoReflect.Descriptor instead. func (*FindAccountUserResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{25} + return file_chat_chat_proto_rawDescGZIP(), []int{27} } func (x *FindAccountUserResp) GetAccountUserMap() map[string]string { @@ -1736,26 +1845,26 @@ type SignalRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FileName string `protobuf:"bytes,1,opt,name=fileName,proto3" json:"fileName"` - MediaType string `protobuf:"bytes,2,opt,name=mediaType,proto3" json:"mediaType"` - RoomType string `protobuf:"bytes,3,opt,name=roomType,proto3" json:"roomType"` - SenderID string `protobuf:"bytes,4,opt,name=senderID,proto3" json:"senderID"` - SenderNickname string `protobuf:"bytes,5,opt,name=senderNickname,proto3" json:"senderNickname"` - RecvID string `protobuf:"bytes,6,opt,name=recvID,proto3" json:"recvID"` - RecvNickname string `protobuf:"bytes,7,opt,name=recvNickname,proto3" json:"recvNickname"` - GroupID string `protobuf:"bytes,8,opt,name=groupID,proto3" json:"groupID"` - GroupName string `protobuf:"bytes,9,opt,name=groupName,proto3" json:"groupName"` - InviterUserList []*common.UserPublicInfo `protobuf:"bytes,10,rep,name=inviterUserList,proto3" json:"inviterUserList"` - Duration int32 `protobuf:"varint,11,opt,name=duration,proto3" json:"duration"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime"` - Size string `protobuf:"bytes,13,opt,name=size,proto3" json:"size"` - DownloadURL string `protobuf:"bytes,14,opt,name=downloadURL,proto3" json:"downloadURL"` + FileName string `protobuf:"bytes,1,opt,name=fileName,proto3" json:"fileName,omitempty"` + MediaType string `protobuf:"bytes,2,opt,name=mediaType,proto3" json:"mediaType,omitempty"` + RoomType string `protobuf:"bytes,3,opt,name=roomType,proto3" json:"roomType,omitempty"` + SenderID string `protobuf:"bytes,4,opt,name=senderID,proto3" json:"senderID,omitempty"` + SenderNickname string `protobuf:"bytes,5,opt,name=senderNickname,proto3" json:"senderNickname,omitempty"` + RecvID string `protobuf:"bytes,6,opt,name=recvID,proto3" json:"recvID,omitempty"` + RecvNickname string `protobuf:"bytes,7,opt,name=recvNickname,proto3" json:"recvNickname,omitempty"` + GroupID string `protobuf:"bytes,8,opt,name=groupID,proto3" json:"groupID,omitempty"` + GroupName string `protobuf:"bytes,9,opt,name=groupName,proto3" json:"groupName,omitempty"` + InviterUserList []*common.UserPublicInfo `protobuf:"bytes,10,rep,name=inviterUserList,proto3" json:"inviterUserList,omitempty"` + Duration int32 `protobuf:"varint,11,opt,name=duration,proto3" json:"duration,omitempty"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` + Size string `protobuf:"bytes,13,opt,name=size,proto3" json:"size,omitempty"` + DownloadURL string `protobuf:"bytes,14,opt,name=downloadURL,proto3" json:"downloadURL,omitempty"` } func (x *SignalRecord) Reset() { *x = SignalRecord{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[26] + mi := &file_chat_chat_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1768,7 +1877,7 @@ func (x *SignalRecord) String() string { func (*SignalRecord) ProtoMessage() {} func (x *SignalRecord) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[26] + mi := &file_chat_chat_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1781,7 +1890,7 @@ func (x *SignalRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use SignalRecord.ProtoReflect.Descriptor instead. func (*SignalRecord) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{26} + return file_chat_chat_proto_rawDescGZIP(), []int{28} } func (x *SignalRecord) GetFileName() string { @@ -1887,14 +1996,14 @@ type AddSignalRecordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SignalRecord *SignalRecord `protobuf:"bytes,1,opt,name=signalRecord,proto3" json:"signalRecord"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID"` + SignalRecord *SignalRecord `protobuf:"bytes,1,opt,name=signalRecord,proto3" json:"signalRecord,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` } func (x *AddSignalRecordReq) Reset() { *x = AddSignalRecordReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[27] + mi := &file_chat_chat_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1907,7 +2016,7 @@ func (x *AddSignalRecordReq) String() string { func (*AddSignalRecordReq) ProtoMessage() {} func (x *AddSignalRecordReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[27] + mi := &file_chat_chat_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1920,7 +2029,7 @@ func (x *AddSignalRecordReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddSignalRecordReq.ProtoReflect.Descriptor instead. func (*AddSignalRecordReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{27} + return file_chat_chat_proto_rawDescGZIP(), []int{29} } func (x *AddSignalRecordReq) GetSignalRecord() *SignalRecord { @@ -1946,7 +2055,7 @@ type AddSignalRecordResp struct { func (x *AddSignalRecordResp) Reset() { *x = AddSignalRecordResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[28] + mi := &file_chat_chat_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1959,7 +2068,7 @@ func (x *AddSignalRecordResp) String() string { func (*AddSignalRecordResp) ProtoMessage() {} func (x *AddSignalRecordResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[28] + mi := &file_chat_chat_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1972,7 +2081,7 @@ func (x *AddSignalRecordResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddSignalRecordResp.ProtoReflect.Descriptor instead. func (*AddSignalRecordResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{28} + return file_chat_chat_proto_rawDescGZIP(), []int{30} } type GetSignalRecordsReq struct { @@ -1980,18 +2089,18 @@ type GetSignalRecordsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` - SenderID string `protobuf:"bytes,2,opt,name=senderID,proto3" json:"senderID"` - RecvID string `protobuf:"bytes,3,opt,name=recvID,proto3" json:"recvID"` - MediaType string `protobuf:"bytes,4,opt,name=mediaType,proto3" json:"mediaType"` - CreateTime int64 `protobuf:"varint,5,opt,name=createTime,proto3" json:"createTime"` - OperationID string `protobuf:"bytes,6,opt,name=operationID,proto3" json:"operationID"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + SenderID string `protobuf:"bytes,2,opt,name=senderID,proto3" json:"senderID,omitempty"` + RecvID string `protobuf:"bytes,3,opt,name=recvID,proto3" json:"recvID,omitempty"` + MediaType string `protobuf:"bytes,4,opt,name=mediaType,proto3" json:"mediaType,omitempty"` + CreateTime int64 `protobuf:"varint,5,opt,name=createTime,proto3" json:"createTime,omitempty"` + OperationID string `protobuf:"bytes,6,opt,name=operationID,proto3" json:"operationID,omitempty"` } func (x *GetSignalRecordsReq) Reset() { *x = GetSignalRecordsReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[29] + mi := &file_chat_chat_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2004,7 +2113,7 @@ func (x *GetSignalRecordsReq) String() string { func (*GetSignalRecordsReq) ProtoMessage() {} func (x *GetSignalRecordsReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[29] + mi := &file_chat_chat_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2017,7 +2126,7 @@ func (x *GetSignalRecordsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSignalRecordsReq.ProtoReflect.Descriptor instead. func (*GetSignalRecordsReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{29} + return file_chat_chat_proto_rawDescGZIP(), []int{31} } func (x *GetSignalRecordsReq) GetPagination() *sdkws.RequestPagination { @@ -2067,14 +2176,14 @@ type GetSignalRecordsResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TotalNumber uint32 `protobuf:"varint,1,opt,name=totalNumber,proto3" json:"totalNumber"` - SignalRecords []*SignalRecord `protobuf:"bytes,2,rep,name=signalRecords,proto3" json:"signalRecords"` + TotalNumber uint32 `protobuf:"varint,1,opt,name=totalNumber,proto3" json:"totalNumber,omitempty"` + SignalRecords []*SignalRecord `protobuf:"bytes,2,rep,name=signalRecords,proto3" json:"signalRecords,omitempty"` } func (x *GetSignalRecordsResp) Reset() { *x = GetSignalRecordsResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[30] + mi := &file_chat_chat_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2087,7 +2196,7 @@ func (x *GetSignalRecordsResp) String() string { func (*GetSignalRecordsResp) ProtoMessage() {} func (x *GetSignalRecordsResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[30] + mi := &file_chat_chat_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2100,7 +2209,7 @@ func (x *GetSignalRecordsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSignalRecordsResp.ProtoReflect.Descriptor instead. func (*GetSignalRecordsResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{30} + return file_chat_chat_proto_rawDescGZIP(), []int{32} } func (x *GetSignalRecordsResp) GetTotalNumber() uint32 { @@ -2122,14 +2231,14 @@ type OpenIMCallbackReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command"` - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body"` + Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` } func (x *OpenIMCallbackReq) Reset() { *x = OpenIMCallbackReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[31] + mi := &file_chat_chat_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2142,7 +2251,7 @@ func (x *OpenIMCallbackReq) String() string { func (*OpenIMCallbackReq) ProtoMessage() {} func (x *OpenIMCallbackReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[31] + mi := &file_chat_chat_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2155,7 +2264,7 @@ func (x *OpenIMCallbackReq) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenIMCallbackReq.ProtoReflect.Descriptor instead. func (*OpenIMCallbackReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{31} + return file_chat_chat_proto_rawDescGZIP(), []int{33} } func (x *OpenIMCallbackReq) GetCommand() string { @@ -2181,7 +2290,7 @@ type OpenIMCallbackResp struct { func (x *OpenIMCallbackResp) Reset() { *x = OpenIMCallbackResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[32] + mi := &file_chat_chat_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2194,7 +2303,7 @@ func (x *OpenIMCallbackResp) String() string { func (*OpenIMCallbackResp) ProtoMessage() {} func (x *OpenIMCallbackResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[32] + mi := &file_chat_chat_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2207,7 +2316,7 @@ func (x *OpenIMCallbackResp) ProtoReflect() protoreflect.Message { // Deprecated: Use OpenIMCallbackResp.ProtoReflect.Descriptor instead. func (*OpenIMCallbackResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{32} + return file_chat_chat_proto_rawDescGZIP(), []int{34} } type SearchUserFullInfoReq struct { @@ -2215,16 +2324,16 @@ type SearchUserFullInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` - Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders"` - Normal int32 `protobuf:"varint,4,opt,name=normal,proto3" json:"normal"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders,omitempty"` + Normal int32 `protobuf:"varint,4,opt,name=normal,proto3" json:"normal,omitempty"` } func (x *SearchUserFullInfoReq) Reset() { *x = SearchUserFullInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[33] + mi := &file_chat_chat_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2237,7 +2346,7 @@ func (x *SearchUserFullInfoReq) String() string { func (*SearchUserFullInfoReq) ProtoMessage() {} func (x *SearchUserFullInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[33] + mi := &file_chat_chat_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2250,7 +2359,7 @@ func (x *SearchUserFullInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserFullInfoReq.ProtoReflect.Descriptor instead. func (*SearchUserFullInfoReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{33} + return file_chat_chat_proto_rawDescGZIP(), []int{35} } func (x *SearchUserFullInfoReq) GetKeyword() string { @@ -2286,14 +2395,14 @@ type SearchUserFullInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` } func (x *SearchUserFullInfoResp) Reset() { *x = SearchUserFullInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[34] + mi := &file_chat_chat_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2306,7 +2415,7 @@ func (x *SearchUserFullInfoResp) String() string { func (*SearchUserFullInfoResp) ProtoMessage() {} func (x *SearchUserFullInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[34] + mi := &file_chat_chat_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2319,7 +2428,7 @@ func (x *SearchUserFullInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserFullInfoResp.ProtoReflect.Descriptor instead. func (*SearchUserFullInfoResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{34} + return file_chat_chat_proto_rawDescGZIP(), []int{36} } func (x *SearchUserFullInfoResp) GetTotal() uint32 { @@ -2341,14 +2450,14 @@ type UserLoginCountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start"` - End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end"` + Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` } func (x *UserLoginCountReq) Reset() { *x = UserLoginCountReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[35] + mi := &file_chat_chat_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2361,7 +2470,7 @@ func (x *UserLoginCountReq) String() string { func (*UserLoginCountReq) ProtoMessage() {} func (x *UserLoginCountReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[35] + mi := &file_chat_chat_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2374,7 +2483,7 @@ func (x *UserLoginCountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UserLoginCountReq.ProtoReflect.Descriptor instead. func (*UserLoginCountReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{35} + return file_chat_chat_proto_rawDescGZIP(), []int{37} } func (x *UserLoginCountReq) GetStart() int64 { @@ -2396,15 +2505,15 @@ type UserLoginCountResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LoginCount int64 `protobuf:"varint,1,opt,name=loginCount,proto3" json:"loginCount"` - UnloginCount int64 `protobuf:"varint,2,opt,name=unloginCount,proto3" json:"unloginCount"` - Count map[string]int64 `protobuf:"bytes,3,rep,name=Count,proto3" json:"Count" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + LoginCount int64 `protobuf:"varint,1,opt,name=loginCount,proto3" json:"loginCount,omitempty"` + UnloginCount int64 `protobuf:"varint,2,opt,name=unloginCount,proto3" json:"unloginCount,omitempty"` + Count map[string]int64 `protobuf:"bytes,3,rep,name=Count,proto3" json:"Count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *UserLoginCountResp) Reset() { *x = UserLoginCountResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[36] + mi := &file_chat_chat_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2417,7 +2526,7 @@ func (x *UserLoginCountResp) String() string { func (*UserLoginCountResp) ProtoMessage() {} func (x *UserLoginCountResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[36] + mi := &file_chat_chat_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2430,7 +2539,7 @@ func (x *UserLoginCountResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UserLoginCountResp.ProtoReflect.Descriptor instead. func (*UserLoginCountResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{36} + return file_chat_chat_proto_rawDescGZIP(), []int{38} } func (x *UserLoginCountResp) GetLoginCount() int64 { @@ -2459,14 +2568,14 @@ type FileURL struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename"` - URL string `protobuf:"bytes,2,opt,name=URL,proto3" json:"URL"` + Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` + URL string `protobuf:"bytes,2,opt,name=URL,proto3" json:"URL,omitempty"` } func (x *FileURL) Reset() { *x = FileURL{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[37] + mi := &file_chat_chat_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2479,7 +2588,7 @@ func (x *FileURL) String() string { func (*FileURL) ProtoMessage() {} func (x *FileURL) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[37] + mi := &file_chat_chat_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2492,7 +2601,7 @@ func (x *FileURL) ProtoReflect() protoreflect.Message { // Deprecated: Use FileURL.ProtoReflect.Descriptor instead. func (*FileURL) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{37} + return file_chat_chat_proto_rawDescGZIP(), []int{39} } func (x *FileURL) GetFilename() string { @@ -2514,17 +2623,17 @@ type UploadLogsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Platform int32 `protobuf:"varint,1,opt,name=platform,proto3" json:"platform"` - FileURLs []*FileURL `protobuf:"bytes,2,rep,name=fileURLs,proto3" json:"fileURLs"` - SystemType string `protobuf:"bytes,3,opt,name=systemType,proto3" json:"systemType"` - Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version"` - Ex string `protobuf:"bytes,4,opt,name=ex,proto3" json:"ex"` + Platform int32 `protobuf:"varint,1,opt,name=platform,proto3" json:"platform,omitempty"` + FileURLs []*FileURL `protobuf:"bytes,2,rep,name=fileURLs,proto3" json:"fileURLs,omitempty"` + SystemType string `protobuf:"bytes,3,opt,name=systemType,proto3" json:"systemType,omitempty"` + Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` + Ex string `protobuf:"bytes,4,opt,name=ex,proto3" json:"ex,omitempty"` } func (x *UploadLogsReq) Reset() { *x = UploadLogsReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[38] + mi := &file_chat_chat_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2537,7 +2646,7 @@ func (x *UploadLogsReq) String() string { func (*UploadLogsReq) ProtoMessage() {} func (x *UploadLogsReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[38] + mi := &file_chat_chat_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2550,7 +2659,7 @@ func (x *UploadLogsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadLogsReq.ProtoReflect.Descriptor instead. func (*UploadLogsReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{38} + return file_chat_chat_proto_rawDescGZIP(), []int{40} } func (x *UploadLogsReq) GetPlatform() int32 { @@ -2597,7 +2706,7 @@ type UploadLogsResp struct { func (x *UploadLogsResp) Reset() { *x = UploadLogsResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[39] + mi := &file_chat_chat_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2610,7 +2719,7 @@ func (x *UploadLogsResp) String() string { func (*UploadLogsResp) ProtoMessage() {} func (x *UploadLogsResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[39] + mi := &file_chat_chat_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2623,7 +2732,7 @@ func (x *UploadLogsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadLogsResp.ProtoReflect.Descriptor instead. func (*UploadLogsResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{39} + return file_chat_chat_proto_rawDescGZIP(), []int{41} } type DeleteLogsReq struct { @@ -2631,13 +2740,13 @@ type DeleteLogsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogIDs []string `protobuf:"bytes,1,rep,name=logIDs,proto3" json:"logIDs"` + LogIDs []string `protobuf:"bytes,1,rep,name=logIDs,proto3" json:"logIDs,omitempty"` } func (x *DeleteLogsReq) Reset() { *x = DeleteLogsReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[40] + mi := &file_chat_chat_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2650,7 +2759,7 @@ func (x *DeleteLogsReq) String() string { func (*DeleteLogsReq) ProtoMessage() {} func (x *DeleteLogsReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[40] + mi := &file_chat_chat_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2663,7 +2772,7 @@ func (x *DeleteLogsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLogsReq.ProtoReflect.Descriptor instead. func (*DeleteLogsReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{40} + return file_chat_chat_proto_rawDescGZIP(), []int{42} } func (x *DeleteLogsReq) GetLogIDs() []string { @@ -2682,7 +2791,7 @@ type DeleteLogsResp struct { func (x *DeleteLogsResp) Reset() { *x = DeleteLogsResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[41] + mi := &file_chat_chat_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2695,7 +2804,7 @@ func (x *DeleteLogsResp) String() string { func (*DeleteLogsResp) ProtoMessage() {} func (x *DeleteLogsResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[41] + mi := &file_chat_chat_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2708,7 +2817,7 @@ func (x *DeleteLogsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLogsResp.ProtoReflect.Descriptor instead. func (*DeleteLogsResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{41} + return file_chat_chat_proto_rawDescGZIP(), []int{43} } type SearchLogsReq struct { @@ -2716,16 +2825,16 @@ type SearchLogsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime"` - EndTime int64 `protobuf:"varint,3,opt,name=endTime,proto3" json:"endTime"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"` + EndTime int64 `protobuf:"varint,3,opt,name=endTime,proto3" json:"endTime,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *SearchLogsReq) Reset() { *x = SearchLogsReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[42] + mi := &file_chat_chat_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2738,7 +2847,7 @@ func (x *SearchLogsReq) String() string { func (*SearchLogsReq) ProtoMessage() {} func (x *SearchLogsReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[42] + mi := &file_chat_chat_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2751,7 +2860,7 @@ func (x *SearchLogsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchLogsReq.ProtoReflect.Descriptor instead. func (*SearchLogsReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{42} + return file_chat_chat_proto_rawDescGZIP(), []int{44} } func (x *SearchLogsReq) GetKeyword() string { @@ -2787,14 +2896,14 @@ type SearchLogsResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogsInfos []*common.LogInfo `protobuf:"bytes,1,rep,name=LogsInfos,proto3" json:"LogsInfos"` - Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` + LogsInfos []*common.LogInfo `protobuf:"bytes,1,rep,name=LogsInfos,proto3" json:"LogsInfos,omitempty"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` } func (x *SearchLogsResp) Reset() { *x = SearchLogsResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[43] + mi := &file_chat_chat_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2807,7 +2916,7 @@ func (x *SearchLogsResp) String() string { func (*SearchLogsResp) ProtoMessage() {} func (x *SearchLogsResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[43] + mi := &file_chat_chat_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2820,7 +2929,7 @@ func (x *SearchLogsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchLogsResp.ProtoReflect.Descriptor instead. func (*SearchLogsResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{43} + return file_chat_chat_proto_rawDescGZIP(), []int{45} } func (x *SearchLogsResp) GetLogsInfos() []*common.LogInfo { @@ -2842,16 +2951,16 @@ type SearchUserInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` - Genders []int32 `protobuf:"varint,3,rep,packed,name=genders,proto3" json:"genders"` - UserIDs []string `protobuf:"bytes,4,rep,name=userIDs,proto3" json:"userIDs"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Genders []int32 `protobuf:"varint,3,rep,packed,name=genders,proto3" json:"genders,omitempty"` + UserIDs []string `protobuf:"bytes,4,rep,name=userIDs,proto3" json:"userIDs,omitempty"` } func (x *SearchUserInfoReq) Reset() { *x = SearchUserInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[44] + mi := &file_chat_chat_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2864,7 +2973,7 @@ func (x *SearchUserInfoReq) String() string { func (*SearchUserInfoReq) ProtoMessage() {} func (x *SearchUserInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[44] + mi := &file_chat_chat_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2877,7 +2986,7 @@ func (x *SearchUserInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserInfoReq.ProtoReflect.Descriptor instead. func (*SearchUserInfoReq) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{44} + return file_chat_chat_proto_rawDescGZIP(), []int{46} } func (x *SearchUserInfoReq) GetKeyword() string { @@ -2913,14 +3022,14 @@ type SearchUserInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` } func (x *SearchUserInfoResp) Reset() { *x = SearchUserInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_chat_chat_proto_msgTypes[45] + mi := &file_chat_chat_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2933,7 +3042,7 @@ func (x *SearchUserInfoResp) String() string { func (*SearchUserInfoResp) ProtoMessage() {} func (x *SearchUserInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_chat_chat_proto_msgTypes[45] + mi := &file_chat_chat_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2946,7 +3055,7 @@ func (x *SearchUserInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserInfoResp.ProtoReflect.Descriptor instead. func (*SearchUserInfoResp) Descriptor() ([]byte, []int) { - return file_chat_chat_proto_rawDescGZIP(), []int{45} + return file_chat_chat_proto_rawDescGZIP(), []int{47} } func (x *SearchUserInfoResp) GetTotal() uint32 { @@ -3140,355 +3249,371 @@ var file_chat_chat_proto_rawDesc = []byte{ 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x41, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, - 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x13, 0x0a, - 0x11, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x77, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, - 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, - 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x2e, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x73, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x0e, 0x75, 0x73, 0x65, - 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x38, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x73, 0x65, - 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a, 0x13, 0x55, - 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 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, 0x30, - 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x22, 0xba, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x38, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a, 0x13, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 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, 0xdb, 0x03, - 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, - 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x6d, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, - 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, - 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, - 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0f, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x22, 0x79, 0x0a, 0x12, 0x41, - 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, - 0x71, 0x12, 0x41, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0xf0, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, - 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, - 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x22, 0x7d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, - 0x41, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, - 0x6b, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, - 0x64, 0x79, 0x22, 0x14, 0x0a, 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, - 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0xaa, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x22, 0x65, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, - 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x11, - 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x55, 0x73, - 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, - 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, - 0x52, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x22, 0xab, 0x01, - 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x34, 0x0a, 0x08, 0x66, - 0x69, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x4c, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x65, - 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x10, 0x0a, 0x0e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x27, 0x0a, - 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, - 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x6c, 0x6f, 0x67, 0x49, 0x44, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa8, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, - 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x4c, 0x6f, 0x67, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa8, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, - 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x67, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, - 0x22, 0x61, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x32, 0xe8, 0x0e, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x59, 0x0a, 0x0e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, - 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, - 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, - 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, - 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, - 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, - 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, - 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x22, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, - 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, - 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, - 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, + 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x22, 0xfc, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, + 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, + 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x22, 0x41, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x68, 0x61, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x0a, + 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2e, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, + 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0xba, 0x01, 0x0a, + 0x13, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 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, 0x30, 0x0a, 0x12, 0x46, 0x69, 0x6e, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, + 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x13, + 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x60, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x59, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x55, - 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, + 0x70, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x4d, 0x61, 0x70, 0x1a, 0x41, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 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, 0xdb, 0x03, 0x0a, 0x0c, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x55, 0x52, 0x4c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x22, 0x79, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x41, 0x0a, 0x0c, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0xf0, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, + 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x7d, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0d, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x41, 0x0a, 0x11, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x14, 0x0a, + 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x22, 0xaa, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, + 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, + 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, + 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x22, 0x65, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, + 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x65, 0x6e, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, + 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x75, + 0x6e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x44, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x37, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x52, 0x4c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, 0x22, 0xab, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x34, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, + 0x4c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x55, + 0x52, 0x4c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x27, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, + 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x49, 0x44, + 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0xa8, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, + 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, + 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x38, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x09, 0x4c, 0x6f, 0x67, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x22, 0xa8, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x61, 0x0a, 0x12, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, + 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x32, 0xc3, + 0x0f, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x59, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, - 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, - 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, + 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x42, 0x2a, - 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, + 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, 0x46, 0x69, + 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x65, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, + 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, + 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, + 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x6e, + 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, + 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x12, 0x19, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x59, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, + 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, + 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, + 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, + 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, + 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3503,7 +3628,7 @@ func file_chat_chat_proto_rawDescGZIP() []byte { return file_chat_chat_proto_rawDescData } -var file_chat_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_chat_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 51) var file_chat_chat_proto_goTypes = []interface{}{ (*UserIdentity)(nil), // 0: OpenIMChat.chat.UserIdentity (*UpdateUserInfoReq)(nil), // 1: OpenIMChat.chat.UpdateUserInfoReq @@ -3521,127 +3646,132 @@ var file_chat_chat_proto_goTypes = []interface{}{ (*RegisterUserInfo)(nil), // 13: OpenIMChat.chat.RegisterUserInfo (*RegisterUserReq)(nil), // 14: OpenIMChat.chat.RegisterUserReq (*RegisterUserResp)(nil), // 15: OpenIMChat.chat.RegisterUserResp - (*LoginReq)(nil), // 16: OpenIMChat.chat.LoginReq - (*LoginResp)(nil), // 17: OpenIMChat.chat.LoginResp - (*ResetPasswordReq)(nil), // 18: OpenIMChat.chat.ResetPasswordReq - (*ResetPasswordResp)(nil), // 19: OpenIMChat.chat.ResetPasswordResp - (*ChangePasswordReq)(nil), // 20: OpenIMChat.chat.ChangePasswordReq - (*ChangePasswordResp)(nil), // 21: OpenIMChat.chat.ChangePasswordResp - (*FindUserAccountReq)(nil), // 22: OpenIMChat.chat.FindUserAccountReq - (*FindUserAccountResp)(nil), // 23: OpenIMChat.chat.FindUserAccountResp - (*FindAccountUserReq)(nil), // 24: OpenIMChat.chat.FindAccountUserReq - (*FindAccountUserResp)(nil), // 25: OpenIMChat.chat.FindAccountUserResp - (*SignalRecord)(nil), // 26: OpenIMChat.chat.SignalRecord - (*AddSignalRecordReq)(nil), // 27: OpenIMChat.chat.AddSignalRecordReq - (*AddSignalRecordResp)(nil), // 28: OpenIMChat.chat.AddSignalRecordResp - (*GetSignalRecordsReq)(nil), // 29: OpenIMChat.chat.GetSignalRecordsReq - (*GetSignalRecordsResp)(nil), // 30: OpenIMChat.chat.GetSignalRecordsResp - (*OpenIMCallbackReq)(nil), // 31: OpenIMChat.chat.OpenIMCallbackReq - (*OpenIMCallbackResp)(nil), // 32: OpenIMChat.chat.OpenIMCallbackResp - (*SearchUserFullInfoReq)(nil), // 33: OpenIMChat.chat.SearchUserFullInfoReq - (*SearchUserFullInfoResp)(nil), // 34: OpenIMChat.chat.SearchUserFullInfoResp - (*UserLoginCountReq)(nil), // 35: OpenIMChat.chat.UserLoginCountReq - (*UserLoginCountResp)(nil), // 36: OpenIMChat.chat.UserLoginCountResp - (*FileURL)(nil), // 37: OpenIMChat.chat.fileURL - (*UploadLogsReq)(nil), // 38: OpenIMChat.chat.UploadLogsReq - (*UploadLogsResp)(nil), // 39: OpenIMChat.chat.UploadLogsResp - (*DeleteLogsReq)(nil), // 40: OpenIMChat.chat.DeleteLogsReq - (*DeleteLogsResp)(nil), // 41: OpenIMChat.chat.DeleteLogsResp - (*SearchLogsReq)(nil), // 42: OpenIMChat.chat.SearchLogsReq - (*SearchLogsResp)(nil), // 43: OpenIMChat.chat.SearchLogsResp - (*SearchUserInfoReq)(nil), // 44: OpenIMChat.chat.SearchUserInfoReq - (*SearchUserInfoResp)(nil), // 45: OpenIMChat.chat.SearchUserInfoResp - nil, // 46: OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry - nil, // 47: OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry - nil, // 48: OpenIMChat.chat.UserLoginCountResp.CountEntry - (*wrapperspb.StringValue)(nil), // 49: OpenIMServer.protobuf.StringValue - (*wrapperspb.Int32Value)(nil), // 50: OpenIMServer.protobuf.Int32Value - (*wrapperspb.Int64Value)(nil), // 51: OpenIMServer.protobuf.Int64Value - (*common.UserPublicInfo)(nil), // 52: OpenIMChat.common.UserPublicInfo - (*sdkws.RequestPagination)(nil), // 53: OpenIMServer.sdkws.RequestPagination - (*common.UserFullInfo)(nil), // 54: OpenIMChat.common.UserFullInfo - (*common.LogInfo)(nil), // 55: OpenIMChat.common.LogInfo + (*AddUserAccountReq)(nil), // 16: OpenIMChat.chat.AddUserAccountReq + (*AddUserAccountResp)(nil), // 17: OpenIMChat.chat.AddUserAccountResp + (*LoginReq)(nil), // 18: OpenIMChat.chat.LoginReq + (*LoginResp)(nil), // 19: OpenIMChat.chat.LoginResp + (*ResetPasswordReq)(nil), // 20: OpenIMChat.chat.ResetPasswordReq + (*ResetPasswordResp)(nil), // 21: OpenIMChat.chat.ResetPasswordResp + (*ChangePasswordReq)(nil), // 22: OpenIMChat.chat.ChangePasswordReq + (*ChangePasswordResp)(nil), // 23: OpenIMChat.chat.ChangePasswordResp + (*FindUserAccountReq)(nil), // 24: OpenIMChat.chat.FindUserAccountReq + (*FindUserAccountResp)(nil), // 25: OpenIMChat.chat.FindUserAccountResp + (*FindAccountUserReq)(nil), // 26: OpenIMChat.chat.FindAccountUserReq + (*FindAccountUserResp)(nil), // 27: OpenIMChat.chat.FindAccountUserResp + (*SignalRecord)(nil), // 28: OpenIMChat.chat.SignalRecord + (*AddSignalRecordReq)(nil), // 29: OpenIMChat.chat.AddSignalRecordReq + (*AddSignalRecordResp)(nil), // 30: OpenIMChat.chat.AddSignalRecordResp + (*GetSignalRecordsReq)(nil), // 31: OpenIMChat.chat.GetSignalRecordsReq + (*GetSignalRecordsResp)(nil), // 32: OpenIMChat.chat.GetSignalRecordsResp + (*OpenIMCallbackReq)(nil), // 33: OpenIMChat.chat.OpenIMCallbackReq + (*OpenIMCallbackResp)(nil), // 34: OpenIMChat.chat.OpenIMCallbackResp + (*SearchUserFullInfoReq)(nil), // 35: OpenIMChat.chat.SearchUserFullInfoReq + (*SearchUserFullInfoResp)(nil), // 36: OpenIMChat.chat.SearchUserFullInfoResp + (*UserLoginCountReq)(nil), // 37: OpenIMChat.chat.UserLoginCountReq + (*UserLoginCountResp)(nil), // 38: OpenIMChat.chat.UserLoginCountResp + (*FileURL)(nil), // 39: OpenIMChat.chat.fileURL + (*UploadLogsReq)(nil), // 40: OpenIMChat.chat.UploadLogsReq + (*UploadLogsResp)(nil), // 41: OpenIMChat.chat.UploadLogsResp + (*DeleteLogsReq)(nil), // 42: OpenIMChat.chat.DeleteLogsReq + (*DeleteLogsResp)(nil), // 43: OpenIMChat.chat.DeleteLogsResp + (*SearchLogsReq)(nil), // 44: OpenIMChat.chat.SearchLogsReq + (*SearchLogsResp)(nil), // 45: OpenIMChat.chat.SearchLogsResp + (*SearchUserInfoReq)(nil), // 46: OpenIMChat.chat.SearchUserInfoReq + (*SearchUserInfoResp)(nil), // 47: OpenIMChat.chat.SearchUserInfoResp + nil, // 48: OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry + nil, // 49: OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry + nil, // 50: OpenIMChat.chat.UserLoginCountResp.CountEntry + (*wrapperspb.StringValue)(nil), // 51: OpenIMServer.protobuf.StringValue + (*wrapperspb.Int32Value)(nil), // 52: OpenIMServer.protobuf.Int32Value + (*wrapperspb.Int64Value)(nil), // 53: OpenIMServer.protobuf.Int64Value + (*common.UserPublicInfo)(nil), // 54: OpenIMChat.common.UserPublicInfo + (*sdkws.RequestPagination)(nil), // 55: OpenIMServer.sdkws.RequestPagination + (*common.UserFullInfo)(nil), // 56: OpenIMChat.common.UserFullInfo + (*common.LogInfo)(nil), // 57: OpenIMChat.common.LogInfo } var file_chat_chat_proto_depIdxs = []int32{ - 49, // 0: OpenIMChat.chat.UpdateUserInfoReq.account:type_name -> OpenIMServer.protobuf.StringValue - 49, // 1: OpenIMChat.chat.UpdateUserInfoReq.phoneNumber:type_name -> OpenIMServer.protobuf.StringValue - 49, // 2: OpenIMChat.chat.UpdateUserInfoReq.areaCode:type_name -> OpenIMServer.protobuf.StringValue - 49, // 3: OpenIMChat.chat.UpdateUserInfoReq.email:type_name -> OpenIMServer.protobuf.StringValue - 49, // 4: OpenIMChat.chat.UpdateUserInfoReq.nickname:type_name -> OpenIMServer.protobuf.StringValue - 49, // 5: OpenIMChat.chat.UpdateUserInfoReq.faceURL:type_name -> OpenIMServer.protobuf.StringValue - 50, // 6: OpenIMChat.chat.UpdateUserInfoReq.gender:type_name -> OpenIMServer.protobuf.Int32Value - 50, // 7: OpenIMChat.chat.UpdateUserInfoReq.level:type_name -> OpenIMServer.protobuf.Int32Value - 51, // 8: OpenIMChat.chat.UpdateUserInfoReq.birth:type_name -> OpenIMServer.protobuf.Int64Value - 50, // 9: OpenIMChat.chat.UpdateUserInfoReq.allowAddFriend:type_name -> OpenIMServer.protobuf.Int32Value - 50, // 10: OpenIMChat.chat.UpdateUserInfoReq.allowBeep:type_name -> OpenIMServer.protobuf.Int32Value - 50, // 11: OpenIMChat.chat.UpdateUserInfoReq.allowVibration:type_name -> OpenIMServer.protobuf.Int32Value - 50, // 12: OpenIMChat.chat.UpdateUserInfoReq.globalRecvMsgOpt:type_name -> OpenIMServer.protobuf.Int32Value - 52, // 13: OpenIMChat.chat.FindUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo - 53, // 14: OpenIMChat.chat.SearchUserPublicInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 52, // 15: OpenIMChat.chat.SearchUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo - 54, // 16: OpenIMChat.chat.FindUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo + 51, // 0: OpenIMChat.chat.UpdateUserInfoReq.account:type_name -> OpenIMServer.protobuf.StringValue + 51, // 1: OpenIMChat.chat.UpdateUserInfoReq.phoneNumber:type_name -> OpenIMServer.protobuf.StringValue + 51, // 2: OpenIMChat.chat.UpdateUserInfoReq.areaCode:type_name -> OpenIMServer.protobuf.StringValue + 51, // 3: OpenIMChat.chat.UpdateUserInfoReq.email:type_name -> OpenIMServer.protobuf.StringValue + 51, // 4: OpenIMChat.chat.UpdateUserInfoReq.nickname:type_name -> OpenIMServer.protobuf.StringValue + 51, // 5: OpenIMChat.chat.UpdateUserInfoReq.faceURL:type_name -> OpenIMServer.protobuf.StringValue + 52, // 6: OpenIMChat.chat.UpdateUserInfoReq.gender:type_name -> OpenIMServer.protobuf.Int32Value + 52, // 7: OpenIMChat.chat.UpdateUserInfoReq.level:type_name -> OpenIMServer.protobuf.Int32Value + 53, // 8: OpenIMChat.chat.UpdateUserInfoReq.birth:type_name -> OpenIMServer.protobuf.Int64Value + 52, // 9: OpenIMChat.chat.UpdateUserInfoReq.allowAddFriend:type_name -> OpenIMServer.protobuf.Int32Value + 52, // 10: OpenIMChat.chat.UpdateUserInfoReq.allowBeep:type_name -> OpenIMServer.protobuf.Int32Value + 52, // 11: OpenIMChat.chat.UpdateUserInfoReq.allowVibration:type_name -> OpenIMServer.protobuf.Int32Value + 52, // 12: OpenIMChat.chat.UpdateUserInfoReq.globalRecvMsgOpt:type_name -> OpenIMServer.protobuf.Int32Value + 54, // 13: OpenIMChat.chat.FindUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo + 55, // 14: OpenIMChat.chat.SearchUserPublicInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 54, // 15: OpenIMChat.chat.SearchUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo + 56, // 16: OpenIMChat.chat.FindUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo 13, // 17: OpenIMChat.chat.RegisterUserReq.user:type_name -> OpenIMChat.chat.RegisterUserInfo - 46, // 18: OpenIMChat.chat.FindUserAccountResp.userAccountMap:type_name -> OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry - 47, // 19: OpenIMChat.chat.FindAccountUserResp.accountUserMap:type_name -> OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry - 52, // 20: OpenIMChat.chat.SignalRecord.inviterUserList:type_name -> OpenIMChat.common.UserPublicInfo - 26, // 21: OpenIMChat.chat.AddSignalRecordReq.signalRecord:type_name -> OpenIMChat.chat.SignalRecord - 53, // 22: OpenIMChat.chat.GetSignalRecordsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 26, // 23: OpenIMChat.chat.GetSignalRecordsResp.signalRecords:type_name -> OpenIMChat.chat.SignalRecord - 53, // 24: OpenIMChat.chat.SearchUserFullInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 54, // 25: OpenIMChat.chat.SearchUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo - 48, // 26: OpenIMChat.chat.UserLoginCountResp.Count:type_name -> OpenIMChat.chat.UserLoginCountResp.CountEntry - 37, // 27: OpenIMChat.chat.UploadLogsReq.fileURLs:type_name -> OpenIMChat.chat.fileURL - 53, // 28: OpenIMChat.chat.SearchLogsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 55, // 29: OpenIMChat.chat.SearchLogsResp.LogsInfos:type_name -> OpenIMChat.common.LogInfo - 53, // 30: OpenIMChat.chat.SearchUserInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 54, // 31: OpenIMChat.chat.SearchUserInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo - 1, // 32: OpenIMChat.chat.chat.UpdateUserInfo:input_type -> OpenIMChat.chat.UpdateUserInfoReq - 5, // 33: OpenIMChat.chat.chat.SearchUserPublicInfo:input_type -> OpenIMChat.chat.SearchUserPublicInfoReq - 3, // 34: OpenIMChat.chat.chat.FindUserPublicInfo:input_type -> OpenIMChat.chat.FindUserPublicInfoReq - 33, // 35: OpenIMChat.chat.chat.SearchUserFullInfo:input_type -> OpenIMChat.chat.SearchUserFullInfoReq - 7, // 36: OpenIMChat.chat.chat.FindUserFullInfo:input_type -> OpenIMChat.chat.FindUserFullInfoReq - 9, // 37: OpenIMChat.chat.chat.SendVerifyCode:input_type -> OpenIMChat.chat.SendVerifyCodeReq - 11, // 38: OpenIMChat.chat.chat.VerifyCode:input_type -> OpenIMChat.chat.VerifyCodeReq - 14, // 39: OpenIMChat.chat.chat.RegisterUser:input_type -> OpenIMChat.chat.RegisterUserReq - 16, // 40: OpenIMChat.chat.chat.Login:input_type -> OpenIMChat.chat.LoginReq - 18, // 41: OpenIMChat.chat.chat.ResetPassword:input_type -> OpenIMChat.chat.ResetPasswordReq - 20, // 42: OpenIMChat.chat.chat.ChangePassword:input_type -> OpenIMChat.chat.ChangePasswordReq - 22, // 43: OpenIMChat.chat.chat.FindUserAccount:input_type -> OpenIMChat.chat.FindUserAccountReq - 24, // 44: OpenIMChat.chat.chat.FindAccountUser:input_type -> OpenIMChat.chat.FindAccountUserReq - 27, // 45: OpenIMChat.chat.chat.AddSignalRecord:input_type -> OpenIMChat.chat.AddSignalRecordReq - 29, // 46: OpenIMChat.chat.chat.GetSignalRecords:input_type -> OpenIMChat.chat.GetSignalRecordsReq - 31, // 47: OpenIMChat.chat.chat.OpenIMCallback:input_type -> OpenIMChat.chat.OpenIMCallbackReq - 35, // 48: OpenIMChat.chat.chat.UserLoginCount:input_type -> OpenIMChat.chat.UserLoginCountReq - 38, // 49: OpenIMChat.chat.chat.UploadLogs:input_type -> OpenIMChat.chat.UploadLogsReq - 40, // 50: OpenIMChat.chat.chat.DeleteLogs:input_type -> OpenIMChat.chat.DeleteLogsReq - 42, // 51: OpenIMChat.chat.chat.SearchLogs:input_type -> OpenIMChat.chat.SearchLogsReq - 44, // 52: OpenIMChat.chat.chat.SearchUserInfo:input_type -> OpenIMChat.chat.SearchUserInfoReq - 2, // 53: OpenIMChat.chat.chat.UpdateUserInfo:output_type -> OpenIMChat.chat.UpdateUserInfoResp - 6, // 54: OpenIMChat.chat.chat.SearchUserPublicInfo:output_type -> OpenIMChat.chat.SearchUserPublicInfoResp - 4, // 55: OpenIMChat.chat.chat.FindUserPublicInfo:output_type -> OpenIMChat.chat.FindUserPublicInfoResp - 34, // 56: OpenIMChat.chat.chat.SearchUserFullInfo:output_type -> OpenIMChat.chat.SearchUserFullInfoResp - 8, // 57: OpenIMChat.chat.chat.FindUserFullInfo:output_type -> OpenIMChat.chat.FindUserFullInfoResp - 10, // 58: OpenIMChat.chat.chat.SendVerifyCode:output_type -> OpenIMChat.chat.SendVerifyCodeResp - 12, // 59: OpenIMChat.chat.chat.VerifyCode:output_type -> OpenIMChat.chat.VerifyCodeResp - 15, // 60: OpenIMChat.chat.chat.RegisterUser:output_type -> OpenIMChat.chat.RegisterUserResp - 17, // 61: OpenIMChat.chat.chat.Login:output_type -> OpenIMChat.chat.LoginResp - 19, // 62: OpenIMChat.chat.chat.ResetPassword:output_type -> OpenIMChat.chat.ResetPasswordResp - 21, // 63: OpenIMChat.chat.chat.ChangePassword:output_type -> OpenIMChat.chat.ChangePasswordResp - 23, // 64: OpenIMChat.chat.chat.FindUserAccount:output_type -> OpenIMChat.chat.FindUserAccountResp - 25, // 65: OpenIMChat.chat.chat.FindAccountUser:output_type -> OpenIMChat.chat.FindAccountUserResp - 28, // 66: OpenIMChat.chat.chat.AddSignalRecord:output_type -> OpenIMChat.chat.AddSignalRecordResp - 30, // 67: OpenIMChat.chat.chat.GetSignalRecords:output_type -> OpenIMChat.chat.GetSignalRecordsResp - 32, // 68: OpenIMChat.chat.chat.OpenIMCallback:output_type -> OpenIMChat.chat.OpenIMCallbackResp - 36, // 69: OpenIMChat.chat.chat.UserLoginCount:output_type -> OpenIMChat.chat.UserLoginCountResp - 39, // 70: OpenIMChat.chat.chat.UploadLogs:output_type -> OpenIMChat.chat.UploadLogsResp - 41, // 71: OpenIMChat.chat.chat.DeleteLogs:output_type -> OpenIMChat.chat.DeleteLogsResp - 43, // 72: OpenIMChat.chat.chat.SearchLogs:output_type -> OpenIMChat.chat.SearchLogsResp - 45, // 73: OpenIMChat.chat.chat.SearchUserInfo:output_type -> OpenIMChat.chat.SearchUserInfoResp - 53, // [53:74] is the sub-list for method output_type - 32, // [32:53] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name + 13, // 18: OpenIMChat.chat.AddUserAccountReq.user:type_name -> OpenIMChat.chat.RegisterUserInfo + 48, // 19: OpenIMChat.chat.FindUserAccountResp.userAccountMap:type_name -> OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry + 49, // 20: OpenIMChat.chat.FindAccountUserResp.accountUserMap:type_name -> OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry + 54, // 21: OpenIMChat.chat.SignalRecord.inviterUserList:type_name -> OpenIMChat.common.UserPublicInfo + 28, // 22: OpenIMChat.chat.AddSignalRecordReq.signalRecord:type_name -> OpenIMChat.chat.SignalRecord + 55, // 23: OpenIMChat.chat.GetSignalRecordsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 28, // 24: OpenIMChat.chat.GetSignalRecordsResp.signalRecords:type_name -> OpenIMChat.chat.SignalRecord + 55, // 25: OpenIMChat.chat.SearchUserFullInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 56, // 26: OpenIMChat.chat.SearchUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo + 50, // 27: OpenIMChat.chat.UserLoginCountResp.Count:type_name -> OpenIMChat.chat.UserLoginCountResp.CountEntry + 39, // 28: OpenIMChat.chat.UploadLogsReq.fileURLs:type_name -> OpenIMChat.chat.fileURL + 55, // 29: OpenIMChat.chat.SearchLogsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 57, // 30: OpenIMChat.chat.SearchLogsResp.LogsInfos:type_name -> OpenIMChat.common.LogInfo + 55, // 31: OpenIMChat.chat.SearchUserInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 56, // 32: OpenIMChat.chat.SearchUserInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo + 1, // 33: OpenIMChat.chat.chat.UpdateUserInfo:input_type -> OpenIMChat.chat.UpdateUserInfoReq + 16, // 34: OpenIMChat.chat.chat.AddUserAccount:input_type -> OpenIMChat.chat.AddUserAccountReq + 5, // 35: OpenIMChat.chat.chat.SearchUserPublicInfo:input_type -> OpenIMChat.chat.SearchUserPublicInfoReq + 3, // 36: OpenIMChat.chat.chat.FindUserPublicInfo:input_type -> OpenIMChat.chat.FindUserPublicInfoReq + 35, // 37: OpenIMChat.chat.chat.SearchUserFullInfo:input_type -> OpenIMChat.chat.SearchUserFullInfoReq + 7, // 38: OpenIMChat.chat.chat.FindUserFullInfo:input_type -> OpenIMChat.chat.FindUserFullInfoReq + 9, // 39: OpenIMChat.chat.chat.SendVerifyCode:input_type -> OpenIMChat.chat.SendVerifyCodeReq + 11, // 40: OpenIMChat.chat.chat.VerifyCode:input_type -> OpenIMChat.chat.VerifyCodeReq + 14, // 41: OpenIMChat.chat.chat.RegisterUser:input_type -> OpenIMChat.chat.RegisterUserReq + 18, // 42: OpenIMChat.chat.chat.Login:input_type -> OpenIMChat.chat.LoginReq + 20, // 43: OpenIMChat.chat.chat.ResetPassword:input_type -> OpenIMChat.chat.ResetPasswordReq + 22, // 44: OpenIMChat.chat.chat.ChangePassword:input_type -> OpenIMChat.chat.ChangePasswordReq + 24, // 45: OpenIMChat.chat.chat.FindUserAccount:input_type -> OpenIMChat.chat.FindUserAccountReq + 26, // 46: OpenIMChat.chat.chat.FindAccountUser:input_type -> OpenIMChat.chat.FindAccountUserReq + 29, // 47: OpenIMChat.chat.chat.AddSignalRecord:input_type -> OpenIMChat.chat.AddSignalRecordReq + 31, // 48: OpenIMChat.chat.chat.GetSignalRecords:input_type -> OpenIMChat.chat.GetSignalRecordsReq + 33, // 49: OpenIMChat.chat.chat.OpenIMCallback:input_type -> OpenIMChat.chat.OpenIMCallbackReq + 37, // 50: OpenIMChat.chat.chat.UserLoginCount:input_type -> OpenIMChat.chat.UserLoginCountReq + 40, // 51: OpenIMChat.chat.chat.UploadLogs:input_type -> OpenIMChat.chat.UploadLogsReq + 42, // 52: OpenIMChat.chat.chat.DeleteLogs:input_type -> OpenIMChat.chat.DeleteLogsReq + 44, // 53: OpenIMChat.chat.chat.SearchLogs:input_type -> OpenIMChat.chat.SearchLogsReq + 46, // 54: OpenIMChat.chat.chat.SearchUserInfo:input_type -> OpenIMChat.chat.SearchUserInfoReq + 2, // 55: OpenIMChat.chat.chat.UpdateUserInfo:output_type -> OpenIMChat.chat.UpdateUserInfoResp + 17, // 56: OpenIMChat.chat.chat.AddUserAccount:output_type -> OpenIMChat.chat.AddUserAccountResp + 6, // 57: OpenIMChat.chat.chat.SearchUserPublicInfo:output_type -> OpenIMChat.chat.SearchUserPublicInfoResp + 4, // 58: OpenIMChat.chat.chat.FindUserPublicInfo:output_type -> OpenIMChat.chat.FindUserPublicInfoResp + 36, // 59: OpenIMChat.chat.chat.SearchUserFullInfo:output_type -> OpenIMChat.chat.SearchUserFullInfoResp + 8, // 60: OpenIMChat.chat.chat.FindUserFullInfo:output_type -> OpenIMChat.chat.FindUserFullInfoResp + 10, // 61: OpenIMChat.chat.chat.SendVerifyCode:output_type -> OpenIMChat.chat.SendVerifyCodeResp + 12, // 62: OpenIMChat.chat.chat.VerifyCode:output_type -> OpenIMChat.chat.VerifyCodeResp + 15, // 63: OpenIMChat.chat.chat.RegisterUser:output_type -> OpenIMChat.chat.RegisterUserResp + 19, // 64: OpenIMChat.chat.chat.Login:output_type -> OpenIMChat.chat.LoginResp + 21, // 65: OpenIMChat.chat.chat.ResetPassword:output_type -> OpenIMChat.chat.ResetPasswordResp + 23, // 66: OpenIMChat.chat.chat.ChangePassword:output_type -> OpenIMChat.chat.ChangePasswordResp + 25, // 67: OpenIMChat.chat.chat.FindUserAccount:output_type -> OpenIMChat.chat.FindUserAccountResp + 27, // 68: OpenIMChat.chat.chat.FindAccountUser:output_type -> OpenIMChat.chat.FindAccountUserResp + 30, // 69: OpenIMChat.chat.chat.AddSignalRecord:output_type -> OpenIMChat.chat.AddSignalRecordResp + 32, // 70: OpenIMChat.chat.chat.GetSignalRecords:output_type -> OpenIMChat.chat.GetSignalRecordsResp + 34, // 71: OpenIMChat.chat.chat.OpenIMCallback:output_type -> OpenIMChat.chat.OpenIMCallbackResp + 38, // 72: OpenIMChat.chat.chat.UserLoginCount:output_type -> OpenIMChat.chat.UserLoginCountResp + 41, // 73: OpenIMChat.chat.chat.UploadLogs:output_type -> OpenIMChat.chat.UploadLogsResp + 43, // 74: OpenIMChat.chat.chat.DeleteLogs:output_type -> OpenIMChat.chat.DeleteLogsResp + 45, // 75: OpenIMChat.chat.chat.SearchLogs:output_type -> OpenIMChat.chat.SearchLogsResp + 47, // 76: OpenIMChat.chat.chat.SearchUserInfo:output_type -> OpenIMChat.chat.SearchUserInfoResp + 55, // [55:77] is the sub-list for method output_type + 33, // [33:55] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_chat_chat_proto_init() } @@ -3843,7 +3973,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginReq); i { + switch v := v.(*AddUserAccountReq); i { case 0: return &v.state case 1: @@ -3855,7 +3985,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResp); i { + switch v := v.(*AddUserAccountResp); i { case 0: return &v.state case 1: @@ -3867,7 +3997,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetPasswordReq); i { + switch v := v.(*LoginReq); i { case 0: return &v.state case 1: @@ -3879,7 +4009,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetPasswordResp); i { + switch v := v.(*LoginResp); i { case 0: return &v.state case 1: @@ -3891,7 +4021,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordReq); i { + switch v := v.(*ResetPasswordReq); i { case 0: return &v.state case 1: @@ -3903,7 +4033,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePasswordResp); i { + switch v := v.(*ResetPasswordResp); i { case 0: return &v.state case 1: @@ -3915,7 +4045,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindUserAccountReq); i { + switch v := v.(*ChangePasswordReq); i { case 0: return &v.state case 1: @@ -3927,7 +4057,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindUserAccountResp); i { + switch v := v.(*ChangePasswordResp); i { case 0: return &v.state case 1: @@ -3939,7 +4069,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindAccountUserReq); i { + switch v := v.(*FindUserAccountReq); i { case 0: return &v.state case 1: @@ -3951,7 +4081,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindAccountUserResp); i { + switch v := v.(*FindUserAccountResp); i { case 0: return &v.state case 1: @@ -3963,7 +4093,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignalRecord); i { + switch v := v.(*FindAccountUserReq); i { case 0: return &v.state case 1: @@ -3975,7 +4105,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddSignalRecordReq); i { + switch v := v.(*FindAccountUserResp); i { case 0: return &v.state case 1: @@ -3987,7 +4117,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddSignalRecordResp); i { + switch v := v.(*SignalRecord); i { case 0: return &v.state case 1: @@ -3999,7 +4129,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSignalRecordsReq); i { + switch v := v.(*AddSignalRecordReq); i { case 0: return &v.state case 1: @@ -4011,7 +4141,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSignalRecordsResp); i { + switch v := v.(*AddSignalRecordResp); i { case 0: return &v.state case 1: @@ -4023,7 +4153,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OpenIMCallbackReq); i { + switch v := v.(*GetSignalRecordsReq); i { case 0: return &v.state case 1: @@ -4035,7 +4165,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OpenIMCallbackResp); i { + switch v := v.(*GetSignalRecordsResp); i { case 0: return &v.state case 1: @@ -4047,7 +4177,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchUserFullInfoReq); i { + switch v := v.(*OpenIMCallbackReq); i { case 0: return &v.state case 1: @@ -4059,7 +4189,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchUserFullInfoResp); i { + switch v := v.(*OpenIMCallbackResp); i { case 0: return &v.state case 1: @@ -4071,7 +4201,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserLoginCountReq); i { + switch v := v.(*SearchUserFullInfoReq); i { case 0: return &v.state case 1: @@ -4083,7 +4213,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserLoginCountResp); i { + switch v := v.(*SearchUserFullInfoResp); i { case 0: return &v.state case 1: @@ -4095,7 +4225,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileURL); i { + switch v := v.(*UserLoginCountReq); i { case 0: return &v.state case 1: @@ -4107,7 +4237,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadLogsReq); i { + switch v := v.(*UserLoginCountResp); i { case 0: return &v.state case 1: @@ -4119,7 +4249,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadLogsResp); i { + switch v := v.(*FileURL); i { case 0: return &v.state case 1: @@ -4131,7 +4261,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteLogsReq); i { + switch v := v.(*UploadLogsReq); i { case 0: return &v.state case 1: @@ -4143,7 +4273,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteLogsResp); i { + switch v := v.(*UploadLogsResp); i { case 0: return &v.state case 1: @@ -4155,7 +4285,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchLogsReq); i { + switch v := v.(*DeleteLogsReq); i { case 0: return &v.state case 1: @@ -4167,7 +4297,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchLogsResp); i { + switch v := v.(*DeleteLogsResp); i { case 0: return &v.state case 1: @@ -4179,7 +4309,7 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchUserInfoReq); i { + switch v := v.(*SearchLogsReq); i { case 0: return &v.state case 1: @@ -4191,6 +4321,30 @@ func file_chat_chat_proto_init() { } } file_chat_chat_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchLogsResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchUserInfoReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserInfoResp); i { case 0: return &v.state @@ -4209,7 +4363,7 @@ func file_chat_chat_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chat_chat_proto_rawDesc, NumEnums: 0, - NumMessages: 49, + NumMessages: 51, NumExtensions: 0, NumServices: 1, }, @@ -4237,6 +4391,7 @@ const _ = grpc.SupportPackageIsVersion6 type ChatClient interface { // 编辑个人资料 自己或者管理员调用 UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*UpdateUserInfoResp, error) + AddUserAccount(ctx context.Context, in *AddUserAccountReq, opts ...grpc.CallOption) (*AddUserAccountResp, error) // 获取用户的公开信息 陌生人调用 SearchUserPublicInfo(ctx context.Context, in *SearchUserPublicInfoReq, opts ...grpc.CallOption) (*SearchUserPublicInfoResp, error) FindUserPublicInfo(ctx context.Context, in *FindUserPublicInfoReq, opts ...grpc.CallOption) (*FindUserPublicInfoResp, error) @@ -4280,6 +4435,15 @@ func (c *chatClient) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, return out, nil } +func (c *chatClient) AddUserAccount(ctx context.Context, in *AddUserAccountReq, opts ...grpc.CallOption) (*AddUserAccountResp, error) { + out := new(AddUserAccountResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.chat.chat/AddUserAccount", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *chatClient) SearchUserPublicInfo(ctx context.Context, in *SearchUserPublicInfoReq, opts ...grpc.CallOption) (*SearchUserPublicInfoResp, error) { out := new(SearchUserPublicInfoResp) err := c.cc.Invoke(ctx, "/OpenIMChat.chat.chat/SearchUserPublicInfo", in, out, opts...) @@ -4464,6 +4628,7 @@ func (c *chatClient) SearchUserInfo(ctx context.Context, in *SearchUserInfoReq, type ChatServer interface { // 编辑个人资料 自己或者管理员调用 UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*UpdateUserInfoResp, error) + AddUserAccount(context.Context, *AddUserAccountReq) (*AddUserAccountResp, error) // 获取用户的公开信息 陌生人调用 SearchUserPublicInfo(context.Context, *SearchUserPublicInfoReq) (*SearchUserPublicInfoResp, error) FindUserPublicInfo(context.Context, *FindUserPublicInfoReq) (*FindUserPublicInfoResp, error) @@ -4497,6 +4662,9 @@ type UnimplementedChatServer struct { func (*UnimplementedChatServer) UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*UpdateUserInfoResp, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateUserInfo not implemented") } +func (*UnimplementedChatServer) AddUserAccount(context.Context, *AddUserAccountReq) (*AddUserAccountResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddUserAccount not implemented") +} func (*UnimplementedChatServer) SearchUserPublicInfo(context.Context, *SearchUserPublicInfoReq) (*SearchUserPublicInfoResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SearchUserPublicInfo not implemented") } @@ -4580,6 +4748,24 @@ func _Chat_UpdateUserInfo_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Chat_AddUserAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddUserAccountReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChatServer).AddUserAccount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.chat.chat/AddUserAccount", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChatServer).AddUserAccount(ctx, req.(*AddUserAccountReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Chat_SearchUserPublicInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SearchUserPublicInfoReq) if err := dec(in); err != nil { @@ -4948,6 +5134,10 @@ var _Chat_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateUserInfo", Handler: _Chat_UpdateUserInfo_Handler, }, + { + MethodName: "AddUserAccount", + Handler: _Chat_AddUserAccount_Handler, + }, { MethodName: "SearchUserPublicInfo", Handler: _Chat_SearchUserPublicInfo_Handler, diff --git a/pkg/proto/chat/chat.proto b/pkg/proto/chat/chat.proto index bc092cbe9..6127defc0 100644 --- a/pkg/proto/chat/chat.proto +++ b/pkg/proto/chat/chat.proto @@ -130,6 +130,16 @@ message RegisterUserResp { string chatToken = 3; } +message AddUserAccountReq{ + string ip=1; + string deviceID=2; + int32 platform=3; + RegisterUserInfo user=4; +} + +message AddUserAccountResp{ +} + message LoginReq { string areaCode = 1; string phoneNumber = 2; @@ -304,6 +314,7 @@ message SearchUserInfoResp { service chat { //编辑个人资料 自己或者管理员调用 rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp); + rpc AddUserAccount(AddUserAccountReq) returns(AddUserAccountResp); //获取用户的公开信息 陌生人调用 rpc SearchUserPublicInfo(SearchUserPublicInfoReq) returns(SearchUserPublicInfoResp); rpc FindUserPublicInfo(FindUserPublicInfoReq) returns(FindUserPublicInfoResp); diff --git a/pkg/rpclient/chat/chat.go b/pkg/rpclient/chat/chat.go index 1e23f5cc0..1091bc87f 100644 --- a/pkg/rpclient/chat/chat.go +++ b/pkg/rpclient/chat/chat.go @@ -110,3 +110,7 @@ func (o *ChatClient) UpdateUser(ctx context.Context, req *chat.UpdateUserInfoReq _, err := o.client.UpdateUserInfo(ctx, req) return err } + +func (o *ChatClient) RegisterUser(ctx context.Context, req *chat.RegisterUserReq) error { + return nil +} From 260101d32354d8fbf9b1555682908149e387e8aa Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Wed, 13 Dec 2023 11:22:09 +0800 Subject: [PATCH 02/11] feat: add some api about admin --- internal/api/router.go | 4 +- internal/rpc/admin/admin.go | 74 +- internal/rpc/chat/user.go | 28 +- pkg/common/constant/constant.go | 1 + pkg/common/db/database/admin.go | 6 +- pkg/common/db/model/admin/admin.go | 17 +- pkg/common/db/table/admin/admin.go | 2 +- pkg/proto/admin/admin.pb.go | 1726 ++++++++++++++-------------- pkg/proto/admin/admin.proto | 1 - pkg/proto/chat/chat.go | 27 +- pkg/proto/chat/chat.pb.go | 292 ++--- 11 files changed, 1120 insertions(+), 1058 deletions(-) diff --git a/internal/api/router.go b/internal/api/router.go index 0ba57bed3..90c88448a 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -78,8 +78,8 @@ func NewAdminRoute(router gin.IRouter, discov discoveryregistry.SvcDiscoveryRegi adminRouterGroup.POST("/change_password", mw.CheckAdmin, admin.ChangeAdminPassword) // 修改管理员账号的密码 adminRouterGroup.POST("/add_admin", mw.CheckAdmin, admin.AddAdminAccount) // 添加管理员账号 adminRouterGroup.POST("/add_user", mw.CheckAdmin, admin.AddUserAccount) // 添加用户账号 - adminRouterGroup.POST("/del_admin", mw.CheckAdmin, admin.DelAdminAccount) - adminRouterGroup.POST("/search", mw.CheckAdmin, admin.SearchAdminAccount) + adminRouterGroup.POST("/del_admin", mw.CheckAdmin, admin.DelAdminAccount) // 删除管理员 + adminRouterGroup.POST("/search", mw.CheckAdmin, admin.SearchAdminAccount) // 获取管理员列表 defaultRouter := router.Group("/default", mw.CheckAdmin) defaultUserRouter := defaultRouter.Group("/user") diff --git a/internal/rpc/admin/admin.go b/internal/rpc/admin/admin.go index e268bf119..6d41a9842 100644 --- a/internal/rpc/admin/admin.go +++ b/internal/rpc/admin/admin.go @@ -18,11 +18,13 @@ import ( "context" "crypto/md5" "encoding/hex" + "fmt" "github.com/OpenIMSDK/chat/pkg/common/db/cache" "github.com/OpenIMSDK/tools/discoveryregistry" "github.com/OpenIMSDK/tools/errs" "github.com/OpenIMSDK/tools/log" "github.com/OpenIMSDK/tools/mcontext" + "github.com/OpenIMSDK/tools/utils" "google.golang.org/grpc" "math/rand" "time" @@ -101,11 +103,15 @@ func (o *adminServer) GetAdminInfo(ctx context.Context, req *admin.GetAdminInfoR } func (o *adminServer) ChangeAdminPassword(ctx context.Context, req *admin.ChangeAdminPasswordReq) (*admin.ChangeAdminPasswordResp, error) { - _, err := o.Database.GetAdmin(ctx, req.UserID) + user, err := o.Database.GetAdminUserID(ctx, req.UserID) if err != nil { return nil, err } + if user.Password != o.passwordEncryption(req.CurrentPassword) { + return nil, errs.ErrInternalServer.Wrap("password error") + } + if err := o.Database.ChangePassword(ctx, req.UserID, o.passwordEncryption(req.NewPassword)); err != nil { return nil, err } @@ -113,21 +119,11 @@ func (o *adminServer) ChangeAdminPassword(ctx context.Context, req *admin.Change } func (o *adminServer) AddAdminAccount(ctx context.Context, req *admin.AddAdminAccountReq) (*admin.AddAdminAccountResp, error) { - userID, err := mctx.CheckAdmin(ctx) - if err != nil { - return nil, err - } - - adminUser, err := o.Database.GetAdminUserID(ctx, userID) - if err != nil { + if err := o.CheckSuperAdmin(ctx); err != nil { return nil, err } - if adminUser.Level != constant.AdvancedUserLevel { - return nil, errs.ErrNoPermission.Wrap() - } - - _, err = o.Database.GetAdmin(ctx, req.Account) + _, err := o.Database.GetAdmin(ctx, req.Account) if err == nil { return nil, errs.ErrRegisteredAlready.Wrap("the account is registered") } @@ -148,6 +144,25 @@ func (o *adminServer) AddAdminAccount(ctx context.Context, req *admin.AddAdminAc } func (o *adminServer) DelAdminAccount(ctx context.Context, req *admin.DelAdminAccountReq) (*admin.DelAdminAccountResp, error) { + if err := o.CheckSuperAdmin(ctx); err != nil { + return nil, err + } + + if utils.Duplicate(req.UserIDs) { + return nil, errs.ErrArgs.Wrap("user ids is duplicate") + } + + for _, userID := range req.UserIDs { + superAdmin, err := o.Database.GetAdminUserID(ctx, userID) + if err != nil { + return nil, err + } + if superAdmin.Level == constant.AdvancedUserLevel { + str := fmt.Sprintf("%s is superAdminID", userID) + return nil, errs.ErrNoPermission.Wrap(str) + } + } + if err := o.Database.DelAdminAccount(ctx, req.UserIDs); err != nil { return nil, err } @@ -156,20 +171,19 @@ func (o *adminServer) DelAdminAccount(ctx context.Context, req *admin.DelAdminAc func (o *adminServer) SearchAdminAccount(ctx context.Context, req *admin.SearchAdminAccountReq) (*admin.SearchAdminAccountResp, error) { defer log.ZDebug(ctx, "return") - if _, err := mctx.CheckAdmin(ctx); err != nil { + + if err := o.CheckSuperAdmin(ctx); err != nil { return nil, err } - var resp *admin.SearchAdminAccountResp - total, adminAccounts, err := o.Database.SearchAdminAccount(ctx, req.Keyword, req.Pagination.ShowNumber, req.Pagination.PageNumber) + + total, adminAccounts, err := o.Database.SearchAdminAccount(ctx, req.Pagination.PageNumber, req.Pagination.ShowNumber) if err != nil { return nil, err } - resp.Total = total - accounts := make([]*admin.GetAdminInfoResp, len(adminAccounts)) + accounts := make([]*admin.GetAdminInfoResp, 0, len(adminAccounts)) for _, v := range adminAccounts { temp := &admin.GetAdminInfoResp{ Account: v.Account, - Password: v.Password, FaceURL: v.FaceURL, Nickname: v.Nickname, UserID: v.UserID, @@ -178,8 +192,7 @@ func (o *adminServer) SearchAdminAccount(ctx context.Context, req *admin.SearchA } accounts = append(accounts, temp) } - resp.AdminAccounts = accounts - return resp, nil + return &admin.SearchAdminAccountResp{Total: total, AdminAccounts: accounts}, nil } func (o *adminServer) AdminUpdateInfo(ctx context.Context, req *admin.AdminUpdateInfoReq) (*admin.AdminUpdateInfoResp, error) { @@ -220,7 +233,7 @@ func (o *adminServer) Login(ctx context.Context, req *admin.LoginReq) (*admin.Lo } return nil, err } - if a.Password != req.Password { + if a.Password != o.passwordEncryption(req.Password) { return nil, eerrs.ErrPassword.Wrap() } adminToken, err := o.CreateToken(ctx, &admin.CreateTokenReq{UserID: a.UserID, UserType: constant.AdminUser}) @@ -275,3 +288,20 @@ func (o *adminServer) passwordEncryption(password string) string { paswd := md5.Sum([]byte(password)) return hex.EncodeToString(paswd[:]) } + +func (o *adminServer) CheckSuperAdmin(ctx context.Context) error { + userID, err := mctx.CheckAdmin(ctx) + if err != nil { + return err + } + + adminUser, err := o.Database.GetAdminUserID(ctx, userID) + if err != nil { + return err + } + + if adminUser.Level != constant.AdvancedUserLevel { + return errs.ErrNoPermission.Wrap() + } + return nil +} diff --git a/internal/rpc/chat/user.go b/internal/rpc/chat/user.go index c13351c8c..11d8ac94d 100644 --- a/internal/rpc/chat/user.go +++ b/internal/rpc/chat/user.go @@ -16,6 +16,7 @@ package chat import ( "context" + "github.com/OpenIMSDK/chat/pkg/common/db/dbutil" chat2 "github.com/OpenIMSDK/chat/pkg/common/db/table/chat" constant2 "github.com/OpenIMSDK/protocol/constant" "github.com/OpenIMSDK/tools/mcontext" @@ -141,15 +142,6 @@ func (o *chatSvr) AddUserAccount(ctx context.Context, req *chat.AddUserAccountRe } } - if req.User.Account != "" { - _, err := o.Database.TakeAttributeByAccount(ctx, req.User.Account) - if err == nil { - return nil, eerrs.ErrAccountAlreadyRegister.Wrap() - } else if !o.Database.IsNotFound(err) { - return nil, err - } - } - if req.User.Email != "" { _, err := o.Database.TakeAttributeByEmail(ctx, req.User.Email) if err == nil { @@ -159,6 +151,24 @@ func (o *chatSvr) AddUserAccount(ctx context.Context, req *chat.AddUserAccountRe } } + if req.User.UserID == "" { + for i := 0; i < 20; i++ { + userID := o.genUserID() + _, err := o.Database.GetUser(ctx, userID) + if err == nil { + continue + } else if dbutil.IsGormNotFound(err) { + req.User.UserID = userID + break + } else { + return nil, err + } + } + if req.User.UserID == "" { + return nil, errs.ErrInternalServer.Wrap("gen user id failed") + } + } + register := &chat2.Register{ UserID: req.User.UserID, DeviceID: req.DeviceID, diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 5468507b2..efdc52818 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -58,6 +58,7 @@ const ( // user level. const ( OrdinaryUserLevel = 1 + NormalAdmin = 80 AdvancedUserLevel = 100 ) diff --git a/pkg/common/db/database/admin.go b/pkg/common/db/database/admin.go index 9de3606d7..4c5d7f83e 100644 --- a/pkg/common/db/database/admin.go +++ b/pkg/common/db/database/admin.go @@ -36,7 +36,7 @@ type AdminDatabaseInterface interface { ChangePassword(ctx context.Context, userID string, newPassword string) error AddAdminAccount(ctx context.Context, admin *table.Admin) error DelAdminAccount(ctx context.Context, userIDs []string) error - SearchAdminAccount(ctx context.Context, keyword string, page, size int32) (uint32, []*table.Admin, error) + SearchAdminAccount(ctx context.Context, page, size int32) (uint32, []*table.Admin, error) CreateApplet(ctx context.Context, applets ...*table.Applet) error DelApplet(ctx context.Context, appletIDs []string) error GetApplet(ctx context.Context, appletID string) (*table.Applet, error) @@ -136,8 +136,8 @@ func (o *AdminDatabase) DelAdminAccount(ctx context.Context, userIDs []string) e return o.admin.Delete(ctx, userIDs) } -func (o *AdminDatabase) SearchAdminAccount(ctx context.Context, keyword string, page, size int32) (uint32, []*table.Admin, error) { - return o.admin.Search(ctx, keyword, page, size) +func (o *AdminDatabase) SearchAdminAccount(ctx context.Context, page, size int32) (uint32, []*table.Admin, error) { + return o.admin.Search(ctx, page, size) } func (o *AdminDatabase) CreateApplet(ctx context.Context, applets ...*table.Applet) error { diff --git a/pkg/common/db/model/admin/admin.go b/pkg/common/db/model/admin/admin.go index 4a1ed82f2..03d7dd152 100644 --- a/pkg/common/db/model/admin/admin.go +++ b/pkg/common/db/model/admin/admin.go @@ -18,7 +18,7 @@ import ( "context" "crypto/md5" "encoding/hex" - "github.com/OpenIMSDK/tools/ormutil" + "github.com/OpenIMSDK/chat/pkg/common/constant" "time" "github.com/OpenIMSDK/tools/log" @@ -58,15 +58,24 @@ func (o *Admin) Create(ctx context.Context, admin *admin.Admin) error { } func (o *Admin) ChangePassword(ctx context.Context, userID string, newPassword string) error { - return errs.Wrap(o.db.WithContext(ctx).Model(&admin.Admin{}).Where("account=?", userID).Update("password", newPassword).Error) + return errs.Wrap(o.db.WithContext(ctx).Model(&admin.Admin{}).Where("user_id=?", userID).Update("password", newPassword).Error) } func (o *Admin) Delete(ctx context.Context, userIDs []string) error { return errs.Wrap(o.db.WithContext(ctx).Where("user_id in ?", userIDs).Delete(&admin.Admin{}).Error) } -func (o *Admin) Search(ctx context.Context, keyword string, page, size int32) (uint32, []*admin.Admin, error) { - return ormutil.GormSearch[admin.Admin](o.db.WithContext(ctx), []string{}, keyword, page, size) +func (o *Admin) Search(ctx context.Context, page, size int32) (uint32, []*admin.Admin, error) { + var count int64 + var admins []*admin.Admin + if err := o.db.WithContext(ctx).Model(&admin.Admin{}).Where("level=?", constant.NormalAdmin).Count(&count).Error; err != nil { + return 0, nil, errs.Wrap(err) + } + offset := (page - 1) * size + if err := o.db.WithContext(ctx).Order("create_time desc").Offset(int(offset)).Where("level=?", constant.NormalAdmin).Limit(int(size)).Find(&admins).Error; err != nil { + return 0, nil, errs.Wrap(err) + } + return uint32(count), admins, nil } func (o *Admin) InitAdmin(ctx context.Context) error { diff --git a/pkg/common/db/table/admin/admin.go b/pkg/common/db/table/admin/admin.go index a45af67b1..2d4b07fb9 100644 --- a/pkg/common/db/table/admin/admin.go +++ b/pkg/common/db/table/admin/admin.go @@ -41,6 +41,6 @@ type AdminInterface interface { Update(ctx context.Context, account string, update map[string]any) error ChangePassword(ctx context.Context, userID string, newPassword string) error Delete(ctx context.Context, userIDs []string) error - Search(ctx context.Context, key string, page, size int32) (uint32, []*Admin, error) + Search(ctx context.Context, page, size int32) (uint32, []*Admin, error) InitAdmin(ctx context.Context) error } diff --git a/pkg/proto/admin/admin.pb.go b/pkg/proto/admin/admin.pb.go index b8178cfd7..7be60d837 100644 --- a/pkg/proto/admin/admin.pb.go +++ b/pkg/proto/admin/admin.pb.go @@ -47,8 +47,8 @@ type LoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` } func (x *LoginReq) Reset() { @@ -102,12 +102,12 @@ type LoginResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AdminAccount string `protobuf:"bytes,1,opt,name=adminAccount,proto3" json:"adminAccount,omitempty"` - AdminToken string `protobuf:"bytes,2,opt,name=adminToken,proto3" json:"adminToken,omitempty"` - Nickname string `protobuf:"bytes,3,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level,omitempty"` - AdminUserID string `protobuf:"bytes,6,opt,name=adminUserID,proto3" json:"adminUserID,omitempty"` + AdminAccount string `protobuf:"bytes,1,opt,name=adminAccount,proto3" json:"adminAccount"` + AdminToken string `protobuf:"bytes,2,opt,name=adminToken,proto3" json:"adminToken"` + Nickname string `protobuf:"bytes,3,opt,name=nickname,proto3" json:"nickname"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL"` + Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level"` + AdminUserID string `protobuf:"bytes,6,opt,name=adminUserID,proto3" json:"adminUserID"` } func (x *LoginResp) Reset() { @@ -189,10 +189,10 @@ type AddAdminAccountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname"` } func (x *AddAdminAccountReq) Reset() { @@ -298,11 +298,11 @@ type AdminUpdateInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - Password *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - FaceURL *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Nickname *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - Level *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=level,proto3" json:"level,omitempty"` + Account *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` + Password *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` + FaceURL *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` + Nickname *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname"` + Level *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=level,proto3" json:"level"` } func (x *AdminUpdateInfoReq) Reset() { @@ -377,9 +377,9 @@ type AdminUpdateInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` } func (x *AdminUpdateInfoResp) Reset() { @@ -440,7 +440,7 @@ type ChangePasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password"` } func (x *ChangePasswordReq) Reset() { @@ -563,9 +563,9 @@ type ChangeAdminPasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword,omitempty"` - NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword"` + NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword"` } func (x *ChangeAdminPasswordReq) Reset() { @@ -664,7 +664,7 @@ type DelAdminAccountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *DelAdminAccountReq) Reset() { @@ -749,8 +749,7 @@ type SearchAdminAccountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchAdminAccountReq) Reset() { @@ -785,13 +784,6 @@ func (*SearchAdminAccountReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{13} } -func (x *SearchAdminAccountReq) GetKeyword() string { - if x != nil { - return x.Keyword - } - return "" -} - func (x *SearchAdminAccountReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination @@ -804,8 +796,8 @@ type SearchAdminAccountResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - AdminAccounts []*GetAdminInfoResp `protobuf:"bytes,2,rep,name=adminAccounts,proto3" json:"adminAccounts,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + AdminAccounts []*GetAdminInfoResp `protobuf:"bytes,2,rep,name=adminAccounts,proto3" json:"adminAccounts"` } func (x *SearchAdminAccountResp) Reset() { @@ -859,13 +851,13 @@ type GetAdminInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` - FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname,omitempty"` - UserID string `protobuf:"bytes,6,opt,name=userID,proto3" json:"userID,omitempty"` - Level int32 `protobuf:"varint,7,opt,name=level,proto3" json:"level,omitempty"` - CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime,omitempty"` + Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL"` + Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname"` + UserID string `protobuf:"bytes,6,opt,name=userID,proto3" json:"userID"` + Level int32 `protobuf:"varint,7,opt,name=level,proto3" json:"level"` + CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime"` } func (x *GetAdminInfoResp) Reset() { @@ -954,7 +946,7 @@ type AddDefaultFriendReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *AddDefaultFriendReq) Reset() { @@ -1039,7 +1031,7 @@ type DelDefaultFriendReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *DelDefaultFriendReq) Reset() { @@ -1162,7 +1154,7 @@ type FindDefaultFriendResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindDefaultFriendResp) Reset() { @@ -1209,8 +1201,8 @@ type SearchDefaultFriendReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchDefaultFriendReq) Reset() { @@ -1264,9 +1256,9 @@ type DefaultFriendAttribute struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` - User *common.UserPublicInfo `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` + User *common.UserPublicInfo `protobuf:"bytes,3,opt,name=user,proto3" json:"user"` } func (x *DefaultFriendAttribute) Reset() { @@ -1327,8 +1319,8 @@ type SearchDefaultFriendResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Users []*DefaultFriendAttribute `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Users []*DefaultFriendAttribute `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchDefaultFriendResp) Reset() { @@ -1382,7 +1374,7 @@ type AddDefaultGroupReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` + GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *AddDefaultGroupReq) Reset() { @@ -1467,7 +1459,7 @@ type DelDefaultGroupReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` + GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *DelDefaultGroupReq) Reset() { @@ -1590,7 +1582,7 @@ type FindDefaultGroupResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` + GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *FindDefaultGroupResp) Reset() { @@ -1637,8 +1629,8 @@ type SearchDefaultGroupReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchDefaultGroupReq) Reset() { @@ -1692,9 +1684,9 @@ type GroupAttribute struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID,omitempty"` - CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` - Group *sdkws.GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID"` + CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` + Group *sdkws.GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group"` } func (x *GroupAttribute) Reset() { @@ -1755,8 +1747,8 @@ type SearchDefaultGroupResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - GroupIDs []string `protobuf:"bytes,2,rep,name=groupIDs,proto3" json:"groupIDs,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + GroupIDs []string `protobuf:"bytes,2,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *SearchDefaultGroupResp) Reset() { @@ -1810,7 +1802,7 @@ type AddInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` + Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *AddInvitationCodeReq) Reset() { @@ -1895,9 +1887,9 @@ type GenInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Len int32 `protobuf:"varint,1,opt,name=len,proto3" json:"len,omitempty"` - Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` - Chars string `protobuf:"bytes,3,opt,name=chars,proto3" json:"chars,omitempty"` + Len int32 `protobuf:"varint,1,opt,name=len,proto3" json:"len"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` + Chars string `protobuf:"bytes,3,opt,name=chars,proto3" json:"chars"` } func (x *GenInvitationCodeReq) Reset() { @@ -1996,7 +1988,7 @@ type FindInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` + Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *FindInvitationCodeReq) Reset() { @@ -2043,7 +2035,7 @@ type FindInvitationCodeResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []*InvitationRegister `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` + Codes []*InvitationRegister `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *FindInvitationCodeResp) Reset() { @@ -2090,8 +2082,8 @@ type UseInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` } func (x *UseInvitationCodeReq) Reset() { @@ -2183,7 +2175,7 @@ type DelInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes,omitempty"` + Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *DelInvitationCodeReq) Reset() { @@ -2268,10 +2260,10 @@ type InvitationRegister struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` - CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime,omitempty"` - UsedUserID string `protobuf:"bytes,3,opt,name=usedUserID,proto3" json:"usedUserID,omitempty"` - UsedUser *common.UserPublicInfo `protobuf:"bytes,4,opt,name=usedUser,proto3" json:"usedUser,omitempty"` + InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode"` + CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` + UsedUserID string `protobuf:"bytes,3,opt,name=usedUserID,proto3" json:"usedUserID"` + UsedUser *common.UserPublicInfo `protobuf:"bytes,4,opt,name=usedUser,proto3" json:"usedUser"` } func (x *InvitationRegister) Reset() { @@ -2339,11 +2331,11 @@ type SearchInvitationCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` - UserIDs []string `protobuf:"bytes,2,rep,name=userIDs,proto3" json:"userIDs,omitempty"` - Codes []string `protobuf:"bytes,3,rep,name=codes,proto3" json:"codes,omitempty"` - Keyword string `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination,omitempty"` + Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status"` + UserIDs []string `protobuf:"bytes,2,rep,name=userIDs,proto3" json:"userIDs"` + Codes []string `protobuf:"bytes,3,rep,name=codes,proto3" json:"codes"` + Keyword string `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchInvitationCodeReq) Reset() { @@ -2418,8 +2410,8 @@ type SearchInvitationCodeResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - List []*InvitationRegister `protobuf:"bytes,2,rep,name=list,proto3" json:"list,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + List []*InvitationRegister `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` } func (x *SearchInvitationCodeResp) Reset() { @@ -2473,8 +2465,8 @@ type SearchUserIPLimitLoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchUserIPLimitLoginReq) Reset() { @@ -2528,10 +2520,10 @@ type LimitUserLoginIP struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` - CreateTime int64 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime,omitempty"` - User *common.UserPublicInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` + CreateTime int64 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime"` + User *common.UserPublicInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user"` } func (x *LimitUserLoginIP) Reset() { @@ -2599,8 +2591,8 @@ type SearchUserIPLimitLoginResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Limits []*LimitUserLoginIP `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Limits []*LimitUserLoginIP `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits"` } func (x *SearchUserIPLimitLoginResp) Reset() { @@ -2654,8 +2646,8 @@ type UserIPLimitLogin struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` } func (x *UserIPLimitLogin) Reset() { @@ -2709,7 +2701,7 @@ type AddUserIPLimitLoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits,omitempty"` + Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits"` } func (x *AddUserIPLimitLoginReq) Reset() { @@ -2794,7 +2786,7 @@ type DelUserIPLimitLoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits,omitempty"` + Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits"` } func (x *DelUserIPLimitLoginReq) Reset() { @@ -2879,10 +2871,10 @@ type IPForbidden struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister,omitempty"` - LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin,omitempty"` - CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime,omitempty"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` + LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister"` + LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin"` + CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime"` } func (x *IPForbidden) Reset() { @@ -2950,9 +2942,9 @@ type IPForbiddenAdd struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister,omitempty"` - LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin,omitempty"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` + LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister"` + LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin"` } func (x *IPForbiddenAdd) Reset() { @@ -3013,9 +3005,9 @@ type SearchIPForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchIPForbiddenReq) Reset() { @@ -3076,8 +3068,8 @@ type SearchIPForbiddenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Forbiddens []*IPForbidden `protobuf:"bytes,2,rep,name=forbiddens,proto3" json:"forbiddens,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Forbiddens []*IPForbidden `protobuf:"bytes,2,rep,name=forbiddens,proto3" json:"forbiddens"` } func (x *SearchIPForbiddenResp) Reset() { @@ -3131,7 +3123,7 @@ type AddIPForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Forbiddens []*IPForbiddenAdd `protobuf:"bytes,1,rep,name=forbiddens,proto3" json:"forbiddens,omitempty"` + Forbiddens []*IPForbiddenAdd `protobuf:"bytes,1,rep,name=forbiddens,proto3" json:"forbiddens"` } func (x *AddIPForbiddenReq) Reset() { @@ -3216,7 +3208,7 @@ type DelIPForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ips []string `protobuf:"bytes,1,rep,name=ips,proto3" json:"ips,omitempty"` + Ips []string `protobuf:"bytes,1,rep,name=ips,proto3" json:"ips"` } func (x *DelIPForbiddenReq) Reset() { @@ -3302,7 +3294,7 @@ type CheckRegisterForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` } func (x *CheckRegisterForbiddenReq) Reset() { @@ -3387,8 +3379,8 @@ type CheckLoginForbiddenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` } func (x *CheckLoginForbiddenReq) Reset() { @@ -3481,8 +3473,8 @@ type CancellationUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` } func (x *CancellationUserReq) Reset() { @@ -3575,8 +3567,8 @@ type BlockUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` } func (x *BlockUserReq) Reset() { @@ -3668,7 +3660,7 @@ type UnblockUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *UnblockUserReq) Reset() { @@ -3753,8 +3745,8 @@ type SearchBlockUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchBlockUserReq) Reset() { @@ -3808,17 +3800,17 @@ type BlockUserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` - PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - AreaCode string `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Gender int32 `protobuf:"varint,8,opt,name=gender,proto3" json:"gender,omitempty"` - Reason string `protobuf:"bytes,9,opt,name=reason,proto3" json:"reason,omitempty"` - OpUserID string `protobuf:"bytes,10,opt,name=opUserID,proto3" json:"opUserID,omitempty"` - CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` + PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` + AreaCode string `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` + Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname"` + FaceURL string `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL"` + Gender int32 `protobuf:"varint,8,opt,name=gender,proto3" json:"gender"` + Reason string `protobuf:"bytes,9,opt,name=reason,proto3" json:"reason"` + OpUserID string `protobuf:"bytes,10,opt,name=opUserID,proto3" json:"opUserID"` + CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` } func (x *BlockUserInfo) Reset() { @@ -3935,8 +3927,8 @@ type SearchBlockUserResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Users []*BlockUserInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Users []*BlockUserInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchBlockUserResp) Reset() { @@ -3990,7 +3982,7 @@ type FindUserBlockInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserBlockInfoReq) Reset() { @@ -4037,10 +4029,10 @@ type BlockInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID,proto3" json:"opUserID,omitempty"` - CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID,proto3" json:"opUserID"` + CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime"` } func (x *BlockInfo) Reset() { @@ -4108,7 +4100,7 @@ type FindUserBlockInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Blocks []*BlockInfo `protobuf:"bytes,2,rep,name=blocks,proto3" json:"blocks,omitempty"` + Blocks []*BlockInfo `protobuf:"bytes,2,rep,name=blocks,proto3" json:"blocks"` } func (x *FindUserBlockInfoResp) Reset() { @@ -4155,8 +4147,8 @@ type CreateTokenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` - UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` + UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType"` } func (x *CreateTokenReq) Reset() { @@ -4210,7 +4202,7 @@ type CreateTokenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token"` } func (x *CreateTokenResp) Reset() { @@ -4257,7 +4249,7 @@ type ParseTokenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token"` } func (x *ParseTokenReq) Reset() { @@ -4304,9 +4296,9 @@ type ParseTokenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID,omitempty"` - UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType,omitempty"` - ExpireTimeSeconds int64 `protobuf:"varint,4,opt,name=expireTimeSeconds,proto3" json:"expireTimeSeconds,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` + UserType int32 `protobuf:"varint,3,opt,name=userType,proto3" json:"userType"` + ExpireTimeSeconds int64 `protobuf:"varint,4,opt,name=expireTimeSeconds,proto3" json:"expireTimeSeconds"` } func (x *ParseTokenResp) Reset() { @@ -4367,17 +4359,17 @@ type AddAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AppID string `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID,omitempty"` - Icon string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` - Md5 string `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5,omitempty"` - Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` - Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - Priority uint32 `protobuf:"varint,9,opt,name=priority,proto3" json:"priority,omitempty"` - Status uint32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` - CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` + AppID string `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID"` + Icon string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url"` + Md5 string `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5"` + Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size"` + Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version"` + Priority uint32 `protobuf:"varint,9,opt,name=priority,proto3" json:"priority"` + Status uint32 `protobuf:"varint,10,opt,name=status,proto3" json:"status"` + CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` } func (x *AddAppletReq) Reset() { @@ -4532,7 +4524,7 @@ type DelAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppletIds []string `protobuf:"bytes,1,rep,name=appletIds,proto3" json:"appletIds,omitempty"` + AppletIds []string `protobuf:"bytes,1,rep,name=appletIds,proto3" json:"appletIds"` } func (x *DelAppletReq) Reset() { @@ -4617,17 +4609,17 @@ type UpdateAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - AppID *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID,omitempty"` - Icon *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - Url *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` - Md5 *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5,omitempty"` - Size *wrapperspb.Int64Value `protobuf:"bytes,7,opt,name=size,proto3" json:"size,omitempty"` - Version *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - Priority *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=priority,proto3" json:"priority,omitempty"` - Status *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` - CreateTime *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=createTime,proto3" json:"createTime,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` + AppID *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID"` + Icon *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon"` + Url *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=url,proto3" json:"url"` + Md5 *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5"` + Size *wrapperspb.Int64Value `protobuf:"bytes,7,opt,name=size,proto3" json:"size"` + Version *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=version,proto3" json:"version"` + Priority *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=priority,proto3" json:"priority"` + Status *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=status,proto3" json:"status"` + CreateTime *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=createTime,proto3" json:"createTime"` } func (x *UpdateAppletReq) Reset() { @@ -4820,7 +4812,7 @@ type FindAppletResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Applets []*common.AppletInfo `protobuf:"bytes,1,rep,name=applets,proto3" json:"applets,omitempty"` + Applets []*common.AppletInfo `protobuf:"bytes,1,rep,name=applets,proto3" json:"applets"` } func (x *FindAppletResp) Reset() { @@ -4867,8 +4859,8 @@ type SearchAppletReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchAppletReq) Reset() { @@ -4922,8 +4914,8 @@ type SearchAppletResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Applets []*common.AppletInfo `protobuf:"bytes,2,rep,name=applets,proto3" json:"applets,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Applets []*common.AppletInfo `protobuf:"bytes,2,rep,name=applets,proto3" json:"applets"` } func (x *SearchAppletResp) Reset() { @@ -4977,7 +4969,7 @@ type SetClientConfigReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SetClientConfigReq) Reset() { @@ -5062,7 +5054,7 @@ type DelClientConfigReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys"` } func (x *DelClientConfigReq) Reset() { @@ -5185,7 +5177,7 @@ type GetClientConfigResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetClientConfigResp) Reset() { @@ -5232,7 +5224,7 @@ type GetUserTokenReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` } func (x *GetUserTokenReq) Reset() { @@ -5279,7 +5271,7 @@ type GetUserTokenResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TokensMap map[string]int32 `protobuf:"bytes,1,rep,name=tokensMap,proto3" json:"tokensMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + TokensMap map[string]int32 `protobuf:"bytes,1,rep,name=tokensMap,proto3" json:"tokensMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *GetUserTokenResp) Reset() { @@ -5402,743 +5394,741 @@ var file_admin_admin_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x78, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5e, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, - 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0d, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xcc, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, - 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, - 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x41, - 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, - 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x16, 0x0a, - 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x79, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, + 0x71, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x13, 0x44, 0x65, + 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x16, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x15, 0x46, + 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x79, + 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x22, 0x6f, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3e, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, + 0x12, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, + 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x15, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, + 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, + 0x73, 0x22, 0x78, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, + 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x0e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x4a, 0x0a, 0x16, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x2c, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x50, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x68, 0x61, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x72, + 0x73, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x0a, 0x15, 0x46, 0x69, + 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x16, 0x46, 0x69, 0x6e, + 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, + 0x42, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, + 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x22, 0xbb, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6f, 0x0a, - 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3e, - 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, - 0x0a, 0x12, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, - 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, - 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x15, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x78, 0x0a, 0x15, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x0e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x33, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x4a, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x44, 0x73, 0x22, 0x2c, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, - 0x22, 0x17, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x6e, + 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6c, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x47, - 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, - 0x64, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, - 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x73, 0x65, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x17, 0x0a, - 0x15, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, - 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbb, 0x01, - 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x17, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x22, 0x7c, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x6a, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x7c, 0x0a, 0x19, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, + 0x22, 0x91, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x49, 0x50, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x22, 0x6e, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x52, 0x06, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, + 0x22, 0x54, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x54, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, + 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x49, 0x50, 0x46, 0x6f, + 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, + 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6e, - 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x3a, - 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x54, 0x0a, 0x16, 0x41, 0x64, - 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x22, 0x19, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x0a, 0x16, 0x44, - 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3a, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x83, 0x01, 0x0a, - 0x0b, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, - 0x6e, 0x41, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x15, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x66, - 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x0a, - 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x22, 0x55, 0x0a, 0x11, 0x41, 0x64, - 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, - 0x40, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x73, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, 0x50, - 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, - 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x22, 0x14, - 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x40, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, - 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, - 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x0a, 0x13, - 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x0a, 0x0c, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x0e, - 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, - 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x6e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x0a, 0x12, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xb7, 0x02, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, - 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, - 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, - 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x13, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x22, 0x30, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x44, 0x73, 0x22, 0x77, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x15, 0x46, - 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x44, 0x0a, 0x0e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x27, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x25, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x72, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, + 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x3d, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, + 0x22, 0x55, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x0a, 0x66, 0x6f, 0x72, + 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x49, 0x50, + 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, + 0x11, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x03, 0x69, 0x70, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, + 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x19, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x45, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x3e, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x0e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x11, + 0x0a, 0x0f, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x75, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x02, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, + 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, + 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, + 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, + 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x77, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0x4c, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, + 0x44, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x22, 0x82, 0x02, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, - 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x12, - 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, - 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, - 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, - 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x70, 0x70, - 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, - 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x41, 0x70, - 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xeb, 0x04, 0x0a, 0x0f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x36, - 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x03, - 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x25, + 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x82, 0x02, 0x0a, 0x0c, 0x41, 0x64, + 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, + 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0f, + 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x2c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x0f, 0x0a, + 0x0d, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xeb, + 0x04, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, - 0x64, 0x35, 0x12, 0x35, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x49, 0x44, 0x12, 0x36, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0f, 0x0a, 0x0d, 0x46, 0x69, - 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x22, 0x49, 0x0a, 0x0e, 0x46, - 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, - 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, - 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x10, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x99, 0x01, - 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, - 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x28, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, - 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x49, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, - 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x32, 0xd6, 0x22, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x40, - 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x5b, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, - 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x35, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, + 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x3c, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, + 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x0f, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x22, 0x49, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x72, 0x0a, 0x0f, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, + 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, + 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x61, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x61, 0x70, + 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, + 0x65, 0x74, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, + 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, + 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, + 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x9b, 0x01, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x09, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xd6, 0x22, 0x0a, 0x05, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, + 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, + 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, + 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, - 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, + 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x4f, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, + 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, - 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, + 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, - 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x61, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, + 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, - 0x11, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, - 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x67, 0x0a, 0x12, 0x46, 0x69, 0x6e, - 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, + 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x47, 0x65, 0x6e, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x67, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x28, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6d, - 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, - 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, + 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, + 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x6d, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, + 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, - 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, + 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, - 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, - 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, - 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x5b, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, - 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, - 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, - 0x0e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, - 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, - 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x10, 0x43, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x25, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, - 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x55, - 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x5e, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x64, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, + 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, + 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, + 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, + 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x61, 0x0a, 0x10, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, - 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, - 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, - 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, + 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x25, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x16, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x6a, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, + 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, - 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, + 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0a, 0x50, 0x61, - 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, - 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x41, - 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, - 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, - 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x44, 0x65, 0x6c, - 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, - 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x4f, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x4f, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, + 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x4c, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, + 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x4c, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, + 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x55, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, - 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, - 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, + 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, + 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, + 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, - 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, + 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, - 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x0f, + 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x2b, 0x5a, - 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, + 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/proto/admin/admin.proto b/pkg/proto/admin/admin.proto index 2db2be457..d8a1a48bf 100644 --- a/pkg/proto/admin/admin.proto +++ b/pkg/proto/admin/admin.proto @@ -85,7 +85,6 @@ message DelAdminAccountResp{ } message SearchAdminAccountReq{ - string keyword = 1; OpenIMServer.sdkws.RequestPagination pagination = 2; } diff --git a/pkg/proto/chat/chat.go b/pkg/proto/chat/chat.go index 10671ae60..96befab99 100644 --- a/pkg/proto/chat/chat.go +++ b/pkg/proto/chat/chat.go @@ -193,9 +193,15 @@ func (x *ChangePasswordReq) Check() error { if x.UserID == "" { return errs.ErrArgs.Wrap("userID is empty") } + + if x.CurrentPassword == "" { + return errs.ErrArgs.Wrap("currentPassword is empty") + } + if x.NewPassword == "" { return errs.ErrArgs.Wrap("newPassword is empty") } + return nil } @@ -312,9 +318,26 @@ func (x *SearchUserInfoReq) Check() error { } func (x *AddUserAccountReq) Check() error { + if x.User == nil { + return errs.ErrArgs.Wrap("user is empty") + } + if x.User.Email == "" { - if (x.User.AreaCode == "" && x.User.PhoneNumber != "") || (x.User.AreaCode != "" && x.User.PhoneNumber == "") { - return errs.ErrArgs.Wrap("area code or phone number error, no email provide") + if x.User.AreaCode == "" || x.User.PhoneNumber == "" { + return errs.ErrArgs.Wrap("area code or phone number is empty") + } + if x.User.AreaCode[0] != '+' { + x.User.AreaCode = "+" + x.User.AreaCode + } + if _, err := strconv.ParseUint(x.User.AreaCode[1:], 10, 64); err != nil { + return errs.ErrArgs.Wrap("area code must be number") + } + if _, err := strconv.ParseUint(x.User.PhoneNumber, 10, 64); err != nil { + return errs.ErrArgs.Wrap("phone number must be number") + } + } else { + if err := EmailCheck(x.User.Email); err != nil { + return errs.ErrArgs.Wrap("email must be right") } } diff --git a/pkg/proto/chat/chat.pb.go b/pkg/proto/chat/chat.pb.go index 17327a1a7..d25a085af 100644 --- a/pkg/proto/chat/chat.pb.go +++ b/pkg/proto/chat/chat.pb.go @@ -46,12 +46,12 @@ type UserIdentity struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - AreaCode string `protobuf:"bytes,2,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID,omitempty"` - Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform,omitempty"` - Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account,omitempty"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email"` + AreaCode string `protobuf:"bytes,2,opt,name=areaCode,proto3" json:"areaCode"` + PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` + DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` + Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` + Account string `protobuf:"bytes,6,opt,name=account,proto3" json:"account"` } func (x *UserIdentity) Reset() { @@ -133,20 +133,20 @@ type UpdateUserInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Account *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` - PhoneNumber *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - AreaCode *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - Email *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` - Nickname *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Gender *wrapperspb.Int32Value `protobuf:"bytes,8,opt,name=gender,proto3" json:"gender,omitempty"` - Level *wrapperspb.Int32Value `protobuf:"bytes,9,opt,name=level,proto3" json:"level,omitempty"` - Birth *wrapperspb.Int64Value `protobuf:"bytes,10,opt,name=birth,proto3" json:"birth,omitempty"` - AllowAddFriend *wrapperspb.Int32Value `protobuf:"bytes,11,opt,name=allowAddFriend,proto3" json:"allowAddFriend,omitempty"` - AllowBeep *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=allowBeep,proto3" json:"allowBeep,omitempty"` - AllowVibration *wrapperspb.Int32Value `protobuf:"bytes,13,opt,name=allowVibration,proto3" json:"allowVibration,omitempty"` - GlobalRecvMsgOpt *wrapperspb.Int32Value `protobuf:"bytes,14,opt,name=globalRecvMsgOpt,proto3" json:"globalRecvMsgOpt,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Account *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` + PhoneNumber *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` + AreaCode *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode"` + Email *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` + Nickname *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname"` + FaceURL *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL"` + Gender *wrapperspb.Int32Value `protobuf:"bytes,8,opt,name=gender,proto3" json:"gender"` + Level *wrapperspb.Int32Value `protobuf:"bytes,9,opt,name=level,proto3" json:"level"` + Birth *wrapperspb.Int64Value `protobuf:"bytes,10,opt,name=birth,proto3" json:"birth"` + AllowAddFriend *wrapperspb.Int32Value `protobuf:"bytes,11,opt,name=allowAddFriend,proto3" json:"allowAddFriend"` + AllowBeep *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=allowBeep,proto3" json:"allowBeep"` + AllowVibration *wrapperspb.Int32Value `protobuf:"bytes,13,opt,name=allowVibration,proto3" json:"allowVibration"` + GlobalRecvMsgOpt *wrapperspb.Int32Value `protobuf:"bytes,14,opt,name=globalRecvMsgOpt,proto3" json:"globalRecvMsgOpt"` } func (x *UpdateUserInfoReq) Reset() { @@ -284,8 +284,8 @@ type UpdateUserInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FaceUrl string `protobuf:"bytes,1,opt,name=faceUrl,proto3" json:"faceUrl,omitempty"` - NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName,omitempty"` + FaceUrl string `protobuf:"bytes,1,opt,name=faceUrl,proto3" json:"faceUrl"` + NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName"` } func (x *UpdateUserInfoResp) Reset() { @@ -339,7 +339,7 @@ type FindUserPublicInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserPublicInfoReq) Reset() { @@ -386,7 +386,7 @@ type FindUserPublicInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Users []*common.UserPublicInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` + Users []*common.UserPublicInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` } func (x *FindUserPublicInfoResp) Reset() { @@ -433,9 +433,9 @@ type SearchUserPublicInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` - Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders"` } func (x *SearchUserPublicInfoReq) Reset() { @@ -496,8 +496,8 @@ type SearchUserPublicInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Users []*common.UserPublicInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Users []*common.UserPublicInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchUserPublicInfoResp) Reset() { @@ -551,7 +551,7 @@ type FindUserFullInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserFullInfoReq) Reset() { @@ -598,7 +598,7 @@ type FindUserFullInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Users []*common.UserFullInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` + Users []*common.UserFullInfo `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` } func (x *FindUserFullInfoResp) Reset() { @@ -645,14 +645,14 @@ type SendVerifyCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UsedFor int32 `protobuf:"varint,1,opt,name=usedFor,proto3" json:"usedFor,omitempty"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` - InvitationCode string `protobuf:"bytes,3,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` - DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID,omitempty"` - Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform,omitempty"` - AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email,omitempty"` + UsedFor int32 `protobuf:"varint,1,opt,name=usedFor,proto3" json:"usedFor"` + Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` + InvitationCode string `protobuf:"bytes,3,opt,name=invitationCode,proto3" json:"invitationCode"` + DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` + Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` + AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode"` + PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber"` + Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email"` } func (x *SendVerifyCodeReq) Reset() { @@ -786,10 +786,10 @@ type VerifyCodeReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` - Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` + AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` + PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` + VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` + Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email"` } func (x *VerifyCodeReq) Reset() { @@ -895,16 +895,16 @@ type RegisterUserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL,omitempty"` - Birth int64 `protobuf:"varint,4,opt,name=birth,proto3" json:"birth,omitempty"` - Gender int32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender,omitempty"` - AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email,omitempty"` - Account string `protobuf:"bytes,9,opt,name=account,proto3" json:"account,omitempty"` - Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` + Birth int64 `protobuf:"varint,4,opt,name=birth,proto3" json:"birth"` + Gender int32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender"` + AreaCode string `protobuf:"bytes,6,opt,name=areaCode,proto3" json:"areaCode"` + PhoneNumber string `protobuf:"bytes,7,opt,name=phoneNumber,proto3" json:"phoneNumber"` + Email string `protobuf:"bytes,8,opt,name=email,proto3" json:"email"` + Account string `protobuf:"bytes,9,opt,name=account,proto3" json:"account"` + Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password"` } func (x *RegisterUserInfo) Reset() { @@ -1014,13 +1014,13 @@ type RegisterUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode,omitempty"` - VerifyCode string `protobuf:"bytes,2,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` - Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` - DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID,omitempty"` - Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform,omitempty"` - AutoLogin bool `protobuf:"varint,6,opt,name=autoLogin,proto3" json:"autoLogin,omitempty"` - User *RegisterUserInfo `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"` + InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode"` + VerifyCode string `protobuf:"bytes,2,opt,name=verifyCode,proto3" json:"verifyCode"` + Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` + DeviceID string `protobuf:"bytes,4,opt,name=deviceID,proto3" json:"deviceID"` + Platform int32 `protobuf:"varint,5,opt,name=platform,proto3" json:"platform"` + AutoLogin bool `protobuf:"varint,6,opt,name=autoLogin,proto3" json:"autoLogin"` + User *RegisterUserInfo `protobuf:"bytes,7,opt,name=user,proto3" json:"user"` } func (x *RegisterUserReq) Reset() { @@ -1109,8 +1109,8 @@ type RegisterUserResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - ChatToken string `protobuf:"bytes,3,opt,name=chatToken,proto3" json:"chatToken,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + ChatToken string `protobuf:"bytes,3,opt,name=chatToken,proto3" json:"chatToken"` } func (x *RegisterUserResp) Reset() { @@ -1164,10 +1164,10 @@ type AddUserAccountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID,omitempty"` - Platform int32 `protobuf:"varint,3,opt,name=platform,proto3" json:"platform,omitempty"` - User *RegisterUserInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` + DeviceID string `protobuf:"bytes,2,opt,name=deviceID,proto3" json:"deviceID"` + Platform int32 `protobuf:"varint,3,opt,name=platform,proto3" json:"platform"` + User *RegisterUserInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user"` } func (x *AddUserAccountReq) Reset() { @@ -1273,15 +1273,15 @@ type LoginReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` - Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account,omitempty"` - Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password,omitempty"` - Platform int32 `protobuf:"varint,6,opt,name=platform,proto3" json:"platform,omitempty"` - DeviceID string `protobuf:"bytes,7,opt,name=deviceID,proto3" json:"deviceID,omitempty"` - Ip string `protobuf:"bytes,8,opt,name=ip,proto3" json:"ip,omitempty"` - Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"` + AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` + PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` + VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` + Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account"` + Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password"` + Platform int32 `protobuf:"varint,6,opt,name=platform,proto3" json:"platform"` + DeviceID string `protobuf:"bytes,7,opt,name=deviceID,proto3" json:"deviceID"` + Ip string `protobuf:"bytes,8,opt,name=ip,proto3" json:"ip"` + Email string `protobuf:"bytes,9,opt,name=email,proto3" json:"email"` } func (x *LoginReq) Reset() { @@ -1384,8 +1384,8 @@ type LoginResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ChatToken string `protobuf:"bytes,2,opt,name=chatToken,proto3" json:"chatToken,omitempty"` - UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID,omitempty"` + ChatToken string `protobuf:"bytes,2,opt,name=chatToken,proto3" json:"chatToken"` + UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID"` } func (x *LoginResp) Reset() { @@ -1439,11 +1439,11 @@ type ResetPasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode,omitempty"` - PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber,omitempty"` - VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode,omitempty"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` - Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` + AreaCode string `protobuf:"bytes,1,opt,name=areaCode,proto3" json:"areaCode"` + PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` + VerifyCode string `protobuf:"bytes,3,opt,name=verifyCode,proto3" json:"verifyCode"` + Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password"` + Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` } func (x *ResetPasswordReq) Reset() { @@ -1556,9 +1556,9 @@ type ChangePasswordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"` - CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword,omitempty"` - NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword,omitempty"` + UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` + CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword"` + NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword"` } func (x *ChangePasswordReq) Reset() { @@ -1657,7 +1657,7 @@ type FindUserAccountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserAccountReq) Reset() { @@ -1704,7 +1704,7 @@ type FindUserAccountResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserAccountMap map[string]string `protobuf:"bytes,1,rep,name=userAccountMap,proto3" json:"userAccountMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // userID account + UserAccountMap map[string]string `protobuf:"bytes,1,rep,name=userAccountMap,proto3" json:"userAccountMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // userID account } func (x *FindUserAccountResp) Reset() { @@ -1751,7 +1751,7 @@ type FindAccountUserReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Accounts []string `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` + Accounts []string `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts"` } func (x *FindAccountUserReq) Reset() { @@ -1798,7 +1798,7 @@ type FindAccountUserResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AccountUserMap map[string]string `protobuf:"bytes,1,rep,name=accountUserMap,proto3" json:"accountUserMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account userID + AccountUserMap map[string]string `protobuf:"bytes,1,rep,name=accountUserMap,proto3" json:"accountUserMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // account userID } func (x *FindAccountUserResp) Reset() { @@ -1845,20 +1845,20 @@ type SignalRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FileName string `protobuf:"bytes,1,opt,name=fileName,proto3" json:"fileName,omitempty"` - MediaType string `protobuf:"bytes,2,opt,name=mediaType,proto3" json:"mediaType,omitempty"` - RoomType string `protobuf:"bytes,3,opt,name=roomType,proto3" json:"roomType,omitempty"` - SenderID string `protobuf:"bytes,4,opt,name=senderID,proto3" json:"senderID,omitempty"` - SenderNickname string `protobuf:"bytes,5,opt,name=senderNickname,proto3" json:"senderNickname,omitempty"` - RecvID string `protobuf:"bytes,6,opt,name=recvID,proto3" json:"recvID,omitempty"` - RecvNickname string `protobuf:"bytes,7,opt,name=recvNickname,proto3" json:"recvNickname,omitempty"` - GroupID string `protobuf:"bytes,8,opt,name=groupID,proto3" json:"groupID,omitempty"` - GroupName string `protobuf:"bytes,9,opt,name=groupName,proto3" json:"groupName,omitempty"` - InviterUserList []*common.UserPublicInfo `protobuf:"bytes,10,rep,name=inviterUserList,proto3" json:"inviterUserList,omitempty"` - Duration int32 `protobuf:"varint,11,opt,name=duration,proto3" json:"duration,omitempty"` - CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime,omitempty"` - Size string `protobuf:"bytes,13,opt,name=size,proto3" json:"size,omitempty"` - DownloadURL string `protobuf:"bytes,14,opt,name=downloadURL,proto3" json:"downloadURL,omitempty"` + FileName string `protobuf:"bytes,1,opt,name=fileName,proto3" json:"fileName"` + MediaType string `protobuf:"bytes,2,opt,name=mediaType,proto3" json:"mediaType"` + RoomType string `protobuf:"bytes,3,opt,name=roomType,proto3" json:"roomType"` + SenderID string `protobuf:"bytes,4,opt,name=senderID,proto3" json:"senderID"` + SenderNickname string `protobuf:"bytes,5,opt,name=senderNickname,proto3" json:"senderNickname"` + RecvID string `protobuf:"bytes,6,opt,name=recvID,proto3" json:"recvID"` + RecvNickname string `protobuf:"bytes,7,opt,name=recvNickname,proto3" json:"recvNickname"` + GroupID string `protobuf:"bytes,8,opt,name=groupID,proto3" json:"groupID"` + GroupName string `protobuf:"bytes,9,opt,name=groupName,proto3" json:"groupName"` + InviterUserList []*common.UserPublicInfo `protobuf:"bytes,10,rep,name=inviterUserList,proto3" json:"inviterUserList"` + Duration int32 `protobuf:"varint,11,opt,name=duration,proto3" json:"duration"` + CreateTime int64 `protobuf:"varint,12,opt,name=createTime,proto3" json:"createTime"` + Size string `protobuf:"bytes,13,opt,name=size,proto3" json:"size"` + DownloadURL string `protobuf:"bytes,14,opt,name=downloadURL,proto3" json:"downloadURL"` } func (x *SignalRecord) Reset() { @@ -1996,8 +1996,8 @@ type AddSignalRecordReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SignalRecord *SignalRecord `protobuf:"bytes,1,opt,name=signalRecord,proto3" json:"signalRecord,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID,omitempty"` + SignalRecord *SignalRecord `protobuf:"bytes,1,opt,name=signalRecord,proto3" json:"signalRecord"` + OperationID string `protobuf:"bytes,2,opt,name=operationID,proto3" json:"operationID"` } func (x *AddSignalRecordReq) Reset() { @@ -2089,12 +2089,12 @@ type GetSignalRecordsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` - SenderID string `protobuf:"bytes,2,opt,name=senderID,proto3" json:"senderID,omitempty"` - RecvID string `protobuf:"bytes,3,opt,name=recvID,proto3" json:"recvID,omitempty"` - MediaType string `protobuf:"bytes,4,opt,name=mediaType,proto3" json:"mediaType,omitempty"` - CreateTime int64 `protobuf:"varint,5,opt,name=createTime,proto3" json:"createTime,omitempty"` - OperationID string `protobuf:"bytes,6,opt,name=operationID,proto3" json:"operationID,omitempty"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` + SenderID string `protobuf:"bytes,2,opt,name=senderID,proto3" json:"senderID"` + RecvID string `protobuf:"bytes,3,opt,name=recvID,proto3" json:"recvID"` + MediaType string `protobuf:"bytes,4,opt,name=mediaType,proto3" json:"mediaType"` + CreateTime int64 `protobuf:"varint,5,opt,name=createTime,proto3" json:"createTime"` + OperationID string `protobuf:"bytes,6,opt,name=operationID,proto3" json:"operationID"` } func (x *GetSignalRecordsReq) Reset() { @@ -2176,8 +2176,8 @@ type GetSignalRecordsResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TotalNumber uint32 `protobuf:"varint,1,opt,name=totalNumber,proto3" json:"totalNumber,omitempty"` - SignalRecords []*SignalRecord `protobuf:"bytes,2,rep,name=signalRecords,proto3" json:"signalRecords,omitempty"` + TotalNumber uint32 `protobuf:"varint,1,opt,name=totalNumber,proto3" json:"totalNumber"` + SignalRecords []*SignalRecord `protobuf:"bytes,2,rep,name=signalRecords,proto3" json:"signalRecords"` } func (x *GetSignalRecordsResp) Reset() { @@ -2231,8 +2231,8 @@ type OpenIMCallbackReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body"` } func (x *OpenIMCallbackReq) Reset() { @@ -2324,10 +2324,10 @@ type SearchUserFullInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` - Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders,omitempty"` - Normal int32 `protobuf:"varint,4,opt,name=normal,proto3" json:"normal,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Genders int32 `protobuf:"varint,3,opt,name=genders,proto3" json:"genders"` + Normal int32 `protobuf:"varint,4,opt,name=normal,proto3" json:"normal"` } func (x *SearchUserFullInfoReq) Reset() { @@ -2395,8 +2395,8 @@ type SearchUserFullInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchUserFullInfoResp) Reset() { @@ -2450,8 +2450,8 @@ type UserLoginCountReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` - End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end"` } func (x *UserLoginCountReq) Reset() { @@ -2505,9 +2505,9 @@ type UserLoginCountResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LoginCount int64 `protobuf:"varint,1,opt,name=loginCount,proto3" json:"loginCount,omitempty"` - UnloginCount int64 `protobuf:"varint,2,opt,name=unloginCount,proto3" json:"unloginCount,omitempty"` - Count map[string]int64 `protobuf:"bytes,3,rep,name=Count,proto3" json:"Count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + LoginCount int64 `protobuf:"varint,1,opt,name=loginCount,proto3" json:"loginCount"` + UnloginCount int64 `protobuf:"varint,2,opt,name=unloginCount,proto3" json:"unloginCount"` + Count map[string]int64 `protobuf:"bytes,3,rep,name=Count,proto3" json:"Count" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *UserLoginCountResp) Reset() { @@ -2568,8 +2568,8 @@ type FileURL struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` - URL string `protobuf:"bytes,2,opt,name=URL,proto3" json:"URL,omitempty"` + Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename"` + URL string `protobuf:"bytes,2,opt,name=URL,proto3" json:"URL"` } func (x *FileURL) Reset() { @@ -2623,11 +2623,11 @@ type UploadLogsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Platform int32 `protobuf:"varint,1,opt,name=platform,proto3" json:"platform,omitempty"` - FileURLs []*FileURL `protobuf:"bytes,2,rep,name=fileURLs,proto3" json:"fileURLs,omitempty"` - SystemType string `protobuf:"bytes,3,opt,name=systemType,proto3" json:"systemType,omitempty"` - Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` - Ex string `protobuf:"bytes,4,opt,name=ex,proto3" json:"ex,omitempty"` + Platform int32 `protobuf:"varint,1,opt,name=platform,proto3" json:"platform"` + FileURLs []*FileURL `protobuf:"bytes,2,rep,name=fileURLs,proto3" json:"fileURLs"` + SystemType string `protobuf:"bytes,3,opt,name=systemType,proto3" json:"systemType"` + Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version"` + Ex string `protobuf:"bytes,4,opt,name=ex,proto3" json:"ex"` } func (x *UploadLogsReq) Reset() { @@ -2740,7 +2740,7 @@ type DeleteLogsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogIDs []string `protobuf:"bytes,1,rep,name=logIDs,proto3" json:"logIDs,omitempty"` + LogIDs []string `protobuf:"bytes,1,rep,name=logIDs,proto3" json:"logIDs"` } func (x *DeleteLogsReq) Reset() { @@ -2825,10 +2825,10 @@ type SearchLogsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"` - EndTime int64 `protobuf:"varint,3,opt,name=endTime,proto3" json:"endTime,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime"` + EndTime int64 `protobuf:"varint,3,opt,name=endTime,proto3" json:"endTime"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchLogsReq) Reset() { @@ -2896,8 +2896,8 @@ type SearchLogsResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogsInfos []*common.LogInfo `protobuf:"bytes,1,rep,name=LogsInfos,proto3" json:"LogsInfos,omitempty"` - Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + LogsInfos []*common.LogInfo `protobuf:"bytes,1,rep,name=LogsInfos,proto3" json:"LogsInfos"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *SearchLogsResp) Reset() { @@ -2951,10 +2951,10 @@ type SearchUserInfoReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` - Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` - Genders []int32 `protobuf:"varint,3,rep,packed,name=genders,proto3" json:"genders,omitempty"` - UserIDs []string `protobuf:"bytes,4,rep,name=userIDs,proto3" json:"userIDs,omitempty"` + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` + Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` + Genders []int32 `protobuf:"varint,3,rep,packed,name=genders,proto3" json:"genders"` + UserIDs []string `protobuf:"bytes,4,rep,name=userIDs,proto3" json:"userIDs"` } func (x *SearchUserInfoReq) Reset() { @@ -3022,8 +3022,8 @@ type SearchUserInfoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` + Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + Users []*common.UserFullInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchUserInfoResp) Reset() { From 5ba3e4cd601f7794c03225c28f38fc595f7ae70e Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Thu, 14 Dec 2023 12:31:33 +0800 Subject: [PATCH 03/11] fix: del the unuse method --- pkg/rpclient/chat/chat.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/rpclient/chat/chat.go b/pkg/rpclient/chat/chat.go index 1091bc87f..1e23f5cc0 100644 --- a/pkg/rpclient/chat/chat.go +++ b/pkg/rpclient/chat/chat.go @@ -110,7 +110,3 @@ func (o *ChatClient) UpdateUser(ctx context.Context, req *chat.UpdateUserInfoReq _, err := o.client.UpdateUserInfo(ctx, req) return err } - -func (o *ChatClient) RegisterUser(ctx context.Context, req *chat.RegisterUserReq) error { - return nil -} From 505a97e03c757c44bdcb93456cfec1132ce804b6 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Thu, 14 Dec 2023 17:49:03 +0800 Subject: [PATCH 04/11] fix: Optimized code --- internal/api/router.go | 102 ++++++++++++++++++------------------ internal/rpc/chat/user.go | 83 ++++++++++++++--------------- pkg/proto/admin/admin.proto | 22 ++++---- pkg/proto/chat/chat.proto | 11 ++-- 4 files changed, 106 insertions(+), 112 deletions(-) diff --git a/internal/api/router.go b/internal/api/router.go index 90c88448a..723bcc9c4 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -34,27 +34,27 @@ func NewChatRoute(router gin.IRouter, discov discoveryregistry.SvcDiscoveryRegis mw := NewMW(adminConn) chat := NewChat(chatConn, adminConn) account := router.Group("/account") - account.POST("/code/send", chat.SendVerifyCode) // 发送验证码 - account.POST("/code/verify", chat.VerifyCode) // 校验验证码 - account.POST("/register", mw.CheckAdminOrNil, chat.RegisterUser) // 注册 - account.POST("/login", chat.Login) // 登录 - account.POST("/password/reset", chat.ResetPassword) // 忘记密码 - account.POST("/password/change", mw.CheckToken, chat.ChangePassword) // 修改密码 + account.POST("/code/send", chat.SendVerifyCode) // Send verification code + account.POST("/code/verify", chat.VerifyCode) // Verify the verification code + account.POST("/register", mw.CheckAdminOrNil, chat.RegisterUser) // Register + account.POST("/login", chat.Login) // Login + account.POST("/password/reset", chat.ResetPassword) // Forgot password + account.POST("/password/change", mw.CheckToken, chat.ChangePassword) // Change password user := router.Group("/user", mw.CheckToken) - user.POST("/update", chat.UpdateUserInfo) // 编辑个人资料 - user.POST("/find/public", chat.FindUserPublicInfo) // 获取用户公开信息 - user.POST("/find/full", chat.FindUserFullInfo) // 获取用户所有信息 - user.POST("/search/full", chat.SearchUserFullInfo) // 搜索用户公开信息 - user.POST("/search/public", chat.SearchUserPublicInfo) // 搜索用户所有信息 + user.POST("/update", chat.UpdateUserInfo) // Edit personal information + user.POST("/find/public", chat.FindUserPublicInfo) // Get user's public information + user.POST("/find/full", chat.FindUserFullInfo) // Get all information of the user + user.POST("/search/full", chat.SearchUserFullInfo) // Search user's public information + user.POST("/search/public", chat.SearchUserPublicInfo) // Search all information of the user router.POST("/friend/search", mw.CheckToken, chat.SearchFriend) - router.Group("/applet").POST("/find", mw.CheckToken, chat.FindApplet) // 小程序列表 + router.Group("/applet").POST("/find", mw.CheckToken, chat.FindApplet) // Applet list - router.Group("/client_config").POST("/get", chat.GetClientConfig) // 获取客户端初始化配置 + router.Group("/client_config").POST("/get", chat.GetClientConfig) // Get client initialization configuration - router.Group("/callback").POST("/open_im", chat.OpenIMCallback) // 回调 + router.Group("/callback").POST("/open_im", chat.OpenIMCallback) // Callback logs := router.Group("/logs", mw.CheckToken) logs.POST("/upload", chat.UploadLogs) @@ -72,61 +72,61 @@ func NewAdminRoute(router gin.IRouter, discov discoveryregistry.SvcDiscoveryRegi mw := NewMW(adminConn) admin := NewAdmin(chatConn, adminConn) adminRouterGroup := router.Group("/account") - adminRouterGroup.POST("/login", admin.AdminLogin) // 登录 - adminRouterGroup.POST("/update", mw.CheckAdmin, admin.AdminUpdateInfo) // 修改信息 - adminRouterGroup.POST("/info", mw.CheckAdmin, admin.AdminInfo) // 获取信息 - adminRouterGroup.POST("/change_password", mw.CheckAdmin, admin.ChangeAdminPassword) // 修改管理员账号的密码 - adminRouterGroup.POST("/add_admin", mw.CheckAdmin, admin.AddAdminAccount) // 添加管理员账号 - adminRouterGroup.POST("/add_user", mw.CheckAdmin, admin.AddUserAccount) // 添加用户账号 - adminRouterGroup.POST("/del_admin", mw.CheckAdmin, admin.DelAdminAccount) // 删除管理员 - adminRouterGroup.POST("/search", mw.CheckAdmin, admin.SearchAdminAccount) // 获取管理员列表 + adminRouterGroup.POST("/login", admin.AdminLogin) // Login + adminRouterGroup.POST("/update", mw.CheckAdmin, admin.AdminUpdateInfo) // Modify information + adminRouterGroup.POST("/info", mw.CheckAdmin, admin.AdminInfo) // Get information + adminRouterGroup.POST("/change_password", mw.CheckAdmin, admin.ChangeAdminPassword) // Change admin account's password + adminRouterGroup.POST("/add_admin", mw.CheckAdmin, admin.AddAdminAccount) // Add admin account + adminRouterGroup.POST("/add_user", mw.CheckAdmin, admin.AddUserAccount) // Add user account + adminRouterGroup.POST("/del_admin", mw.CheckAdmin, admin.DelAdminAccount) // Delete admin + adminRouterGroup.POST("/search", mw.CheckAdmin, admin.SearchAdminAccount) // Get admin list defaultRouter := router.Group("/default", mw.CheckAdmin) defaultUserRouter := defaultRouter.Group("/user") - defaultUserRouter.POST("/add", admin.AddDefaultFriend) // 添加注册时默认好友 - defaultUserRouter.POST("/del", admin.DelDefaultFriend) // 删除注册时默认好友 - defaultUserRouter.POST("/find", admin.FindDefaultFriend) // 默认好友列表 - defaultUserRouter.POST("/search", admin.SearchDefaultFriend) // 搜索注册时默认好友列表 + defaultUserRouter.POST("/add", admin.AddDefaultFriend) // Add default friend at registration + defaultUserRouter.POST("/del", admin.DelDefaultFriend) // Delete default friend at registration + defaultUserRouter.POST("/find", admin.FindDefaultFriend) // Default friend list + defaultUserRouter.POST("/search", admin.SearchDefaultFriend) // Search default friend list at registration defaultGroupRouter := defaultRouter.Group("/group") - defaultGroupRouter.POST("/add", admin.AddDefaultGroup) // 添加注册时默认群 - defaultGroupRouter.POST("/del", admin.DelDefaultGroup) // 删除注册时默认群 - defaultGroupRouter.POST("/find", admin.FindDefaultGroup) // 获取注册时默认群列表 - defaultGroupRouter.POST("/search", admin.SearchDefaultGroup) // 获取注册时默认群列表 + defaultGroupRouter.POST("/add", admin.AddDefaultGroup) // Add default group at registration + defaultGroupRouter.POST("/del", admin.DelDefaultGroup) // Delete default group at registration + defaultGroupRouter.POST("/find", admin.FindDefaultGroup) // Get default group list at registration + defaultGroupRouter.POST("/search", admin.SearchDefaultGroup) // Search default group list at registration invitationCodeRouter := router.Group("/invitation_code", mw.CheckAdmin) - invitationCodeRouter.POST("/add", admin.AddInvitationCode) // 添加邀请码 - invitationCodeRouter.POST("/gen", admin.GenInvitationCode) // 生成邀请码 - invitationCodeRouter.POST("/del", admin.DelInvitationCode) // 删除邀请码 - invitationCodeRouter.POST("/search", admin.SearchInvitationCode) // 搜索邀请码 + invitationCodeRouter.POST("/add", admin.AddInvitationCode) // Add invitation code + invitationCodeRouter.POST("/gen", admin.GenInvitationCode) // Generate invitation code + invitationCodeRouter.POST("/del", admin.DelInvitationCode) // Delete invitation code + invitationCodeRouter.POST("/search", admin.SearchInvitationCode) // Search invitation code forbiddenRouter := router.Group("/forbidden", mw.CheckAdmin) ipForbiddenRouter := forbiddenRouter.Group("/ip") - ipForbiddenRouter.POST("/add", admin.AddIPForbidden) // 添加禁止注册登录IP - ipForbiddenRouter.POST("/del", admin.DelIPForbidden) // 删除禁止注册登录IP - ipForbiddenRouter.POST("/search", admin.SearchIPForbidden) // 搜索禁止注册登录IP + ipForbiddenRouter.POST("/add", admin.AddIPForbidden) // Add forbidden IP for registration/login + ipForbiddenRouter.POST("/del", admin.DelIPForbidden) // Delete forbidden IP for registration/login + ipForbiddenRouter.POST("/search", admin.SearchIPForbidden) // Search forbidden IPs for registration/login userForbiddenRouter := forbiddenRouter.Group("/user") - userForbiddenRouter.POST("/add", admin.AddUserIPLimitLogin) // 添加限制用户在指定ip登录 - userForbiddenRouter.POST("/del", admin.DelUserIPLimitLogin) // 删除用户在指定IP登录 - userForbiddenRouter.POST("/search", admin.SearchUserIPLimitLogin) // 搜索限制用户在指定ip登录 + userForbiddenRouter.POST("/add", admin.AddUserIPLimitLogin) // Add limit for user login on specific IP + userForbiddenRouter.POST("/del", admin.DelUserIPLimitLogin) // Delete user limit on specific IP for login + userForbiddenRouter.POST("/search", admin.SearchUserIPLimitLogin) // Search limit for user login on specific IP appletRouterGroup := router.Group("/applet", mw.CheckAdmin) - appletRouterGroup.POST("/add", admin.AddApplet) // 添加小程序 - appletRouterGroup.POST("/del", admin.DelApplet) // 删除小程序 - appletRouterGroup.POST("/update", admin.UpdateApplet) // 修改小程序 - appletRouterGroup.POST("/search", admin.SearchApplet) // 搜索小程序 + appletRouterGroup.POST("/add", admin.AddApplet) // Add applet + appletRouterGroup.POST("/del", admin.DelApplet) // Delete applet + appletRouterGroup.POST("/update", admin.UpdateApplet) // Modify applet + appletRouterGroup.POST("/search", admin.SearchApplet) // Search applet blockRouter := router.Group("/block", mw.CheckAdmin) - blockRouter.POST("/add", admin.BlockUser) // 封号 - blockRouter.POST("/del", admin.UnblockUser) // 解封 - blockRouter.POST("/search", admin.SearchBlockUser) // 搜索封号用户 + blockRouter.POST("/add", admin.BlockUser) // Block user + blockRouter.POST("/del", admin.UnblockUser) // Unblock user + blockRouter.POST("/search", admin.SearchBlockUser) // Search blocked users userRouter := router.Group("/user", mw.CheckAdmin) - userRouter.POST("/password/reset", admin.ResetUserPassword) // 重置用户密码 + userRouter.POST("/password/reset", admin.ResetUserPassword) // Reset user password initGroup := router.Group("/client_config", mw.CheckAdmin) - initGroup.POST("/get", admin.GetClientConfig) // 获取客户端初始化配置 - initGroup.POST("/set", admin.SetClientConfig) // 设置客户端初始化配置 - initGroup.POST("/del", admin.DelClientConfig) // 删除客户端初始化配置 + initGroup.POST("/get", admin.GetClientConfig) // Get client initialization configuration + initGroup.POST("/set", admin.SetClientConfig) // Set client initialization configuration + initGroup.POST("/del", admin.DelClientConfig) // Delete client initialization configuration statistic := router.Group("/statistic", mw.CheckAdmin) statistic.POST("/new_user_count", admin.NewUserCount) diff --git a/internal/rpc/chat/user.go b/internal/rpc/chat/user.go index 11d8ac94d..bf3f85a7e 100644 --- a/internal/rpc/chat/user.go +++ b/internal/rpc/chat/user.go @@ -20,7 +20,6 @@ import ( chat2 "github.com/OpenIMSDK/chat/pkg/common/db/table/chat" constant2 "github.com/OpenIMSDK/protocol/constant" "github.com/OpenIMSDK/tools/mcontext" - "strconv" "time" "github.com/OpenIMSDK/chat/pkg/common/constant" @@ -124,49 +123,8 @@ func (o *chatSvr) AddUserAccount(ctx context.Context, req *chat.AddUserAccountRe return nil, err } - if req.User.PhoneNumber != "" { - if req.User.AreaCode[0] != '+' { - req.User.AreaCode = "+" + req.User.AreaCode - } - if _, err := strconv.ParseUint(req.User.AreaCode[1:], 10, 64); err != nil { - return nil, errs.ErrArgs.Wrap("area code must be number") - } - if _, err := strconv.ParseUint(req.User.PhoneNumber, 10, 64); err != nil { - return nil, errs.ErrArgs.Wrap("phone number must be number") - } - _, err := o.Database.TakeAttributeByPhone(ctx, req.User.AreaCode, req.User.PhoneNumber) - if err == nil { - return nil, eerrs.ErrPhoneAlreadyRegister.Wrap() - } else if !o.Database.IsNotFound(err) { - return nil, err - } - } - - if req.User.Email != "" { - _, err := o.Database.TakeAttributeByEmail(ctx, req.User.Email) - if err == nil { - return nil, eerrs.ErrEmailAlreadyRegister.Wrap() - } else if !o.Database.IsNotFound(err) { - return nil, err - } - } - - if req.User.UserID == "" { - for i := 0; i < 20; i++ { - userID := o.genUserID() - _, err := o.Database.GetUser(ctx, userID) - if err == nil { - continue - } else if dbutil.IsGormNotFound(err) { - req.User.UserID = userID - break - } else { - return nil, err - } - } - if req.User.UserID == "" { - return nil, errs.ErrInternalServer.Wrap("gen user id failed") - } + if err := o.checkTheUniqueness(ctx, req); err != nil { + return nil, err } register := &chat2.Register{ @@ -304,3 +262,40 @@ func (o *chatSvr) SearchUserInfo(ctx context.Context, req *chat.SearchUserInfoRe Users: DbToPbUserFullInfos(list), }, nil } + +func (o *chatSvr) checkTheUniqueness(ctx context.Context, req *chat.AddUserAccountReq) error { + if req.User.PhoneNumber != "" { + _, err := o.Database.TakeAttributeByPhone(ctx, req.User.AreaCode, req.User.PhoneNumber) + if err == nil { + return eerrs.ErrPhoneAlreadyRegister.Wrap() + } else if !o.Database.IsNotFound(err) { + return err + } + } else { + _, err := o.Database.TakeAttributeByEmail(ctx, req.User.Email) + if err == nil { + return eerrs.ErrEmailAlreadyRegister.Wrap() + } else if !o.Database.IsNotFound(err) { + return err + } + } + + if req.User.UserID == "" { + for i := 0; i < 20; i++ { + userID := o.genUserID() + _, err := o.Database.GetUser(ctx, userID) + if err == nil { + continue + } else if dbutil.IsGormNotFound(err) { + req.User.UserID = userID + break + } else { + return err + } + } + if req.User.UserID == "" { + return errs.ErrInternalServer.Wrap("gen user id failed") + } + } + return nil +} diff --git a/pkg/proto/admin/admin.proto b/pkg/proto/admin/admin.proto index d8a1a48bf..ead783bd8 100644 --- a/pkg/proto/admin/admin.proto +++ b/pkg/proto/admin/admin.proto @@ -506,18 +506,18 @@ message GetUserTokenResp{ } service admin { - //登录 + // Login rpc Login(LoginReq) returns(LoginResp); rpc ChangePassword(ChangePasswordReq) returns(ChangePasswordResp); rpc AdminUpdateInfo(AdminUpdateInfoReq)returns(AdminUpdateInfoResp); - // 获取管理员信息 + // Get administrator information rpc GetAdminInfo(GetAdminInfoReq) returns(GetAdminInfoResp); rpc AddAdminAccount(AddAdminAccountReq)returns(AddAdminAccountResp); rpc ChangeAdminPassword(ChangeAdminPasswordReq)returns(ChangeAdminPasswordResp); rpc DelAdminAccount(DelAdminAccountReq)returns(DelAdminAccountResp); rpc SearchAdminAccount(SearchAdminAccountReq)returns(SearchAdminAccountResp); - //添加 移除 获取 注册时默认好友列表 + // Add Remove Get default friend list on registration rpc AddDefaultFriend(AddDefaultFriendReq) returns(AddDefaultFriendResp); rpc DelDefaultFriend(DelDefaultFriendReq) returns(DelDefaultFriendResp); rpc FindDefaultFriend(FindDefaultFriendReq) returns(FindDefaultFriendResp); @@ -529,7 +529,7 @@ service admin { rpc SearchDefaultGroup(SearchDefaultGroupReq) returns(SearchDefaultGroupResp); - //邀请码 生成 查询 获取 + // Invitation Code Generate Query Get rpc AddInvitationCode(AddInvitationCodeReq) returns(AddInvitationCodeResp); rpc GenInvitationCode(GenInvitationCodeReq) returns(GenInvitationCodeResp); rpc FindInvitationCode(FindInvitationCodeReq) returns(FindInvitationCodeResp); @@ -537,17 +537,17 @@ service admin { rpc DelInvitationCode(DelInvitationCodeReq) returns(DelInvitationCodeResp); rpc SearchInvitationCode(SearchInvitationCodeReq) returns(SearchInvitationCodeResp); - //用户登录ip限制 查询 添加 移除 + // User login ip limit Query Add Remove rpc SearchUserIPLimitLogin(SearchUserIPLimitLoginReq) returns(SearchUserIPLimitLoginResp); rpc AddUserIPLimitLogin(AddUserIPLimitLoginReq) returns(AddUserIPLimitLoginResp); rpc DelUserIPLimitLogin(DelUserIPLimitLoginReq) returns(DelUserIPLimitLoginResp); - //禁止用户在某些ip注册 查询 添加 移除 + // Prohibit users from registering at certain ip Query Add Remove rpc SearchIPForbidden(SearchIPForbiddenReq) returns(SearchIPForbiddenResp); rpc AddIPForbidden(AddIPForbiddenReq) returns(AddIPForbiddenResp); rpc DelIPForbidden(DelIPForbiddenReq) returns(DelIPForbiddenResp); - //用户管理相关 添加 封号/解封 拉取 + // User Management Related Add Block/Unblock Pull rpc CancellationUser(CancellationUserReq) returns(CancellationUserResp); rpc BlockUser(BlockUserReq) returns(BlockUserResp); rpc UnblockUser(UnblockUserReq) returns(UnblockUserResp); @@ -557,19 +557,19 @@ service admin { rpc CheckRegisterForbidden(CheckRegisterForbiddenReq)returns(CheckRegisterForbiddenResp); rpc CheckLoginForbidden(CheckLoginForbiddenReq)returns(CheckLoginForbiddenResp); - //创建token + // create token rpc CreateToken(CreateTokenReq) returns(CreateTokenResp); - //解析token + // parse token rpc ParseToken(ParseTokenReq) returns(ParseTokenResp); - // 小程序 + // app rpc AddApplet(AddAppletReq)returns(AddAppletResp); rpc DelApplet(DelAppletReq)returns(DelAppletResp); rpc UpdateApplet(UpdateAppletReq)returns(UpdateAppletResp); rpc FindApplet(FindAppletReq)returns(FindAppletResp); rpc SearchApplet(SearchAppletReq)returns(SearchAppletResp); - // 客户端配置 + // Client Configuration rpc GetClientConfig(GetClientConfigReq) returns(GetClientConfigResp); rpc SetClientConfig(SetClientConfigReq) returns(SetClientConfigResp); rpc DelClientConfig(DelClientConfigReq) returns(DelClientConfigResp); diff --git a/pkg/proto/chat/chat.proto b/pkg/proto/chat/chat.proto index 6127defc0..1bedb5816 100644 --- a/pkg/proto/chat/chat.proto +++ b/pkg/proto/chat/chat.proto @@ -312,13 +312,13 @@ message SearchUserInfoResp { } service chat { - //编辑个人资料 自己或者管理员调用 + // Edit personal information - called by the user or an administrator rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp); rpc AddUserAccount(AddUserAccountReq) returns(AddUserAccountResp); - //获取用户的公开信息 陌生人调用 + // Get user's public information - called by strangers rpc SearchUserPublicInfo(SearchUserPublicInfoReq) returns(SearchUserPublicInfoResp); rpc FindUserPublicInfo(FindUserPublicInfoReq) returns(FindUserPublicInfoResp); - //搜索用户信息 管理员调用 其他用户调用时返回public字段 + // Search user information - called by administrators, other users get public fields rpc SearchUserFullInfo(SearchUserFullInfoReq) returns(SearchUserFullInfoResp); rpc FindUserFullInfo(FindUserFullInfoReq) returns(FindUserFullInfoResp); @@ -337,12 +337,11 @@ service chat { rpc OpenIMCallback(OpenIMCallbackReq) returns(OpenIMCallbackResp); - //统计 + // Statistics rpc UserLoginCount(UserLoginCountReq) returns (UserLoginCountResp); - //日志 + // Logs rpc UploadLogs(UploadLogsReq) returns (UploadLogsResp); rpc DeleteLogs(DeleteLogsReq) returns (DeleteLogsResp); rpc SearchLogs(SearchLogsReq) returns (SearchLogsResp); - rpc SearchUserInfo(SearchUserInfoReq)returns(SearchUserInfoResp); } \ No newline at end of file From 5f5d8bf3a0a00904dd10f8b54c3ce401be213a16 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Thu, 14 Dec 2023 18:38:37 +0800 Subject: [PATCH 05/11] fix: fix the userID --- internal/rpc/chat/user.go | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/internal/rpc/chat/user.go b/internal/rpc/chat/user.go index bf3f85a7e..84af3f241 100644 --- a/internal/rpc/chat/user.go +++ b/internal/rpc/chat/user.go @@ -127,6 +127,24 @@ func (o *chatSvr) AddUserAccount(ctx context.Context, req *chat.AddUserAccountRe return nil, err } + if req.User.UserID == "" { + for i := 0; i < 20; i++ { + userID := o.genUserID() + _, err := o.Database.GetUser(ctx, userID) + if err == nil { + continue + } else if dbutil.IsGormNotFound(err) { + req.User.UserID = userID + break + } else { + return nil, err + } + } + if req.User.UserID == "" { + return nil, errs.ErrInternalServer.Wrap("gen user id failed") + } + } + register := &chat2.Register{ UserID: req.User.UserID, DeviceID: req.DeviceID, @@ -279,23 +297,5 @@ func (o *chatSvr) checkTheUniqueness(ctx context.Context, req *chat.AddUserAccou return err } } - - if req.User.UserID == "" { - for i := 0; i < 20; i++ { - userID := o.genUserID() - _, err := o.Database.GetUser(ctx, userID) - if err == nil { - continue - } else if dbutil.IsGormNotFound(err) { - req.User.UserID = userID - break - } else { - return err - } - } - if req.User.UserID == "" { - return errs.ErrInternalServer.Wrap("gen user id failed") - } - } return nil } From 3e5aa69e66575982cffaa9455e27a5072652bcc4 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Fri, 15 Dec 2023 11:31:18 +0800 Subject: [PATCH 06/11] fix: del the config code getting from zk --- pkg/common/config/parse.go | 120 ++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 62 deletions(-) diff --git a/pkg/common/config/parse.go b/pkg/common/config/parse.go index c5e38b4ab..4c8208248 100644 --- a/pkg/common/config/parse.go +++ b/pkg/common/config/parse.go @@ -25,9 +25,6 @@ import ( "time" Constant "github.com/OpenIMSDK/chat/pkg/common/constant" - "github.com/OpenIMSDK/protocol/constant" - openKeeper "github.com/OpenIMSDK/tools/discoveryregistry/zookeeper" - "github.com/OpenIMSDK/tools/utils" "gopkg.in/yaml.v3" ) @@ -81,63 +78,63 @@ func InitConfig(configFile string) error { if err := yaml.NewDecoder(bytes.NewReader(data)).Decode(&Config); err != nil { return fmt.Errorf("parse loacl openIMConfig file error: %w", err) } - if Config.Envs.Discovery != "k8s" { - zk, err := openKeeper.NewClient(Config.Zookeeper.ZkAddr, Config.Zookeeper.Schema, - openKeeper.WithFreq(time.Hour), openKeeper.WithUserNameAndPassword(Config.Zookeeper.Username, - Config.Zookeeper.Password), openKeeper.WithRoundRobin(), openKeeper.WithTimeout(10), openKeeper.WithLogger(&zkLogger{})) - if err != nil { - return utils.Wrap(err, "conn zk error ") - } - defer zk.Close() - var openIMConfigData []byte - for i := 0; i < 100; i++ { - var err error - configData, err := zk.GetConfFromRegistry(constant.OpenIMCommonConfigKey) - if err != nil { - fmt.Printf("get zk config [%d] error: %v\n;envs.descoery=%s", i, err, Config.Envs.Discovery) - time.Sleep(time.Second) - continue - } - if len(configData) == 0 { - fmt.Printf("get zk config [%d] data is empty\n", i) - time.Sleep(time.Second) - continue - } - openIMConfigData = configData - } - if len(openIMConfigData) == 0 { - return errors.New("get zk config data failed") - } - if err := yaml.NewDecoder(bytes.NewReader(openIMConfigData)).Decode(&imConfig); err != nil { - return fmt.Errorf("parse zk openIMConfig: %w", err) - } - // 这里可以优化,可将其优化为结构体层面的赋值 - configFieldCopy(&Config.Mysql.Address, imConfig.Mysql.Address) - configFieldCopy(&Config.Mysql.Username, imConfig.Mysql.Username) - configFieldCopy(&Config.Mysql.Password, imConfig.Mysql.Password) - configFieldCopy(&Config.Mysql.Database, imConfig.Mysql.Database) - configFieldCopy(&Config.Mysql.MaxOpenConn, imConfig.Mysql.MaxOpenConn) - configFieldCopy(&Config.Mysql.MaxIdleConn, imConfig.Mysql.MaxIdleConn) - configFieldCopy(&Config.Mysql.MaxLifeTime, imConfig.Mysql.MaxLifeTime) - configFieldCopy(&Config.Mysql.LogLevel, imConfig.Mysql.LogLevel) - configFieldCopy(&Config.Mysql.SlowThreshold, imConfig.Mysql.SlowThreshold) - - configFieldCopy(&Config.Log.StorageLocation, imConfig.Log.StorageLocation) - configFieldCopy(&Config.Log.RotationTime, imConfig.Log.RotationTime) - configFieldCopy(&Config.Log.RemainRotationCount, imConfig.Log.RemainRotationCount) - configFieldCopy(&Config.Log.RemainLogLevel, imConfig.Log.RemainLogLevel) - configFieldCopy(&Config.Log.IsStdout, imConfig.Log.IsStdout) - configFieldCopy(&Config.Log.WithStack, imConfig.Log.WithStack) - configFieldCopy(&Config.Log.IsJson, imConfig.Log.IsJson) - - configFieldCopy(&Config.Secret, imConfig.Secret) - configFieldCopy(&Config.TokenPolicy.Expire, imConfig.TokenPolicy.Expire) - - // Redis - configFieldCopy(&Config.Redis.Address, imConfig.Redis.Address) - configFieldCopy(&Config.Redis.Password, imConfig.Redis.Password) - configFieldCopy(&Config.Redis.Username, imConfig.Redis.Username) - } + //if Config.Envs.Discovery != "k8s" { + // zk, err := openKeeper.NewClient(Config.Zookeeper.ZkAddr, Config.Zookeeper.Schema, + // openKeeper.WithFreq(time.Hour), openKeeper.WithUserNameAndPassword(Config.Zookeeper.Username, + // Config.Zookeeper.Password), openKeeper.WithRoundRobin(), openKeeper.WithTimeout(10), openKeeper.WithLogger(&zkLogger{})) + // if err != nil { + // return utils.Wrap(err, "conn zk error ") + // } + // defer zk.Close() + // var openIMConfigData []byte + // for i := 0; i < 100; i++ { + // var err error + // configData, err := zk.GetConfFromRegistry(constant.OpenIMCommonConfigKey) + // if err != nil { + // fmt.Printf("get zk config [%d] error: %v\n;envs.descoery=%s", i, err, Config.Envs.Discovery) + // time.Sleep(time.Second) + // continue + // } + // if len(configData) == 0 { + // fmt.Printf("get zk config [%d] data is empty\n", i) + // time.Sleep(time.Second) + // continue + // } + // openIMConfigData = configData + // } + // if len(openIMConfigData) == 0 { + // return errors.New("get zk config data failed") + // } + // if err := yaml.NewDecoder(bytes.NewReader(openIMConfigData)).Decode(&imConfig); err != nil { + // return fmt.Errorf("parse zk openIMConfig: %w", err) + // } + // // 这里可以优化,可将其优化为结构体层面的赋值 + // configFieldCopy(&Config.Mysql.Address, imConfig.Mysql.Address) + // configFieldCopy(&Config.Mysql.Username, imConfig.Mysql.Username) + // configFieldCopy(&Config.Mysql.Password, imConfig.Mysql.Password) + // configFieldCopy(&Config.Mysql.Database, imConfig.Mysql.Database) + // configFieldCopy(&Config.Mysql.MaxOpenConn, imConfig.Mysql.MaxOpenConn) + // configFieldCopy(&Config.Mysql.MaxIdleConn, imConfig.Mysql.MaxIdleConn) + // configFieldCopy(&Config.Mysql.MaxLifeTime, imConfig.Mysql.MaxLifeTime) + // configFieldCopy(&Config.Mysql.LogLevel, imConfig.Mysql.LogLevel) + // configFieldCopy(&Config.Mysql.SlowThreshold, imConfig.Mysql.SlowThreshold) + // + // configFieldCopy(&Config.Log.StorageLocation, imConfig.Log.StorageLocation) + // configFieldCopy(&Config.Log.RotationTime, imConfig.Log.RotationTime) + // configFieldCopy(&Config.Log.RemainRotationCount, imConfig.Log.RemainRotationCount) + // configFieldCopy(&Config.Log.RemainLogLevel, imConfig.Log.RemainLogLevel) + // configFieldCopy(&Config.Log.IsStdout, imConfig.Log.IsStdout) + // configFieldCopy(&Config.Log.WithStack, imConfig.Log.WithStack) + // configFieldCopy(&Config.Log.IsJson, imConfig.Log.IsJson) + // + // configFieldCopy(&Config.Secret, imConfig.Secret) + // configFieldCopy(&Config.TokenPolicy.Expire, imConfig.TokenPolicy.Expire) + // + // // Redis + // configFieldCopy(&Config.Redis.Address, imConfig.Redis.Address) + // configFieldCopy(&Config.Redis.Password, imConfig.Redis.Password) + // configFieldCopy(&Config.Redis.Username, imConfig.Redis.Username) + //} configData, err := yaml.Marshal(&Config) fmt.Printf("debug: %s\nconfig:\n%s\n", time.Now(), string(configData)) @@ -211,8 +208,7 @@ func CreateCatalogPath(path string) []string { // the parent is project(default) pa3 := filepath.Join(path3, Constant.ConfigPath) - return []string{pa1, pa2,pa3} - + return []string{pa1, pa2, pa3} } From 37c6d6e1470252dd250e9f214eed8dcccf18fc30 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Fri, 15 Dec 2023 15:01:14 +0800 Subject: [PATCH 07/11] fix: fix the initRedis --- config/config.yaml.template | 2 +- pkg/common/config/config.go | 4 +-- pkg/common/config/parse.go | 58 +------------------------------ pkg/common/db/cache/init_redis.go | 12 +++---- 4 files changed, 10 insertions(+), 66 deletions(-) diff --git a/config/config.yaml.template b/config/config.yaml.template index 12c63143b..4f2b215c9 100644 --- a/config/config.yaml.template +++ b/config/config.yaml.template @@ -109,5 +109,5 @@ openIMUrl: "http://127.0.0.1:10002" # OPENIM_SERVER_ADDRESS:API_OPENIM_PORT, U # Redis configuration - used for caching and session management redis: address: [ 127.0.0.1:16379 ] # REDIS_ADDRESS and REDIS_PORT, Redis server address and port - username: # REDIS_USERNAME, Username for Redis authentication + username: "" # REDIS_USERNAME, Username for Redis authentication password: openIM123 # REDIS_PASSWORD, Password for Redis diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 9e82793d5..b8579b2af 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -43,8 +43,8 @@ var Config struct { } `yaml:"rpc"` Redis struct { Address *[]string `yaml:"address"` - Username *string `yaml:"username"` - Password *string `yaml:"password"` + Username string `yaml:"username"` + Password string `yaml:"password"` } `yaml:"redis"` RpcPort struct { OpenImAdminPort []int `yaml:"openImAdminPort"` diff --git a/pkg/common/config/parse.go b/pkg/common/config/parse.go index 4c8208248..9ef118858 100644 --- a/pkg/common/config/parse.go +++ b/pkg/common/config/parse.go @@ -75,66 +75,10 @@ func InitConfig(configFile string) error { if err != nil { return fmt.Errorf("read loacl config file error: %w", err) } + if err := yaml.NewDecoder(bytes.NewReader(data)).Decode(&Config); err != nil { return fmt.Errorf("parse loacl openIMConfig file error: %w", err) } - //if Config.Envs.Discovery != "k8s" { - // zk, err := openKeeper.NewClient(Config.Zookeeper.ZkAddr, Config.Zookeeper.Schema, - // openKeeper.WithFreq(time.Hour), openKeeper.WithUserNameAndPassword(Config.Zookeeper.Username, - // Config.Zookeeper.Password), openKeeper.WithRoundRobin(), openKeeper.WithTimeout(10), openKeeper.WithLogger(&zkLogger{})) - // if err != nil { - // return utils.Wrap(err, "conn zk error ") - // } - // defer zk.Close() - // var openIMConfigData []byte - // for i := 0; i < 100; i++ { - // var err error - // configData, err := zk.GetConfFromRegistry(constant.OpenIMCommonConfigKey) - // if err != nil { - // fmt.Printf("get zk config [%d] error: %v\n;envs.descoery=%s", i, err, Config.Envs.Discovery) - // time.Sleep(time.Second) - // continue - // } - // if len(configData) == 0 { - // fmt.Printf("get zk config [%d] data is empty\n", i) - // time.Sleep(time.Second) - // continue - // } - // openIMConfigData = configData - // } - // if len(openIMConfigData) == 0 { - // return errors.New("get zk config data failed") - // } - // if err := yaml.NewDecoder(bytes.NewReader(openIMConfigData)).Decode(&imConfig); err != nil { - // return fmt.Errorf("parse zk openIMConfig: %w", err) - // } - // // 这里可以优化,可将其优化为结构体层面的赋值 - // configFieldCopy(&Config.Mysql.Address, imConfig.Mysql.Address) - // configFieldCopy(&Config.Mysql.Username, imConfig.Mysql.Username) - // configFieldCopy(&Config.Mysql.Password, imConfig.Mysql.Password) - // configFieldCopy(&Config.Mysql.Database, imConfig.Mysql.Database) - // configFieldCopy(&Config.Mysql.MaxOpenConn, imConfig.Mysql.MaxOpenConn) - // configFieldCopy(&Config.Mysql.MaxIdleConn, imConfig.Mysql.MaxIdleConn) - // configFieldCopy(&Config.Mysql.MaxLifeTime, imConfig.Mysql.MaxLifeTime) - // configFieldCopy(&Config.Mysql.LogLevel, imConfig.Mysql.LogLevel) - // configFieldCopy(&Config.Mysql.SlowThreshold, imConfig.Mysql.SlowThreshold) - // - // configFieldCopy(&Config.Log.StorageLocation, imConfig.Log.StorageLocation) - // configFieldCopy(&Config.Log.RotationTime, imConfig.Log.RotationTime) - // configFieldCopy(&Config.Log.RemainRotationCount, imConfig.Log.RemainRotationCount) - // configFieldCopy(&Config.Log.RemainLogLevel, imConfig.Log.RemainLogLevel) - // configFieldCopy(&Config.Log.IsStdout, imConfig.Log.IsStdout) - // configFieldCopy(&Config.Log.WithStack, imConfig.Log.WithStack) - // configFieldCopy(&Config.Log.IsJson, imConfig.Log.IsJson) - // - // configFieldCopy(&Config.Secret, imConfig.Secret) - // configFieldCopy(&Config.TokenPolicy.Expire, imConfig.TokenPolicy.Expire) - // - // // Redis - // configFieldCopy(&Config.Redis.Address, imConfig.Redis.Address) - // configFieldCopy(&Config.Redis.Password, imConfig.Redis.Password) - // configFieldCopy(&Config.Redis.Username, imConfig.Redis.Username) - //} configData, err := yaml.Marshal(&Config) fmt.Printf("debug: %s\nconfig:\n%s\n", time.Now(), string(configData)) diff --git a/pkg/common/db/cache/init_redis.go b/pkg/common/db/cache/init_redis.go index ad7a068f2..f42e93a80 100644 --- a/pkg/common/db/cache/init_redis.go +++ b/pkg/common/db/cache/init_redis.go @@ -42,18 +42,18 @@ func NewRedis() (redis.UniversalClient, error) { if len(*config.Config.Redis.Address) > 1 { rdb = redis.NewClusterClient(&redis.ClusterOptions{ Addrs: *config.Config.Redis.Address, - Username: *config.Config.Redis.Username, - Password: *config.Config.Redis.Password, // no password set + Username: config.Config.Redis.Username, + Password: config.Config.Redis.Password, // no password set PoolSize: 50, MaxRetries: maxRetry, }) } else { rdb = redis.NewClient(&redis.Options{ Addr: (*config.Config.Redis.Address)[0], - Username: *config.Config.Redis.Username, - Password: *config.Config.Redis.Password, // no password set - DB: 0, // use default DB - PoolSize: 100, // connection pool size + Username: config.Config.Redis.Username, + Password: config.Config.Redis.Password, // no password set + DB: 0, // use default DB + PoolSize: 100, // connection pool size MaxRetries: maxRetry, }) } From bf9ee0e730b7bdbcc6a88ebbf716f81ae00abe57 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Fri, 15 Dec 2023 18:11:11 +0800 Subject: [PATCH 08/11] fix: add the get Evn method in Config --- pkg/common/config/parse.go | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/pkg/common/config/parse.go b/pkg/common/config/parse.go index 9ef118858..8d6222011 100644 --- a/pkg/common/config/parse.go +++ b/pkg/common/config/parse.go @@ -22,6 +22,7 @@ import ( "os" "path/filepath" "runtime" + "strconv" "time" Constant "github.com/OpenIMSDK/chat/pkg/common/constant" @@ -80,6 +81,10 @@ func InitConfig(configFile string) error { return fmt.Errorf("parse loacl openIMConfig file error: %w", err) } + if err := configGetEnv(); err != nil { + return fmt.Errorf("get env error:%w", err) + } + configData, err := yaml.Marshal(&Config) fmt.Printf("debug: %s\nconfig:\n%s\n", time.Now(), string(configData)) if err != nil { @@ -216,3 +221,65 @@ func FlagParse() (string, int, bool, bool, error) { } return configFile, ginPort, hide, showVersion, nil } + +func configGetEnv() error { + Config.Envs.Discovery = getEnv("ENVS_DISCOVERY", Config.Envs.Discovery) + Config.Zookeeper.Schema = getEnv("ZOOKEEPER_SCHEMA", Config.Zookeeper.Schema) + Config.Zookeeper.Username = getEnv("ZOOKEEPER_USERNAME", Config.Zookeeper.Username) + Config.Zookeeper.Password = getEnv("ZOOKEEPER_PASSWORD", Config.Zookeeper.Password) + + Config.ChatApi.ListenIP = getEnv("CHAT_API_LISTEN_IP", Config.ChatApi.ListenIP) + Config.AdminApi.ListenIP = getEnv("ADMIN_API_LISTEN_IP", Config.AdminApi.ListenIP) + Config.Rpc.RegisterIP = getEnv("RPC_REGISTER_IP", Config.Rpc.RegisterIP) + Config.Rpc.ListenIP = getEnv("RPC_LISTEN_IP", Config.Rpc.ListenIP) + + Config.Mysql.Username = getEnvStringPoint("MYSQL_USERNAME", Config.Mysql.Username) + Config.Mysql.Password = getEnvStringPoint("MYSQL_PASSWORD", Config.Mysql.Password) + Config.Mysql.Database = getEnvStringPoint("MYSQL_DATABASE", Config.Mysql.Database) + + Config.Log.StorageLocation = getEnvStringPoint("LOG_STORAGE_LOCATION", Config.Log.StorageLocation) + + Config.Secret = getEnvStringPoint("SECRET", Config.Secret) + + Config.ProxyHeader = getEnv("PROXY_HEADER", Config.ProxyHeader) + Config.OpenIMUrl = getEnv("OPENIM_SERVER_ADDRESS", Config.OpenIMUrl) + + Config.Redis.Username = getEnv("REDIS_USERNAME", Config.Redis.Username) + Config.Redis.Password = getEnv("REDIS_PASSWORD", Config.Redis.Password) + + var err error + Config.TokenPolicy.Expire, err = getEnvIntPoint("TOKEN_EXPIRE", Config.TokenPolicy.Expire) + if err != nil { + return err + } + + return nil +} + +func getEnv(key, fallback string) string { + + if value, exists := os.LookupEnv(key); exists { + return value + } + + return fallback +} + +func getEnvStringPoint(key string, fallback *string) *string { + if value, exists := os.LookupEnv(key); exists { + return &value + } + return fallback +} + +func getEnvIntPoint(key string, fallback *int64) (*int64, error) { + if value, exists := os.LookupEnv(key); exists { + val, err := strconv.Atoi(value) + temp := int64(val) + if err != nil { + return nil, err + } + return &temp, nil + } + return fallback, nil +} \ No newline at end of file From 27550fdb451b503781833afa1ccecf6b41a2ade8 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Mon, 18 Dec 2023 10:03:31 +0800 Subject: [PATCH 09/11] fix: fix the config.yaml.template --- config/config.yaml.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml.template b/config/config.yaml.template index 4f2b215c9..12c63143b 100644 --- a/config/config.yaml.template +++ b/config/config.yaml.template @@ -109,5 +109,5 @@ openIMUrl: "http://127.0.0.1:10002" # OPENIM_SERVER_ADDRESS:API_OPENIM_PORT, U # Redis configuration - used for caching and session management redis: address: [ 127.0.0.1:16379 ] # REDIS_ADDRESS and REDIS_PORT, Redis server address and port - username: "" # REDIS_USERNAME, Username for Redis authentication + username: # REDIS_USERNAME, Username for Redis authentication password: openIM123 # REDIS_PASSWORD, Password for Redis From 5a40661cc9173849e0ef15af5ada7b9e12b38b76 Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Mon, 18 Dec 2023 10:20:00 +0800 Subject: [PATCH 10/11] fix: fix the env config --- deployments/templates/config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deployments/templates/config.yaml b/deployments/templates/config.yaml index f9f8ad2ea..41deda77a 100644 --- a/deployments/templates/config.yaml +++ b/deployments/templates/config.yaml @@ -26,12 +26,12 @@ zookeeper: # Configuration for the chat API service chatApi: - openImChatApiPort: [ 10008 ] # OPENIM_CHAT_API_PORT, Port for OpenIM Chat API + openImChatApiPort: [ 10008 ] # Port for OpenIM Chat API listenIP: # CHAT_API_LISTEN_IP, IP address to listen on for Chat API # Configuration for the admin API service adminApi: - openImAdminApiPort: [ 10009 ] # OPENIM_ADMIN_API_PORT, Port for OpenIM Admin API + openImAdminApiPort: [ 10009 ] # Port for OpenIM Admin API listenIP: # ADMIN_API_LISTEN_IP, IP address to listen on for Admin API # RPC configuration for service communication @@ -41,8 +41,8 @@ rpc: # Ports for RPC services rpcPort: - openImAdminPort: [ 30200 ] # OPENIM_ADMIN_PORT, Port for OpenIM Admin RPC service - openImChatPort: [ 30300 ] # OPENIM_CHAT_PORT, Port for OpenIM Chat RPC service + openImAdminPort: [ 30200 ] # Port for OpenIM Admin RPC service + openImChatPort: [ 30300 ] # Port for OpenIM Chat RPC service # Names for RPC services registration rpcRegisterName: From 2ec54f059838227f39c3f04313b7e429247e0a7b Mon Sep 17 00:00:00 2001 From: luhaoling <2198702716@qq.com> Date: Mon, 18 Dec 2023 11:59:34 +0800 Subject: [PATCH 11/11] feat: add some conponent env --- deployments/templates/config.yaml | 2 +- pkg/common/config/parse.go | 29 ++++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/deployments/templates/config.yaml b/deployments/templates/config.yaml index 41deda77a..80ec959e1 100644 --- a/deployments/templates/config.yaml +++ b/deployments/templates/config.yaml @@ -118,7 +118,7 @@ adminList: imAdmin: openIMAdmin # URL for OpenIM server -openIMUrl: "http://127.0.0.1:10002" # OPENIM_SERVER_ADDRESS:API_OPENIM_PORT, URL of the OpenIM server +openIMUrl: "http://127.0.0.1:10002" # OPENIM_SERVER_ADDRESS, URL of the OpenIM server # Redis configuration - used for caching and session management redis: diff --git a/pkg/common/config/parse.go b/pkg/common/config/parse.go index 8d6222011..854a3e56f 100644 --- a/pkg/common/config/parse.go +++ b/pkg/common/config/parse.go @@ -47,7 +47,6 @@ func readConfig(configFile string) ([]byte, error) { // if configFile != "" { // b, err := os.ReadFile(configFile) // if err == nil { // File exists and was read successfully - // fmt.Println("这里aaaaaaaa") // return b, nil // } // } @@ -227,6 +226,7 @@ func configGetEnv() error { Config.Zookeeper.Schema = getEnv("ZOOKEEPER_SCHEMA", Config.Zookeeper.Schema) Config.Zookeeper.Username = getEnv("ZOOKEEPER_USERNAME", Config.Zookeeper.Username) Config.Zookeeper.Password = getEnv("ZOOKEEPER_PASSWORD", Config.Zookeeper.Password) + Config.Zookeeper.ZkAddr = getArrEnv("ZOOKEEPER_ADDRESS", "ZOOKEEPER_PORT", Config.Zookeeper.ZkAddr) Config.ChatApi.ListenIP = getEnv("CHAT_API_LISTEN_IP", Config.ChatApi.ListenIP) Config.AdminApi.ListenIP = getEnv("ADMIN_API_LISTEN_IP", Config.AdminApi.ListenIP) @@ -236,16 +236,17 @@ func configGetEnv() error { Config.Mysql.Username = getEnvStringPoint("MYSQL_USERNAME", Config.Mysql.Username) Config.Mysql.Password = getEnvStringPoint("MYSQL_PASSWORD", Config.Mysql.Password) Config.Mysql.Database = getEnvStringPoint("MYSQL_DATABASE", Config.Mysql.Database) + Config.Mysql.Address = getArrPointEnv("MYSQL_ADDRESS", "MYSQL_PORT", Config.Mysql.Address) Config.Log.StorageLocation = getEnvStringPoint("LOG_STORAGE_LOCATION", Config.Log.StorageLocation) Config.Secret = getEnvStringPoint("SECRET", Config.Secret) - Config.ProxyHeader = getEnv("PROXY_HEADER", Config.ProxyHeader) Config.OpenIMUrl = getEnv("OPENIM_SERVER_ADDRESS", Config.OpenIMUrl) Config.Redis.Username = getEnv("REDIS_USERNAME", Config.Redis.Username) Config.Redis.Password = getEnv("REDIS_PASSWORD", Config.Redis.Password) + Config.Redis.Address = getArrPointEnv("REDIS_ADDRESS", "REDIS_PORT", Config.Redis.Address) var err error Config.TokenPolicy.Expire, err = getEnvIntPoint("TOKEN_EXPIRE", Config.TokenPolicy.Expire) @@ -256,12 +257,30 @@ func configGetEnv() error { return nil } -func getEnv(key, fallback string) string { +func getArrEnv(key1, key2 string, fallback []string) []string { + str1 := getEnv(key1, "") + str2 := getEnv(key2, "") + str := fmt.Sprintf("%s:%s", str1, str2) + if len(str) <= 1 { + return fallback + } + return []string{str} +} + +func getArrPointEnv(key1, key2 string, fallback *[]string) *[]string { + str1 := getEnv(key1, "") + str2 := getEnv(key2, "") + str := fmt.Sprintf("%s:%s", str1, str2) + if len(str) <= 1 { + return fallback + } + return &[]string{str} +} +func getEnv(key, fallback string) string { if value, exists := os.LookupEnv(key); exists { return value } - return fallback } @@ -282,4 +301,4 @@ func getEnvIntPoint(key string, fallback *int64) (*int64, error) { return &temp, nil } return fallback, nil -} \ No newline at end of file +}