Merge remote-tracking branch 'origin/tuoyun' into tuoyun

This commit is contained in:
Gordon 2022-03-31 18:38:05 +08:00
commit efe24658a4
19 changed files with 3380 additions and 4616 deletions

View File

@ -119,6 +119,7 @@ func main() {
officeGroup := r.Group("/office") officeGroup := r.Group("/office")
{ {
officeGroup.POST("/get_user_tags", office.GetUserTags) officeGroup.POST("/get_user_tags", office.GetUserTags)
officeGroup.POST("/get_user_tag_by_id", office.GetUserTagByID)
officeGroup.POST("/create_tag", office.CreateTag) officeGroup.POST("/create_tag", office.CreateTag)
officeGroup.POST("/delete_tag", office.DeleteTag) officeGroup.POST("/delete_tag", office.DeleteTag)
officeGroup.POST("/set_tag", office.SetTag) officeGroup.POST("/set_tag", office.SetTag)

View File

@ -148,7 +148,7 @@ log:
rotationTime: 24 rotationTime: 24
remainRotationCount: 3 #日志数量 remainRotationCount: 3 #日志数量
#日志级别 6表示全都打印测试阶段建议设置为6 #日志级别 6表示全都打印测试阶段建议设置为6
remainLogLevel: 4 remainLogLevel: 6
elasticSearchSwitch: false elasticSearchSwitch: false
elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchAddr: [ 127.0.0.1:9201 ]
elasticSearchUser: "" elasticSearchUser: ""
@ -551,6 +551,18 @@ notification:
defaultTips: defaultTips:
tips: "conversation opt update" tips: "conversation opt update"
conversationSetPrivate:
conversation:
reliabilityLevel: 2
unreadCount: true
offlinePush:
switch: true
title: "conversation was set to private "
desc: "conversation was set to private "
ext: "conversation was set to private "
defaultTips:
tips: "conversation was set to private "
#---------------demo configuration---------------------# #---------------demo configuration---------------------#

View File

@ -128,7 +128,7 @@ func GetConversation(c *gin.Context) {
client := pbUser.NewUserClient(etcdConn) client := pbUser.NewUserClient(etcdConn)
respPb, err := client.GetConversation(context.Background(), &reqPb) respPb, err := client.GetConversation(context.Background(), &reqPb)
if err != nil { if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversation rpc failed, ", reqPb.String(), err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()})
return return
} }
@ -192,7 +192,7 @@ func SetRecvMsgOpt(c *gin.Context) {
client := pbUser.NewUserClient(etcdConn) client := pbUser.NewUserClient(etcdConn)
respPb, err := client.SetRecvMsgOpt(context.Background(), &reqPb) respPb, err := client.SetRecvMsgOpt(context.Background(), &reqPb)
if err != nil { if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetRecvMsgOpt rpc failed, ", reqPb.String(), err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()})
return return
} }

View File

@ -234,3 +234,39 @@ func GetTagSendLogs(c *gin.Context) {
resp.Data.CurrentPage = respPb.Pagination.CurrentPage resp.Data.CurrentPage = respPb.Pagination.CurrentPage
c.JSON(http.StatusOK, resp) c.JSON(http.StatusOK, resp)
} }
func GetUserTagByID(c *gin.Context) {
var (
req apistruct.GetUserTagByIDReq
resp apistruct.GetUserTagByIDResp
reqPb pbOffice.GetUserTagByIDReq
respPb *pbOffice.GetUserTagByIDResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
if !ok {
log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
return
}
reqPb.UserID = userID
reqPb.OperationID = req.OperationID
reqPb.TagID = req.TagID
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName)
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.GetUserTagByID(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserTagByID failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "CreateTag rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp.CommResp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
resp.Data.Tag = respPb.Tag
c.JSON(http.StatusOK, resp)
}

View File

@ -10,12 +10,12 @@ import (
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
) )
func conversationNotification(contentType int32, m proto.Message, operationID, userID string) { func SetConversationNotification(operationID, sendID, recvID string, contentType int, m proto.Message, tips open_im_sdk.TipsComm) {
log.NewInfo(operationID, "args: ", sendID, recvID, contentType, m.String(), tips.String())
var err error var err error
var tips open_im_sdk.TipsComm
tips.Detail, err = proto.Marshal(m) tips.Detail, err = proto.Marshal(m)
if err != nil { if err != nil {
log.Error(operationID, utils.GetSelfFuncName(), "Marshal failed ", err.Error(), m.String()) log.NewError(operationID, "Marshal failed ", err.Error(), m.String())
return return
} }
marshaler := jsonpb.Marshaler{ marshaler := jsonpb.Marshaler{
@ -24,15 +24,10 @@ func conversationNotification(contentType int32, m proto.Message, operationID, u
EmitDefaults: false, EmitDefaults: false,
} }
tips.JsonDetail, _ = marshaler.MarshalToString(m) tips.JsonDetail, _ = marshaler.MarshalToString(m)
cn := config.Config.Notification
switch contentType {
case constant.ConversationOptChangeNotification:
tips.DefaultTips = cn.ConversationOptUpdate.DefaultTips.Tips
}
var n NotificationMsg var n NotificationMsg
n.SendID = userID n.SendID = sendID
n.RecvID = userID n.RecvID = recvID
n.ContentType = contentType n.ContentType = int32(contentType)
n.SessionType = constant.SingleChatType n.SessionType = constant.SingleChatType
n.MsgFrom = constant.SysMsgType n.MsgFrom = constant.SysMsgType
n.OperationID = operationID n.OperationID = operationID
@ -44,10 +39,27 @@ func conversationNotification(contentType int32, m proto.Message, operationID, u
Notification(&n) Notification(&n)
} }
func SetConversationNotification(operationID, userID string) { // SetPrivate调用
log.NewInfo(operationID, utils.GetSelfFuncName(), "userID: ", userID) func ConversationSetPrivateNotification(operationID, sendID, recvID string, isPrivateChat bool) {
conversationUpdateTips := open_im_sdk.ConversationUpdateTips{ log.NewInfo(operationID, utils.GetSelfFuncName())
conversationSetPrivateTips := &open_im_sdk.ConversationSetPrivateTips{
RecvID: recvID,
SendID: sendID,
IsPrivate: isPrivateChat,
}
var tips open_im_sdk.TipsComm
strMap := map[bool]string{true: "true", false: "false"}
tips.DefaultTips = config.Config.Notification.ConversationSetPrivate.DefaultTips.Tips + strMap[isPrivateChat] + " by " + sendID
SetConversationNotification(operationID, sendID, recvID, constant.ConversationPrivateChatNotification, conversationSetPrivateTips, tips)
}
// 会话改变
func ConversationChangeNotification(operationID, userID string) {
log.NewInfo(operationID, utils.GetSelfFuncName())
ConversationChangedTips := &open_im_sdk.ConversationUpdateTips{
UserID: userID, UserID: userID,
} }
conversationNotification(constant.ConversationOptChangeNotification, &conversationUpdateTips, operationID, userID) var tips open_im_sdk.TipsComm
tips.DefaultTips = config.Config.Notification.ConversationOptUpdate.DefaultTips.Tips
SetConversationNotification(operationID, userID, userID, constant.ConversationOptChangeNotification, ConversationChangedTips, tips)
} }

View File

@ -16,7 +16,7 @@ func (rpc *rpcChat) DelMsgList(_ context.Context, req *commonPb.DelMsgListReq) (
log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsg failed", err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsg failed", err.Error())
resp.ErrMsg = constant.ErrDB.ErrMsg resp.ErrMsg = constant.ErrDB.ErrMsg
resp.ErrCode = constant.ErrDB.ErrCode resp.ErrCode = constant.ErrDB.ErrCode
return resp, err return resp, nil
} }
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
return resp, nil return resp, nil

View File

@ -16,6 +16,7 @@ import (
"net" "net"
"strconv" "strconv"
"strings" "strings"
"time"
) )
type officeServer struct { type officeServer struct {
@ -181,8 +182,23 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR
for _, userID := range userIDList { for _, userID := range userIDList {
msg.TagSendMessage(req.OperationID, req.SendID, userID, req.Content, req.SenderPlatformID) msg.TagSendMessage(req.OperationID, req.SendID, userID, req.Content, req.SenderPlatformID)
} }
var tagSendLogs db.TagSendLog
if err := db.DB.SaveTagSendLog(req); err != nil { for _, userID := range userIDList {
userName, err := im_mysql_model.GetUserNameByUserID(userID)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error())
continue
}
tagSendLogs.Users = append(tagSendLogs.Users, db.TagUser{
UserID: userID,
UserName: userName,
})
}
tagSendLogs.SendID = req.SendID
tagSendLogs.Content = req.Content
tagSendLogs.SenderPlatformID = req.SenderPlatformID
tagSendLogs.SendTime = time.Now().Unix()
if err := db.DB.SaveTagSendLog(&tagSendLogs); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SaveTagSendLog failed", err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "SaveTagSendLog failed", err.Error())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg
@ -215,3 +231,30 @@ func (s *officeServer) GetTagSendLogs(_ context.Context, req *pbOffice.GetTagSen
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
return resp, nil return resp, nil
} }
func (s *officeServer) GetUserTagByID(_ context.Context, req *pbOffice.GetUserTagByIDReq) (resp *pbOffice.GetUserTagByIDResp, err error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
resp = &pbOffice.GetUserTagByIDResp{CommonResp: &pbOffice.CommonResp{}, Tag: &pbOffice.Tag{}}
tag, err := db.DB.GetTagByID(req.UserID, req.TagID)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetTagByID failed", err.Error())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg
return resp, nil
}
for _, userID := range tag.UserList {
userName, err := im_mysql_model.GetUserNameByUserID(userID)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error())
continue
}
resp.Tag.UserList = append(resp.Tag.UserList, &pbOffice.TagUser{
UserID: userID,
UserName: userName,
})
}
resp.Tag.TagID = tag.TagID
resp.Tag.TagName = tag.TagName
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
return resp, nil
}

View File

@ -73,7 +73,6 @@ func (s *userServer) Run() {
} }
func syncPeerUserConversation(conversation *pbUser.Conversation, operationID string) error { func syncPeerUserConversation(conversation *pbUser.Conversation, operationID string) error {
if conversation.ConversationType == constant.SingleChatType {
peerUserConversation := db.Conversation{ peerUserConversation := db.Conversation{
OwnerUserID: conversation.UserID, OwnerUserID: conversation.UserID,
ConversationID: "single_" + conversation.OwnerUserID, ConversationID: "single_" + conversation.OwnerUserID,
@ -93,8 +92,7 @@ func syncPeerUserConversation(conversation *pbUser.Conversation, operationID str
log.NewError(operationID, utils.GetSelfFuncName(), "SetConversation error", err.Error()) log.NewError(operationID, utils.GetSelfFuncName(), "SetConversation error", err.Error())
return err return err
} }
chat.SetConversationNotification(operationID, conversation.UserID) chat.ConversationSetPrivateNotification(operationID, conversation.OwnerUserID, conversation.UserID, conversation.IsPrivateChat)
}
return nil return nil
} }
@ -122,6 +120,9 @@ func (s *userServer) GetUserInfo(ctx context.Context, req *pbUser.GetUserInfoReq
func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.BatchSetConversationsReq) (*pbUser.BatchSetConversationsResp, error) { func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.BatchSetConversationsReq) (*pbUser.BatchSetConversationsResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
if req.NotificationType == 0 {
req.NotificationType = constant.ConversationOptChangeNotification
}
resp := &pbUser.BatchSetConversationsResp{} resp := &pbUser.BatchSetConversationsResp{}
for _, v := range req.Conversations { for _, v := range req.Conversations {
conversation := db.Conversation{} conversation := db.Conversation{}
@ -139,11 +140,14 @@ func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.Batc
continue continue
} }
resp.Success = append(resp.Success, v.ConversationID) resp.Success = append(resp.Success, v.ConversationID)
// if is set private chat operationthen peer user need to sync and set tips\
if v.ConversationType == constant.SingleChatType && req.NotificationType == constant.ConversationPrivateChatNotification {
if err := syncPeerUserConversation(v, req.OperationID); err != nil { if err := syncPeerUserConversation(v, req.OperationID); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "syncPeerUserConversation", err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "syncPeerUserConversation", err.Error())
} }
} }
chat.SetConversationNotification(req.OperationID, req.OwnerUserID) }
chat.ConversationChangeNotification(req.OperationID, req.OwnerUserID)
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return", resp.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return", resp.String())
resp.CommonResp = &pbUser.CommonResp{} resp.CommonResp = &pbUser.CommonResp{}
return resp, nil return resp, nil
@ -202,6 +206,9 @@ func (s *userServer) GetConversations(ctx context.Context, req *pbUser.GetConver
func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConversationReq) (*pbUser.SetConversationResp, error) { func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConversationReq) (*pbUser.SetConversationResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
if req.NotificationType == 0 {
req.NotificationType = constant.ConversationOptChangeNotification
}
resp := &pbUser.SetConversationResp{} resp := &pbUser.SetConversationResp{}
var conversation db.Conversation var conversation db.Conversation
if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil { if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil {
@ -218,13 +225,17 @@ func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConvers
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil return resp, nil
} }
// notification
if req.Conversation.ConversationType == constant.SingleChatType && req.NotificationType == constant.ConversationPrivateChatNotification {
//sync peer user conversation if conversation is singleChatType //sync peer user conversation if conversation is singleChatType
if err := syncPeerUserConversation(req.Conversation, req.OperationID); err != nil { if err := syncPeerUserConversation(req.Conversation, req.OperationID); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "syncPeerUserConversation", err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "syncPeerUserConversation", err.Error())
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil return resp, nil
} }
chat.SetConversationNotification(req.OperationID, req.Conversation.OwnerUserID) } else {
chat.ConversationChangeNotification(req.OperationID, req.Conversation.OwnerUserID)
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return", resp.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return", resp.String())
resp.CommonResp = &pbUser.CommonResp{} resp.CommonResp = &pbUser.CommonResp{}
return resp, nil return resp, nil
@ -259,7 +270,7 @@ func (s *userServer) SetRecvMsgOpt(ctx context.Context, req *pbUser.SetRecvMsgOp
resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}
return resp, nil return resp, nil
} }
chat.SetConversationNotification(req.OperationID, req.OwnerUserID) chat.ConversationChangeNotification(req.OperationID, req.OwnerUserID)
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
resp.CommonResp = &pbUser.CommonResp{} resp.CommonResp = &pbUser.CommonResp{}
return resp, nil return resp, nil

View File

@ -34,8 +34,8 @@ type SetReceiveMessageOptResp struct {
type Conversation struct { type Conversation struct {
OwnerUserID string `json:"ownerUserID" binding:"required"` OwnerUserID string `json:"ownerUserID" binding:"required"`
ConversationID string `json:"conversationID"` ConversationID string `json:"conversationID" binding:"required"`
ConversationType int32 `json:"conversationType"` ConversationType int32 `json:"conversationType" binding:"required"`
UserID string `json:"userID"` UserID string `json:"userID"`
GroupID string `json:"groupID"` GroupID string `json:"groupID"`
RecvMsgOpt int32 `json:"recvMsgOpt" binding:"omitempty,oneof=0 1 2"` RecvMsgOpt int32 `json:"recvMsgOpt" binding:"omitempty,oneof=0 1 2"`
@ -49,6 +49,7 @@ type Conversation struct {
type SetConversationReq struct { type SetConversationReq struct {
Conversation Conversation
NotificationType int32 `json:"notificationType"`
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
} }
@ -58,6 +59,7 @@ type SetConversationResp struct {
type BatchSetConversationsReq struct { type BatchSetConversationsReq struct {
Conversations []Conversation `json:"conversations" binding:"required"` Conversations []Conversation `json:"conversations" binding:"required"`
NotificationType int32 `json:"notificationType"`
OwnerUserID string `json:"ownerUserID" binding:"required"` OwnerUserID string `json:"ownerUserID" binding:"required"`
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
} }
@ -107,6 +109,7 @@ type SetRecvMsgOptReq struct {
ConversationID string `json:"conversationID"` ConversationID string `json:"conversationID"`
RecvMsgOpt int32 `json:"recvMsgOpt" binding:"omitempty,oneof=0 1 2"` RecvMsgOpt int32 `json:"recvMsgOpt" binding:"omitempty,oneof=0 1 2"`
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
NotificationType int32 `json:"notificationType"`
} }
type SetRecvMsgOptResp struct { type SetRecvMsgOptResp struct {

View File

@ -74,3 +74,15 @@ type GetTagSendLogsResp struct {
ShowNumber int32 `json:"showNumber"` ShowNumber int32 `json:"showNumber"`
} `json:"data"` } `json:"data"`
} }
type GetUserTagByIDReq struct {
TagID string `json:"tagID" binding:"required"`
OperationID string `json:"operationID" binding:"required"`
}
type GetUserTagByIDResp struct {
CommResp
Data struct {
Tag *pbOffice.Tag `json:"tag"`
} `json:"data"`
}

View File

@ -350,6 +350,11 @@ type config struct {
OfflinePush POfflinePush `yaml:"offlinePush"` OfflinePush POfflinePush `yaml:"offlinePush"`
DefaultTips PDefaultTips `yaml:"defaultTips"` DefaultTips PDefaultTips `yaml:"defaultTips"`
} `yaml:"conversationOptUpdate"` } `yaml:"conversationOptUpdate"`
ConversationSetPrivate struct {
Conversation PConversation `yaml:"conversation"`
OfflinePush POfflinePush `yaml:"offlinePush"`
DefaultTips PDefaultTips `yaml:"defaultTips"`
} `yaml:"conversationSetPrivate"`
} }
Demo struct { Demo struct {
Port []int `yaml:"openImDemoPort"` Port []int `yaml:"openImDemoPort"`

View File

@ -56,13 +56,11 @@ const (
FriendRemarkSetNotification = 1206 //set_friend_remark? FriendRemarkSetNotification = 1206 //set_friend_remark?
BlackAddedNotification = 1207 //add_black BlackAddedNotification = 1207 //add_black
BlackDeletedNotification = 1208 //remove_black BlackDeletedNotification = 1208 //remove_black
ConversationOptChangeNotification = 1300 // change conversation opt ConversationOptChangeNotification = 1300 // change conversation opt
UserNotificationBegin = 1301 UserNotificationBegin = 1301
UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204 UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204
ConversationNotification = 1307
ConversationNotNotification = 1308
ConversationDefault = 0
UserNotificationEnd = 1399 UserNotificationEnd = 1399
OANotification = 1400 OANotification = 1400
@ -87,6 +85,9 @@ const (
SignalingNotificationBegin = 1600 SignalingNotificationBegin = 1600
SignalingNotification = 1601 SignalingNotification = 1601
SignalingNotificationEnd = 1699 SignalingNotificationEnd = 1699
ConversationPrivateChatNotification = 1701
NotificationEnd = 2000 NotificationEnd = 2000
//status //status

View File

@ -5,7 +5,6 @@ import (
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
pbMsg "Open_IM/pkg/proto/chat" pbMsg "Open_IM/pkg/proto/chat"
officePb "Open_IM/pkg/proto/office"
open_im_sdk "Open_IM/pkg/proto/sdk_ws" open_im_sdk "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
@ -470,6 +469,14 @@ func (d *DataBases) CreateTag(userID, tagName string, userList []string) error {
return err return err
} }
func (d *DataBases) GetTagByID(userID, tagID string) (Tag, error) {
ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second)
c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cTag)
var tag Tag
err := c.FindOne(ctx, bson.M{"user_id": userID, "tag_id": tagID}).Decode(&tag)
return tag, err
}
func (d *DataBases) DeleteTag(userID, tagID string) error { func (d *DataBases) DeleteTag(userID, tagID string) error {
ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second)
c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cTag) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cTag)
@ -526,27 +533,16 @@ type TagUser struct {
} }
type TagSendLog struct { type TagSendLog struct {
TagList []string `bson:"tag_list"` Users []TagUser `bson:"tag_list"`
GroupList []string `bson:"group_list"`
UserList []string `bson:"user_list"`
SendID string `bson:"send_id"` SendID string `bson:"send_id"`
SenderPlatformID int32 `bson:"sender_platform_id"` SenderPlatformID int32 `bson:"sender_platform_id"`
Content string `bson:"content"` Content string `bson:"content"`
SendTime int64 `bson:"send_time"` SendTime int64 `bson:"send_time"`
} }
func (d *DataBases) SaveTagSendLog(sendReq *officePb.SendMsg2TagReq) error { func (d *DataBases) SaveTagSendLog(tagSendLog *TagSendLog) error {
ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second)
c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cSendLog) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cSendLog)
tagSendLog := TagSendLog{
TagList: sendReq.TagList,
GroupList: sendReq.GroupList,
UserList: sendReq.UserList,
SendID: sendReq.SendID,
SenderPlatformID: sendReq.SenderPlatformID,
Content: sendReq.Content,
SendTime: time.Now().Unix(),
}
_, err := c.InsertOne(ctx, tagSendLog) _, err := c.InsertOne(ctx, tagSendLog)
return err return err
} }

View File

@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {} func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) { func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{0} return fileDescriptor_office_5f182260c0e799b9, []int{0}
} }
func (m *CommonResp) XXX_Unmarshal(b []byte) error { func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b) return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -82,7 +82,7 @@ func (m *TagUser) Reset() { *m = TagUser{} }
func (m *TagUser) String() string { return proto.CompactTextString(m) } func (m *TagUser) String() string { return proto.CompactTextString(m) }
func (*TagUser) ProtoMessage() {} func (*TagUser) ProtoMessage() {}
func (*TagUser) Descriptor() ([]byte, []int) { func (*TagUser) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{1} return fileDescriptor_office_5f182260c0e799b9, []int{1}
} }
func (m *TagUser) XXX_Unmarshal(b []byte) error { func (m *TagUser) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TagUser.Unmarshal(m, b) return xxx_messageInfo_TagUser.Unmarshal(m, b)
@ -129,7 +129,7 @@ func (m *Tag) Reset() { *m = Tag{} }
func (m *Tag) String() string { return proto.CompactTextString(m) } func (m *Tag) String() string { return proto.CompactTextString(m) }
func (*Tag) ProtoMessage() {} func (*Tag) ProtoMessage() {}
func (*Tag) Descriptor() ([]byte, []int) { func (*Tag) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{2} return fileDescriptor_office_5f182260c0e799b9, []int{2}
} }
func (m *Tag) XXX_Unmarshal(b []byte) error { func (m *Tag) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Tag.Unmarshal(m, b) return xxx_messageInfo_Tag.Unmarshal(m, b)
@ -182,7 +182,7 @@ func (m *GetUserTagsReq) Reset() { *m = GetUserTagsReq{} }
func (m *GetUserTagsReq) String() string { return proto.CompactTextString(m) } func (m *GetUserTagsReq) String() string { return proto.CompactTextString(m) }
func (*GetUserTagsReq) ProtoMessage() {} func (*GetUserTagsReq) ProtoMessage() {}
func (*GetUserTagsReq) Descriptor() ([]byte, []int) { func (*GetUserTagsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{3} return fileDescriptor_office_5f182260c0e799b9, []int{3}
} }
func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error { func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b) return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b)
@ -228,7 +228,7 @@ func (m *GetUserTagsResp) Reset() { *m = GetUserTagsResp{} }
func (m *GetUserTagsResp) String() string { return proto.CompactTextString(m) } func (m *GetUserTagsResp) String() string { return proto.CompactTextString(m) }
func (*GetUserTagsResp) ProtoMessage() {} func (*GetUserTagsResp) ProtoMessage() {}
func (*GetUserTagsResp) Descriptor() ([]byte, []int) { func (*GetUserTagsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{4} return fileDescriptor_office_5f182260c0e799b9, []int{4}
} }
func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error { func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b) return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b)
@ -276,7 +276,7 @@ func (m *CreateTagReq) Reset() { *m = CreateTagReq{} }
func (m *CreateTagReq) String() string { return proto.CompactTextString(m) } func (m *CreateTagReq) String() string { return proto.CompactTextString(m) }
func (*CreateTagReq) ProtoMessage() {} func (*CreateTagReq) ProtoMessage() {}
func (*CreateTagReq) Descriptor() ([]byte, []int) { func (*CreateTagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{5} return fileDescriptor_office_5f182260c0e799b9, []int{5}
} }
func (m *CreateTagReq) XXX_Unmarshal(b []byte) error { func (m *CreateTagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateTagReq.Unmarshal(m, b) return xxx_messageInfo_CreateTagReq.Unmarshal(m, b)
@ -335,7 +335,7 @@ func (m *CreateTagResp) Reset() { *m = CreateTagResp{} }
func (m *CreateTagResp) String() string { return proto.CompactTextString(m) } func (m *CreateTagResp) String() string { return proto.CompactTextString(m) }
func (*CreateTagResp) ProtoMessage() {} func (*CreateTagResp) ProtoMessage() {}
func (*CreateTagResp) Descriptor() ([]byte, []int) { func (*CreateTagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{6} return fileDescriptor_office_5f182260c0e799b9, []int{6}
} }
func (m *CreateTagResp) XXX_Unmarshal(b []byte) error { func (m *CreateTagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateTagResp.Unmarshal(m, b) return xxx_messageInfo_CreateTagResp.Unmarshal(m, b)
@ -375,7 +375,7 @@ func (m *DeleteTagReq) Reset() { *m = DeleteTagReq{} }
func (m *DeleteTagReq) String() string { return proto.CompactTextString(m) } func (m *DeleteTagReq) String() string { return proto.CompactTextString(m) }
func (*DeleteTagReq) ProtoMessage() {} func (*DeleteTagReq) ProtoMessage() {}
func (*DeleteTagReq) Descriptor() ([]byte, []int) { func (*DeleteTagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{7} return fileDescriptor_office_5f182260c0e799b9, []int{7}
} }
func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error { func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b) return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b)
@ -427,7 +427,7 @@ func (m *DeleteTagResp) Reset() { *m = DeleteTagResp{} }
func (m *DeleteTagResp) String() string { return proto.CompactTextString(m) } func (m *DeleteTagResp) String() string { return proto.CompactTextString(m) }
func (*DeleteTagResp) ProtoMessage() {} func (*DeleteTagResp) ProtoMessage() {}
func (*DeleteTagResp) Descriptor() ([]byte, []int) { func (*DeleteTagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{8} return fileDescriptor_office_5f182260c0e799b9, []int{8}
} }
func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error { func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b) return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b)
@ -470,7 +470,7 @@ func (m *SetTagReq) Reset() { *m = SetTagReq{} }
func (m *SetTagReq) String() string { return proto.CompactTextString(m) } func (m *SetTagReq) String() string { return proto.CompactTextString(m) }
func (*SetTagReq) ProtoMessage() {} func (*SetTagReq) ProtoMessage() {}
func (*SetTagReq) Descriptor() ([]byte, []int) { func (*SetTagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{9} return fileDescriptor_office_5f182260c0e799b9, []int{9}
} }
func (m *SetTagReq) XXX_Unmarshal(b []byte) error { func (m *SetTagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetTagReq.Unmarshal(m, b) return xxx_messageInfo_SetTagReq.Unmarshal(m, b)
@ -543,7 +543,7 @@ func (m *SetTagResp) Reset() { *m = SetTagResp{} }
func (m *SetTagResp) String() string { return proto.CompactTextString(m) } func (m *SetTagResp) String() string { return proto.CompactTextString(m) }
func (*SetTagResp) ProtoMessage() {} func (*SetTagResp) ProtoMessage() {}
func (*SetTagResp) Descriptor() ([]byte, []int) { func (*SetTagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{10} return fileDescriptor_office_5f182260c0e799b9, []int{10}
} }
func (m *SetTagResp) XXX_Unmarshal(b []byte) error { func (m *SetTagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetTagResp.Unmarshal(m, b) return xxx_messageInfo_SetTagResp.Unmarshal(m, b)
@ -587,7 +587,7 @@ func (m *SendMsg2TagReq) Reset() { *m = SendMsg2TagReq{} }
func (m *SendMsg2TagReq) String() string { return proto.CompactTextString(m) } func (m *SendMsg2TagReq) String() string { return proto.CompactTextString(m) }
func (*SendMsg2TagReq) ProtoMessage() {} func (*SendMsg2TagReq) ProtoMessage() {}
func (*SendMsg2TagReq) Descriptor() ([]byte, []int) { func (*SendMsg2TagReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{11} return fileDescriptor_office_5f182260c0e799b9, []int{11}
} }
func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error { func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b) return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b)
@ -667,7 +667,7 @@ func (m *SendMsg2TagResp) Reset() { *m = SendMsg2TagResp{} }
func (m *SendMsg2TagResp) String() string { return proto.CompactTextString(m) } func (m *SendMsg2TagResp) String() string { return proto.CompactTextString(m) }
func (*SendMsg2TagResp) ProtoMessage() {} func (*SendMsg2TagResp) ProtoMessage() {}
func (*SendMsg2TagResp) Descriptor() ([]byte, []int) { func (*SendMsg2TagResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{12} return fileDescriptor_office_5f182260c0e799b9, []int{12}
} }
func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error { func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b) return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b)
@ -707,7 +707,7 @@ func (m *GetTagSendLogsReq) Reset() { *m = GetTagSendLogsReq{} }
func (m *GetTagSendLogsReq) String() string { return proto.CompactTextString(m) } func (m *GetTagSendLogsReq) String() string { return proto.CompactTextString(m) }
func (*GetTagSendLogsReq) ProtoMessage() {} func (*GetTagSendLogsReq) ProtoMessage() {}
func (*GetTagSendLogsReq) Descriptor() ([]byte, []int) { func (*GetTagSendLogsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{13} return fileDescriptor_office_5f182260c0e799b9, []int{13}
} }
func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error { func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b) return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b)
@ -749,11 +749,9 @@ func (m *GetTagSendLogsReq) GetOperationID() string {
} }
type TagSendLog struct { type TagSendLog struct {
UserList []string `protobuf:"bytes,1,rep,name=userList" json:"userList,omitempty"` Users []*TagUser `protobuf:"bytes,1,rep,name=users" json:"users,omitempty"`
TagList []string `protobuf:"bytes,2,rep,name=tagList" json:"tagList,omitempty"` Content string `protobuf:"bytes,2,opt,name=content" json:"content,omitempty"`
GroupList []string `protobuf:"bytes,3,rep,name=groupList" json:"groupList,omitempty"` SendTime int64 `protobuf:"varint,3,opt,name=sendTime" json:"sendTime,omitempty"`
Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"`
SendTime int64 `protobuf:"varint,5,opt,name=sendTime" json:"sendTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -763,7 +761,7 @@ func (m *TagSendLog) Reset() { *m = TagSendLog{} }
func (m *TagSendLog) String() string { return proto.CompactTextString(m) } func (m *TagSendLog) String() string { return proto.CompactTextString(m) }
func (*TagSendLog) ProtoMessage() {} func (*TagSendLog) ProtoMessage() {}
func (*TagSendLog) Descriptor() ([]byte, []int) { func (*TagSendLog) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{14} return fileDescriptor_office_5f182260c0e799b9, []int{14}
} }
func (m *TagSendLog) XXX_Unmarshal(b []byte) error { func (m *TagSendLog) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TagSendLog.Unmarshal(m, b) return xxx_messageInfo_TagSendLog.Unmarshal(m, b)
@ -783,23 +781,9 @@ func (m *TagSendLog) XXX_DiscardUnknown() {
var xxx_messageInfo_TagSendLog proto.InternalMessageInfo var xxx_messageInfo_TagSendLog proto.InternalMessageInfo
func (m *TagSendLog) GetUserList() []string { func (m *TagSendLog) GetUsers() []*TagUser {
if m != nil { if m != nil {
return m.UserList return m.Users
}
return nil
}
func (m *TagSendLog) GetTagList() []string {
if m != nil {
return m.TagList
}
return nil
}
func (m *TagSendLog) GetGroupList() []string {
if m != nil {
return m.GroupList
} }
return nil return nil
} }
@ -831,7 +815,7 @@ func (m *GetTagSendLogsResp) Reset() { *m = GetTagSendLogsResp{} }
func (m *GetTagSendLogsResp) String() string { return proto.CompactTextString(m) } func (m *GetTagSendLogsResp) String() string { return proto.CompactTextString(m) }
func (*GetTagSendLogsResp) ProtoMessage() {} func (*GetTagSendLogsResp) ProtoMessage() {}
func (*GetTagSendLogsResp) Descriptor() ([]byte, []int) { func (*GetTagSendLogsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_b53660f9aedbfa32, []int{15} return fileDescriptor_office_5f182260c0e799b9, []int{15}
} }
func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error { func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b) return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b)
@ -872,6 +856,106 @@ func (m *GetTagSendLogsResp) GetTagSendLogs() []*TagSendLog {
return nil return nil
} }
type GetUserTagByIDReq struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUserTagByIDReq) Reset() { *m = GetUserTagByIDReq{} }
func (m *GetUserTagByIDReq) String() string { return proto.CompactTextString(m) }
func (*GetUserTagByIDReq) ProtoMessage() {}
func (*GetUserTagByIDReq) Descriptor() ([]byte, []int) {
return fileDescriptor_office_5f182260c0e799b9, []int{16}
}
func (m *GetUserTagByIDReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTagByIDReq.Unmarshal(m, b)
}
func (m *GetUserTagByIDReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserTagByIDReq.Marshal(b, m, deterministic)
}
func (dst *GetUserTagByIDReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserTagByIDReq.Merge(dst, src)
}
func (m *GetUserTagByIDReq) XXX_Size() int {
return xxx_messageInfo_GetUserTagByIDReq.Size(m)
}
func (m *GetUserTagByIDReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetUserTagByIDReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetUserTagByIDReq proto.InternalMessageInfo
func (m *GetUserTagByIDReq) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *GetUserTagByIDReq) GetTagID() string {
if m != nil {
return m.TagID
}
return ""
}
func (m *GetUserTagByIDReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type GetUserTagByIDResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
Tag *Tag `protobuf:"bytes,2,opt,name=tag" json:"tag,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUserTagByIDResp) Reset() { *m = GetUserTagByIDResp{} }
func (m *GetUserTagByIDResp) String() string { return proto.CompactTextString(m) }
func (*GetUserTagByIDResp) ProtoMessage() {}
func (*GetUserTagByIDResp) Descriptor() ([]byte, []int) {
return fileDescriptor_office_5f182260c0e799b9, []int{17}
}
func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b)
}
func (m *GetUserTagByIDResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserTagByIDResp.Marshal(b, m, deterministic)
}
func (dst *GetUserTagByIDResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserTagByIDResp.Merge(dst, src)
}
func (m *GetUserTagByIDResp) XXX_Size() int {
return xxx_messageInfo_GetUserTagByIDResp.Size(m)
}
func (m *GetUserTagByIDResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetUserTagByIDResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetUserTagByIDResp proto.InternalMessageInfo
func (m *GetUserTagByIDResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
func (m *GetUserTagByIDResp) GetTag() *Tag {
if m != nil {
return m.Tag
}
return nil
}
func init() { func init() {
proto.RegisterType((*CommonResp)(nil), "office.CommonResp") proto.RegisterType((*CommonResp)(nil), "office.CommonResp")
proto.RegisterType((*TagUser)(nil), "office.TagUser") proto.RegisterType((*TagUser)(nil), "office.TagUser")
@ -889,6 +973,8 @@ func init() {
proto.RegisterType((*GetTagSendLogsReq)(nil), "office.GetTagSendLogsReq") proto.RegisterType((*GetTagSendLogsReq)(nil), "office.GetTagSendLogsReq")
proto.RegisterType((*TagSendLog)(nil), "office.TagSendLog") proto.RegisterType((*TagSendLog)(nil), "office.TagSendLog")
proto.RegisterType((*GetTagSendLogsResp)(nil), "office.GetTagSendLogsResp") proto.RegisterType((*GetTagSendLogsResp)(nil), "office.GetTagSendLogsResp")
proto.RegisterType((*GetUserTagByIDReq)(nil), "office.GetUserTagByIDReq")
proto.RegisterType((*GetUserTagByIDResp)(nil), "office.GetUserTagByIDResp")
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -908,6 +994,7 @@ type OfficeServiceClient interface {
SetTag(ctx context.Context, in *SetTagReq, opts ...grpc.CallOption) (*SetTagResp, error) SetTag(ctx context.Context, in *SetTagReq, opts ...grpc.CallOption) (*SetTagResp, error)
SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error) SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error)
GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error) GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error)
GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error)
} }
type officeServiceClient struct { type officeServiceClient struct {
@ -972,6 +1059,15 @@ func (c *officeServiceClient) GetTagSendLogs(ctx context.Context, in *GetTagSend
return out, nil return out, nil
} }
func (c *officeServiceClient) GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error) {
out := new(GetUserTagByIDResp)
err := grpc.Invoke(ctx, "/office.OfficeService/GetUserTagByID", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for OfficeService service // Server API for OfficeService service
type OfficeServiceServer interface { type OfficeServiceServer interface {
@ -981,6 +1077,7 @@ type OfficeServiceServer interface {
SetTag(context.Context, *SetTagReq) (*SetTagResp, error) SetTag(context.Context, *SetTagReq) (*SetTagResp, error)
SendMsg2Tag(context.Context, *SendMsg2TagReq) (*SendMsg2TagResp, error) SendMsg2Tag(context.Context, *SendMsg2TagReq) (*SendMsg2TagResp, error)
GetTagSendLogs(context.Context, *GetTagSendLogsReq) (*GetTagSendLogsResp, error) GetTagSendLogs(context.Context, *GetTagSendLogsReq) (*GetTagSendLogsResp, error)
GetUserTagByID(context.Context, *GetUserTagByIDReq) (*GetUserTagByIDResp, error)
} }
func RegisterOfficeServiceServer(s *grpc.Server, srv OfficeServiceServer) { func RegisterOfficeServiceServer(s *grpc.Server, srv OfficeServiceServer) {
@ -1095,6 +1192,24 @@ func _OfficeService_GetTagSendLogs_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _OfficeService_GetUserTagByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetUserTagByIDReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OfficeServiceServer).GetUserTagByID(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/office.OfficeService/GetUserTagByID",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OfficeServiceServer).GetUserTagByID(ctx, req.(*GetUserTagByIDReq))
}
return interceptor(ctx, in, info, handler)
}
var _OfficeService_serviceDesc = grpc.ServiceDesc{ var _OfficeService_serviceDesc = grpc.ServiceDesc{
ServiceName: "office.OfficeService", ServiceName: "office.OfficeService",
HandlerType: (*OfficeServiceServer)(nil), HandlerType: (*OfficeServiceServer)(nil),
@ -1123,62 +1238,68 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{
MethodName: "GetTagSendLogs", MethodName: "GetTagSendLogs",
Handler: _OfficeService_GetTagSendLogs_Handler, Handler: _OfficeService_GetTagSendLogs_Handler,
}, },
{
MethodName: "GetUserTagByID",
Handler: _OfficeService_GetUserTagByID_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "office/office.proto", Metadata: "office/office.proto",
} }
func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_b53660f9aedbfa32) } func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_5f182260c0e799b9) }
var fileDescriptor_office_b53660f9aedbfa32 = []byte{ var fileDescriptor_office_5f182260c0e799b9 = []byte{
// 781 bytes of a gzipped FileDescriptorProto // 814 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6a, 0xdb, 0x4a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6a, 0xdb, 0x4a,
0x10, 0x46, 0xf2, 0x5f, 0x3c, 0x4e, 0xe2, 0x93, 0x3d, 0x39, 0x39, 0xaa, 0x08, 0xad, 0x2b, 0x5a, 0x10, 0x46, 0x76, 0x6c, 0xc7, 0xe3, 0x24, 0x3e, 0xd9, 0x93, 0x93, 0xe3, 0x23, 0x4e, 0x5b, 0x57,
0x08, 0x2d, 0xd8, 0xe0, 0xf6, 0xa2, 0x50, 0x1a, 0x4a, 0xed, 0x60, 0x5c, 0x92, 0x26, 0x28, 0xce, 0x34, 0x10, 0x5a, 0xb0, 0xc1, 0xed, 0x45, 0xa1, 0x34, 0x94, 0xd8, 0xc1, 0xb8, 0x24, 0x4d, 0x50,
0x4d, 0x2f, 0x6a, 0x36, 0xf6, 0x58, 0x88, 0xc4, 0x92, 0xb2, 0x2b, 0x27, 0xf7, 0x7d, 0x85, 0x42, 0x9c, 0x9b, 0x5e, 0xd4, 0x6c, 0xec, 0xb1, 0x10, 0x89, 0x25, 0x65, 0x57, 0x4e, 0xe8, 0x6d, 0x5f,
0xdf, 0xa8, 0x0f, 0xd0, 0x77, 0xe8, 0x6b, 0x14, 0x8a, 0x56, 0xd2, 0x6a, 0x25, 0xdb, 0x14, 0x7c, 0xa1, 0xcf, 0xd4, 0xde, 0xf7, 0x1d, 0xfa, 0x20, 0x45, 0x2b, 0x69, 0xb5, 0x2b, 0xdb, 0x14, 0x0c,
0x25, 0x7d, 0xb3, 0x33, 0xab, 0x6f, 0xbe, 0xd9, 0x99, 0x15, 0xfc, 0xeb, 0xcf, 0x66, 0xee, 0x04, 0xbd, 0x92, 0xe6, 0x57, 0xdf, 0x7c, 0x3b, 0x3b, 0x23, 0xf8, 0xdb, 0x9f, 0x4e, 0xdd, 0x31, 0xb6,
0x3b, 0xf1, 0xa3, 0x1d, 0x30, 0x3f, 0xf4, 0x49, 0x35, 0x46, 0xe6, 0xd3, 0xf3, 0x00, 0xbd, 0xf1, 0xe3, 0x47, 0x2b, 0x60, 0x7e, 0xe8, 0x93, 0x72, 0x2c, 0x99, 0x4f, 0xcf, 0x03, 0xf4, 0x46, 0x83,
0xf0, 0xac, 0x13, 0xdc, 0x38, 0x1d, 0xb1, 0xd4, 0xe1, 0xd3, 0x9b, 0xf1, 0x03, 0xef, 0x3c, 0xf0, 0xb3, 0x76, 0x70, 0xe3, 0xb4, 0x85, 0xa9, 0xcd, 0x27, 0x37, 0xa3, 0x07, 0xde, 0x7e, 0xe0, 0xb1,
0xd8, 0xd5, 0x3a, 0x06, 0xe8, 0xf9, 0xf3, 0xb9, 0xef, 0xd9, 0xc8, 0x03, 0x62, 0x40, 0x0d, 0x19, 0xab, 0x75, 0x04, 0xd0, 0xf5, 0x67, 0x33, 0xdf, 0xb3, 0x91, 0x07, 0xa4, 0x01, 0x15, 0x64, 0xac,
0xeb, 0xf9, 0x53, 0x34, 0xb4, 0x96, 0x76, 0x54, 0xb1, 0x53, 0x48, 0x0e, 0xa0, 0x8a, 0x8c, 0x9d, 0xeb, 0x4f, 0xb0, 0x61, 0x34, 0x8d, 0xc3, 0x92, 0x9d, 0x8a, 0x64, 0x1f, 0xca, 0xc8, 0xd8, 0x19,
0x71, 0xc7, 0xd0, 0x5b, 0xda, 0x51, 0xdd, 0x4e, 0x90, 0xf5, 0x0e, 0x6a, 0x23, 0xea, 0x5c, 0x71, 0x77, 0x1a, 0x85, 0xa6, 0x71, 0x58, 0xb5, 0x13, 0xc9, 0x7a, 0x0b, 0x95, 0x21, 0x75, 0xae, 0x38,
0x64, 0x91, 0xcb, 0x82, 0x23, 0x1b, 0xf6, 0x45, 0x6c, 0xdd, 0x4e, 0x10, 0x31, 0x61, 0x2b, 0x7a, 0xb2, 0xc8, 0x65, 0xce, 0x91, 0x0d, 0x7a, 0x22, 0xb6, 0x6a, 0x27, 0x12, 0x31, 0x61, 0x33, 0x7a,
0xfb, 0x44, 0xe7, 0x98, 0x04, 0x4b, 0x6c, 0x5d, 0x43, 0x69, 0x44, 0x1d, 0xb2, 0x0f, 0x95, 0x90, 0xfb, 0x40, 0x67, 0x98, 0x04, 0x4b, 0xd9, 0xba, 0x86, 0xe2, 0x90, 0x3a, 0x64, 0x0f, 0x4a, 0x21,
0x3a, 0x32, 0x32, 0x06, 0x11, 0x9b, 0x90, 0x3a, 0x4a, 0x5c, 0x0a, 0xc9, 0xcb, 0x78, 0xcb, 0x53, 0x75, 0x64, 0x64, 0x2c, 0x44, 0x68, 0x42, 0xea, 0x28, 0x71, 0xa9, 0x48, 0x5e, 0xc4, 0x29, 0x4f,
0x97, 0x87, 0x46, 0xa9, 0x55, 0x3a, 0x6a, 0x74, 0x9b, 0xed, 0x44, 0x81, 0x84, 0x8d, 0x2d, 0x1d, 0x5d, 0x1e, 0x36, 0x8a, 0xcd, 0xe2, 0x61, 0xad, 0x53, 0x6f, 0x25, 0x0c, 0x24, 0x68, 0x6c, 0xe9,
0xac, 0x8f, 0xb0, 0x3b, 0xc0, 0x30, 0x32, 0x8e, 0xa8, 0xc3, 0x6d, 0xbc, 0x5b, 0xcb, 0xb4, 0x05, 0x60, 0xbd, 0x87, 0x9d, 0x3e, 0x86, 0x91, 0x72, 0x48, 0x1d, 0x6e, 0xe3, 0xdd, 0x4a, 0xa4, 0x4d,
0x0d, 0x3f, 0x40, 0x46, 0x43, 0xd7, 0xf7, 0x86, 0xfd, 0xe4, 0xa3, 0xaa, 0xc9, 0x9a, 0x41, 0x33, 0xa8, 0xf9, 0x01, 0x32, 0x1a, 0xba, 0xbe, 0x37, 0xe8, 0x25, 0x1f, 0x55, 0x55, 0xd6, 0x14, 0xea,
0xb7, 0x17, 0x0f, 0x48, 0x17, 0x60, 0x22, 0x15, 0x14, 0x1b, 0x36, 0xba, 0x24, 0x65, 0x93, 0x69, 0x5a, 0x2e, 0x1e, 0x90, 0x0e, 0xc0, 0x58, 0x32, 0x28, 0x12, 0xd6, 0x3a, 0x24, 0x45, 0x93, 0x71,
0x6b, 0x2b, 0x5e, 0xe4, 0x09, 0x94, 0x43, 0xea, 0x70, 0x43, 0x17, 0xdc, 0x1b, 0x0a, 0x77, 0x5b, 0x6b, 0x2b, 0x5e, 0xe4, 0x09, 0x6c, 0x84, 0xd4, 0xe1, 0x8d, 0x82, 0xc0, 0x5e, 0x53, 0xb0, 0xdb,
0x2c, 0x58, 0x5f, 0x35, 0xd8, 0xee, 0x31, 0xa4, 0x21, 0x46, 0x36, 0xbc, 0x53, 0xb5, 0xd0, 0xf2, 0xc2, 0x60, 0x7d, 0x31, 0x60, 0xab, 0xcb, 0x90, 0x86, 0x18, 0xe9, 0xf0, 0x4e, 0xe5, 0xc2, 0xd0,
0x5a, 0x64, 0xc9, 0xe8, 0xb9, 0x64, 0x1e, 0x03, 0xc4, 0x6f, 0x52, 0xa5, 0xba, 0xad, 0x58, 0x8a, 0xb9, 0xc8, 0x8a, 0x29, 0x68, 0xc5, 0x3c, 0x06, 0x88, 0xdf, 0x24, 0x4b, 0x55, 0x5b, 0xd1, 0xe4,
0xc9, 0x96, 0x97, 0x93, 0xed, 0xc1, 0x8e, 0xc2, 0x61, 0xb3, 0x54, 0xad, 0x2f, 0xb0, 0xdd, 0xc7, 0x8b, 0xdd, 0x58, 0x2c, 0xb6, 0x0b, 0xdb, 0x0a, 0x86, 0xf5, 0x4a, 0xb5, 0x3e, 0xc1, 0x56, 0x0f,
0x5b, 0x94, 0x89, 0xac, 0xd3, 0x5e, 0x1e, 0x01, 0x5d, 0x3d, 0x02, 0x05, 0x92, 0xa5, 0x95, 0x24, 0x6f, 0x51, 0x16, 0xb2, 0x8a, 0x7b, 0xd9, 0x02, 0x05, 0xb5, 0x05, 0x72, 0x20, 0x8b, 0x4b, 0x41,
0x95, 0xfd, 0x37, 0x24, 0xf9, 0x53, 0x83, 0xfa, 0x25, 0x86, 0x1b, 0x51, 0x34, 0xa0, 0xe6, 0xe1, 0x2a, 0xf9, 0xd7, 0x04, 0xf9, 0xc3, 0x80, 0xea, 0x25, 0x86, 0x6b, 0x41, 0x6c, 0x40, 0xc5, 0xc3,
0x83, 0xa8, 0x4c, 0x4c, 0x2f, 0x85, 0xa4, 0x0d, 0xc4, 0xf5, 0x26, 0x0c, 0x29, 0xc7, 0xab, 0xac, 0x07, 0x71, 0x32, 0x31, 0xbc, 0x54, 0x24, 0x2d, 0x20, 0xae, 0x37, 0x66, 0x48, 0x39, 0x5e, 0x65,
0x12, 0x65, 0x51, 0x89, 0x15, 0x2b, 0xe4, 0x05, 0xfc, 0xc3, 0x70, 0xba, 0x98, 0xa8, 0xde, 0x15, 0x27, 0xb1, 0x21, 0x4e, 0x62, 0x89, 0x85, 0x3c, 0x87, 0xbf, 0x18, 0x4e, 0xe6, 0x63, 0xd5, 0xbb,
0xe1, 0xbd, 0x64, 0x2f, 0x0a, 0x53, 0x5d, 0x16, 0xe6, 0x3d, 0x40, 0x9a, 0xd2, 0x86, 0xaa, 0xfc, 0x24, 0xbc, 0x17, 0xf4, 0x79, 0x62, 0xca, 0x8b, 0xc4, 0xbc, 0x03, 0x48, 0x4b, 0x5a, 0x93, 0x95,
0xd2, 0x60, 0xf7, 0x12, 0xbd, 0xe9, 0x19, 0x77, 0xba, 0xb9, 0x63, 0x28, 0x98, 0x69, 0x82, 0x59, 0x9f, 0x06, 0xec, 0x5c, 0xa2, 0x37, 0x39, 0xe3, 0x4e, 0x47, 0x6b, 0x43, 0x81, 0xcc, 0x10, 0xc8,
0x0a, 0xa3, 0x2e, 0xbf, 0x4a, 0x5b, 0x52, 0x17, 0x4b, 0x12, 0x93, 0x43, 0xa8, 0x0f, 0x98, 0xbf, 0x52, 0x31, 0xba, 0xe5, 0x57, 0xe9, 0x95, 0x2c, 0x08, 0x93, 0x94, 0xc9, 0xff, 0x50, 0xed, 0x33,
0x08, 0x94, 0x93, 0x98, 0x19, 0x22, 0xb9, 0x39, 0x7a, 0x53, 0x79, 0x06, 0x13, 0x14, 0xc9, 0x11, 0x7f, 0x1e, 0x28, 0x9d, 0x98, 0x29, 0x22, 0xba, 0x39, 0x7a, 0x13, 0xd9, 0x83, 0x89, 0x14, 0xd1,
0xbd, 0x21, 0xbb, 0xb8, 0xa5, 0xe1, 0xcc, 0x67, 0xf3, 0x61, 0xdf, 0xa8, 0x88, 0xa9, 0xb4, 0x64, 0x11, 0xbd, 0x21, 0xbb, 0xb8, 0xa5, 0xe1, 0xd4, 0x67, 0xb3, 0x41, 0xaf, 0x51, 0x12, 0x53, 0x69,
0x8f, 0x78, 0x4d, 0x7c, 0x2f, 0x44, 0x2f, 0x4c, 0xa4, 0x48, 0x61, 0x51, 0xa8, 0xda, 0xb2, 0x50, 0x41, 0x1f, 0xe1, 0x1a, 0xfb, 0x5e, 0x88, 0x5e, 0x98, 0x50, 0x91, 0x8a, 0x79, 0xa2, 0x2a, 0x8b,
0x27, 0xd0, 0xcc, 0x65, 0xb9, 0xa1, 0x5a, 0xdf, 0x34, 0xd8, 0x1b, 0x08, 0xc1, 0xa3, 0xdd, 0x4e, 0x44, 0x9d, 0x40, 0x5d, 0xab, 0x72, 0x4d, 0xb6, 0xbe, 0x1a, 0xb0, 0xdb, 0x17, 0x84, 0x47, 0xd9,
0xfd, 0x78, 0xd4, 0xf4, 0x01, 0x2e, 0xa8, 0xe3, 0x7a, 0xe2, 0x63, 0xc9, 0x4e, 0xcf, 0xda, 0x1c, 0x4e, 0xfd, 0x78, 0xd4, 0xf4, 0x00, 0x2e, 0xa8, 0xe3, 0x7a, 0xe2, 0x63, 0x49, 0xa6, 0x67, 0x2d,
0xd9, 0x3d, 0xb2, 0x31, 0x0d, 0xdc, 0x71, 0x40, 0x19, 0x9d, 0xf3, 0xb6, 0x8d, 0x77, 0x0b, 0xe4, 0x8e, 0xec, 0x1e, 0xd9, 0x88, 0x06, 0xee, 0x28, 0xa0, 0x8c, 0xce, 0x78, 0xcb, 0xc6, 0xbb, 0x39,
0x61, 0xe6, 0x6b, 0x2b, 0x71, 0x6b, 0x7b, 0xfc, 0xef, 0xed, 0xf1, 0x5d, 0x03, 0xc8, 0x28, 0xa5, 0xf2, 0x30, 0xf3, 0xb5, 0x95, 0xb8, 0x95, 0x77, 0xfc, 0xf7, 0xd7, 0xc3, 0x05, 0xc8, 0x10, 0x91,
0xb3, 0x58, 0x29, 0xa0, 0xc4, 0x6a, 0x6d, 0xf5, 0x7c, 0x6d, 0x0f, 0xa1, 0xee, 0x14, 0xeb, 0x27, 0x03, 0x28, 0x45, 0x91, 0x5c, 0x1c, 0xde, 0x92, 0xa1, 0x19, 0x5b, 0x55, 0x36, 0x0b, 0x3a, 0x9b,
0x0d, 0xaa, 0xf6, 0xe5, 0xbc, 0xf6, 0x26, 0x6c, 0x45, 0x95, 0x1a, 0xb9, 0x73, 0x14, 0x95, 0x2b, 0x26, 0x6c, 0x46, 0xdc, 0x0f, 0xdd, 0xa4, 0xdb, 0x8b, 0xb6, 0x94, 0xad, 0x6f, 0x06, 0x90, 0x3c,
0xd9, 0x12, 0x5b, 0x3f, 0x34, 0x20, 0x45, 0xb9, 0x36, 0x9c, 0xa6, 0x27, 0x39, 0x8d, 0x75, 0x11, 0x01, 0x6b, 0xce, 0xc7, 0x13, 0x8d, 0xb5, 0x82, 0x88, 0x39, 0x58, 0xca, 0x1a, 0x0f, 0x7c, 0x8f,
0xf3, 0x7c, 0xa5, 0xc6, 0x3c, 0xf0, 0x3d, 0x8e, 0x6b, 0x44, 0x7e, 0x0d, 0x8d, 0x30, 0x63, 0x93, 0xe3, 0x0a, 0xda, 0x5e, 0x41, 0x2d, 0xcc, 0xd0, 0x24, 0x9b, 0x82, 0x28, 0x45, 0x27, 0x26, 0x5b,
0xdc, 0x2b, 0x44, 0x99, 0xcd, 0xc9, 0x92, 0xad, 0xba, 0x75, 0x7f, 0xeb, 0xb0, 0x73, 0x2e, 0x5c, 0x75, 0xb3, 0xc6, 0xe2, 0x1c, 0x93, 0x19, 0x7f, 0xfc, 0x79, 0xd0, 0xfb, 0x13, 0x63, 0xcb, 0x11,
0x2e, 0x91, 0xdd, 0xbb, 0x13, 0x24, 0xc7, 0xd0, 0x50, 0xee, 0x08, 0x72, 0x90, 0xee, 0x90, 0xbf, 0x5c, 0x69, 0x1f, 0x59, 0x93, 0xab, 0x47, 0x50, 0x0c, 0xa9, 0x93, 0x90, 0xa4, 0xad, 0x92, 0x48,
0x84, 0xcc, 0xff, 0x57, 0xda, 0x79, 0x40, 0xde, 0x40, 0x5d, 0x8e, 0x5d, 0xb2, 0x2f, 0x73, 0x57, 0xdf, 0xf9, 0x5e, 0x84, 0xed, 0x73, 0xa1, 0xbb, 0x44, 0x76, 0xef, 0x8e, 0x91, 0x1c, 0x41, 0x4d,
0x6e, 0x03, 0xf3, 0xbf, 0x15, 0xd6, 0x38, 0x52, 0xce, 0xc2, 0x2c, 0x52, 0x1d, 0xbf, 0x59, 0x64, 0xd9, 0x61, 0x64, 0x3f, 0x0d, 0xd1, 0x97, 0xa4, 0xf9, 0xef, 0x52, 0x3d, 0x0f, 0xc8, 0x6b, 0xa8,
0x7e, 0x68, 0x76, 0xa0, 0x1a, 0x0f, 0x0b, 0xb2, 0x97, 0x3a, 0xc8, 0x79, 0x68, 0x92, 0xa2, 0x89, 0xca, 0xb5, 0x40, 0xf6, 0x24, 0x3a, 0x65, 0x5b, 0x99, 0xff, 0x2c, 0xd1, 0xc6, 0x91, 0x72, 0x56,
0x07, 0x51, 0x92, 0x4a, 0xd3, 0x64, 0x49, 0xe6, 0xe7, 0x45, 0x96, 0x64, 0xb1, 0xc3, 0x06, 0xe2, 0x67, 0x91, 0xea, 0x7a, 0xc8, 0x22, 0xf5, 0xa1, 0xde, 0x86, 0x72, 0x3c, 0xcc, 0xc8, 0x6e, 0xea,
0x52, 0x56, 0xaa, 0x4f, 0x1e, 0x29, 0x7a, 0xe4, 0x9b, 0xc8, 0x34, 0xd7, 0x2d, 0xf1, 0xe0, 0xc3, 0x20, 0xe7, 0xb5, 0x49, 0xf2, 0x2a, 0x1e, 0x44, 0x45, 0x2a, 0x97, 0x3a, 0x2b, 0x52, 0x9f, 0x67,
0xde, 0xe7, 0x66, 0x3b, 0xf9, 0xfb, 0x79, 0x1b, 0x3f, 0xae, 0xab, 0xe2, 0xd7, 0xe6, 0xd5, 0x9f, 0x59, 0x91, 0xf9, 0x09, 0xd0, 0x17, 0x3f, 0x0d, 0x4a, 0x2f, 0x93, 0xff, 0x14, 0x3e, 0xf4, 0x4b,
0x00, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x36, 0xc4, 0xe9, 0x1c, 0x09, 0x00, 0x00, 0x6e, 0x9a, 0xab, 0x4c, 0x32, 0x91, 0x72, 0xd0, 0x5a, 0x22, 0xbd, 0xcb, 0xb4, 0x44, 0xb9, 0xde,
0x38, 0xde, 0xfd, 0x58, 0x6f, 0x25, 0xbf, 0x79, 0x6f, 0xe2, 0xc7, 0x75, 0x59, 0xfc, 0xc3, 0xbd,
0xfc, 0x15, 0x00, 0x00, 0xff, 0xff, 0x74, 0xd2, 0x97, 0x48, 0x05, 0x0a, 0x00, 0x00,
} }

View File

@ -84,11 +84,9 @@ message GetTagSendLogsReq {
} }
message TagSendLog { message TagSendLog {
repeated string userList = 1; repeated TagUser users = 1;
repeated string tagList = 2; string content = 2;
repeated string groupList =3; int64 sendTime = 3;
string content = 4;
int64 sendTime = 5;
} }
message GetTagSendLogsResp { message GetTagSendLogsResp {
@ -97,6 +95,17 @@ message GetTagSendLogsResp {
repeated TagSendLog tagSendLogs = 3; repeated TagSendLog tagSendLogs = 3;
} }
message GetUserTagByIDReq {
string userID = 1;
string tagID = 2;
string operationID = 3;
}
message GetUserTagByIDResp {
CommonResp commonResp = 1;
Tag tag = 2;
}
service OfficeService { service OfficeService {
rpc GetUserTags(GetUserTagsReq) returns(GetUserTagsResp); rpc GetUserTags(GetUserTagsReq) returns(GetUserTagsResp);
rpc CreateTag(CreateTagReq) returns(CreateTagResp); rpc CreateTag(CreateTagReq) returns(CreateTagResp);
@ -104,5 +113,6 @@ service OfficeService {
rpc SetTag(SetTagReq) returns(SetTagResp); rpc SetTag(SetTagReq) returns(SetTagResp);
rpc SendMsg2Tag(SendMsg2TagReq) returns(SendMsg2TagResp); rpc SendMsg2Tag(SendMsg2TagReq) returns(SendMsg2TagResp);
rpc GetTagSendLogs(GetTagSendLogsReq) returns(GetTagSendLogsResp); rpc GetTagSendLogs(GetTagSendLogsReq) returns(GetTagSendLogsResp);
rpc GetUserTagByID(GetUserTagByIDReq) returns(GetUserTagByIDResp);
} }

View File

@ -40,7 +40,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} }
func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (m *GroupInfo) String() string { return proto.CompactTextString(m) }
func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) ProtoMessage() {}
func (*GroupInfo) Descriptor() ([]byte, []int) { func (*GroupInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{0} return fileDescriptor_ws_331bd590ecfeca43, []int{0}
} }
func (m *GroupInfo) XXX_Unmarshal(b []byte) error { func (m *GroupInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfo.Unmarshal(m, b) return xxx_messageInfo_GroupInfo.Unmarshal(m, b)
@ -165,7 +165,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} }
func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) }
func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) ProtoMessage() {}
func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{1} return fileDescriptor_ws_331bd590ecfeca43, []int{1}
} }
func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b)
@ -277,7 +277,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} }
func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) }
func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) ProtoMessage() {}
func (*PublicUserInfo) Descriptor() ([]byte, []int) { func (*PublicUserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{2} return fileDescriptor_ws_331bd590ecfeca43, []int{2}
} }
func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b)
@ -352,7 +352,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} }
func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (m *UserInfo) String() string { return proto.CompactTextString(m) }
func (*UserInfo) ProtoMessage() {} func (*UserInfo) ProtoMessage() {}
func (*UserInfo) Descriptor() ([]byte, []int) { func (*UserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{3} return fileDescriptor_ws_331bd590ecfeca43, []int{3}
} }
func (m *UserInfo) XXX_Unmarshal(b []byte) error { func (m *UserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfo.Unmarshal(m, b) return xxx_messageInfo_UserInfo.Unmarshal(m, b)
@ -459,7 +459,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} }
func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (m *FriendInfo) String() string { return proto.CompactTextString(m) }
func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) ProtoMessage() {}
func (*FriendInfo) Descriptor() ([]byte, []int) { func (*FriendInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{4} return fileDescriptor_ws_331bd590ecfeca43, []int{4}
} }
func (m *FriendInfo) XXX_Unmarshal(b []byte) error { func (m *FriendInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendInfo.Unmarshal(m, b) return xxx_messageInfo_FriendInfo.Unmarshal(m, b)
@ -544,7 +544,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} }
func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (m *BlackInfo) String() string { return proto.CompactTextString(m) }
func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) ProtoMessage() {}
func (*BlackInfo) Descriptor() ([]byte, []int) { func (*BlackInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{5} return fileDescriptor_ws_331bd590ecfeca43, []int{5}
} }
func (m *BlackInfo) XXX_Unmarshal(b []byte) error { func (m *BlackInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackInfo.Unmarshal(m, b) return xxx_messageInfo_BlackInfo.Unmarshal(m, b)
@ -625,7 +625,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} }
func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (m *GroupRequest) String() string { return proto.CompactTextString(m) }
func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) ProtoMessage() {}
func (*GroupRequest) Descriptor() ([]byte, []int) { func (*GroupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{6} return fileDescriptor_ws_331bd590ecfeca43, []int{6}
} }
func (m *GroupRequest) XXX_Unmarshal(b []byte) error { func (m *GroupRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupRequest.Unmarshal(m, b) return xxx_messageInfo_GroupRequest.Unmarshal(m, b)
@ -733,7 +733,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} }
func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (m *FriendRequest) String() string { return proto.CompactTextString(m) }
func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) ProtoMessage() {}
func (*FriendRequest) Descriptor() ([]byte, []int) { func (*FriendRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{7} return fileDescriptor_ws_331bd590ecfeca43, []int{7}
} }
func (m *FriendRequest) XXX_Unmarshal(b []byte) error { func (m *FriendRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendRequest.Unmarshal(m, b) return xxx_messageInfo_FriendRequest.Unmarshal(m, b)
@ -871,7 +871,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe
func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) ProtoMessage() {}
func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{8} return fileDescriptor_ws_331bd590ecfeca43, []int{8}
} }
func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b)
@ -925,7 +925,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq
func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) ProtoMessage() {}
func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{9} return fileDescriptor_ws_331bd590ecfeca43, []int{9}
} }
func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b)
@ -976,7 +976,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{10} return fileDescriptor_ws_331bd590ecfeca43, []int{10}
} }
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@ -1008,7 +1008,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{11} return fileDescriptor_ws_331bd590ecfeca43, []int{11}
} }
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@ -1055,7 +1055,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} }
func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) ProtoMessage() {}
func (*UserSendMsgResp) Descriptor() ([]byte, []int) { func (*UserSendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{12} return fileDescriptor_ws_331bd590ecfeca43, []int{12}
} }
func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b)
@ -1124,7 +1124,7 @@ func (m *MsgData) Reset() { *m = MsgData{} }
func (m *MsgData) String() string { return proto.CompactTextString(m) } func (m *MsgData) String() string { return proto.CompactTextString(m) }
func (*MsgData) ProtoMessage() {} func (*MsgData) ProtoMessage() {}
func (*MsgData) Descriptor() ([]byte, []int) { func (*MsgData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{13} return fileDescriptor_ws_331bd590ecfeca43, []int{13}
} }
func (m *MsgData) XXX_Unmarshal(b []byte) error { func (m *MsgData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgData.Unmarshal(m, b) return xxx_messageInfo_MsgData.Unmarshal(m, b)
@ -1285,7 +1285,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} }
func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) }
func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) ProtoMessage() {}
func (*OfflinePushInfo) Descriptor() ([]byte, []int) { func (*OfflinePushInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{14} return fileDescriptor_ws_331bd590ecfeca43, []int{14}
} }
func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b)
@ -1353,7 +1353,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} }
func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (m *TipsComm) String() string { return proto.CompactTextString(m) }
func (*TipsComm) ProtoMessage() {} func (*TipsComm) ProtoMessage() {}
func (*TipsComm) Descriptor() ([]byte, []int) { func (*TipsComm) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{15} return fileDescriptor_ws_331bd590ecfeca43, []int{15}
} }
func (m *TipsComm) XXX_Unmarshal(b []byte) error { func (m *TipsComm) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TipsComm.Unmarshal(m, b) return xxx_messageInfo_TipsComm.Unmarshal(m, b)
@ -1410,7 +1410,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} }
func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) }
func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) ProtoMessage() {}
func (*GroupCreatedTips) Descriptor() ([]byte, []int) { func (*GroupCreatedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{16} return fileDescriptor_ws_331bd590ecfeca43, []int{16}
} }
func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b)
@ -1479,7 +1479,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} }
func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) }
func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) ProtoMessage() {}
func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { func (*GroupInfoSetTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{17} return fileDescriptor_ws_331bd590ecfeca43, []int{17}
} }
func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b)
@ -1534,7 +1534,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi
func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) }
func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) ProtoMessage() {}
func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{18} return fileDescriptor_ws_331bd590ecfeca43, []int{18}
} }
func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b)
@ -1590,7 +1590,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} }
func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) }
func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) ProtoMessage() {}
func (*MemberQuitTips) Descriptor() ([]byte, []int) { func (*MemberQuitTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{19} return fileDescriptor_ws_331bd590ecfeca43, []int{19}
} }
func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b)
@ -1645,7 +1645,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc
func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) ProtoMessage() {}
func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{20} return fileDescriptor_ws_331bd590ecfeca43, []int{20}
} }
func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b)
@ -1700,7 +1700,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe
func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) ProtoMessage() {}
func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{21} return fileDescriptor_ws_331bd590ecfeca43, []int{21}
} }
func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b)
@ -1756,7 +1756,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred
func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) }
func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) ProtoMessage() {}
func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{22} return fileDescriptor_ws_331bd590ecfeca43, []int{22}
} }
func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b)
@ -1819,7 +1819,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} }
func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) }
func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) ProtoMessage() {}
func (*MemberKickedTips) Descriptor() ([]byte, []int) { func (*MemberKickedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{23} return fileDescriptor_ws_331bd590ecfeca43, []int{23}
} }
func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b)
@ -1882,7 +1882,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} }
func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) }
func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) ProtoMessage() {}
func (*MemberInvitedTips) Descriptor() ([]byte, []int) { func (*MemberInvitedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{24} return fileDescriptor_ws_331bd590ecfeca43, []int{24}
} }
func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b)
@ -1944,7 +1944,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} }
func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) }
func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) ProtoMessage() {}
func (*MemberEnterTips) Descriptor() ([]byte, []int) { func (*MemberEnterTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{25} return fileDescriptor_ws_331bd590ecfeca43, []int{25}
} }
func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b)
@ -1998,7 +1998,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} }
func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) }
func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) ProtoMessage() {}
func (*GroupDismissedTips) Descriptor() ([]byte, []int) { func (*GroupDismissedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{26} return fileDescriptor_ws_331bd590ecfeca43, []int{26}
} }
func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b)
@ -2054,7 +2054,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} }
func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) ProtoMessage() {}
func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{27} return fileDescriptor_ws_331bd590ecfeca43, []int{27}
} }
func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b)
@ -2123,7 +2123,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut
func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) ProtoMessage() {}
func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{28} return fileDescriptor_ws_331bd590ecfeca43, []int{28}
} }
func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b)
@ -2184,7 +2184,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} }
func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) ProtoMessage() {}
func (*GroupMutedTips) Descriptor() ([]byte, []int) { func (*GroupMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{29} return fileDescriptor_ws_331bd590ecfeca43, []int{29}
} }
func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b)
@ -2238,7 +2238,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} }
func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) ProtoMessage() {}
func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{30} return fileDescriptor_ws_331bd590ecfeca43, []int{30}
} }
func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b)
@ -2292,7 +2292,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} }
func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (m *FriendApplication) String() string { return proto.CompactTextString(m) }
func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) ProtoMessage() {}
func (*FriendApplication) Descriptor() ([]byte, []int) { func (*FriendApplication) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{31} return fileDescriptor_ws_331bd590ecfeca43, []int{31}
} }
func (m *FriendApplication) XXX_Unmarshal(b []byte) error { func (m *FriendApplication) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplication.Unmarshal(m, b) return xxx_messageInfo_FriendApplication.Unmarshal(m, b)
@ -2345,7 +2345,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} }
func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (m *FromToUserID) String() string { return proto.CompactTextString(m) }
func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) ProtoMessage() {}
func (*FromToUserID) Descriptor() ([]byte, []int) { func (*FromToUserID) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{32} return fileDescriptor_ws_331bd590ecfeca43, []int{32}
} }
func (m *FromToUserID) XXX_Unmarshal(b []byte) error { func (m *FromToUserID) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FromToUserID.Unmarshal(m, b) return xxx_messageInfo_FromToUserID.Unmarshal(m, b)
@ -2391,7 +2391,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} }
func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) ProtoMessage() {}
func (*FriendApplicationTips) Descriptor() ([]byte, []int) { func (*FriendApplicationTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{33} return fileDescriptor_ws_331bd590ecfeca43, []int{33}
} }
func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b)
@ -2431,7 +2431,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication
func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) ProtoMessage() {}
func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{34} return fileDescriptor_ws_331bd590ecfeca43, []int{34}
} }
func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b)
@ -2478,7 +2478,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication
func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) ProtoMessage() {}
func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{35} return fileDescriptor_ws_331bd590ecfeca43, []int{35}
} }
func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b)
@ -2526,7 +2526,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} }
func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) }
func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) ProtoMessage() {}
func (*FriendAddedTips) Descriptor() ([]byte, []int) { func (*FriendAddedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{36} return fileDescriptor_ws_331bd590ecfeca43, []int{36}
} }
func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b)
@ -2579,7 +2579,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} }
func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) }
func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) ProtoMessage() {}
func (*FriendDeletedTips) Descriptor() ([]byte, []int) { func (*FriendDeletedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{37} return fileDescriptor_ws_331bd590ecfeca43, []int{37}
} }
func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b)
@ -2617,7 +2617,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} }
func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) }
func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) ProtoMessage() {}
func (*BlackAddedTips) Descriptor() ([]byte, []int) { func (*BlackAddedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{38} return fileDescriptor_ws_331bd590ecfeca43, []int{38}
} }
func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b)
@ -2655,7 +2655,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} }
func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) }
func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) ProtoMessage() {}
func (*BlackDeletedTips) Descriptor() ([]byte, []int) { func (*BlackDeletedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{39} return fileDescriptor_ws_331bd590ecfeca43, []int{39}
} }
func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b)
@ -2693,7 +2693,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} }
func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) }
func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) ProtoMessage() {}
func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{40} return fileDescriptor_ws_331bd590ecfeca43, []int{40}
} }
func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b)
@ -2732,7 +2732,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} }
func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) }
func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) ProtoMessage() {}
func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{41} return fileDescriptor_ws_331bd590ecfeca43, []int{41}
} }
func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b)
@ -2771,7 +2771,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{}
func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) }
func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) ProtoMessage() {}
func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { func (*ConversationUpdateTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{42} return fileDescriptor_ws_331bd590ecfeca43, []int{42}
} }
func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b)
@ -2798,6 +2798,60 @@ func (m *ConversationUpdateTips) GetUserID() string {
return "" return ""
} }
type ConversationSetPrivateTips struct {
RecvID string `protobuf:"bytes,1,opt,name=recvID" json:"recvID,omitempty"`
SendID string `protobuf:"bytes,2,opt,name=sendID" json:"sendID,omitempty"`
IsPrivate bool `protobuf:"varint,3,opt,name=isPrivate" json:"isPrivate,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPrivateTips{} }
func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) }
func (*ConversationSetPrivateTips) ProtoMessage() {}
func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_331bd590ecfeca43, []int{43}
}
func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b)
}
func (m *ConversationSetPrivateTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ConversationSetPrivateTips.Marshal(b, m, deterministic)
}
func (dst *ConversationSetPrivateTips) XXX_Merge(src proto.Message) {
xxx_messageInfo_ConversationSetPrivateTips.Merge(dst, src)
}
func (m *ConversationSetPrivateTips) XXX_Size() int {
return xxx_messageInfo_ConversationSetPrivateTips.Size(m)
}
func (m *ConversationSetPrivateTips) XXX_DiscardUnknown() {
xxx_messageInfo_ConversationSetPrivateTips.DiscardUnknown(m)
}
var xxx_messageInfo_ConversationSetPrivateTips proto.InternalMessageInfo
func (m *ConversationSetPrivateTips) GetRecvID() string {
if m != nil {
return m.RecvID
}
return ""
}
func (m *ConversationSetPrivateTips) GetSendID() string {
if m != nil {
return m.SendID
}
return ""
}
func (m *ConversationSetPrivateTips) GetIsPrivate() bool {
if m != nil {
return m.IsPrivate
}
return false
}
// /cms // /cms
type RequestPagination struct { type RequestPagination struct {
PageNumber int32 `protobuf:"varint,1,opt,name=pageNumber" json:"pageNumber,omitempty"` PageNumber int32 `protobuf:"varint,1,opt,name=pageNumber" json:"pageNumber,omitempty"`
@ -2811,7 +2865,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} }
func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (m *RequestPagination) String() string { return proto.CompactTextString(m) }
func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) ProtoMessage() {}
func (*RequestPagination) Descriptor() ([]byte, []int) { func (*RequestPagination) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{43} return fileDescriptor_ws_331bd590ecfeca43, []int{44}
} }
func (m *RequestPagination) XXX_Unmarshal(b []byte) error { func (m *RequestPagination) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RequestPagination.Unmarshal(m, b) return xxx_messageInfo_RequestPagination.Unmarshal(m, b)
@ -2857,7 +2911,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} }
func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) }
func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) ProtoMessage() {}
func (*ResponsePagination) Descriptor() ([]byte, []int) { func (*ResponsePagination) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{44} return fileDescriptor_ws_331bd590ecfeca43, []int{45}
} }
func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { func (m *ResponsePagination) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) return xxx_messageInfo_ResponsePagination.Unmarshal(m, b)
@ -2910,7 +2964,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} }
func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (m *SignalReq) String() string { return proto.CompactTextString(m) }
func (*SignalReq) ProtoMessage() {} func (*SignalReq) ProtoMessage() {}
func (*SignalReq) Descriptor() ([]byte, []int) { func (*SignalReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{45} return fileDescriptor_ws_331bd590ecfeca43, []int{46}
} }
func (m *SignalReq) XXX_Unmarshal(b []byte) error { func (m *SignalReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalReq.Unmarshal(m, b) return xxx_messageInfo_SignalReq.Unmarshal(m, b)
@ -3177,7 +3231,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} }
func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (m *SignalResp) String() string { return proto.CompactTextString(m) }
func (*SignalResp) ProtoMessage() {} func (*SignalResp) ProtoMessage() {}
func (*SignalResp) Descriptor() ([]byte, []int) { func (*SignalResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{46} return fileDescriptor_ws_331bd590ecfeca43, []int{47}
} }
func (m *SignalResp) XXX_Unmarshal(b []byte) error { func (m *SignalResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalResp.Unmarshal(m, b) return xxx_messageInfo_SignalResp.Unmarshal(m, b)
@ -3445,7 +3499,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} }
func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) }
func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) ProtoMessage() {}
func (*InvitationInfo) Descriptor() ([]byte, []int) { func (*InvitationInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{47} return fileDescriptor_ws_331bd590ecfeca43, []int{48}
} }
func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { func (m *InvitationInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) return xxx_messageInfo_InvitationInfo.Unmarshal(m, b)
@ -3541,7 +3595,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} }
func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) }
func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) ProtoMessage() {}
func (*ParticipantMetaData) Descriptor() ([]byte, []int) { func (*ParticipantMetaData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{48} return fileDescriptor_ws_331bd590ecfeca43, []int{49}
} }
func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b)
@ -3596,7 +3650,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} }
func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) }
func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) ProtoMessage() {}
func (*SignalInviteReq) Descriptor() ([]byte, []int) { func (*SignalInviteReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{49} return fileDescriptor_ws_331bd590ecfeca43, []int{50}
} }
func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b)
@ -3657,7 +3711,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} }
func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) }
func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) ProtoMessage() {}
func (*SignalInviteReply) Descriptor() ([]byte, []int) { func (*SignalInviteReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{50} return fileDescriptor_ws_331bd590ecfeca43, []int{51}
} }
func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b)
@ -3712,7 +3766,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{}
func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) }
func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) ProtoMessage() {}
func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{51} return fileDescriptor_ws_331bd590ecfeca43, []int{52}
} }
func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b)
@ -3773,7 +3827,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep
func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) }
func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) ProtoMessage() {}
func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{52} return fileDescriptor_ws_331bd590ecfeca43, []int{53}
} }
func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b)
@ -3828,7 +3882,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} }
func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) }
func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) ProtoMessage() {}
func (*SignalCancelReq) Descriptor() ([]byte, []int) { func (*SignalCancelReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{53} return fileDescriptor_ws_331bd590ecfeca43, []int{54}
} }
func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b)
@ -3886,7 +3940,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} }
func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) }
func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) ProtoMessage() {}
func (*SignalCancelReply) Descriptor() ([]byte, []int) { func (*SignalCancelReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{54} return fileDescriptor_ws_331bd590ecfeca43, []int{55}
} }
func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b)
@ -3921,7 +3975,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} }
func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) }
func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) ProtoMessage() {}
func (*SignalAcceptReq) Descriptor() ([]byte, []int) { func (*SignalAcceptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{55} return fileDescriptor_ws_331bd590ecfeca43, []int{56}
} }
func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b)
@ -3989,7 +4043,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} }
func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) }
func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) ProtoMessage() {}
func (*SignalAcceptReply) Descriptor() ([]byte, []int) { func (*SignalAcceptReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{56} return fileDescriptor_ws_331bd590ecfeca43, []int{57}
} }
func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b)
@ -4043,7 +4097,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} }
func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) }
func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) ProtoMessage() {}
func (*SignalHungUpReq) Descriptor() ([]byte, []int) { func (*SignalHungUpReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{57} return fileDescriptor_ws_331bd590ecfeca43, []int{58}
} }
func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b)
@ -4094,7 +4148,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} }
func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) }
func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) ProtoMessage() {}
func (*SignalHungUpReply) Descriptor() ([]byte, []int) { func (*SignalHungUpReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{58} return fileDescriptor_ws_331bd590ecfeca43, []int{59}
} }
func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b)
@ -4129,7 +4183,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} }
func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) }
func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) ProtoMessage() {}
func (*SignalRejectReq) Descriptor() ([]byte, []int) { func (*SignalRejectReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{59} return fileDescriptor_ws_331bd590ecfeca43, []int{60}
} }
func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b)
@ -4194,7 +4248,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} }
func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) }
func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) ProtoMessage() {}
func (*SignalRejectReply) Descriptor() ([]byte, []int) { func (*SignalRejectReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{60} return fileDescriptor_ws_331bd590ecfeca43, []int{61}
} }
func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b)
@ -4228,7 +4282,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} }
func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) }
func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) ProtoMessage() {}
func (*DelMsgListReq) Descriptor() ([]byte, []int) { func (*DelMsgListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{61} return fileDescriptor_ws_331bd590ecfeca43, []int{62}
} }
func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b)
@ -4288,7 +4342,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} }
func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) }
func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) ProtoMessage() {}
func (*DelMsgListResp) Descriptor() ([]byte, []int) { func (*DelMsgListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_f1fa7995a968e7fe, []int{62} return fileDescriptor_ws_331bd590ecfeca43, []int{63}
} }
func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b)
@ -4367,6 +4421,7 @@ func init() {
proto.RegisterType((*FriendInfoChangedTips)(nil), "server_api_params.FriendInfoChangedTips") proto.RegisterType((*FriendInfoChangedTips)(nil), "server_api_params.FriendInfoChangedTips")
proto.RegisterType((*UserInfoUpdatedTips)(nil), "server_api_params.UserInfoUpdatedTips") proto.RegisterType((*UserInfoUpdatedTips)(nil), "server_api_params.UserInfoUpdatedTips")
proto.RegisterType((*ConversationUpdateTips)(nil), "server_api_params.ConversationUpdateTips") proto.RegisterType((*ConversationUpdateTips)(nil), "server_api_params.ConversationUpdateTips")
proto.RegisterType((*ConversationSetPrivateTips)(nil), "server_api_params.ConversationSetPrivateTips")
proto.RegisterType((*RequestPagination)(nil), "server_api_params.RequestPagination") proto.RegisterType((*RequestPagination)(nil), "server_api_params.RequestPagination")
proto.RegisterType((*ResponsePagination)(nil), "server_api_params.ResponsePagination") proto.RegisterType((*ResponsePagination)(nil), "server_api_params.ResponsePagination")
proto.RegisterType((*SignalReq)(nil), "server_api_params.SignalReq") proto.RegisterType((*SignalReq)(nil), "server_api_params.SignalReq")
@ -4389,176 +4444,178 @@ func init() {
proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp")
} }
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_f1fa7995a968e7fe) } func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_331bd590ecfeca43) }
var fileDescriptor_ws_f1fa7995a968e7fe = []byte{ var fileDescriptor_ws_331bd590ecfeca43 = []byte{
// 2676 bytes of a gzipped FileDescriptorProto // 2713 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x23, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0xe4, 0x48,
0x15, 0xa7, 0xdb, 0xb1, 0x13, 0x3f, 0xc7, 0x71, 0xd2, 0x59, 0x82, 0x09, 0xb3, 0x43, 0x68, 0x45, 0x15, 0xc7, 0xee, 0x74, 0x27, 0xfd, 0x3a, 0x9d, 0x0f, 0x67, 0x08, 0x4d, 0x98, 0x1d, 0x82, 0x15,
0xcb, 0xb0, 0x40, 0x16, 0x0d, 0x42, 0x82, 0x5d, 0x18, 0x94, 0x8f, 0xf9, 0x5a, 0xe2, 0x99, 0x6c, 0x2d, 0xc3, 0x02, 0x59, 0x34, 0x08, 0x09, 0x66, 0x61, 0x50, 0x3e, 0xe6, 0x6b, 0x49, 0xcf, 0x64,
0x7b, 0x86, 0x45, 0x80, 0xb4, 0xea, 0xb8, 0x2b, 0x4e, 0x6f, 0xda, 0x55, 0xed, 0xfe, 0xc8, 0x4c, 0xdd, 0x33, 0x2c, 0x02, 0xa4, 0x91, 0xd3, 0xae, 0x74, 0x3c, 0x71, 0x97, 0xdd, 0x2e, 0x3b, 0x33,
0x24, 0x24, 0x24, 0x90, 0x10, 0x37, 0x4e, 0x70, 0xe0, 0x82, 0xc4, 0x05, 0x81, 0xd0, 0x6a, 0x0f, 0x91, 0x90, 0x90, 0x40, 0x42, 0xdc, 0x38, 0xc1, 0x81, 0x0b, 0x12, 0x17, 0x04, 0x42, 0xab, 0x3d,
0x70, 0x43, 0x9c, 0xf8, 0x07, 0x38, 0x22, 0x6e, 0x9c, 0xb9, 0x72, 0x40, 0x42, 0x02, 0x55, 0xbd, 0xc0, 0x0d, 0x71, 0xe2, 0x1f, 0xe0, 0x88, 0xb8, 0x71, 0xe6, 0xca, 0x01, 0x09, 0x09, 0x54, 0xf5,
0xea, 0xee, 0xaa, 0x6e, 0x3b, 0xf1, 0x46, 0xd1, 0xce, 0xac, 0x86, 0x9b, 0xdf, 0xeb, 0x7a, 0xaf, 0xca, 0x76, 0x95, 0xdd, 0x9d, 0xf4, 0x46, 0xd1, 0xce, 0xac, 0x86, 0x5b, 0xbf, 0xd7, 0xf5, 0x5e,
0x5e, 0xbd, 0xdf, 0x7b, 0xaf, 0x5e, 0x55, 0x19, 0x3a, 0xb1, 0x77, 0xf2, 0xce, 0x93, 0xf8, 0xb5, 0xbd, 0x7a, 0xbf, 0xf7, 0x5e, 0xbd, 0xaa, 0x32, 0x2c, 0x32, 0xef, 0xf8, 0xc9, 0x33, 0xf6, 0xe6,
0x27, 0xf1, 0x56, 0x18, 0xb1, 0x84, 0x59, 0x2b, 0x31, 0x89, 0x4e, 0x49, 0xf4, 0x8e, 0x1b, 0xfa, 0x33, 0xb6, 0x19, 0xc5, 0x61, 0x12, 0x5a, 0xcb, 0x8c, 0xc4, 0x27, 0x24, 0x7e, 0xe2, 0x46, 0xfe,
0xef, 0x84, 0x6e, 0xe4, 0x8e, 0x62, 0xfb, 0x5f, 0x26, 0x34, 0xef, 0x46, 0x2c, 0x0d, 0xef, 0xd3, 0x93, 0xc8, 0x8d, 0xdd, 0x21, 0xb3, 0xff, 0x65, 0x42, 0xf3, 0x6e, 0x1c, 0xa6, 0xd1, 0x7d, 0x7a,
0x23, 0x66, 0x75, 0x61, 0x7e, 0x28, 0x88, 0xbd, 0xae, 0xb1, 0x61, 0xdc, 0x68, 0x3a, 0x19, 0x69, 0x18, 0x5a, 0x1d, 0x98, 0x1d, 0x08, 0x62, 0xb7, 0x63, 0xac, 0x1b, 0xd7, 0x9b, 0x4e, 0x46, 0x5a,
0x5d, 0x83, 0xa6, 0xf8, 0xf9, 0xc0, 0x1d, 0x91, 0xae, 0x29, 0xbe, 0x15, 0x0c, 0xcb, 0x86, 0x45, 0x57, 0xa1, 0x29, 0x7e, 0x3e, 0x70, 0x87, 0xa4, 0x63, 0x8a, 0xff, 0x0a, 0x86, 0x65, 0xc3, 0x3c,
0xca, 0x12, 0xff, 0xc8, 0x1f, 0xb8, 0x89, 0xcf, 0x68, 0xb7, 0x26, 0x06, 0x68, 0x3c, 0x3e, 0xc6, 0x0d, 0x13, 0xff, 0xd0, 0xef, 0xbb, 0x89, 0x1f, 0xd2, 0x4e, 0x4d, 0x0c, 0xd0, 0x78, 0x7c, 0x8c,
0xa7, 0x49, 0xc4, 0xbc, 0x74, 0x20, 0xc6, 0xcc, 0xe1, 0x18, 0x95, 0xc7, 0xe7, 0x3f, 0x72, 0x07, 0x4f, 0x93, 0x38, 0xf4, 0xd2, 0xbe, 0x18, 0x33, 0x83, 0x63, 0x54, 0x1e, 0x9f, 0xff, 0xd0, 0xed,
0xe4, 0xb1, 0xb3, 0xdf, 0xad, 0xe3, 0xfc, 0x92, 0xb4, 0x36, 0xa0, 0xc5, 0x9e, 0x50, 0x12, 0x3d, 0x93, 0xc7, 0xce, 0x5e, 0xa7, 0x8e, 0xf3, 0x4b, 0xd2, 0x5a, 0x87, 0x56, 0xf8, 0x8c, 0x92, 0xf8,
0x8e, 0x49, 0x74, 0x7f, 0xaf, 0xdb, 0x10, 0x5f, 0x55, 0x96, 0x75, 0x1d, 0x60, 0x10, 0x11, 0x37, 0x31, 0x23, 0xf1, 0xfd, 0xdd, 0x4e, 0x43, 0xfc, 0xab, 0xb2, 0xac, 0x6b, 0x00, 0xfd, 0x98, 0xb8,
0x21, 0x8f, 0xfc, 0x11, 0xe9, 0xce, 0x6f, 0x18, 0x37, 0xda, 0x8e, 0xc2, 0xe1, 0x1a, 0x46, 0x64, 0x09, 0x79, 0xe4, 0x0f, 0x49, 0x67, 0x76, 0xdd, 0xb8, 0xde, 0x76, 0x14, 0x0e, 0xd7, 0x30, 0x24,
0x74, 0x48, 0xa2, 0x5d, 0x96, 0xd2, 0xa4, 0xbb, 0x20, 0x06, 0xa8, 0x2c, 0x6b, 0x09, 0x4c, 0xf2, 0xc3, 0x03, 0x12, 0xef, 0x84, 0x29, 0x4d, 0x3a, 0x73, 0x62, 0x80, 0xca, 0xb2, 0x16, 0xc0, 0x24,
0xb4, 0xdb, 0x14, 0xaa, 0x4d, 0xf2, 0xd4, 0x5a, 0x83, 0x46, 0x9c, 0xb8, 0x49, 0x1a, 0x77, 0x61, 0xcf, 0x3b, 0x4d, 0xa1, 0xda, 0x24, 0xcf, 0xad, 0x55, 0x68, 0xb0, 0xc4, 0x4d, 0x52, 0xd6, 0x81,
0xc3, 0xb8, 0x51, 0x77, 0x24, 0x65, 0x6d, 0x42, 0x5b, 0xe8, 0x65, 0x99, 0x35, 0x2d, 0x21, 0xa2, 0x75, 0xe3, 0x7a, 0xdd, 0x91, 0x94, 0xb5, 0x01, 0x6d, 0xa1, 0x37, 0xcc, 0xac, 0x69, 0x09, 0x11,
0x33, 0x73, 0x8f, 0x3d, 0x3a, 0x0b, 0x49, 0x77, 0x51, 0x28, 0x28, 0x18, 0xf6, 0xdf, 0x4c, 0x58, 0x9d, 0x99, 0x7b, 0xec, 0xd1, 0x69, 0x44, 0x3a, 0xf3, 0x42, 0x41, 0xc1, 0xb0, 0xff, 0x66, 0xc2,
0x15, 0x7e, 0xef, 0x09, 0x03, 0xee, 0xa4, 0x41, 0x70, 0x01, 0x02, 0x6b, 0xd0, 0x48, 0x71, 0x3a, 0x8a, 0xf0, 0x7b, 0x57, 0x18, 0x70, 0x27, 0x0d, 0x82, 0x73, 0x10, 0x58, 0x85, 0x46, 0x8a, 0xd3,
0x74, 0xbf, 0xa4, 0xf8, 0x3c, 0x11, 0x0b, 0xc8, 0x3e, 0x39, 0x25, 0x81, 0x70, 0x7c, 0xdd, 0x29, 0xa1, 0xfb, 0x25, 0xc5, 0xe7, 0x89, 0xc3, 0x80, 0xec, 0x91, 0x13, 0x12, 0x08, 0xc7, 0xd7, 0x9d,
0x18, 0xd6, 0x3a, 0x2c, 0xbc, 0xcb, 0x7c, 0x2a, 0x7c, 0x32, 0x27, 0x3e, 0xe6, 0x34, 0xff, 0x46, 0x82, 0x61, 0xad, 0xc1, 0xdc, 0xd3, 0xd0, 0xa7, 0xc2, 0x27, 0x33, 0xe2, 0xcf, 0x9c, 0xe6, 0xff,
0xfd, 0xc1, 0x09, 0xe5, 0x90, 0xa2, 0xbb, 0x73, 0x5a, 0x45, 0xa2, 0xa1, 0x23, 0xf1, 0x0a, 0x2c, 0x51, 0xbf, 0x7f, 0x4c, 0x39, 0xa4, 0xe8, 0xee, 0x9c, 0x56, 0x91, 0x68, 0xe8, 0x48, 0xbc, 0x0e,
0xb9, 0x61, 0xd8, 0x73, 0xe9, 0x90, 0x44, 0x38, 0xe9, 0xbc, 0xd0, 0x5b, 0xe2, 0x72, 0x3c, 0xf8, 0x0b, 0x6e, 0x14, 0x75, 0x5d, 0x3a, 0x20, 0x31, 0x4e, 0x3a, 0x2b, 0xf4, 0x96, 0xb8, 0x1c, 0x0f,
0x4c, 0x7d, 0x96, 0x46, 0x03, 0x22, 0xdc, 0x5d, 0x77, 0x14, 0x0e, 0xd7, 0xc3, 0x42, 0x12, 0x29, 0x3e, 0x53, 0x2f, 0x4c, 0xe3, 0x3e, 0x11, 0xee, 0xae, 0x3b, 0x0a, 0x87, 0xeb, 0x09, 0x23, 0x12,
0x6e, 0x44, 0xcf, 0x97, 0xb8, 0x12, 0x15, 0xc8, 0x51, 0xe1, 0x38, 0xa6, 0x09, 0xb9, 0x4d, 0x3d, 0x2b, 0x6e, 0x44, 0xcf, 0x97, 0xb8, 0x12, 0x15, 0xc8, 0x51, 0xe1, 0x38, 0xa6, 0x09, 0xb9, 0x4d,
0xb1, 0xa8, 0x96, 0xc4, 0xb1, 0x60, 0xd9, 0x3f, 0x31, 0x60, 0xe9, 0x20, 0x3d, 0x0c, 0xfc, 0x81, 0x3d, 0xb1, 0xa8, 0x96, 0xc4, 0xb1, 0x60, 0xd9, 0x3f, 0x31, 0x60, 0x61, 0x3f, 0x3d, 0x08, 0xfc,
0x50, 0xc1, 0xdd, 0x5a, 0x38, 0xcf, 0xd0, 0x9c, 0xa7, 0xba, 0xc0, 0x9c, 0xee, 0x82, 0x9a, 0xee, 0xbe, 0x50, 0xc1, 0xdd, 0x5a, 0x38, 0xcf, 0xd0, 0x9c, 0xa7, 0xba, 0xc0, 0x9c, 0xec, 0x82, 0x9a,
0x82, 0x35, 0x68, 0x0c, 0x09, 0xf5, 0x48, 0x24, 0x5d, 0x2a, 0x29, 0x69, 0x6a, 0x3d, 0x33, 0xd5, 0xee, 0x82, 0x55, 0x68, 0x0c, 0x08, 0xf5, 0x48, 0x2c, 0x5d, 0x2a, 0x29, 0x69, 0x6a, 0x3d, 0x33,
0xfe, 0x85, 0x09, 0x0b, 0x1f, 0xb2, 0x09, 0x1b, 0xd0, 0x0a, 0x8f, 0x19, 0x25, 0x0f, 0x52, 0x1e, 0xd5, 0xfe, 0x85, 0x09, 0x73, 0x1f, 0xb2, 0x09, 0xeb, 0xd0, 0x8a, 0x8e, 0x42, 0x4a, 0x1e, 0xa4,
0x56, 0xd2, 0x16, 0x95, 0x65, 0xbd, 0x04, 0xf5, 0x43, 0x3f, 0x4a, 0x8e, 0x05, 0xae, 0x6d, 0x07, 0x3c, 0xac, 0xa4, 0x2d, 0x2a, 0xcb, 0xba, 0x02, 0xf5, 0x03, 0x3f, 0x4e, 0x8e, 0x04, 0xae, 0x6d,
0x09, 0xce, 0x25, 0x23, 0xd7, 0x47, 0x30, 0x9b, 0x0e, 0x12, 0x72, 0x41, 0x0b, 0xb9, 0xef, 0xf5, 0x07, 0x09, 0xce, 0x25, 0x43, 0xd7, 0x47, 0x30, 0x9b, 0x0e, 0x12, 0x72, 0x41, 0x73, 0xb9, 0xef,
0x1c, 0x6b, 0x56, 0x72, 0xac, 0x1a, 0x1b, 0x30, 0x29, 0x36, 0xec, 0x7f, 0x1b, 0x00, 0x77, 0x22, 0xf5, 0x1c, 0x6b, 0x56, 0x72, 0xac, 0x1a, 0x1b, 0x30, 0x2e, 0x36, 0xec, 0x7f, 0x1b, 0x00, 0x77,
0x9f, 0x50, 0x4f, 0xb8, 0xa6, 0x94, 0xdc, 0x46, 0x35, 0xb9, 0xd7, 0xa0, 0x11, 0x91, 0x91, 0x1b, 0x62, 0x9f, 0x50, 0x4f, 0xb8, 0xa6, 0x94, 0xdc, 0x46, 0x35, 0xb9, 0x57, 0xa1, 0x11, 0x93, 0xa1,
0x9d, 0x64, 0xc1, 0x8f, 0x54, 0xc9, 0xa0, 0x5a, 0xc5, 0xa0, 0x37, 0x00, 0x8e, 0xc4, 0x3c, 0x5c, 0x1b, 0x1f, 0x67, 0xc1, 0x8f, 0x54, 0xc9, 0xa0, 0x5a, 0xc5, 0xa0, 0xb7, 0x00, 0x0e, 0xc5, 0x3c,
0x8f, 0x70, 0x55, 0xeb, 0xe6, 0xa7, 0xb6, 0x2a, 0x65, 0x70, 0x2b, 0x43, 0xc9, 0x51, 0x86, 0xf3, 0x5c, 0x8f, 0x70, 0x55, 0xeb, 0xc6, 0xa7, 0x36, 0x2b, 0x65, 0x70, 0x33, 0x43, 0xc9, 0x51, 0x86,
0xcc, 0x72, 0x3d, 0x4f, 0x06, 0x70, 0x1d, 0x33, 0x2b, 0x67, 0x4c, 0x88, 0xdf, 0xc6, 0x39, 0xf1, 0xf3, 0xcc, 0x72, 0x3d, 0x4f, 0x06, 0x70, 0x1d, 0x33, 0x2b, 0x67, 0x8c, 0x89, 0xdf, 0xc6, 0x19,
0x3b, 0x9f, 0x07, 0xc5, 0x3f, 0x0d, 0x68, 0xee, 0x04, 0xee, 0xe0, 0x64, 0xc6, 0xa5, 0xeb, 0x4b, 0xf1, 0x3b, 0x9b, 0x07, 0xc5, 0x3f, 0x0d, 0x68, 0x6e, 0x07, 0x6e, 0xff, 0x78, 0xca, 0xa5, 0xeb,
0x34, 0x2b, 0x4b, 0xbc, 0x0b, 0xed, 0x43, 0xae, 0x2e, 0x5b, 0x82, 0xf0, 0x42, 0xeb, 0xe6, 0x67, 0x4b, 0x34, 0x2b, 0x4b, 0xbc, 0x0b, 0xed, 0x03, 0xae, 0x2e, 0x5b, 0x82, 0xf0, 0x42, 0xeb, 0xc6,
0x26, 0xac, 0x52, 0x4f, 0x0a, 0x47, 0x97, 0xd3, 0x97, 0x3b, 0x77, 0xf1, 0x72, 0xeb, 0xe7, 0x2c, 0x67, 0xc6, 0xac, 0x52, 0x4f, 0x0a, 0x47, 0x97, 0xd3, 0x97, 0x3b, 0x73, 0xfe, 0x72, 0xeb, 0x67,
0xb7, 0x91, 0x2f, 0xf7, 0xaf, 0x26, 0x2c, 0x8a, 0x42, 0xe7, 0x90, 0x71, 0x4a, 0xe2, 0xc4, 0xfa, 0x2c, 0xb7, 0x91, 0x2f, 0xf7, 0xaf, 0x26, 0xcc, 0x8b, 0x42, 0xe7, 0x90, 0x51, 0x4a, 0x58, 0x62,
0x06, 0x2c, 0xa4, 0x99, 0xa9, 0xc6, 0xac, 0xa6, 0xe6, 0x22, 0xd6, 0xeb, 0xb2, 0xac, 0x0a, 0x79, 0x7d, 0x03, 0xe6, 0xd2, 0xcc, 0x54, 0x63, 0x5a, 0x53, 0x73, 0x11, 0xeb, 0xa6, 0x2c, 0xab, 0x42,
0x53, 0xc8, 0x5f, 0x9b, 0x20, 0x9f, 0xef, 0x69, 0x4e, 0x31, 0x9c, 0x6f, 0x41, 0xc7, 0x2e, 0xf5, 0xde, 0x14, 0xf2, 0x57, 0xc7, 0xc8, 0xe7, 0x7b, 0x9a, 0x53, 0x0c, 0xe7, 0x5b, 0xd0, 0x91, 0x4b,
0x02, 0xe2, 0x90, 0x38, 0x0d, 0x12, 0x59, 0x2d, 0x35, 0x1e, 0x46, 0xda, 0xb8, 0x17, 0x0f, 0xe5, 0xbd, 0x80, 0x38, 0x84, 0xa5, 0x41, 0x22, 0xab, 0xa5, 0xc6, 0xc3, 0x48, 0x1b, 0x75, 0xd9, 0x40,
0x06, 0x25, 0x29, 0xee, 0x1d, 0x1c, 0xc7, 0x3f, 0xe1, 0xd2, 0x0b, 0x06, 0x4f, 0xd4, 0x88, 0x8c, 0x6e, 0x50, 0x92, 0xe2, 0xde, 0xc1, 0x71, 0xfc, 0x2f, 0x5c, 0x7a, 0xc1, 0xe0, 0x89, 0x1a, 0x93,
0x05, 0x42, 0x98, 0x56, 0x19, 0x59, 0xcc, 0x29, 0xbd, 0x86, 0x81, 0xa0, 0xf1, 0x38, 0xc4, 0x48, 0x91, 0x40, 0x08, 0xd3, 0x2a, 0x23, 0x8b, 0x39, 0xa5, 0xd7, 0x30, 0x10, 0x34, 0x1e, 0x87, 0x18,
0x0b, 0x05, 0xb8, 0x33, 0x29, 0x9c, 0xf2, 0xc6, 0x64, 0xff, 0xbd, 0x06, 0x6d, 0x4c, 0x9f, 0xcc, 0x69, 0xa1, 0x00, 0x77, 0x26, 0x85, 0x53, 0xde, 0x98, 0xec, 0xbf, 0xd7, 0xa0, 0x8d, 0xe9, 0x93,
0xa9, 0xd7, 0x79, 0x9c, 0xb3, 0x91, 0x16, 0x45, 0x0a, 0x87, 0x5b, 0xc1, 0xa9, 0x07, 0x7a, 0xa1, 0x39, 0xf5, 0x1a, 0x8f, 0xf3, 0x70, 0xa8, 0x45, 0x91, 0xc2, 0xe1, 0x56, 0x70, 0xea, 0x81, 0x5e,
0xd1, 0x78, 0x3c, 0x14, 0x39, 0x7d, 0x47, 0x2b, 0x38, 0x2a, 0x2b, 0x9b, 0xe5, 0xae, 0x5a, 0x78, 0x68, 0x34, 0x1e, 0x0f, 0x45, 0x4e, 0xdf, 0xd1, 0x0a, 0x8e, 0xca, 0xca, 0x66, 0xb9, 0xab, 0x16,
0x14, 0x0e, 0x2f, 0x65, 0x09, 0xd3, 0xa2, 0x23, 0xa7, 0xb9, 0x6c, 0xc2, 0xf2, 0xf9, 0x31, 0x3e, 0x1e, 0x85, 0xc3, 0x4b, 0x59, 0x12, 0x6a, 0xd1, 0x91, 0xd3, 0x5c, 0x36, 0x09, 0xf3, 0xf9, 0x31,
0x14, 0x0e, 0xf7, 0x6f, 0xc2, 0xb2, 0xb9, 0xd1, 0x49, 0x05, 0x03, 0x35, 0xcb, 0x79, 0x71, 0x2b, 0x3e, 0x14, 0x0e, 0xf7, 0x6f, 0x12, 0x66, 0x73, 0xa3, 0x93, 0x0a, 0x06, 0x6a, 0x96, 0xf3, 0xe2,
0xc9, 0xe9, 0x0a, 0xaa, 0xcd, 0x73, 0x51, 0x05, 0x0d, 0x55, 0x3d, 0xb9, 0x5a, 0x95, 0xe4, 0xda, 0x56, 0x92, 0xd3, 0x15, 0x54, 0x9b, 0x67, 0xa2, 0x0a, 0x1a, 0xaa, 0x7a, 0x72, 0xb5, 0x2a, 0xc9,
0x84, 0x36, 0xea, 0xc9, 0x82, 0x7e, 0x11, 0xb7, 0x7a, 0x8d, 0xa9, 0xc7, 0x46, 0xbb, 0x1c, 0x1b, 0xb5, 0x01, 0x6d, 0xd4, 0x93, 0x05, 0xfd, 0x3c, 0x6e, 0xf5, 0x1a, 0x53, 0x8f, 0x8d, 0x76, 0x39,
0x3a, 0xba, 0x4b, 0x53, 0xd0, 0xed, 0xe4, 0xe8, 0xfe, 0x00, 0xba, 0x07, 0x69, 0x10, 0xf4, 0x48, 0x36, 0x74, 0x74, 0x17, 0x26, 0xa0, 0xbb, 0x98, 0xa3, 0xfb, 0x03, 0xe8, 0xec, 0xa7, 0x41, 0xd0,
0x1c, 0xbb, 0x43, 0xb2, 0x73, 0xd6, 0x27, 0xe3, 0x7d, 0x3f, 0x4e, 0x1c, 0x12, 0x87, 0x3c, 0xce, 0x25, 0x8c, 0xb9, 0x03, 0xb2, 0x7d, 0xda, 0x23, 0xa3, 0x3d, 0x9f, 0x25, 0x0e, 0x61, 0x11, 0x8f,
0x48, 0x14, 0xed, 0x32, 0x8f, 0x08, 0x90, 0xeb, 0x4e, 0x46, 0xf2, 0x15, 0x92, 0x28, 0xe2, 0x06, 0x33, 0x12, 0xc7, 0x3b, 0xa1, 0x47, 0x04, 0xc8, 0x75, 0x27, 0x23, 0xf9, 0x0a, 0x49, 0x1c, 0x73,
0xc8, 0x0a, 0x89, 0x94, 0xb5, 0x05, 0x73, 0x81, 0x1f, 0xf3, 0x58, 0xaf, 0xdd, 0x68, 0xdd, 0x5c, 0x03, 0x64, 0x85, 0x44, 0xca, 0xda, 0x84, 0x99, 0xc0, 0x67, 0x3c, 0xd6, 0x6b, 0xd7, 0x5b, 0x37,
0x9f, 0x90, 0x2a, 0xbd, 0x78, 0xb8, 0xe7, 0x26, 0xae, 0x23, 0xc6, 0xd9, 0x23, 0xf8, 0xc4, 0xe4, 0xd6, 0xc6, 0xa4, 0x4a, 0x97, 0x0d, 0x76, 0xdd, 0xc4, 0x75, 0xc4, 0x38, 0x7b, 0x08, 0x9f, 0x18,
0xd9, 0xc7, 0x53, 0x77, 0x30, 0x5e, 0xc3, 0x44, 0x11, 0xf0, 0x19, 0xcd, 0xdb, 0x13, 0x95, 0xc5, 0x3f, 0xfb, 0x68, 0xe2, 0x0e, 0xc6, 0x6b, 0x98, 0x28, 0x02, 0x7e, 0x48, 0xf3, 0xf6, 0x44, 0x65,
0xcd, 0x8e, 0x51, 0x8f, 0xb0, 0xa3, 0xed, 0x64, 0xa4, 0xfd, 0x12, 0x58, 0x77, 0x49, 0xd2, 0x73, 0x71, 0xb3, 0x19, 0xea, 0x11, 0x76, 0xb4, 0x9d, 0x8c, 0xb4, 0xaf, 0x80, 0x75, 0x97, 0x24, 0x5d,
0x9f, 0x6e, 0x53, 0xaf, 0xe7, 0xd3, 0x3e, 0x19, 0x3b, 0x64, 0x6c, 0xdf, 0x86, 0xd5, 0x0a, 0x37, 0xf7, 0xf9, 0x16, 0xf5, 0xba, 0x3e, 0xed, 0x91, 0x91, 0x43, 0x46, 0xf6, 0x6d, 0x58, 0xa9, 0x70,
0x0e, 0xb9, 0x01, 0x23, 0xf7, 0x69, 0x9f, 0x8c, 0x85, 0x01, 0x6d, 0x47, 0x52, 0x82, 0x2f, 0x46, 0x59, 0xc4, 0x0d, 0x18, 0xba, 0xcf, 0x7b, 0x64, 0x24, 0x0c, 0x68, 0x3b, 0x92, 0x12, 0x7c, 0x31,
0xc9, 0xf2, 0x28, 0x29, 0x7b, 0x0c, 0x1d, 0x8e, 0x50, 0x9f, 0x50, 0xaf, 0x17, 0x0f, 0x85, 0x8a, 0x4a, 0x96, 0x47, 0x49, 0xd9, 0x23, 0x58, 0xe4, 0x08, 0xf5, 0x08, 0xf5, 0xba, 0x6c, 0x20, 0x54,
0x0d, 0x68, 0xa1, 0x07, 0x7a, 0xf1, 0xb0, 0xa8, 0xb7, 0x0a, 0x8b, 0x8f, 0x18, 0x04, 0x3e, 0xa1, 0xac, 0x43, 0x0b, 0x3d, 0xd0, 0x65, 0x83, 0xa2, 0xde, 0x2a, 0x2c, 0x3e, 0xa2, 0x1f, 0xf8, 0x84,
0x09, 0x8e, 0x90, 0xab, 0x51, 0x58, 0x3c, 0x18, 0x63, 0x22, 0xdb, 0x0f, 0x9e, 0x25, 0x35, 0x27, 0x26, 0x38, 0x42, 0xae, 0x46, 0x61, 0xf1, 0x60, 0x64, 0x44, 0xb6, 0x1f, 0x3c, 0x4b, 0x6a, 0x4e,
0xa7, 0xed, 0x3f, 0xd5, 0x61, 0x5e, 0x3a, 0x54, 0xf4, 0x8f, 0x7c, 0x8b, 0xcb, 0xfd, 0x85, 0x14, 0x4e, 0xdb, 0x7f, 0xaa, 0xc3, 0xac, 0x74, 0xa8, 0xe8, 0x1f, 0xf9, 0x16, 0x97, 0xfb, 0x0b, 0x29,
0x06, 0xe3, 0xe0, 0xb4, 0xe8, 0xe4, 0x90, 0x52, 0x7b, 0xbf, 0x9a, 0xde, 0xfb, 0x95, 0x6c, 0x9a, 0x0c, 0xc6, 0xfe, 0x49, 0xd1, 0xc9, 0x21, 0xa5, 0xf6, 0x7e, 0x35, 0xbd, 0xf7, 0x2b, 0xd9, 0x34,
0xab, 0xda, 0x54, 0x5a, 0x57, 0xbd, 0xba, 0xae, 0x57, 0x61, 0x39, 0x16, 0x09, 0x73, 0x10, 0xb8, 0x53, 0xb5, 0xa9, 0xb4, 0xae, 0x7a, 0x75, 0x5d, 0x6f, 0xc0, 0x12, 0x13, 0x09, 0xb3, 0x1f, 0xb8,
0xc9, 0x11, 0x8b, 0x46, 0x72, 0xc7, 0xaa, 0x3b, 0x15, 0x3e, 0x2f, 0xf6, 0xc8, 0xcb, 0x13, 0x16, 0xc9, 0x61, 0x18, 0x0f, 0xe5, 0x8e, 0x55, 0x77, 0x2a, 0x7c, 0x5e, 0xec, 0x91, 0x97, 0x27, 0x2c,
0x33, 0xb2, 0xc4, 0xe5, 0xe9, 0x81, 0x9c, 0x2c, 0x71, 0xb1, 0x55, 0xd0, 0x99, 0x68, 0x5b, 0x1c, 0x66, 0x64, 0x89, 0xcb, 0xd3, 0x03, 0x39, 0x59, 0xe2, 0x62, 0xab, 0xa0, 0x33, 0xd1, 0x36, 0xc6,
0xfb, 0x8c, 0x8a, 0x5e, 0x18, 0xf3, 0x53, 0x65, 0xf1, 0x95, 0x8f, 0xe2, 0xe1, 0x9d, 0x88, 0x8d, 0xfc, 0x90, 0x8a, 0x5e, 0x18, 0xf3, 0x53, 0x65, 0xf1, 0x95, 0x0f, 0xd9, 0xe0, 0x4e, 0x1c, 0x0e,
0x64, 0xc3, 0x90, 0x91, 0x62, 0xe5, 0x8c, 0x26, 0x84, 0x26, 0x42, 0xb6, 0x85, 0xb2, 0x0a, 0x8b, 0x65, 0xc3, 0x90, 0x91, 0x62, 0xe5, 0x21, 0x4d, 0x08, 0x4d, 0x84, 0x6c, 0x0b, 0x65, 0x15, 0x16,
0xcb, 0x4a, 0x52, 0x24, 0xe7, 0xa2, 0x93, 0x91, 0xd6, 0x32, 0xd4, 0x62, 0x32, 0x96, 0x19, 0xc7, 0x97, 0x95, 0xa4, 0x48, 0xce, 0x79, 0x27, 0x23, 0xad, 0x25, 0xa8, 0x31, 0x32, 0x92, 0x19, 0xc7,
0x7f, 0x6a, 0xc8, 0x75, 0x74, 0xe4, 0x4a, 0xa5, 0x60, 0x59, 0x7c, 0x55, 0x4b, 0x41, 0x71, 0x1a, 0x7f, 0x6a, 0xc8, 0x2d, 0xea, 0xc8, 0x95, 0x4a, 0xc1, 0x92, 0xf8, 0x57, 0x2d, 0x05, 0xc5, 0x69,
0x58, 0xd1, 0x4e, 0x03, 0xdb, 0x30, 0xcf, 0x42, 0x1e, 0xe7, 0x71, 0xd7, 0x12, 0x39, 0xf6, 0xd9, 0x60, 0x59, 0x3b, 0x0d, 0x6c, 0xc1, 0x6c, 0x18, 0xf1, 0x38, 0x67, 0x1d, 0x4b, 0xe4, 0xd8, 0x67,
0xe9, 0x39, 0xb6, 0xf5, 0x10, 0x47, 0xde, 0xa6, 0x49, 0x74, 0xe6, 0x64, 0x72, 0xd6, 0x3e, 0x74, 0x27, 0xe7, 0xd8, 0xe6, 0x43, 0x1c, 0x79, 0x9b, 0x26, 0xf1, 0xa9, 0x93, 0xc9, 0x59, 0x7b, 0xb0,
0xd8, 0xd1, 0x51, 0xe0, 0x53, 0x72, 0x90, 0xc6, 0xc7, 0x62, 0x67, 0x5b, 0x15, 0x3b, 0x9b, 0x3d, 0x18, 0x1e, 0x1e, 0x06, 0x3e, 0x25, 0xfb, 0x29, 0x3b, 0x12, 0x3b, 0xdb, 0x8a, 0xd8, 0xd9, 0xec,
0x41, 0xd5, 0x43, 0x7d, 0xa4, 0x53, 0x16, 0x5d, 0x7f, 0x1d, 0x16, 0xd5, 0x69, 0xb8, 0x1b, 0x4e, 0x31, 0xaa, 0x1e, 0xea, 0x23, 0x9d, 0xb2, 0xe8, 0xda, 0x4d, 0x98, 0x57, 0xa7, 0xe1, 0x6e, 0x38,
0xc8, 0x99, 0x8c, 0x41, 0xfe, 0x93, 0x37, 0x7b, 0xa7, 0x6e, 0x90, 0xe2, 0x36, 0xb0, 0xe0, 0x20, 0x26, 0xa7, 0x32, 0x06, 0xf9, 0x4f, 0xde, 0xec, 0x9d, 0xb8, 0x41, 0x8a, 0xdb, 0xc0, 0x9c, 0x83,
0xf1, 0xba, 0xf9, 0x55, 0xc3, 0xfe, 0xb9, 0x01, 0x9d, 0xd2, 0x04, 0x7c, 0x74, 0xe2, 0x27, 0x01, 0xc4, 0x4d, 0xf3, 0xab, 0x86, 0xfd, 0x73, 0x03, 0x16, 0x4b, 0x13, 0xf0, 0xd1, 0x89, 0x9f, 0x04,
0x91, 0x1a, 0x90, 0xb0, 0x2c, 0x98, 0xf3, 0x48, 0x3c, 0x90, 0x21, 0x2c, 0x7e, 0xcb, 0x4a, 0x56, 0x44, 0x6a, 0x40, 0xc2, 0xb2, 0x60, 0xc6, 0x23, 0xac, 0x2f, 0x43, 0x58, 0xfc, 0x96, 0x95, 0xac,
0xcb, 0xdb, 0x45, 0x7e, 0xe4, 0x7b, 0xd8, 0xe7, 0x8a, 0xfa, 0x2c, 0xa5, 0x5e, 0x7e, 0xe4, 0x53, 0x96, 0xb7, 0x8b, 0xfc, 0xc8, 0xf7, 0xb0, 0xc7, 0x15, 0xf5, 0xc2, 0x94, 0x7a, 0xf9, 0x91, 0x4f,
0x78, 0x3c, 0x84, 0xfc, 0x87, 0xfd, 0x1d, 0xd7, 0x1b, 0x12, 0x3c, 0x98, 0xd5, 0x85, 0x4d, 0x3a, 0xe1, 0xf1, 0x10, 0xf2, 0x1f, 0xf6, 0xb6, 0x5d, 0x6f, 0x40, 0xf0, 0x60, 0x56, 0x17, 0x36, 0xe9,
0xd3, 0xf6, 0x60, 0xe1, 0x91, 0x1f, 0xc6, 0xbb, 0x6c, 0x34, 0xe2, 0x40, 0x78, 0x24, 0xe1, 0xbd, 0x4c, 0xdb, 0x83, 0xb9, 0x47, 0x7e, 0xc4, 0x76, 0xc2, 0xe1, 0x90, 0x03, 0xe1, 0x91, 0x84, 0xf7,
0xaa, 0x21, 0xf0, 0x96, 0x14, 0x0f, 0x15, 0x8f, 0x1c, 0xb9, 0x69, 0x90, 0xf0, 0xa1, 0x59, 0xe2, 0xaa, 0x86, 0xc0, 0x5b, 0x52, 0x3c, 0x54, 0x3c, 0x72, 0xe8, 0xa6, 0x41, 0xc2, 0x87, 0x66, 0x89,
0x2a, 0x2c, 0x71, 0x24, 0x89, 0x19, 0xdd, 0x43, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x31, 0x61, 0xab, 0xb0, 0xc4, 0x91, 0x84, 0x85, 0x74, 0x17, 0xa5, 0xd1, 0x4e, 0x85, 0x63, 0xff, 0xc5, 0x84,
0x59, 0x34, 0x0e, 0xbb, 0x02, 0x76, 0x4f, 0x08, 0xdd, 0x84, 0xba, 0x48, 0x43, 0xd9, 0xac, 0x9c, 0x25, 0xd1, 0x38, 0xec, 0x08, 0xd8, 0x3d, 0x21, 0x74, 0x03, 0xea, 0x22, 0x0d, 0x65, 0xb3, 0x72,
0xdf, 0x6c, 0xe0, 0x50, 0xeb, 0x16, 0x34, 0x58, 0x28, 0x5a, 0x4e, 0xec, 0x50, 0x5e, 0x99, 0x26, 0x76, 0xb3, 0x81, 0x43, 0xad, 0x5b, 0xd0, 0x08, 0x23, 0xd1, 0x72, 0x62, 0x87, 0xf2, 0xfa, 0x24,
0xa4, 0x9f, 0xfe, 0x1c, 0x29, 0x65, 0xdd, 0x01, 0xc0, 0x83, 0xe9, 0x7e, 0x51, 0xba, 0x67, 0xd5, 0x21, 0xfd, 0xf4, 0xe7, 0x48, 0x29, 0xeb, 0x0e, 0x00, 0x1e, 0x4c, 0xf7, 0x8a, 0xd2, 0x3d, 0xad,
0xa1, 0x48, 0x72, 0xe7, 0xe6, 0x65, 0x38, 0x3f, 0x02, 0xd6, 0x1c, 0x9d, 0x69, 0x3d, 0x80, 0x25, 0x0e, 0x45, 0x92, 0x3b, 0x37, 0x2f, 0xc3, 0xf9, 0x11, 0xb0, 0xe6, 0xe8, 0x4c, 0xeb, 0x01, 0x2c,
0x61, 0xf6, 0xc3, 0xac, 0xeb, 0x14, 0x18, 0xcc, 0x3e, 0x63, 0x49, 0xda, 0xfe, 0xb5, 0x21, 0xdd, 0x08, 0xb3, 0x1f, 0x66, 0x5d, 0xa7, 0xc0, 0x60, 0xfa, 0x19, 0x4b, 0xd2, 0xf6, 0xaf, 0x0d, 0xe9,
0xc8, 0xbf, 0xf6, 0x09, 0xfa, 0xbe, 0x70, 0x89, 0x71, 0x29, 0x97, 0xac, 0xc3, 0x02, 0x3f, 0xe3, 0x46, 0xfe, 0x6f, 0x8f, 0xa0, 0xef, 0x0b, 0x97, 0x18, 0x17, 0x72, 0xc9, 0x1a, 0xcc, 0xf1, 0x33,
0xe5, 0x4d, 0x70, 0xcd, 0xc9, 0xe9, 0x02, 0xa2, 0xda, 0xcc, 0x10, 0xd9, 0xbf, 0x31, 0xa0, 0xfb, 0x5e, 0xde, 0x04, 0xd7, 0x9c, 0x9c, 0x2e, 0x20, 0xaa, 0x4d, 0x0d, 0x91, 0xfd, 0x1b, 0x03, 0x3a,
0x26, 0xf3, 0xa9, 0xf8, 0xb0, 0x1d, 0x86, 0x81, 0xbc, 0xa7, 0xb8, 0x34, 0xe6, 0xdf, 0x84, 0xa6, 0x6f, 0x87, 0x3e, 0x15, 0x7f, 0x6c, 0x45, 0x51, 0x20, 0xef, 0x29, 0x2e, 0x8c, 0xf9, 0x37, 0xa1,
0x8b, 0x6a, 0x68, 0x22, 0x61, 0x9f, 0xa1, 0xb1, 0x2d, 0x64, 0x94, 0x1e, 0xa5, 0xa6, 0xf6, 0x28, 0xe9, 0xa2, 0x1a, 0x9a, 0x48, 0xd8, 0xa7, 0x68, 0x6c, 0x0b, 0x19, 0xa5, 0x47, 0xa9, 0xa9, 0x3d,
0xf6, 0x7b, 0x06, 0x2c, 0xa1, 0x53, 0xde, 0x4a, 0xfd, 0xe4, 0xd2, 0xf6, 0xed, 0xc0, 0xc2, 0x38, 0x8a, 0xfd, 0x9e, 0x01, 0x0b, 0xe8, 0x94, 0x77, 0x52, 0x3f, 0xb9, 0xb0, 0x7d, 0xdb, 0x30, 0x37,
0xf5, 0x93, 0x4b, 0x44, 0x65, 0x2e, 0x57, 0x8d, 0xa7, 0xda, 0x84, 0x78, 0xb2, 0xdf, 0x37, 0xe0, 0x4a, 0xfd, 0xe4, 0x02, 0x51, 0x99, 0xcb, 0x55, 0xe3, 0xa9, 0x36, 0x26, 0x9e, 0xec, 0xf7, 0x0d,
0x5a, 0xd9, 0xad, 0xdb, 0x83, 0x01, 0x09, 0x9f, 0x65, 0x4a, 0x69, 0x3d, 0xda, 0x5c, 0xa9, 0x47, 0xb8, 0x5a, 0x76, 0xeb, 0x56, 0xbf, 0x4f, 0xa2, 0x17, 0x99, 0x52, 0x5a, 0x8f, 0x36, 0x53, 0xea,
0x9b, 0x68, 0xb2, 0x43, 0xde, 0x25, 0x83, 0xe7, 0xd7, 0xe4, 0x1f, 0x9b, 0xf0, 0xc9, 0xbb, 0x79, 0xd1, 0xc6, 0x9a, 0xec, 0x90, 0xa7, 0xa4, 0xff, 0xf2, 0x9a, 0xfc, 0x63, 0x13, 0x3e, 0x79, 0x37,
0xe2, 0x3d, 0x8a, 0x5c, 0x1a, 0x1f, 0x91, 0x28, 0x7a, 0x86, 0xf6, 0xee, 0x43, 0x9b, 0x92, 0x27, 0x4f, 0xbc, 0x47, 0xb1, 0x4b, 0xd9, 0x21, 0x89, 0xe3, 0x17, 0x68, 0xef, 0x1e, 0xb4, 0x29, 0x79,
0x85, 0x4d, 0x32, 0x1d, 0x67, 0x55, 0xa3, 0x0b, 0xcf, 0x56, 0xbb, 0xec, 0xff, 0x18, 0xb0, 0x8c, 0x56, 0xd8, 0x24, 0xd3, 0x71, 0x5a, 0x35, 0xba, 0xf0, 0x74, 0xb5, 0xcb, 0xfe, 0x8f, 0x01, 0x4b,
0x7a, 0xbe, 0xe5, 0x0f, 0x4e, 0x9e, 0xe1, 0xe2, 0x1f, 0xc0, 0xd2, 0x89, 0xb0, 0x80, 0x53, 0x97, 0xa8, 0xe7, 0x5b, 0x7e, 0xff, 0xf8, 0x05, 0x2e, 0xfe, 0x01, 0x2c, 0x1c, 0x0b, 0x0b, 0x38, 0x75,
0x28, 0xdb, 0x25, 0xe9, 0x19, 0x97, 0xff, 0x5f, 0x03, 0x56, 0x50, 0xd1, 0x7d, 0x7a, 0xea, 0x3f, 0x81, 0xb2, 0x5d, 0x92, 0x9e, 0x72, 0xf9, 0xff, 0x35, 0x60, 0x19, 0x15, 0xdd, 0xa7, 0x27, 0xfe,
0xcb, 0x60, 0x3d, 0x80, 0x8e, 0x8f, 0x26, 0x5c, 0xd2, 0x01, 0x65, 0xf1, 0x19, 0x3d, 0xf0, 0x47, 0x8b, 0x0c, 0xd6, 0x7d, 0x58, 0xf4, 0xd1, 0x84, 0x0b, 0x3a, 0xa0, 0x2c, 0x3e, 0xa5, 0x07, 0xfe,
0x03, 0x3a, 0xa8, 0xe9, 0x36, 0x4d, 0x48, 0x74, 0xe9, 0xf5, 0xdf, 0x83, 0x16, 0xa1, 0x49, 0xe4, 0x68, 0xc0, 0x22, 0x6a, 0xba, 0x4d, 0x13, 0x12, 0x5f, 0x78, 0xfd, 0xf7, 0xa0, 0x45, 0x68, 0x12,
0xd2, 0xcb, 0x54, 0x48, 0x55, 0x74, 0xc6, 0x22, 0xf9, 0x9e, 0x01, 0x96, 0x50, 0xb5, 0xe7, 0xc7, 0xbb, 0xf4, 0x22, 0x15, 0x52, 0x15, 0x9d, 0xb2, 0x48, 0xbe, 0x67, 0x80, 0x25, 0x54, 0xed, 0xfa,
0x23, 0x3f, 0x8e, 0x9f, 0x21, 0x74, 0xb3, 0x19, 0xfc, 0x4b, 0x13, 0x5e, 0x52, 0xb4, 0xf4, 0xd2, 0x6c, 0xe8, 0x33, 0xf6, 0x02, 0xa1, 0x9b, 0xce, 0xe0, 0x5f, 0x9a, 0x70, 0x45, 0xd1, 0xd2, 0x4d,
0xe4, 0x79, 0x37, 0xd9, 0xda, 0x83, 0x26, 0xef, 0x11, 0xd4, 0xcb, 0xbf, 0x59, 0x27, 0x2a, 0x04, 0x93, 0x97, 0xdd, 0x64, 0x6b, 0x17, 0x9a, 0xbc, 0x47, 0x50, 0x2f, 0xff, 0xa6, 0x9d, 0xa8, 0x10,
0x79, 0x17, 0x2b, 0x88, 0x3e, 0x19, 0x30, 0xea, 0xc5, 0xa2, 0x39, 0x6a, 0x3b, 0x1a, 0x8f, 0x97, 0xe4, 0x5d, 0xac, 0x20, 0x7a, 0xa4, 0x1f, 0x52, 0x8f, 0x89, 0xe6, 0xa8, 0xed, 0x68, 0x3c, 0x5e,
0xa1, 0x75, 0x45, 0xcd, 0xae, 0x4b, 0x07, 0x24, 0x78, 0x61, 0x5c, 0x64, 0xff, 0xce, 0x80, 0x25, 0x86, 0xd6, 0x14, 0x35, 0x3b, 0x2e, 0xed, 0x93, 0xe0, 0x95, 0x71, 0x91, 0xfd, 0x3b, 0x03, 0x16,
0x1c, 0xf2, 0xfc, 0x2f, 0x99, 0xef, 0xf5, 0x18, 0xc8, 0x1f, 0x19, 0x94, 0xec, 0x13, 0x58, 0xc1, 0x70, 0xc8, 0xcb, 0xbf, 0x64, 0xbe, 0xd7, 0x63, 0x20, 0x7f, 0x64, 0x50, 0xb2, 0x8f, 0x61, 0x19,
0xfb, 0x3e, 0xa5, 0x3d, 0xe1, 0x07, 0x5f, 0xd7, 0xc3, 0xb3, 0xac, 0x21, 0x84, 0x32, 0x52, 0xbf, 0xef, 0xfb, 0x94, 0xf6, 0x84, 0x1f, 0x7c, 0x5d, 0x0f, 0xcf, 0xb2, 0x86, 0x10, 0xca, 0x48, 0xfd,
0xc9, 0x95, 0x8f, 0x75, 0xc5, 0x4d, 0xee, 0x75, 0x00, 0xd7, 0xf3, 0xde, 0x66, 0x91, 0xe7, 0xd3, 0x26, 0x57, 0x3e, 0xd6, 0x15, 0x37, 0xb9, 0xd7, 0x00, 0x5c, 0xcf, 0x7b, 0x37, 0x8c, 0x3d, 0x9f,
0xac, 0xd7, 0x54, 0x38, 0xf6, 0x9b, 0xb0, 0xc8, 0x8f, 0xde, 0x8f, 0x94, 0x9b, 0xbb, 0x73, 0xef, 0x66, 0xbd, 0xa6, 0xc2, 0xb1, 0xdf, 0x86, 0x79, 0x7e, 0xf4, 0x7e, 0xa4, 0xdc, 0xdc, 0x9d, 0x79,
0x16, 0xd5, 0x5b, 0x3f, 0x53, 0xbf, 0xf5, 0xb3, 0xbf, 0x0f, 0x1f, 0xaf, 0x18, 0x2e, 0x7c, 0xbd, 0xb7, 0xa8, 0xde, 0xfa, 0x99, 0xfa, 0xad, 0x9f, 0xfd, 0x7d, 0xf8, 0x78, 0xc5, 0x70, 0xe1, 0xeb,
0x8b, 0x17, 0x92, 0xd9, 0x24, 0xd2, 0xe5, 0x9f, 0x9e, 0xe0, 0x3d, 0xd5, 0x16, 0x47, 0x13, 0xb2, 0x1d, 0xbc, 0x90, 0xcc, 0x26, 0x91, 0x2e, 0xff, 0xf4, 0x18, 0xef, 0xa9, 0xb6, 0x38, 0x9a, 0x90,
0x7f, 0x64, 0xc0, 0xcb, 0x15, 0xf5, 0xdb, 0x61, 0x18, 0xb1, 0x53, 0x09, 0xe9, 0x55, 0x4c, 0xa3, 0xfd, 0x23, 0x03, 0x5e, 0xab, 0xa8, 0xdf, 0x8a, 0xa2, 0x38, 0x3c, 0x91, 0x90, 0x5e, 0xc6, 0x34,
0xf7, 0x61, 0x66, 0xb9, 0x0f, 0x9b, 0x68, 0x84, 0xd6, 0x3b, 0x7e, 0x08, 0x46, 0xfc, 0xd6, 0x80, 0x7a, 0x1f, 0x66, 0x96, 0xfb, 0xb0, 0xb1, 0x46, 0x68, 0xbd, 0xe3, 0x87, 0x60, 0xc4, 0x6f, 0x0d,
0x8e, 0x34, 0xc2, 0xf3, 0xe4, 0xb4, 0x5f, 0x81, 0x06, 0x3e, 0x66, 0xc8, 0x09, 0x5f, 0x9e, 0x38, 0x58, 0x94, 0x46, 0x78, 0x9e, 0x9c, 0xf6, 0x2b, 0xd0, 0xc0, 0xc7, 0x0c, 0x39, 0xe1, 0x6b, 0x63,
0x61, 0xf6, 0x08, 0xe3, 0xc8, 0xc1, 0xd5, 0x88, 0x34, 0x27, 0xd5, 0x8d, 0xaf, 0xe5, 0x71, 0x3f, 0x27, 0xcc, 0x1e, 0x61, 0x1c, 0x39, 0xb8, 0x1a, 0x91, 0xe6, 0xb8, 0xba, 0xf1, 0xb5, 0x3c, 0xee,
0xf3, 0x73, 0x83, 0x14, 0xb0, 0xbf, 0x93, 0x05, 0xf3, 0x1e, 0x09, 0xc8, 0x55, 0xfa, 0xc8, 0x7e, 0xa7, 0x7e, 0x6e, 0x90, 0x02, 0xf6, 0x77, 0xb2, 0x60, 0xde, 0x25, 0x01, 0xb9, 0x4c, 0x1f, 0xd9,
0x0c, 0x4b, 0xe2, 0x65, 0xa5, 0xf0, 0xc1, 0x95, 0xa8, 0x7d, 0x1b, 0x96, 0x85, 0xda, 0x2b, 0xb7, 0x8f, 0x61, 0x41, 0xbc, 0xac, 0x14, 0x3e, 0xb8, 0x14, 0xb5, 0xef, 0xc2, 0x92, 0x50, 0x7b, 0xe9,
0x37, 0xcf, 0x0e, 0xee, 0x9f, 0xdd, 0x63, 0x97, 0x0e, 0xaf, 0x52, 0xfb, 0x17, 0x61, 0x35, 0xf3, 0xf6, 0xe6, 0xd9, 0xc1, 0xfd, 0xb3, 0x73, 0xe4, 0xd2, 0xc1, 0x65, 0x6a, 0xff, 0x22, 0xac, 0x64,
0xfd, 0xe3, 0xd0, 0xcb, 0xef, 0x33, 0xa6, 0xdc, 0xe2, 0xda, 0x5f, 0x82, 0xb5, 0x5d, 0x46, 0x4f, 0xbe, 0x7f, 0x1c, 0x79, 0xf9, 0x7d, 0xc6, 0x84, 0x5b, 0x5c, 0xfb, 0x4b, 0xb0, 0xba, 0x13, 0xd2,
0x49, 0x14, 0x0b, 0x94, 0x51, 0x24, 0x93, 0xd0, 0x92, 0x5f, 0x52, 0x76, 0x1f, 0x56, 0xe4, 0xfb, 0x13, 0x12, 0x33, 0x81, 0x32, 0x8a, 0x64, 0x12, 0x5a, 0xf2, 0x4b, 0xca, 0x7e, 0x0a, 0x6b, 0xaa,
0xc3, 0x81, 0x3b, 0xf4, 0x29, 0x56, 0xa5, 0xeb, 0x00, 0xa1, 0x3b, 0xcc, 0xde, 0x1f, 0xf1, 0x92, 0x44, 0x8f, 0x24, 0xfb, 0xb1, 0x7f, 0xa2, 0x48, 0xc9, 0x5b, 0x4e, 0x43, 0xbb, 0xe5, 0x2c, 0x6e,
0x5a, 0xe1, 0xf0, 0xef, 0xf1, 0x31, 0x7b, 0x22, 0xbf, 0x9b, 0xf8, 0xbd, 0xe0, 0xd8, 0xdf, 0x06, 0x45, 0x4d, 0xed, 0x56, 0xf4, 0x2a, 0x34, 0x7d, 0x26, 0x15, 0x88, 0xa0, 0x9a, 0x73, 0x0a, 0x86,
0xcb, 0x21, 0x71, 0xc8, 0x68, 0x4c, 0x14, 0xad, 0x1b, 0xd0, 0xda, 0x4d, 0xa3, 0x88, 0x50, 0x3e, 0xdd, 0x83, 0x65, 0xf9, 0xd6, 0xb1, 0xef, 0x0e, 0x7c, 0x8a, 0x15, 0xf0, 0x1a, 0x40, 0xe4, 0x0e,
0x55, 0xf6, 0x18, 0xa7, 0xb2, 0xb8, 0xde, 0x7e, 0xa1, 0x17, 0x2f, 0x36, 0x15, 0x8e, 0xfd, 0xab, 0xb2, 0xb7, 0x4e, 0xbc, 0x10, 0x57, 0x38, 0xfc, 0x7f, 0x76, 0x14, 0x3e, 0x93, 0xff, 0x9b, 0xf8,
0x1a, 0x34, 0xfb, 0xfe, 0x90, 0xba, 0x81, 0x43, 0xc6, 0xd6, 0xd7, 0xa1, 0x81, 0xed, 0xa6, 0x74, 0x7f, 0xc1, 0xb1, 0xbf, 0x0d, 0x96, 0x43, 0x58, 0x14, 0x52, 0x46, 0x14, 0xad, 0xeb, 0xd0, 0xda,
0xed, 0xa4, 0x8b, 0x36, 0x1c, 0x8d, 0x7d, 0xb5, 0x43, 0xc6, 0xf7, 0x3e, 0xe6, 0x48, 0x19, 0xeb, 0x49, 0xe3, 0x98, 0x50, 0x3e, 0x55, 0xf6, 0xf0, 0xa7, 0xb2, 0xb8, 0xde, 0x5e, 0xa1, 0x17, 0x2f,
0x2d, 0x68, 0xe3, 0xaf, 0xfb, 0x78, 0x7d, 0x20, 0x6b, 0xff, 0xe7, 0x2e, 0x50, 0x22, 0x47, 0xa3, 0x51, 0x15, 0x8e, 0xfd, 0xab, 0x1a, 0x34, 0x7b, 0xfe, 0x80, 0xba, 0x81, 0x43, 0x46, 0xd6, 0xd7,
0x2e, 0x5d, 0x03, 0x37, 0x68, 0x20, 0xb6, 0x23, 0x99, 0x4f, 0xd3, 0x0d, 0xc2, 0x5d, 0x4b, 0x1a, 0xa1, 0x81, 0xad, 0xad, 0x84, 0x71, 0xdc, 0xa5, 0x1e, 0x8e, 0xc6, 0x1e, 0xde, 0x21, 0xa3, 0x7b,
0x84, 0x32, 0x5c, 0xda, 0x15, 0x07, 0x6c, 0xb9, 0x85, 0x4f, 0x97, 0xc6, 0x73, 0xb8, 0x94, 0x46, 0x1f, 0x73, 0xa4, 0x8c, 0xf5, 0x0e, 0xb4, 0xf1, 0xd7, 0x7d, 0xbc, 0xaa, 0x90, 0xfb, 0xcc, 0xe7,
0x19, 0x2e, 0x7d, 0x9c, 0xd2, 0xe1, 0xe3, 0x50, 0xde, 0xfb, 0x4c, 0x97, 0xbe, 0x27, 0x86, 0x49, 0xce, 0x51, 0x22, 0x47, 0xa3, 0x2e, 0x5d, 0x03, 0x37, 0xa8, 0x2f, 0xb6, 0x3e, 0x99, 0xbb, 0x93,
0x69, 0x94, 0xe1, 0xd2, 0x91, 0xa8, 0x76, 0xc2, 0xe9, 0xe7, 0x49, 0x63, 0x51, 0x94, 0xd2, 0x28, 0x0d, 0xc2, 0x1d, 0x52, 0x1a, 0x84, 0x32, 0x5c, 0xda, 0x15, 0x87, 0x79, 0xd9, 0x2e, 0x4c, 0x96,
0xb3, 0xd3, 0x84, 0xf9, 0xd0, 0x3d, 0x0b, 0x98, 0xeb, 0xd9, 0xbf, 0xaf, 0x01, 0x64, 0x03, 0x63, 0xc6, 0x33, 0xbf, 0x94, 0x46, 0x19, 0x2e, 0x7d, 0x94, 0xd2, 0xc1, 0xe3, 0x48, 0xde, 0x31, 0x4d,
0xb1, 0xb3, 0x6a, 0x10, 0x6d, 0x5e, 0x08, 0x51, 0x18, 0x9c, 0x29, 0x20, 0xf5, 0x27, 0x83, 0xf4, 0x96, 0xbe, 0x27, 0x86, 0x49, 0x69, 0x94, 0xe1, 0xd2, 0xb1, 0xa8, 0xac, 0xc2, 0xe9, 0x67, 0x49,
0xf9, 0x59, 0x41, 0x42, 0x6d, 0x25, 0x98, 0x6e, 0x95, 0x60, 0xda, 0xbc, 0x10, 0x26, 0x69, 0x94, 0x63, 0x01, 0x96, 0xd2, 0x28, 0xb3, 0xdd, 0x84, 0xd9, 0xc8, 0x3d, 0x0d, 0x42, 0xd7, 0xb3, 0x7f,
0x04, 0xea, 0x56, 0x09, 0xa8, 0xcd, 0x0b, 0x81, 0x92, 0xf2, 0x12, 0xaa, 0x5b, 0x25, 0xa8, 0x36, 0x5f, 0x03, 0xc8, 0x06, 0x32, 0xb1, 0x8b, 0x6b, 0x10, 0x6d, 0x9c, 0x0b, 0x51, 0x14, 0x9c, 0x2a,
0x2f, 0x84, 0x4a, 0xca, 0x4b, 0xb0, 0x6e, 0x95, 0xc0, 0xda, 0xbc, 0x10, 0x2c, 0x29, 0x5f, 0x85, 0x20, 0xf5, 0xc6, 0x83, 0xf4, 0xf9, 0x69, 0x41, 0x42, 0x6d, 0x25, 0x98, 0x6e, 0x95, 0x60, 0xda,
0xeb, 0x7d, 0x13, 0x96, 0x84, 0xcb, 0xf0, 0x91, 0x87, 0x1e, 0x31, 0x71, 0x97, 0x2b, 0xdc, 0xa5, 0x38, 0x17, 0x26, 0x69, 0x94, 0x04, 0xea, 0x56, 0x09, 0xa8, 0x8d, 0x73, 0x81, 0x92, 0xf2, 0x12,
0x3f, 0x67, 0xeb, 0x4c, 0xeb, 0x0b, 0xb0, 0x82, 0x0c, 0xf9, 0xfc, 0x29, 0xce, 0x8a, 0xe6, 0x46, 0xaa, 0x5b, 0x25, 0xa8, 0x36, 0xce, 0x85, 0x4a, 0xca, 0x4b, 0xb0, 0x6e, 0x95, 0xc0, 0xda, 0x38,
0xed, 0x46, 0xd3, 0xa9, 0x7e, 0x10, 0xd7, 0xf2, 0x69, 0x9c, 0xb0, 0xd1, 0x9e, 0x9b, 0xb8, 0x59, 0x17, 0x2c, 0x29, 0x5f, 0x85, 0xeb, 0x7d, 0x13, 0x16, 0x84, 0xcb, 0xf0, 0x41, 0x89, 0x1e, 0x86,
0xb7, 0x52, 0x70, 0xd4, 0x47, 0x93, 0xb9, 0xca, 0x1f, 0x66, 0x22, 0xc6, 0x46, 0xf9, 0x6b, 0x88, 0xe2, 0xde, 0x58, 0xb8, 0x4b, 0x7f, 0x3a, 0xd7, 0x99, 0xd6, 0x17, 0x60, 0x19, 0x19, 0xf2, 0xa9,
0xa4, 0xb8, 0x44, 0xe2, 0x8f, 0x08, 0x4b, 0x13, 0x59, 0x26, 0x32, 0x92, 0xef, 0xb1, 0x23, 0xe2, 0x55, 0x9c, 0x4b, 0xcd, 0xf5, 0xda, 0xf5, 0xa6, 0x53, 0xfd, 0x43, 0x3c, 0x01, 0xa4, 0x2c, 0x09,
0xf9, 0xae, 0x78, 0x6a, 0x90, 0x6f, 0x90, 0x39, 0x43, 0x54, 0xb6, 0xe2, 0xe9, 0x44, 0xfe, 0xa1, 0x87, 0xbb, 0x6e, 0xe2, 0x66, 0x9d, 0x51, 0xc1, 0x51, 0x1f, 0x68, 0x66, 0x2a, 0x1f, 0xe7, 0xc4,
0xa5, 0xe0, 0x5c, 0xfc, 0xcc, 0x61, 0xff, 0xc3, 0x80, 0xd5, 0x03, 0x37, 0x4a, 0xfc, 0x81, 0x1f, 0x61, 0x38, 0xcc, 0x5f, 0x5e, 0x24, 0xc5, 0x25, 0x12, 0x7f, 0x48, 0xc2, 0x34, 0x91, 0x65, 0x22,
0xba, 0x34, 0xe9, 0x91, 0xc4, 0x15, 0x6b, 0xd0, 0xde, 0xb4, 0x8d, 0x0f, 0xf6, 0xa6, 0x7d, 0x00, 0x23, 0x79, 0xb9, 0x1b, 0x12, 0xcf, 0x77, 0xc5, 0xb3, 0x86, 0x7c, 0xef, 0xcc, 0x19, 0xa2, 0xb2,
0x9d, 0x61, 0xd1, 0x5f, 0x2a, 0xaf, 0xe2, 0x33, 0x9f, 0xbb, 0x4b, 0xe2, 0xda, 0x03, 0x7d, 0xed, 0x15, 0xcf, 0x34, 0xf2, 0xe3, 0x99, 0x82, 0x73, 0xfe, 0x93, 0x8a, 0xfd, 0x0f, 0x03, 0x56, 0xf6,
0x03, 0x3f, 0xd0, 0xdb, 0x3f, 0x35, 0xa1, 0x53, 0x2a, 0x9d, 0xbc, 0x45, 0xc4, 0xcd, 0x3f, 0x8f, 0xdd, 0x38, 0xf1, 0xfb, 0x7e, 0xe4, 0xd2, 0xa4, 0x4b, 0x12, 0x57, 0xac, 0x41, 0x7b, 0x3f, 0x37,
0x89, 0x9c, 0xb6, 0xb6, 0x01, 0xfc, 0x3c, 0x8c, 0xce, 0xb9, 0x38, 0xd5, 0x63, 0xcd, 0x51, 0x84, 0x3e, 0xd8, 0xfb, 0xf9, 0x3e, 0x2c, 0x0e, 0x8a, 0x5e, 0x56, 0x79, 0x81, 0x9f, 0xfa, 0x8c, 0x5f,
0x26, 0xbd, 0x9f, 0xd4, 0x2e, 0xfd, 0x7e, 0x62, 0xdd, 0x83, 0x56, 0x58, 0x80, 0x74, 0xce, 0xa1, 0x12, 0xd7, 0x3e, 0x06, 0xa8, 0x7d, 0xe0, 0x8f, 0x01, 0xec, 0x9f, 0x9a, 0xb0, 0x58, 0x2a, 0x9d,
0x68, 0x02, 0x94, 0x8e, 0x2a, 0x6a, 0x7f, 0x0f, 0x56, 0x2a, 0x15, 0x4a, 0x3c, 0xa7, 0xb0, 0x13, 0xbc, 0x1d, 0xc5, 0x46, 0x23, 0x8f, 0x89, 0x9c, 0xb6, 0xb6, 0x00, 0xfc, 0x3c, 0x8c, 0xce, 0xb8,
0x42, 0xf3, 0xe7, 0x14, 0x4e, 0x28, 0xc1, 0x6a, 0x96, 0x83, 0x35, 0xf0, 0x4f, 0xd5, 0x7f, 0x00, 0xa4, 0xd5, 0x63, 0xcd, 0x51, 0x84, 0xc6, 0xbd, 0xd5, 0xd4, 0x2e, 0xfc, 0x56, 0x63, 0xdd, 0x83,
0x49, 0xd2, 0xfe, 0x99, 0x09, 0x6b, 0x93, 0x77, 0x97, 0x17, 0xd5, 0xdd, 0x87, 0xd0, 0x9d, 0x56, 0x56, 0x54, 0x80, 0x74, 0xc6, 0x01, 0x6c, 0x0c, 0x94, 0x8e, 0x2a, 0x6a, 0x7f, 0x0f, 0x96, 0x2b,
0xc9, 0xaf, 0xcc, 0xeb, 0x45, 0x74, 0xe7, 0xfb, 0xf0, 0x8b, 0xea, 0xee, 0xd5, 0x2c, 0xba, 0x95, 0x15, 0x4a, 0x3c, 0xdd, 0x84, 0xc7, 0x84, 0xe6, 0x4f, 0x37, 0x9c, 0x50, 0x82, 0xd5, 0x2c, 0x07,
0xad, 0xce, 0xfe, 0x43, 0xee, 0x9f, 0xbc, 0xd3, 0x78, 0x41, 0xfd, 0x63, 0xbd, 0x0a, 0xcb, 0xb8, 0x6b, 0xe0, 0x9f, 0xa8, 0x5f, 0x1b, 0x49, 0xd2, 0xfe, 0x99, 0x09, 0xab, 0xe3, 0x77, 0x97, 0x57,
0x4c, 0xe5, 0xc1, 0x1d, 0x1b, 0xd7, 0x0a, 0xbf, 0xa8, 0x14, 0xca, 0xb6, 0x7f, 0x65, 0x31, 0xfb, 0xd5, 0xdd, 0x07, 0xd0, 0x99, 0x54, 0xc9, 0x2f, 0xcd, 0xeb, 0x45, 0x74, 0xe7, 0xfb, 0xf0, 0xab,
0x67, 0x23, 0xc3, 0x24, 0xef, 0xdf, 0x3e, 0x52, 0x98, 0x14, 0x91, 0xa6, 0x34, 0x35, 0x4a, 0xa4, 0xea, 0xee, 0x95, 0x2c, 0xba, 0x95, 0xad, 0xce, 0xfe, 0x43, 0xee, 0x9f, 0xbc, 0xd3, 0x78, 0x45,
0xe5, 0x7d, 0xe5, 0xff, 0x23, 0xed, 0xe2, 0x48, 0xcb, 0x7d, 0xa9, 0x34, 0x78, 0xf6, 0x0f, 0xa1, 0xfd, 0x63, 0xbd, 0x01, 0x4b, 0xb8, 0x4c, 0xe5, 0x71, 0x1f, 0x1b, 0xd7, 0x0a, 0xbf, 0xa8, 0x14,
0xbd, 0x47, 0x82, 0x5e, 0x3c, 0xcc, 0xfe, 0xea, 0x73, 0x9e, 0x23, 0xa7, 0xfd, 0x11, 0x79, 0xea, 0xca, 0xb6, 0x7f, 0x69, 0x31, 0xfb, 0x67, 0x23, 0xc3, 0x24, 0xef, 0xdf, 0x3e, 0x52, 0x98, 0x14,
0x9f, 0x7c, 0xca, 0x7f, 0x10, 0x9a, 0xab, 0xfc, 0x41, 0xc8, 0xde, 0x81, 0x25, 0xd5, 0x80, 0xcb, 0x91, 0xa6, 0x34, 0x35, 0x4a, 0xa4, 0xe5, 0x7d, 0xe5, 0xff, 0x23, 0xed, 0xfc, 0x48, 0xcb, 0x7d,
0xfc, 0xd3, 0x69, 0xe7, 0xda, 0x77, 0xd7, 0xb7, 0x5e, 0xc3, 0xbf, 0xbc, 0xbf, 0x51, 0x71, 0xe2, 0xa9, 0x34, 0x78, 0xf6, 0x0f, 0xa1, 0xbd, 0x4b, 0x82, 0x2e, 0x1b, 0x64, 0x9f, 0x15, 0x9d, 0xe5,
0x61, 0x43, 0xfc, 0x05, 0xfe, 0xcb, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x93, 0x6d, 0x96, 0x68, 0xc8, 0x49, 0x1f, 0x3d, 0x4f, 0xfc, 0xa0, 0xa8, 0xfc, 0x31, 0xd2, 0x4c, 0xe5, 0x63, 0x24, 0x7b,
0x15, 0x2f, 0x00, 0x00, 0x1b, 0x16, 0x54, 0x03, 0x2e, 0xf2, 0x55, 0xd5, 0xf6, 0xd5, 0xef, 0xae, 0x6d, 0xbe, 0x89, 0x9f,
0xd7, 0xbf, 0x55, 0x71, 0xe2, 0x41, 0x43, 0x7c, 0x6e, 0xff, 0xe5, 0xff, 0x05, 0x00, 0x00, 0xff,
0xff, 0x59, 0xb0, 0xc2, 0xf4, 0x81, 0x2f, 0x00, 0x00,
} }

View File

@ -360,7 +360,12 @@ message UserInfoUpdatedTips{
//////////////////////conversation///////////////////// //////////////////////conversation/////////////////////
message ConversationUpdateTips{ message ConversationUpdateTips{
string UserID = 1; string UserID = 1;
}
message ConversationSetPrivateTips{
string recvID = 1;
string sendID = 2;
bool isPrivate = 3;
} }

File diff suppressed because it is too large Load Diff

View File

@ -84,7 +84,8 @@ message Conversation{
message SetConversationReq{ message SetConversationReq{
Conversation Conversation = 1; Conversation Conversation = 1;
string OperationID = 2; int32 notificationType = 2;
string OperationID = 3;
} }
message SetConversationResp{ message SetConversationResp{
@ -95,7 +96,8 @@ message SetRecvMsgOptReq {
string OwnerUserID = 1; string OwnerUserID = 1;
string ConversationID = 2; string ConversationID = 2;
int32 RecvMsgOpt = 3; int32 RecvMsgOpt = 3;
string OperationID = 4; int32 notificationType = 4;
string OperationID = 5;
} }
message SetRecvMsgOptResp { message SetRecvMsgOptResp {
@ -137,7 +139,8 @@ message GetAllConversationsResp{
message BatchSetConversationsReq{ message BatchSetConversationsReq{
repeated Conversation Conversations = 1; repeated Conversation Conversations = 1;
string OwnerUserID = 2; string OwnerUserID = 2;
string OperationID = 3; int32 notificationType = 3;
string OperationID = 4;
} }
message BatchSetConversationsResp{ message BatchSetConversationsResp{