// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.29.1 // protoc v4.22.0 // source: friend/friend.proto package friend import ( context "context" reflect "reflect" sync "sync" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" sdkws "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type GetPaginationFriendsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` } func (x *GetPaginationFriendsReq) Reset() { *x = GetPaginationFriendsReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationFriendsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationFriendsReq) ProtoMessage() {} func (x *GetPaginationFriendsReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetPaginationFriendsReq.ProtoReflect.Descriptor instead. func (*GetPaginationFriendsReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{0} } func (x *GetPaginationFriendsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } func (x *GetPaginationFriendsReq) GetUserID() string { if x != nil { return x.UserID } return "" } type GetPaginationFriendsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=friendsInfo,proto3" json:"friendsInfo"` Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *GetPaginationFriendsResp) Reset() { *x = GetPaginationFriendsResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationFriendsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationFriendsResp) ProtoMessage() {} func (x *GetPaginationFriendsResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetPaginationFriendsResp.ProtoReflect.Descriptor instead. func (*GetPaginationFriendsResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{1} } func (x *GetPaginationFriendsResp) GetFriendsInfo() []*sdkws.FriendInfo { if x != nil { return x.FriendsInfo } return nil } func (x *GetPaginationFriendsResp) GetTotal() int32 { if x != nil { return x.Total } return 0 } type ApplyToAddFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID"` ToUserID string `protobuf:"bytes,2,opt,name=toUserID,proto3" json:"toUserID"` ReqMsg string `protobuf:"bytes,3,opt,name=reqMsg,proto3" json:"reqMsg"` Ex string `protobuf:"bytes,4,opt,name=ex,proto3" json:"ex"` } func (x *ApplyToAddFriendReq) Reset() { *x = ApplyToAddFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ApplyToAddFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApplyToAddFriendReq) ProtoMessage() {} func (x *ApplyToAddFriendReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 ApplyToAddFriendReq.ProtoReflect.Descriptor instead. func (*ApplyToAddFriendReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{2} } func (x *ApplyToAddFriendReq) GetFromUserID() string { if x != nil { return x.FromUserID } return "" } func (x *ApplyToAddFriendReq) GetToUserID() string { if x != nil { return x.ToUserID } return "" } func (x *ApplyToAddFriendReq) GetReqMsg() string { if x != nil { return x.ReqMsg } return "" } func (x *ApplyToAddFriendReq) GetEx() string { if x != nil { return x.Ex } return "" } type ApplyToAddFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ApplyToAddFriendResp) Reset() { *x = ApplyToAddFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ApplyToAddFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApplyToAddFriendResp) ProtoMessage() {} func (x *ApplyToAddFriendResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 ApplyToAddFriendResp.ProtoReflect.Descriptor instead. func (*ApplyToAddFriendResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{3} } type ImportFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"` FriendUserIDs []string `protobuf:"bytes,2,rep,name=friendUserIDs,proto3" json:"friendUserIDs"` } func (x *ImportFriendReq) Reset() { *x = ImportFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ImportFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ImportFriendReq) ProtoMessage() {} func (x *ImportFriendReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ImportFriendReq.ProtoReflect.Descriptor instead. func (*ImportFriendReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{4} } func (x *ImportFriendReq) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *ImportFriendReq) GetFriendUserIDs() []string { if x != nil { return x.FriendUserIDs } return nil } type ImportFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ImportFriendResp) Reset() { *x = ImportFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ImportFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ImportFriendResp) ProtoMessage() {} func (x *ImportFriendResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ImportFriendResp.ProtoReflect.Descriptor instead. func (*ImportFriendResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{5} } type GetPaginationFriendsApplyToReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *GetPaginationFriendsApplyToReq) Reset() { *x = GetPaginationFriendsApplyToReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationFriendsApplyToReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationFriendsApplyToReq) ProtoMessage() {} func (x *GetPaginationFriendsApplyToReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetPaginationFriendsApplyToReq.ProtoReflect.Descriptor instead. func (*GetPaginationFriendsApplyToReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{6} } func (x *GetPaginationFriendsApplyToReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetPaginationFriendsApplyToReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetPaginationFriendsApplyToResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendRequests []*sdkws.FriendRequest `protobuf:"bytes,1,rep,name=FriendRequests,proto3" json:"FriendRequests"` Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *GetPaginationFriendsApplyToResp) Reset() { *x = GetPaginationFriendsApplyToResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationFriendsApplyToResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationFriendsApplyToResp) ProtoMessage() {} func (x *GetPaginationFriendsApplyToResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetPaginationFriendsApplyToResp.ProtoReflect.Descriptor instead. func (*GetPaginationFriendsApplyToResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{7} } func (x *GetPaginationFriendsApplyToResp) GetFriendRequests() []*sdkws.FriendRequest { if x != nil { return x.FriendRequests } return nil } func (x *GetPaginationFriendsApplyToResp) GetTotal() int32 { if x != nil { return x.Total } return 0 } type GetDesignatedFriendsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"` FriendUserIDs []string `protobuf:"bytes,2,rep,name=friendUserIDs,proto3" json:"friendUserIDs"` } func (x *GetDesignatedFriendsReq) Reset() { *x = GetDesignatedFriendsReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetDesignatedFriendsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetDesignatedFriendsReq) ProtoMessage() {} func (x *GetDesignatedFriendsReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetDesignatedFriendsReq.ProtoReflect.Descriptor instead. func (*GetDesignatedFriendsReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{8} } func (x *GetDesignatedFriendsReq) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *GetDesignatedFriendsReq) GetFriendUserIDs() []string { if x != nil { return x.FriendUserIDs } return nil } type GetDesignatedFriendsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=friendsInfo,proto3" json:"friendsInfo"` } func (x *GetDesignatedFriendsResp) Reset() { *x = GetDesignatedFriendsResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetDesignatedFriendsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetDesignatedFriendsResp) ProtoMessage() {} func (x *GetDesignatedFriendsResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 GetDesignatedFriendsResp.ProtoReflect.Descriptor instead. func (*GetDesignatedFriendsResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{9} } func (x *GetDesignatedFriendsResp) GetFriendsInfo() []*sdkws.FriendInfo { if x != nil { return x.FriendsInfo } return nil } type AddBlackReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"` BlackUserID string `protobuf:"bytes,2,opt,name=blackUserID,proto3" json:"blackUserID"` } func (x *AddBlackReq) Reset() { *x = AddBlackReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddBlackReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddBlackReq) ProtoMessage() {} func (x *AddBlackReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 AddBlackReq.ProtoReflect.Descriptor instead. func (*AddBlackReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{10} } func (x *AddBlackReq) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *AddBlackReq) GetBlackUserID() string { if x != nil { return x.BlackUserID } return "" } type AddBlackResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddBlackResp) Reset() { *x = AddBlackResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddBlackResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddBlackResp) ProtoMessage() {} func (x *AddBlackResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 AddBlackResp.ProtoReflect.Descriptor instead. func (*AddBlackResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{11} } type RemoveBlackReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"` BlackUserID string `protobuf:"bytes,2,opt,name=blackUserID,proto3" json:"blackUserID"` } func (x *RemoveBlackReq) Reset() { *x = RemoveBlackReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveBlackReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveBlackReq) ProtoMessage() {} func (x *RemoveBlackReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 RemoveBlackReq.ProtoReflect.Descriptor instead. func (*RemoveBlackReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{12} } func (x *RemoveBlackReq) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *RemoveBlackReq) GetBlackUserID() string { if x != nil { return x.BlackUserID } return "" } type RemoveBlackResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RemoveBlackResp) Reset() { *x = RemoveBlackResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveBlackResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveBlackResp) ProtoMessage() {} func (x *RemoveBlackResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 RemoveBlackResp.ProtoReflect.Descriptor instead. func (*RemoveBlackResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{13} } type GetPaginationBlacksReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *GetPaginationBlacksReq) Reset() { *x = GetPaginationBlacksReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationBlacksReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationBlacksReq) ProtoMessage() {} func (x *GetPaginationBlacksReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 GetPaginationBlacksReq.ProtoReflect.Descriptor instead. func (*GetPaginationBlacksReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{14} } func (x *GetPaginationBlacksReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetPaginationBlacksReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetPaginationBlacksResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Blacks []*sdkws.BlackInfo `protobuf:"bytes,1,rep,name=blacks,proto3" json:"blacks"` Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *GetPaginationBlacksResp) Reset() { *x = GetPaginationBlacksResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationBlacksResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationBlacksResp) ProtoMessage() {} func (x *GetPaginationBlacksResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetPaginationBlacksResp.ProtoReflect.Descriptor instead. func (*GetPaginationBlacksResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{15} } func (x *GetPaginationBlacksResp) GetBlacks() []*sdkws.BlackInfo { if x != nil { return x.Blacks } return nil } func (x *GetPaginationBlacksResp) GetTotal() int32 { if x != nil { return x.Total } return 0 } type IsFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID1 string `protobuf:"bytes,1,opt,name=userID1,proto3" json:"userID1"` UserID2 string `protobuf:"bytes,2,opt,name=userID2,proto3" json:"userID2"` } func (x *IsFriendReq) Reset() { *x = IsFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsFriendReq) ProtoMessage() {} func (x *IsFriendReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 IsFriendReq.ProtoReflect.Descriptor instead. func (*IsFriendReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{16} } func (x *IsFriendReq) GetUserID1() string { if x != nil { return x.UserID1 } return "" } func (x *IsFriendReq) GetUserID2() string { if x != nil { return x.UserID2 } return "" } type IsFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InUser1Friends bool `protobuf:"varint,1,opt,name=inUser1Friends,proto3" json:"inUser1Friends"` //如果userID2在userID1的好友列表中 true InUser2Friends bool `protobuf:"varint,2,opt,name=inUser2Friends,proto3" json:"inUser2Friends"` //如果userID1在userID2的好友列表中 true } func (x *IsFriendResp) Reset() { *x = IsFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsFriendResp) ProtoMessage() {} func (x *IsFriendResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_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 IsFriendResp.ProtoReflect.Descriptor instead. func (*IsFriendResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{17} } func (x *IsFriendResp) GetInUser1Friends() bool { if x != nil { return x.InUser1Friends } return false } func (x *IsFriendResp) GetInUser2Friends() bool { if x != nil { return x.InUser2Friends } return false } type IsBlackReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID1 string `protobuf:"bytes,1,opt,name=userID1,proto3" json:"userID1"` UserID2 string `protobuf:"bytes,2,opt,name=userID2,proto3" json:"userID2"` } func (x *IsBlackReq) Reset() { *x = IsBlackReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsBlackReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsBlackReq) ProtoMessage() {} func (x *IsBlackReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use IsBlackReq.ProtoReflect.Descriptor instead. func (*IsBlackReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{18} } func (x *IsBlackReq) GetUserID1() string { if x != nil { return x.UserID1 } return "" } func (x *IsBlackReq) GetUserID2() string { if x != nil { return x.UserID2 } return "" } type IsBlackResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InUser1Blacks bool `protobuf:"varint,1,opt,name=inUser1Blacks,proto3" json:"inUser1Blacks"` //如果userID2在userID1的黑名单列表中 true InUser2Blacks bool `protobuf:"varint,2,opt,name=inUser2Blacks,proto3" json:"inUser2Blacks"` //如果userID1在userID2的黑名单列表中 true } func (x *IsBlackResp) Reset() { *x = IsBlackResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IsBlackResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*IsBlackResp) ProtoMessage() {} func (x *IsBlackResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use IsBlackResp.ProtoReflect.Descriptor instead. func (*IsBlackResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{19} } func (x *IsBlackResp) GetInUser1Blacks() bool { if x != nil { return x.InUser1Blacks } return false } func (x *IsBlackResp) GetInUser2Blacks() bool { if x != nil { return x.InUser2Blacks } return false } type DeleteFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"` FriendUserID string `protobuf:"bytes,2,opt,name=friendUserID,proto3" json:"friendUserID"` } func (x *DeleteFriendReq) Reset() { *x = DeleteFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFriendReq) ProtoMessage() {} func (x *DeleteFriendReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteFriendReq.ProtoReflect.Descriptor instead. func (*DeleteFriendReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{20} } func (x *DeleteFriendReq) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *DeleteFriendReq) GetFriendUserID() string { if x != nil { return x.FriendUserID } return "" } type DeleteFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteFriendResp) Reset() { *x = DeleteFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFriendResp) ProtoMessage() {} func (x *DeleteFriendResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteFriendResp.ProtoReflect.Descriptor instead. func (*DeleteFriendResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{21} } // process type RespondFriendApplyReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID"` //主动发起的申请者 ToUserID string `protobuf:"bytes,2,opt,name=toUserID,proto3" json:"toUserID"` //被动添加者 HandleResult int32 `protobuf:"varint,3,opt,name=handleResult,proto3" json:"handleResult"` HandleMsg string `protobuf:"bytes,4,opt,name=handleMsg,proto3" json:"handleMsg"` } func (x *RespondFriendApplyReq) Reset() { *x = RespondFriendApplyReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RespondFriendApplyReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*RespondFriendApplyReq) ProtoMessage() {} func (x *RespondFriendApplyReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[22] 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 RespondFriendApplyReq.ProtoReflect.Descriptor instead. func (*RespondFriendApplyReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{22} } func (x *RespondFriendApplyReq) GetFromUserID() string { if x != nil { return x.FromUserID } return "" } func (x *RespondFriendApplyReq) GetToUserID() string { if x != nil { return x.ToUserID } return "" } func (x *RespondFriendApplyReq) GetHandleResult() int32 { if x != nil { return x.HandleResult } return 0 } func (x *RespondFriendApplyReq) GetHandleMsg() string { if x != nil { return x.HandleMsg } return "" } type RespondFriendApplyResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RespondFriendApplyResp) Reset() { *x = RespondFriendApplyResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RespondFriendApplyResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*RespondFriendApplyResp) ProtoMessage() {} func (x *RespondFriendApplyResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[23] 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 RespondFriendApplyResp.ProtoReflect.Descriptor instead. func (*RespondFriendApplyResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{23} } type SetFriendRemarkReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"` FriendUserID string `protobuf:"bytes,2,opt,name=friendUserID,proto3" json:"friendUserID"` Remark string `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark"` } func (x *SetFriendRemarkReq) Reset() { *x = SetFriendRemarkReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetFriendRemarkReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetFriendRemarkReq) ProtoMessage() {} func (x *SetFriendRemarkReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[24] 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 SetFriendRemarkReq.ProtoReflect.Descriptor instead. func (*SetFriendRemarkReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{24} } func (x *SetFriendRemarkReq) GetOwnerUserID() string { if x != nil { return x.OwnerUserID } return "" } func (x *SetFriendRemarkReq) GetFriendUserID() string { if x != nil { return x.FriendUserID } return "" } func (x *SetFriendRemarkReq) GetRemark() string { if x != nil { return x.Remark } return "" } type SetFriendRemarkResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetFriendRemarkResp) Reset() { *x = SetFriendRemarkResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetFriendRemarkResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetFriendRemarkResp) ProtoMessage() {} func (x *SetFriendRemarkResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[25] 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 SetFriendRemarkResp.ProtoReflect.Descriptor instead. func (*SetFriendRemarkResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{25} } type GetPaginationFriendsApplyFromReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *GetPaginationFriendsApplyFromReq) Reset() { *x = GetPaginationFriendsApplyFromReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationFriendsApplyFromReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationFriendsApplyFromReq) ProtoMessage() {} func (x *GetPaginationFriendsApplyFromReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[26] 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 GetPaginationFriendsApplyFromReq.ProtoReflect.Descriptor instead. func (*GetPaginationFriendsApplyFromReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{26} } func (x *GetPaginationFriendsApplyFromReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetPaginationFriendsApplyFromReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetPaginationFriendsApplyFromResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendRequests []*sdkws.FriendRequest `protobuf:"bytes,1,rep,name=friendRequests,proto3" json:"friendRequests"` Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *GetPaginationFriendsApplyFromResp) Reset() { *x = GetPaginationFriendsApplyFromResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPaginationFriendsApplyFromResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPaginationFriendsApplyFromResp) ProtoMessage() {} func (x *GetPaginationFriendsApplyFromResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[27] 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 GetPaginationFriendsApplyFromResp.ProtoReflect.Descriptor instead. func (*GetPaginationFriendsApplyFromResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{27} } func (x *GetPaginationFriendsApplyFromResp) GetFriendRequests() []*sdkws.FriendRequest { if x != nil { return x.FriendRequests } return nil } func (x *GetPaginationFriendsApplyFromResp) GetTotal() int32 { if x != nil { return x.Total } return 0 } type GetFriendIDsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` } func (x *GetFriendIDsReq) Reset() { *x = GetFriendIDsReq{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFriendIDsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFriendIDsReq) ProtoMessage() {} func (x *GetFriendIDsReq) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[28] 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 GetFriendIDsReq.ProtoReflect.Descriptor instead. func (*GetFriendIDsReq) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{28} } func (x *GetFriendIDsReq) GetUserID() string { if x != nil { return x.UserID } return "" } type GetFriendIDsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FriendIDs []string `protobuf:"bytes,1,rep,name=friendIDs,proto3" json:"friendIDs"` } func (x *GetFriendIDsResp) Reset() { *x = GetFriendIDsResp{} if protoimpl.UnsafeEnabled { mi := &file_friend_friend_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFriendIDsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFriendIDsResp) ProtoMessage() {} func (x *GetFriendIDsResp) ProtoReflect() protoreflect.Message { mi := &file_friend_friend_proto_msgTypes[29] 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 GetFriendIDsResp.ProtoReflect.Descriptor instead. func (*GetFriendIDsResp) Descriptor() ([]byte, []int) { return file_friend_friend_proto_rawDescGZIP(), []int{29} } func (x *GetFriendIDsResp) GetFriendIDs() []string { if x != nil { return x.FriendIDs } return nil } var File_friend_friend_proto protoreflect.FileDescriptor var file_friend_friend_proto_rawDesc = []byte{ 0x0a, 0x13, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x1a, 0x11, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2f, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x78, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 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, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x72, 0x0a, 0x18, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x79, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x16, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x0a, 0x1e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 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, 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, 0x82, 0x01, 0x0a, 0x1f, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x61, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x5c, 0x0a, 0x18, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x51, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x0e, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x11, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x0a, 0x16, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 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, 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, 0x66, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x41, 0x0a, 0x0b, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x22, 0x5e, 0x0a, 0x0c, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x31, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x31, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x22, 0x40, 0x0a, 0x0a, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x22, 0x59, 0x0a, 0x0b, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x31, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x31, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x22, 0x57, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x12, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x72, 0x0a, 0x12, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x15, 0x0a, 0x13, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x81, 0x01, 0x0a, 0x20, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 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, 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, 0x84, 0x01, 0x0a, 0x21, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x29, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 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, 0x30, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x32, 0xa0, 0x0c, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x67, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x88, 0x01, 0x0a, 0x1b, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x34, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x1d, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x35, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x36, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x08, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x07, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x70, 0x0a, 0x13, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6d, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0d, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x2d, 0x49, 0x4d, 0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_friend_friend_proto_rawDescOnce sync.Once file_friend_friend_proto_rawDescData = file_friend_friend_proto_rawDesc ) func file_friend_friend_proto_rawDescGZIP() []byte { file_friend_friend_proto_rawDescOnce.Do(func() { file_friend_friend_proto_rawDescData = protoimpl.X.CompressGZIP(file_friend_friend_proto_rawDescData) }) return file_friend_friend_proto_rawDescData } var file_friend_friend_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_friend_friend_proto_goTypes = []interface{}{ (*GetPaginationFriendsReq)(nil), // 0: OpenIMServer.friend.getPaginationFriendsReq (*GetPaginationFriendsResp)(nil), // 1: OpenIMServer.friend.getPaginationFriendsResp (*ApplyToAddFriendReq)(nil), // 2: OpenIMServer.friend.applyToAddFriendReq (*ApplyToAddFriendResp)(nil), // 3: OpenIMServer.friend.applyToAddFriendResp (*ImportFriendReq)(nil), // 4: OpenIMServer.friend.importFriendReq (*ImportFriendResp)(nil), // 5: OpenIMServer.friend.importFriendResp (*GetPaginationFriendsApplyToReq)(nil), // 6: OpenIMServer.friend.getPaginationFriendsApplyToReq (*GetPaginationFriendsApplyToResp)(nil), // 7: OpenIMServer.friend.getPaginationFriendsApplyToResp (*GetDesignatedFriendsReq)(nil), // 8: OpenIMServer.friend.getDesignatedFriendsReq (*GetDesignatedFriendsResp)(nil), // 9: OpenIMServer.friend.getDesignatedFriendsResp (*AddBlackReq)(nil), // 10: OpenIMServer.friend.addBlackReq (*AddBlackResp)(nil), // 11: OpenIMServer.friend.addBlackResp (*RemoveBlackReq)(nil), // 12: OpenIMServer.friend.removeBlackReq (*RemoveBlackResp)(nil), // 13: OpenIMServer.friend.removeBlackResp (*GetPaginationBlacksReq)(nil), // 14: OpenIMServer.friend.getPaginationBlacksReq (*GetPaginationBlacksResp)(nil), // 15: OpenIMServer.friend.getPaginationBlacksResp (*IsFriendReq)(nil), // 16: OpenIMServer.friend.isFriendReq (*IsFriendResp)(nil), // 17: OpenIMServer.friend.isFriendResp (*IsBlackReq)(nil), // 18: OpenIMServer.friend.isBlackReq (*IsBlackResp)(nil), // 19: OpenIMServer.friend.isBlackResp (*DeleteFriendReq)(nil), // 20: OpenIMServer.friend.deleteFriendReq (*DeleteFriendResp)(nil), // 21: OpenIMServer.friend.deleteFriendResp (*RespondFriendApplyReq)(nil), // 22: OpenIMServer.friend.respondFriendApplyReq (*RespondFriendApplyResp)(nil), // 23: OpenIMServer.friend.respondFriendApplyResp (*SetFriendRemarkReq)(nil), // 24: OpenIMServer.friend.setFriendRemarkReq (*SetFriendRemarkResp)(nil), // 25: OpenIMServer.friend.setFriendRemarkResp (*GetPaginationFriendsApplyFromReq)(nil), // 26: OpenIMServer.friend.getPaginationFriendsApplyFromReq (*GetPaginationFriendsApplyFromResp)(nil), // 27: OpenIMServer.friend.getPaginationFriendsApplyFromResp (*GetFriendIDsReq)(nil), // 28: OpenIMServer.friend.getFriendIDsReq (*GetFriendIDsResp)(nil), // 29: OpenIMServer.friend.getFriendIDsResp (*sdkws.RequestPagination)(nil), // 30: OpenIMServer.sdkws.RequestPagination (*sdkws.FriendInfo)(nil), // 31: OpenIMServer.sdkws.FriendInfo (*sdkws.FriendRequest)(nil), // 32: OpenIMServer.sdkws.FriendRequest (*sdkws.BlackInfo)(nil), // 33: OpenIMServer.sdkws.BlackInfo } var file_friend_friend_proto_depIdxs = []int32{ 30, // 0: OpenIMServer.friend.getPaginationFriendsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination 31, // 1: OpenIMServer.friend.getPaginationFriendsResp.friendsInfo:type_name -> OpenIMServer.sdkws.FriendInfo 30, // 2: OpenIMServer.friend.getPaginationFriendsApplyToReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination 32, // 3: OpenIMServer.friend.getPaginationFriendsApplyToResp.FriendRequests:type_name -> OpenIMServer.sdkws.FriendRequest 31, // 4: OpenIMServer.friend.getDesignatedFriendsResp.friendsInfo:type_name -> OpenIMServer.sdkws.FriendInfo 30, // 5: OpenIMServer.friend.getPaginationBlacksReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination 33, // 6: OpenIMServer.friend.getPaginationBlacksResp.blacks:type_name -> OpenIMServer.sdkws.BlackInfo 30, // 7: OpenIMServer.friend.getPaginationFriendsApplyFromReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination 32, // 8: OpenIMServer.friend.getPaginationFriendsApplyFromResp.friendRequests:type_name -> OpenIMServer.sdkws.FriendRequest 2, // 9: OpenIMServer.friend.friend.applyToAddFriend:input_type -> OpenIMServer.friend.applyToAddFriendReq 6, // 10: OpenIMServer.friend.friend.getPaginationFriendsApplyTo:input_type -> OpenIMServer.friend.getPaginationFriendsApplyToReq 26, // 11: OpenIMServer.friend.friend.getPaginationFriendsApplyFrom:input_type -> OpenIMServer.friend.getPaginationFriendsApplyFromReq 10, // 12: OpenIMServer.friend.friend.addBlack:input_type -> OpenIMServer.friend.addBlackReq 12, // 13: OpenIMServer.friend.friend.removeBlack:input_type -> OpenIMServer.friend.removeBlackReq 16, // 14: OpenIMServer.friend.friend.isFriend:input_type -> OpenIMServer.friend.isFriendReq 18, // 15: OpenIMServer.friend.friend.isBlack:input_type -> OpenIMServer.friend.isBlackReq 14, // 16: OpenIMServer.friend.friend.getPaginationBlacks:input_type -> OpenIMServer.friend.getPaginationBlacksReq 20, // 17: OpenIMServer.friend.friend.deleteFriend:input_type -> OpenIMServer.friend.deleteFriendReq 22, // 18: OpenIMServer.friend.friend.respondFriendApply:input_type -> OpenIMServer.friend.respondFriendApplyReq 24, // 19: OpenIMServer.friend.friend.setFriendRemark:input_type -> OpenIMServer.friend.setFriendRemarkReq 4, // 20: OpenIMServer.friend.friend.importFriends:input_type -> OpenIMServer.friend.importFriendReq 8, // 21: OpenIMServer.friend.friend.getDesignatedFriends:input_type -> OpenIMServer.friend.getDesignatedFriendsReq 0, // 22: OpenIMServer.friend.friend.getPaginationFriends:input_type -> OpenIMServer.friend.getPaginationFriendsReq 28, // 23: OpenIMServer.friend.friend.getFriendIDs:input_type -> OpenIMServer.friend.getFriendIDsReq 3, // 24: OpenIMServer.friend.friend.applyToAddFriend:output_type -> OpenIMServer.friend.applyToAddFriendResp 7, // 25: OpenIMServer.friend.friend.getPaginationFriendsApplyTo:output_type -> OpenIMServer.friend.getPaginationFriendsApplyToResp 27, // 26: OpenIMServer.friend.friend.getPaginationFriendsApplyFrom:output_type -> OpenIMServer.friend.getPaginationFriendsApplyFromResp 11, // 27: OpenIMServer.friend.friend.addBlack:output_type -> OpenIMServer.friend.addBlackResp 13, // 28: OpenIMServer.friend.friend.removeBlack:output_type -> OpenIMServer.friend.removeBlackResp 17, // 29: OpenIMServer.friend.friend.isFriend:output_type -> OpenIMServer.friend.isFriendResp 19, // 30: OpenIMServer.friend.friend.isBlack:output_type -> OpenIMServer.friend.isBlackResp 15, // 31: OpenIMServer.friend.friend.getPaginationBlacks:output_type -> OpenIMServer.friend.getPaginationBlacksResp 21, // 32: OpenIMServer.friend.friend.deleteFriend:output_type -> OpenIMServer.friend.deleteFriendResp 23, // 33: OpenIMServer.friend.friend.respondFriendApply:output_type -> OpenIMServer.friend.respondFriendApplyResp 25, // 34: OpenIMServer.friend.friend.setFriendRemark:output_type -> OpenIMServer.friend.setFriendRemarkResp 5, // 35: OpenIMServer.friend.friend.importFriends:output_type -> OpenIMServer.friend.importFriendResp 9, // 36: OpenIMServer.friend.friend.getDesignatedFriends:output_type -> OpenIMServer.friend.getDesignatedFriendsResp 1, // 37: OpenIMServer.friend.friend.getPaginationFriends:output_type -> OpenIMServer.friend.getPaginationFriendsResp 29, // 38: OpenIMServer.friend.friend.getFriendIDs:output_type -> OpenIMServer.friend.getFriendIDsResp 24, // [24:39] is the sub-list for method output_type 9, // [9:24] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name 9, // [9:9] is the sub-list for extension extendee 0, // [0:9] is the sub-list for field type_name } func init() { file_friend_friend_proto_init() } func file_friend_friend_proto_init() { if File_friend_friend_proto != nil { return } if !protoimpl.UnsafeEnabled { file_friend_friend_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationFriendsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationFriendsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApplyToAddFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApplyToAddFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationFriendsApplyToReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationFriendsApplyToResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDesignatedFriendsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDesignatedFriendsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddBlackReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddBlackResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveBlackReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveBlackResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationBlacksReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationBlacksResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsBlackReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IsBlackResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RespondFriendApplyReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RespondFriendApplyResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetFriendRemarkReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetFriendRemarkResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationFriendsApplyFromReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPaginationFriendsApplyFromResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFriendIDsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_friend_friend_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFriendIDsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_friend_friend_proto_rawDesc, NumEnums: 0, NumMessages: 30, NumExtensions: 0, NumServices: 1, }, GoTypes: file_friend_friend_proto_goTypes, DependencyIndexes: file_friend_friend_proto_depIdxs, MessageInfos: file_friend_friend_proto_msgTypes, }.Build() File_friend_friend_proto = out.File file_friend_friend_proto_rawDesc = nil file_friend_friend_proto_goTypes = nil file_friend_friend_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // FriendClient is the client API for Friend service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type FriendClient interface { // 申请加好友 ApplyToAddFriend(ctx context.Context, in *ApplyToAddFriendReq, opts ...grpc.CallOption) (*ApplyToAddFriendResp, error) // 获取收到的好友申请列表 GetPaginationFriendsApplyTo(ctx context.Context, in *GetPaginationFriendsApplyToReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyToResp, error) // 获取主动发出去的好友申请列表 GetPaginationFriendsApplyFrom(ctx context.Context, in *GetPaginationFriendsApplyFromReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyFromResp, error) // 添加黑名单 AddBlack(ctx context.Context, in *AddBlackReq, opts ...grpc.CallOption) (*AddBlackResp, error) // 移除黑名单 RemoveBlack(ctx context.Context, in *RemoveBlackReq, opts ...grpc.CallOption) (*RemoveBlackResp, error) // 判断是否好友关系 IsFriend(ctx context.Context, in *IsFriendReq, opts ...grpc.CallOption) (*IsFriendResp, error) // 判断是否在黑名单中 IsBlack(ctx context.Context, in *IsBlackReq, opts ...grpc.CallOption) (*IsBlackResp, error) // 获取黑名单列表 GetPaginationBlacks(ctx context.Context, in *GetPaginationBlacksReq, opts ...grpc.CallOption) (*GetPaginationBlacksResp, error) // 删除好友 DeleteFriend(ctx context.Context, in *DeleteFriendReq, opts ...grpc.CallOption) (*DeleteFriendResp, error) // 对好友申请响应(同意或拒绝) RespondFriendApply(ctx context.Context, in *RespondFriendApplyReq, opts ...grpc.CallOption) (*RespondFriendApplyResp, error) // 设置好友备注 SetFriendRemark(ctx context.Context, in *SetFriendRemarkReq, opts ...grpc.CallOption) (*SetFriendRemarkResp, error) // 导入好友关系 ImportFriends(ctx context.Context, in *ImportFriendReq, opts ...grpc.CallOption) (*ImportFriendResp, error) // 翻页获取好友列表 无结果不返回错误 GetDesignatedFriends(ctx context.Context, in *GetDesignatedFriendsReq, opts ...grpc.CallOption) (*GetDesignatedFriendsResp, error) // 获取指定好友信息 有id不存在也返回错误 GetPaginationFriends(ctx context.Context, in *GetPaginationFriendsReq, opts ...grpc.CallOption) (*GetPaginationFriendsResp, error) // 获取好友ID列表 GetFriendIDs(ctx context.Context, in *GetFriendIDsReq, opts ...grpc.CallOption) (*GetFriendIDsResp, error) } type friendClient struct { cc grpc.ClientConnInterface } func NewFriendClient(cc grpc.ClientConnInterface) FriendClient { return &friendClient{cc} } func (c *friendClient) ApplyToAddFriend(ctx context.Context, in *ApplyToAddFriendReq, opts ...grpc.CallOption) (*ApplyToAddFriendResp, error) { out := new(ApplyToAddFriendResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/applyToAddFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) GetPaginationFriendsApplyTo(ctx context.Context, in *GetPaginationFriendsApplyToReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyToResp, error) { out := new(GetPaginationFriendsApplyToResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationFriendsApplyTo", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) GetPaginationFriendsApplyFrom(ctx context.Context, in *GetPaginationFriendsApplyFromReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyFromResp, error) { out := new(GetPaginationFriendsApplyFromResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationFriendsApplyFrom", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) AddBlack(ctx context.Context, in *AddBlackReq, opts ...grpc.CallOption) (*AddBlackResp, error) { out := new(AddBlackResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/addBlack", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) RemoveBlack(ctx context.Context, in *RemoveBlackReq, opts ...grpc.CallOption) (*RemoveBlackResp, error) { out := new(RemoveBlackResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/removeBlack", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) IsFriend(ctx context.Context, in *IsFriendReq, opts ...grpc.CallOption) (*IsFriendResp, error) { out := new(IsFriendResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/isFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) IsBlack(ctx context.Context, in *IsBlackReq, opts ...grpc.CallOption) (*IsBlackResp, error) { out := new(IsBlackResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/isBlack", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) GetPaginationBlacks(ctx context.Context, in *GetPaginationBlacksReq, opts ...grpc.CallOption) (*GetPaginationBlacksResp, error) { out := new(GetPaginationBlacksResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationBlacks", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) DeleteFriend(ctx context.Context, in *DeleteFriendReq, opts ...grpc.CallOption) (*DeleteFriendResp, error) { out := new(DeleteFriendResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/deleteFriend", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) RespondFriendApply(ctx context.Context, in *RespondFriendApplyReq, opts ...grpc.CallOption) (*RespondFriendApplyResp, error) { out := new(RespondFriendApplyResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/respondFriendApply", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) SetFriendRemark(ctx context.Context, in *SetFriendRemarkReq, opts ...grpc.CallOption) (*SetFriendRemarkResp, error) { out := new(SetFriendRemarkResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/setFriendRemark", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) ImportFriends(ctx context.Context, in *ImportFriendReq, opts ...grpc.CallOption) (*ImportFriendResp, error) { out := new(ImportFriendResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/importFriends", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) GetDesignatedFriends(ctx context.Context, in *GetDesignatedFriendsReq, opts ...grpc.CallOption) (*GetDesignatedFriendsResp, error) { out := new(GetDesignatedFriendsResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getDesignatedFriends", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) GetPaginationFriends(ctx context.Context, in *GetPaginationFriendsReq, opts ...grpc.CallOption) (*GetPaginationFriendsResp, error) { out := new(GetPaginationFriendsResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationFriends", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *friendClient) GetFriendIDs(ctx context.Context, in *GetFriendIDsReq, opts ...grpc.CallOption) (*GetFriendIDsResp, error) { out := new(GetFriendIDsResp) err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getFriendIDs", in, out, opts...) if err != nil { return nil, err } return out, nil } // FriendServer is the server API for Friend service. type FriendServer interface { // 申请加好友 ApplyToAddFriend(context.Context, *ApplyToAddFriendReq) (*ApplyToAddFriendResp, error) // 获取收到的好友申请列表 GetPaginationFriendsApplyTo(context.Context, *GetPaginationFriendsApplyToReq) (*GetPaginationFriendsApplyToResp, error) // 获取主动发出去的好友申请列表 GetPaginationFriendsApplyFrom(context.Context, *GetPaginationFriendsApplyFromReq) (*GetPaginationFriendsApplyFromResp, error) // 添加黑名单 AddBlack(context.Context, *AddBlackReq) (*AddBlackResp, error) // 移除黑名单 RemoveBlack(context.Context, *RemoveBlackReq) (*RemoveBlackResp, error) // 判断是否好友关系 IsFriend(context.Context, *IsFriendReq) (*IsFriendResp, error) // 判断是否在黑名单中 IsBlack(context.Context, *IsBlackReq) (*IsBlackResp, error) // 获取黑名单列表 GetPaginationBlacks(context.Context, *GetPaginationBlacksReq) (*GetPaginationBlacksResp, error) // 删除好友 DeleteFriend(context.Context, *DeleteFriendReq) (*DeleteFriendResp, error) // 对好友申请响应(同意或拒绝) RespondFriendApply(context.Context, *RespondFriendApplyReq) (*RespondFriendApplyResp, error) // 设置好友备注 SetFriendRemark(context.Context, *SetFriendRemarkReq) (*SetFriendRemarkResp, error) // 导入好友关系 ImportFriends(context.Context, *ImportFriendReq) (*ImportFriendResp, error) // 翻页获取好友列表 无结果不返回错误 GetDesignatedFriends(context.Context, *GetDesignatedFriendsReq) (*GetDesignatedFriendsResp, error) // 获取指定好友信息 有id不存在也返回错误 GetPaginationFriends(context.Context, *GetPaginationFriendsReq) (*GetPaginationFriendsResp, error) // 获取好友ID列表 GetFriendIDs(context.Context, *GetFriendIDsReq) (*GetFriendIDsResp, error) } // UnimplementedFriendServer can be embedded to have forward compatible implementations. type UnimplementedFriendServer struct { } func (*UnimplementedFriendServer) ApplyToAddFriend(context.Context, *ApplyToAddFriendReq) (*ApplyToAddFriendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ApplyToAddFriend not implemented") } func (*UnimplementedFriendServer) GetPaginationFriendsApplyTo(context.Context, *GetPaginationFriendsApplyToReq) (*GetPaginationFriendsApplyToResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPaginationFriendsApplyTo not implemented") } func (*UnimplementedFriendServer) GetPaginationFriendsApplyFrom(context.Context, *GetPaginationFriendsApplyFromReq) (*GetPaginationFriendsApplyFromResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPaginationFriendsApplyFrom not implemented") } func (*UnimplementedFriendServer) AddBlack(context.Context, *AddBlackReq) (*AddBlackResp, error) { return nil, status.Errorf(codes.Unimplemented, "method AddBlack not implemented") } func (*UnimplementedFriendServer) RemoveBlack(context.Context, *RemoveBlackReq) (*RemoveBlackResp, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveBlack not implemented") } func (*UnimplementedFriendServer) IsFriend(context.Context, *IsFriendReq) (*IsFriendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method IsFriend not implemented") } func (*UnimplementedFriendServer) IsBlack(context.Context, *IsBlackReq) (*IsBlackResp, error) { return nil, status.Errorf(codes.Unimplemented, "method IsBlack not implemented") } func (*UnimplementedFriendServer) GetPaginationBlacks(context.Context, *GetPaginationBlacksReq) (*GetPaginationBlacksResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPaginationBlacks not implemented") } func (*UnimplementedFriendServer) DeleteFriend(context.Context, *DeleteFriendReq) (*DeleteFriendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteFriend not implemented") } func (*UnimplementedFriendServer) RespondFriendApply(context.Context, *RespondFriendApplyReq) (*RespondFriendApplyResp, error) { return nil, status.Errorf(codes.Unimplemented, "method RespondFriendApply not implemented") } func (*UnimplementedFriendServer) SetFriendRemark(context.Context, *SetFriendRemarkReq) (*SetFriendRemarkResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SetFriendRemark not implemented") } func (*UnimplementedFriendServer) ImportFriends(context.Context, *ImportFriendReq) (*ImportFriendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ImportFriends not implemented") } func (*UnimplementedFriendServer) GetDesignatedFriends(context.Context, *GetDesignatedFriendsReq) (*GetDesignatedFriendsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetDesignatedFriends not implemented") } func (*UnimplementedFriendServer) GetPaginationFriends(context.Context, *GetPaginationFriendsReq) (*GetPaginationFriendsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPaginationFriends not implemented") } func (*UnimplementedFriendServer) GetFriendIDs(context.Context, *GetFriendIDsReq) (*GetFriendIDsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetFriendIDs not implemented") } func RegisterFriendServer(s *grpc.Server, srv FriendServer) { s.RegisterService(&_Friend_serviceDesc, srv) } func _Friend_ApplyToAddFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ApplyToAddFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).ApplyToAddFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/ApplyToAddFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).ApplyToAddFriend(ctx, req.(*ApplyToAddFriendReq)) } return interceptor(ctx, in, info, handler) } func _Friend_GetPaginationFriendsApplyTo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetPaginationFriendsApplyToReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).GetPaginationFriendsApplyTo(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/GetPaginationFriendsApplyTo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).GetPaginationFriendsApplyTo(ctx, req.(*GetPaginationFriendsApplyToReq)) } return interceptor(ctx, in, info, handler) } func _Friend_GetPaginationFriendsApplyFrom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetPaginationFriendsApplyFromReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).GetPaginationFriendsApplyFrom(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/GetPaginationFriendsApplyFrom", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).GetPaginationFriendsApplyFrom(ctx, req.(*GetPaginationFriendsApplyFromReq)) } return interceptor(ctx, in, info, handler) } func _Friend_AddBlack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddBlackReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).AddBlack(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/AddBlack", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).AddBlack(ctx, req.(*AddBlackReq)) } return interceptor(ctx, in, info, handler) } func _Friend_RemoveBlack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveBlackReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).RemoveBlack(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/RemoveBlack", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).RemoveBlack(ctx, req.(*RemoveBlackReq)) } return interceptor(ctx, in, info, handler) } func _Friend_IsFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IsFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).IsFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/IsFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).IsFriend(ctx, req.(*IsFriendReq)) } return interceptor(ctx, in, info, handler) } func _Friend_IsBlack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(IsBlackReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).IsBlack(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/IsBlack", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).IsBlack(ctx, req.(*IsBlackReq)) } return interceptor(ctx, in, info, handler) } func _Friend_GetPaginationBlacks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetPaginationBlacksReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).GetPaginationBlacks(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/GetPaginationBlacks", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).GetPaginationBlacks(ctx, req.(*GetPaginationBlacksReq)) } return interceptor(ctx, in, info, handler) } func _Friend_DeleteFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).DeleteFriend(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/DeleteFriend", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).DeleteFriend(ctx, req.(*DeleteFriendReq)) } return interceptor(ctx, in, info, handler) } func _Friend_RespondFriendApply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RespondFriendApplyReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).RespondFriendApply(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/RespondFriendApply", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).RespondFriendApply(ctx, req.(*RespondFriendApplyReq)) } return interceptor(ctx, in, info, handler) } func _Friend_SetFriendRemark_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetFriendRemarkReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).SetFriendRemark(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/SetFriendRemark", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).SetFriendRemark(ctx, req.(*SetFriendRemarkReq)) } return interceptor(ctx, in, info, handler) } func _Friend_ImportFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ImportFriendReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).ImportFriends(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/ImportFriends", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).ImportFriends(ctx, req.(*ImportFriendReq)) } return interceptor(ctx, in, info, handler) } func _Friend_GetDesignatedFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetDesignatedFriendsReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).GetDesignatedFriends(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/GetDesignatedFriends", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).GetDesignatedFriends(ctx, req.(*GetDesignatedFriendsReq)) } return interceptor(ctx, in, info, handler) } func _Friend_GetPaginationFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetPaginationFriendsReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).GetPaginationFriends(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/GetPaginationFriends", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).GetPaginationFriends(ctx, req.(*GetPaginationFriendsReq)) } return interceptor(ctx, in, info, handler) } func _Friend_GetFriendIDs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetFriendIDsReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(FriendServer).GetFriendIDs(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/OpenIMServer.friend.friend/GetFriendIDs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(FriendServer).GetFriendIDs(ctx, req.(*GetFriendIDsReq)) } return interceptor(ctx, in, info, handler) } var _Friend_serviceDesc = grpc.ServiceDesc{ ServiceName: "OpenIMServer.friend.friend", HandlerType: (*FriendServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "applyToAddFriend", Handler: _Friend_ApplyToAddFriend_Handler, }, { MethodName: "getPaginationFriendsApplyTo", Handler: _Friend_GetPaginationFriendsApplyTo_Handler, }, { MethodName: "getPaginationFriendsApplyFrom", Handler: _Friend_GetPaginationFriendsApplyFrom_Handler, }, { MethodName: "addBlack", Handler: _Friend_AddBlack_Handler, }, { MethodName: "removeBlack", Handler: _Friend_RemoveBlack_Handler, }, { MethodName: "isFriend", Handler: _Friend_IsFriend_Handler, }, { MethodName: "isBlack", Handler: _Friend_IsBlack_Handler, }, { MethodName: "getPaginationBlacks", Handler: _Friend_GetPaginationBlacks_Handler, }, { MethodName: "deleteFriend", Handler: _Friend_DeleteFriend_Handler, }, { MethodName: "respondFriendApply", Handler: _Friend_RespondFriendApply_Handler, }, { MethodName: "setFriendRemark", Handler: _Friend_SetFriendRemark_Handler, }, { MethodName: "importFriends", Handler: _Friend_ImportFriends_Handler, }, { MethodName: "getDesignatedFriends", Handler: _Friend_GetDesignatedFriends_Handler, }, { MethodName: "getPaginationFriends", Handler: _Friend_GetPaginationFriends_Handler, }, { MethodName: "getFriendIDs", Handler: _Friend_GetFriendIDs_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "friend/friend.proto", }