From 0a81dd040f64f01b4fbc862c58545d030c0284aa Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Sun, 29 Jan 2023 18:13:02 +0800 Subject: [PATCH 1/4] 1 --- internal/rpc/group/g.go | 16 ++- internal/rpc/group/group.go | 198 +++++++++++++-------------- pkg/common/db/controller/group.go | 7 + pkg/common/token_verify/jwt_token.go | 4 + 4 files changed, 118 insertions(+), 107 deletions(-) diff --git a/internal/rpc/group/g.go b/internal/rpc/group/g.go index 9afde7115..1228a1c15 100644 --- a/internal/rpc/group/g.go +++ b/internal/rpc/group/g.go @@ -5,7 +5,7 @@ import ( relation "Open_IM/pkg/common/db/mysql" "Open_IM/pkg/common/tools" pbGroup "Open_IM/pkg/proto/group" - sdk "Open_IM/pkg/proto/sdk_ws" + sdk_ws "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" "math/big" @@ -40,10 +40,22 @@ func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMembe return dbGroupMember, nil } -func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk.UserInfo, error) { +func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk_ws.UserInfo, error) { return nil, nil } +func getUserMap(ctx context.Context, userIDs []string) (map[string]*sdk_ws.UserInfo, error) { + users, err := getUsersInfo(ctx, userIDs) + if err != nil { + return nil, err + } + userMap := make(map[string]*sdk_ws.UserInfo) + for i, user := range users { + userMap[user.UserID] = users[i] + } + return userMap, nil +} + func genGroupID(ctx context.Context, groupID string) string { if groupID != "" { return groupID diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 48154c8e0..a1d51ff9f 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -25,13 +25,12 @@ import ( "Open_IM/pkg/utils" "context" "errors" + grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "net" "strconv" "strings" "time" - grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus" - "google.golang.org/grpc" "google.golang.org/protobuf/types/known/wrapperspb" "gorm.io/gorm" @@ -259,139 +258,128 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo groupNode.NotificationUpdateTime = group.NotificationUpdateTime.UnixMilli() resp.GroupList = append(resp.GroupList, &groupNode) } - resp.Total = uint32(len(resp.GroupList)) + resp.Total = int32(len(resp.GroupList)) return resp, nil } func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.InviteUserToGroupReq) (*pbGroup.InviteUserToGroupResp, error) { resp := &pbGroup.InviteUserToGroupResp{} - opUserID := tools.OpUserID(ctx) - if err := token_verify.CheckManagerUserID(ctx, opUserID); err != nil { - if err := relation.CheckIsExistGroupMember(ctx, req.GroupID, opUserID); err != nil { - return nil, err - } + if len(req.InvitedUserIDList) == 0 { + return nil, constant.ErrArgs.Wrap("user empty") } - groupInfo, err := (*relation.Group)(nil).Take(ctx, req.GroupID) + if utils.IsDuplicateID(req.InvitedUserIDList) { + return nil, constant.ErrArgs.Wrap("userID duplicate") + } + group, err := s.GroupInterface.TakeGroupByID(ctx, req.GroupID) if err != nil { return nil, err } - if groupInfo.Status == constant.GroupStatusDismissed { - return nil, utils.Wrap(constant.ErrDismissedAlready, "") + if group.Status == constant.GroupStatusDismissed { + return nil, constant.ErrDismissedAlready.Wrap() } - if groupInfo.NeedVerification == constant.AllNeedVerification && - !relation.IsGroupOwnerAdmin(req.GroupID, tools.OpUserID(ctx)) && !token_verify.IsManagerUserID(tools.OpUserID(ctx)) { - joinReq := pbGroup.JoinGroupReq{} - for _, v := range req.InvitedUserIDList { - var groupRequest relation.GroupRequest - groupRequest.UserID = v - groupRequest.GroupID = req.GroupID - groupRequest.JoinSource = constant.JoinByInvitation - groupRequest.InviterUserID = tools.OpUserID(ctx) - err = relation.InsertIntoGroupRequest(groupRequest) - if err != nil { - var resultNode pbGroup.Id2Result - resultNode.Result = -1 - resultNode.UserID = v - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - continue - } else { - var resultNode pbGroup.Id2Result - resultNode.Result = 0 - resultNode.UserID = v - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - joinReq.GroupID = req.GroupID - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - chat.JoinGroupApplicationNotification(ctx, &joinReq) - } - } - return resp, nil - } - if err := s.DelGroupAndUserCache(ctx, req.GroupID, req.InvitedUserIDList); err != nil { + members, err := s.GroupInterface.GetGroupMemberList(ctx, group.GroupID) + if err != nil { return nil, err } - //from User: invite: applicant - //to user: invite: invited - var okUserIDList []string - if groupInfo.GroupType != constant.SuperGroup { - for _, v := range req.InvitedUserIDList { - var resultNode pbGroup.Id2Result - resultNode.UserID = v - resultNode.Result = 0 - toUserInfo, err := relation.GetUserByUserID(v) - if err != nil { - trace_log.SetCtxInfo(ctx, "GetUserByUserID", err, "userID", v) - resultNode.Result = -1 - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - continue - } - - if relation.IsExistGroupMember(req.GroupID, v) { - trace_log.SetCtxInfo(ctx, "IsExistGroupMember", err, "groupID", req.GroupID, "userID", v) - resultNode.Result = -1 - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - continue - } - var toInsertInfo relation.GroupMember - utils.CopyStructFields(&toInsertInfo, toUserInfo) - toInsertInfo.GroupID = req.GroupID - toInsertInfo.RoleLevel = constant.GroupOrdinaryUsers - toInsertInfo.OperatorUserID = tools.OpUserID(ctx) - toInsertInfo.InviterUserID = tools.OpUserID(ctx) - toInsertInfo.JoinSource = constant.JoinByInvitation - if err := CallbackBeforeMemberJoinGroup(ctx, tools.OperationID(ctx), &toInsertInfo, groupInfo.Ex); err != nil { - return nil, err - } - err = relation.InsertIntoGroupMember(toInsertInfo) - if err != nil { - trace_log.SetCtxInfo(ctx, "InsertIntoGroupMember", err, "args", toInsertInfo) - resultNode.Result = -1 - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - continue - } - okUserIDList = append(okUserIDList, v) - err = db.DB.AddGroupMember(req.GroupID, toUserInfo.UserID) - if err != nil { - trace_log.SetCtxInfo(ctx, "AddGroupMember", err, "groupID", req.GroupID, "userID", toUserInfo.UserID) - } - resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - } - } else { - okUserIDList = req.InvitedUserIDList - if err := db.DB.AddUserToSuperGroup(req.GroupID, req.InvitedUserIDList); err != nil { - return nil, err + memberMap := make(map[string]*relation.GroupMember) + for i, member := range members { + memberMap[member.GroupID] = members[i] + } + for _, userID := range req.InvitedUserIDList { + if _, ok := memberMap[userID]; ok { + return nil, constant.ErrArgs.Wrap("user in group " + userID) } } - - if groupInfo.GroupType != constant.SuperGroup { - chat.MemberInvitedNotification(tools.OperationID(ctx), req.GroupID, tools.OpUserID(ctx), req.Reason, okUserIDList) - } else { - for _, userID := range req.InvitedUserIDList { - if err := rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, userID); err != nil { - trace_log.SetCtxInfo(ctx, "DelJoinedSuperGroupIDListFromCache", err, "userID", userID) + userMap, err := getUserMap(ctx, req.InvitedUserIDList) + if err != nil { + return nil, err + } + for _, userID := range req.InvitedUserIDList { + if _, ok := userMap[userID]; !ok { + return nil, constant.ErrUserIDNotFound.Wrap(userID) + } + } + if group.NeedVerification == constant.AllNeedVerification { + if !token_verify.IsAppManagerUid(ctx) { + opUserID := tools.OpUserID(ctx) + member, ok := memberMap[opUserID] + if ok { + return nil, constant.ErrNoPermission.Wrap("not in group") + } + if !(member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin) { + var requests []*relation.GroupRequest + for _, userID := range req.InvitedUserIDList { + requests = append(requests, &relation.GroupRequest{ + UserID: userID, + GroupID: req.GroupID, + JoinSource: constant.JoinByInvitation, + InviterUserID: opUserID, + }) + } + if err := s.GroupInterface.CreateGroupRequest(ctx, requests); err != nil { + return nil, err + } + for _, request := range requests { + chat.JoinGroupApplicationNotification(ctx, &pbGroup.JoinGroupReq{ + GroupID: request.GroupID, + ReqMessage: request.ReqMsg, + JoinSource: request.JoinSource, + InviterUserID: request.InviterUserID, + }) + } + return resp, nil } } - for _, v := range req.InvitedUserIDList { - chat.SuperGroupNotification(tools.OperationID(ctx), v, v) + } + if group.GroupType == constant.SuperGroup { + if err := s.GroupInterface.AddUserToSuperGroup(ctx, req.GroupID, req.InvitedUserIDList); err != nil { + return nil, err } + for _, userID := range req.InvitedUserIDList { + chat.SuperGroupNotification(tools.OperationID(ctx), userID, userID) + } + } else { + var groupMembers []*relation.GroupMember + for _, userID := range req.InvitedUserIDList { + user := userMap[userID] + var member relation.GroupMember + utils.CopyStructFields(&member, user) + member.GroupID = req.GroupID + member.RoleLevel = constant.GroupOrdinaryUsers + member.OperatorUserID = tools.OpUserID(ctx) + member.InviterUserID = tools.OpUserID(ctx) + member.JoinSource = constant.JoinByInvitation + if err := CallbackBeforeMemberJoinGroup(ctx, tools.OperationID(ctx), &member, group.Ex); err != nil { + return nil, err + } + groupMembers = append(groupMembers, &member) + } + if err := s.GroupInterface.CreateGroupMember(ctx, groupMembers); err != nil { + return nil, err + } + chat.MemberInvitedNotification(tools.OperationID(ctx), req.GroupID, tools.OpUserID(ctx), req.Reason, req.InvitedUserIDList) } return resp, nil } func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGroupAllMemberReq) (*pbGroup.GetGroupAllMemberResp, error) { resp := &pbGroup.GetGroupAllMemberResp{} - - groupInfo, err := rocksCache.GetGroupInfoFromCache(ctx, req.GroupID) + group, err := s.GroupInterface.TakeGroupByID(ctx, req.GroupID) if err != nil { return nil, err } - if groupInfo.GroupType != constant.SuperGroup { - memberList, err := rocksCache.GetGroupMembersInfoFromCache(ctx, req.Count, req.Offset, req.GroupID) + if group.GroupType != constant.SuperGroup { + members, err := s.GroupInterface.GetGroupMemberList(ctx, req.GroupID) if err != nil { return nil, err } - for _, v := range memberList { + var userIDs []string + for _, member := range members { + userIDs = append(userIDs, member.UserID) + } + for _, member := range members { var node open_im_sdk.GroupMemberFullInfo - cp.GroupMemberDBCopyOpenIM(&node, v) + utils.CopyStructFields(&node, member) resp.MemberList = append(resp.MemberList, &node) } } diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index 56358db17..f87389428 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -18,10 +18,17 @@ type GroupInterface interface { DeleteGroupByIDs(ctx context.Context, groupIDs []string) error TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) + GetGroupMemberList(ctx context.Context, groupID string) ([]*relation.GroupMember, error) GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error) GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error) + + CreateGroupMember(ctx context.Context, groupMember []*relation.GroupMember) error + + CreateGroupRequest(ctx context.Context, requests []*relation.GroupRequest) error + //mongo CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error + AddUserToSuperGroup(ctx context.Context, groupID string, userIDs []string) error GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error) } diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index be0b5f217..9f3ace2d8 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -173,6 +173,10 @@ func CheckAccessV3(ctx context.Context, ownerUserID string) (err error) { return constant.ErrIdentity.Wrap(utils.GetSelfFuncName()) } +func IsAppManagerUid(ctx context.Context) bool { + return utils.IsContain(tools.OpUserID(ctx), config.Config.Manager.AppManagerUid) +} + func CheckAdmin(ctx context.Context) error { if utils.IsContain(tools.OpUserID(ctx), config.Config.Manager.AppManagerUid) { return nil From 25f0173c10426bf94660f22199b3d6d767b0a03e Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Sun, 29 Jan 2023 18:24:46 +0800 Subject: [PATCH 2/4] 1 --- pkg/proto/group/group.proto | 77 +++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/pkg/proto/group/group.proto b/pkg/proto/group/group.proto index 89e21effd..9c5cb1ded 100644 --- a/pkg/proto/group/group.proto +++ b/pkg/proto/group/group.proto @@ -10,10 +10,10 @@ message CreateGroupReq{ repeated string initMemberList = 1; server_api_params.GroupInfo groupInfo = 2; repeated string adminUserIDs = 3; - string ownerUserID = 5; //owner + string ownerUserID = 4; //owner } message CreateGroupResp{ - server_api_params.GroupInfo groupInfo = 3; + server_api_params.GroupInfo groupInfo = 1; } @@ -21,7 +21,7 @@ message GetGroupsInfoReq{ repeated string groupIDList = 1; } message GetGroupsInfoResp{ - repeated server_api_params.GroupInfo groupInfoList = 3; + repeated server_api_params.GroupInfo groupInfoList = 1; } @@ -34,11 +34,11 @@ message SetGroupInfoResp{ message GetGroupApplicationListReq { server_api_params.RequestPagination pagination = 1; - string fromUserID = 3; //owner or admin + string fromUserID = 2; //owner or admin } message GetGroupApplicationListResp { int32 total = 1; - repeated server_api_params.GroupRequest groupRequestList = 3; + repeated server_api_params.GroupRequest groupRequestList = 2; } message GetUserReqApplicationListReq{ @@ -64,18 +64,18 @@ message TransferGroupOwnerResp{ message JoinGroupReq{ string groupID = 1; string reqMessage = 2; - int32 joinSource = 5; - string inviterUserID = 6; + int32 joinSource = 3; + string inviterUserID = 4; } message JoinGroupResp{ } message GroupApplicationResponseReq{ - string groupID = 3; - string fromUserID = 4; // - string handledMsg = 5; - int32 handleResult = 6; + string groupID = 1; + string fromUserID = 2; // + string handledMsg = 3; + int32 handleResult = 4; } message GroupApplicationResponseResp{ @@ -93,13 +93,14 @@ message QuitGroupResp{ message GetGroupMemberListReq { string groupID = 1; - int32 filter = 4; - server_api_params.RequestPagination pagination = 2; + int32 filter = 2; + int32 nextSeq = 3; + server_api_params.RequestPagination pagination = 4; } message GetGroupMemberListResp { int32 total = 1; - repeated server_api_params.GroupMemberFullInfo memberList = 3; + repeated server_api_params.GroupMemberFullInfo memberList = 2; } @@ -109,7 +110,7 @@ message GetGroupMembersInfoReq { } message GetGroupMembersInfoResp { - repeated server_api_params.GroupMemberFullInfo memberList = 3; + repeated server_api_params.GroupMemberFullInfo memberList = 1; } message KickGroupMemberReq { @@ -129,14 +130,14 @@ message GetJoinedGroupListReq { } message GetJoinedGroupListResp{ int32 total = 1; - repeated server_api_params.GroupInfo groupList = 3; + repeated server_api_params.GroupInfo groupList = 2; } message InviteUserToGroupReq { - string groupID = 3; - string reason = 4; - repeated string invitedUserIDList = 5; + string groupID = 1; + string reason = 2; + repeated string invitedUserIDList = 3; } message InviteUserToGroupResp { @@ -145,11 +146,11 @@ message InviteUserToGroupResp { message GetGroupAllMemberReq { string groupID = 1; - int32 offset = 4; - int32 count = 5; + int32 offset = 2; + int32 count = 3; } message GetGroupAllMemberResp { - repeated server_api_params.GroupMemberFullInfo memberList = 3; + repeated server_api_params.GroupMemberFullInfo memberList = 1; } message CMSGroup { @@ -167,7 +168,7 @@ message GetGroupsReq { message GetGroupsResp { repeated CMSGroup groups = 1; - int32 GroupNum = 3; + int32 GroupNum = 2; } message GetGroupMemberReq { @@ -187,7 +188,7 @@ message GetGroupMembersCMSResp { } message DismissGroupReq{ - string groupID = 3; + string groupID = 1; } message DismissGroupResp{ @@ -195,9 +196,9 @@ message DismissGroupResp{ message MuteGroupMemberReq{ - string groupID = 3; - string userID = 4; - uint32 mutedSeconds = 5; + string groupID = 1; + string userID = 2; + uint32 mutedSeconds = 3; } message MuteGroupMemberResp{ @@ -206,8 +207,8 @@ message MuteGroupMemberResp{ message CancelMuteGroupMemberReq{ - string groupID = 3; - string userID = 4; + string groupID = 1; + string userID = 2; } message CancelMuteGroupMemberResp{ @@ -215,7 +216,7 @@ message CancelMuteGroupMemberResp{ message MuteGroupReq{ - string groupID = 3; + string groupID = 1; } message MuteGroupResp{ @@ -224,7 +225,7 @@ message MuteGroupResp{ message CancelMuteGroupReq{ - string groupID = 3; + string groupID = 1; } message CancelMuteGroupResp{ @@ -236,7 +237,7 @@ message CancelMuteGroupResp{ message SetGroupMemberNicknameReq{ string groupID = 1; string nickname = 2; - string userID = 5; + string userID = 3; } message SetGroupMemberNicknameResp{ } @@ -248,7 +249,7 @@ message GetJoinedSuperGroupListReq { message GetJoinedSuperGroupListResp { int32 total = 1; - repeated server_api_params.GroupInfo groupList = 3; + repeated server_api_params.GroupInfo groupList = 2; } message GetSuperGroupsInfoReq { @@ -256,16 +257,16 @@ message GetSuperGroupsInfoReq { } message GetSuperGroupsInfoResp { - repeated server_api_params.GroupInfo groupInfoList = 3; + repeated server_api_params.GroupInfo groupInfoList = 1; } message SetGroupMemberInfoReq{ string groupID = 1; string userID = 2; - google.protobuf.StringValue nickname = 5; - google.protobuf.StringValue faceURL = 6; - google.protobuf.Int32Value roleLevel = 7; - google.protobuf.StringValue ex = 8; + google.protobuf.StringValue nickname = 3; + google.protobuf.StringValue faceURL = 4; + google.protobuf.Int32Value roleLevel = 5; + google.protobuf.StringValue ex = 6; } message SetGroupMemberInfoResp{ From f76afd3185ef6dd0210cb0580eba9f13257147ee Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Sun, 29 Jan 2023 18:31:01 +0800 Subject: [PATCH 3/4] 1 --- pkg/proto/group/group.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/proto/group/group.proto b/pkg/proto/group/group.proto index 9c5cb1ded..07e134271 100644 --- a/pkg/proto/group/group.proto +++ b/pkg/proto/group/group.proto @@ -101,6 +101,7 @@ message GetGroupMemberListReq { message GetGroupMemberListResp { int32 total = 1; repeated server_api_params.GroupMemberFullInfo memberList = 2; + int32 nextSeq = 3; } From 4c6e02f80508a0dc8dc6a7f4e444acfc4732af52 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Sun, 29 Jan 2023 18:37:38 +0800 Subject: [PATCH 4/4] 1 --- internal/rpc/group/group.go | 19 +- pkg/common/db/controller/group.go | 49 ++++ pkg/proto/group/group.pb.go | 446 ++++++++++++++++-------------- 3 files changed, 288 insertions(+), 226 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index a1d51ff9f..a37f7ebe1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -388,12 +388,10 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) { resp := &pbGroup.GetGroupMemberListResp{} - - memberList, err := relation.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30) + memberList, err := s.GroupInterface.GetGroupMemberFilterList(ctx, req.GroupID, req.Filter, req.NextSeq, 30) if err != nil { return nil, err } - for _, v := range memberList { var node open_im_sdk.GroupMemberFullInfo utils.CopyStructFields(&node, &v) @@ -543,15 +541,14 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetGroupMembersInfoReq) (*pbGroup.GetGroupMembersInfoResp, error) { resp := &pbGroup.GetGroupMembersInfoResp{} - resp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} - for _, userID := range req.MemberList { - groupMember, err := rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, userID) - if err != nil { - return nil, err - } + members, err := s.GroupInterface.GetGroupMemberListByUserID(ctx, req.GroupID, req.MemberList) + if err != nil { + return nil, err + } + for _, member := range members { var memberNode open_im_sdk.GroupMemberFullInfo - utils.CopyStructFields(&memberNode, groupMember) - memberNode.JoinTime = int32(groupMember.JoinTime.Unix()) + utils.CopyStructFields(&memberNode, member) + memberNode.JoinTime = member.JoinTime.UnixMilli() resp.MemberList = append(resp.MemberList, &memberNode) } return resp, nil diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index ab40cafde..176cbafd1 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -19,6 +19,8 @@ type GroupInterface interface { TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) GetGroupMemberList(ctx context.Context, groupID string) ([]*relation.GroupMember, error) + GetGroupMemberListByUserID(ctx context.Context, groupID string, userIDs []string) ([]*relation.GroupMember, error) + GetGroupMemberFilterList(ctx context.Context, groupID string, filter int32, begin int32, maxNumber int32) ([]*relation.GroupMember, error) // relation.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30) GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error) GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error) @@ -32,10 +34,57 @@ type GroupInterface interface { GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error) } +var _ GroupInterface = (*GroupController)(nil) + type GroupController struct { database GroupDataBaseInterface } +func (g *GroupController) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) GetGroupMemberList(ctx context.Context, groupID string) ([]*relation.GroupMember, error) { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) GetGroupMemberListByUserID(ctx context.Context, groupID string, userIDs []string) ([]*relation.GroupMember, error) { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) GetGroupMemberFilterList(ctx context.Context, groupID string, filter int32, begin int32, maxNumber int32) ([]*relation.GroupMember, error) { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error) { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error) { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) CreateGroupMember(ctx context.Context, groupMember []*relation.GroupMember) error { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) CreateGroupRequest(ctx context.Context, requests []*relation.GroupRequest) error { + //TODO implement me + panic("implement me") +} + +func (g *GroupController) AddUserToSuperGroup(ctx context.Context, groupID string, userIDs []string) error { + //TODO implement me + panic("implement me") +} + func NewGroupController(db *gorm.DB, rdb redis.UniversalClient, mgoDB *mongo.Client) GroupInterface { groupController := &GroupController{database: newGroupDatabase(db, rdb, mgoDB)} return groupController diff --git a/pkg/proto/group/group.pb.go b/pkg/proto/group/group.pb.go index e720801c7..4778ac346 100644 --- a/pkg/proto/group/group.pb.go +++ b/pkg/proto/group/group.pb.go @@ -29,7 +29,7 @@ type CreateGroupReq struct { InitMemberList []string `protobuf:"bytes,1,rep,name=initMemberList" json:"initMemberList,omitempty"` GroupInfo *sdk_ws.GroupInfo `protobuf:"bytes,2,opt,name=groupInfo" json:"groupInfo,omitempty"` AdminUserIDs []string `protobuf:"bytes,3,rep,name=adminUserIDs" json:"adminUserIDs,omitempty"` - OwnerUserID string `protobuf:"bytes,5,opt,name=ownerUserID" json:"ownerUserID,omitempty"` + OwnerUserID string `protobuf:"bytes,4,opt,name=ownerUserID" json:"ownerUserID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -39,7 +39,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} } func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) } func (*CreateGroupReq) ProtoMessage() {} func (*CreateGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{0} + return fileDescriptor_group_3be6490d3e5fcc92, []int{0} } func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b) @@ -88,7 +88,7 @@ func (m *CreateGroupReq) GetOwnerUserID() string { } type CreateGroupResp struct { - GroupInfo *sdk_ws.GroupInfo `protobuf:"bytes,3,opt,name=groupInfo" json:"groupInfo,omitempty"` + GroupInfo *sdk_ws.GroupInfo `protobuf:"bytes,1,opt,name=groupInfo" json:"groupInfo,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -98,7 +98,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} } func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) } func (*CreateGroupResp) ProtoMessage() {} func (*CreateGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{1} + return fileDescriptor_group_3be6490d3e5fcc92, []int{1} } func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b) @@ -136,7 +136,7 @@ func (m *GetGroupsInfoReq) Reset() { *m = GetGroupsInfoReq{} } func (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupsInfoReq) ProtoMessage() {} func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{2} + return fileDescriptor_group_3be6490d3e5fcc92, []int{2} } func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b) @@ -164,7 +164,7 @@ func (m *GetGroupsInfoReq) GetGroupIDList() []string { } type GetGroupsInfoResp struct { - GroupInfoList []*sdk_ws.GroupInfo `protobuf:"bytes,3,rep,name=groupInfoList" json:"groupInfoList,omitempty"` + GroupInfoList []*sdk_ws.GroupInfo `protobuf:"bytes,1,rep,name=groupInfoList" json:"groupInfoList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -174,7 +174,7 @@ func (m *GetGroupsInfoResp) Reset() { *m = GetGroupsInfoResp{} } func (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupsInfoResp) ProtoMessage() {} func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{3} + return fileDescriptor_group_3be6490d3e5fcc92, []int{3} } func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b) @@ -212,7 +212,7 @@ func (m *SetGroupInfoReq) Reset() { *m = SetGroupInfoReq{} } func (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) } func (*SetGroupInfoReq) ProtoMessage() {} func (*SetGroupInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{4} + return fileDescriptor_group_3be6490d3e5fcc92, []int{4} } func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b) @@ -249,7 +249,7 @@ func (m *SetGroupInfoResp) Reset() { *m = SetGroupInfoResp{} } func (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) } func (*SetGroupInfoResp) ProtoMessage() {} func (*SetGroupInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{5} + return fileDescriptor_group_3be6490d3e5fcc92, []int{5} } func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b) @@ -271,7 +271,7 @@ var xxx_messageInfo_SetGroupInfoResp proto.InternalMessageInfo type GetGroupApplicationListReq struct { Pagination *sdk_ws.RequestPagination `protobuf:"bytes,1,opt,name=pagination" json:"pagination,omitempty"` - FromUserID string `protobuf:"bytes,3,opt,name=fromUserID" json:"fromUserID,omitempty"` + FromUserID string `protobuf:"bytes,2,opt,name=fromUserID" json:"fromUserID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -281,7 +281,7 @@ func (m *GetGroupApplicationListReq) Reset() { *m = GetGroupApplicationL func (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) } func (*GetGroupApplicationListReq) ProtoMessage() {} func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{6} + return fileDescriptor_group_3be6490d3e5fcc92, []int{6} } func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b) @@ -317,7 +317,7 @@ func (m *GetGroupApplicationListReq) GetFromUserID() string { type GetGroupApplicationListResp struct { Total int32 `protobuf:"varint,1,opt,name=total" json:"total,omitempty"` - GroupRequestList []*sdk_ws.GroupRequest `protobuf:"bytes,3,rep,name=groupRequestList" json:"groupRequestList,omitempty"` + GroupRequestList []*sdk_ws.GroupRequest `protobuf:"bytes,2,rep,name=groupRequestList" json:"groupRequestList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -327,7 +327,7 @@ func (m *GetGroupApplicationListResp) Reset() { *m = GetGroupApplication func (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) } func (*GetGroupApplicationListResp) ProtoMessage() {} func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{7} + return fileDescriptor_group_3be6490d3e5fcc92, []int{7} } func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b) @@ -373,7 +373,7 @@ func (m *GetUserReqApplicationListReq) Reset() { *m = GetUserReqApplicat func (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) } func (*GetUserReqApplicationListReq) ProtoMessage() {} func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{8} + return fileDescriptor_group_3be6490d3e5fcc92, []int{8} } func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b) @@ -419,7 +419,7 @@ func (m *GetUserReqApplicationListResp) Reset() { *m = GetUserReqApplica func (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) } func (*GetUserReqApplicationListResp) ProtoMessage() {} func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{9} + return fileDescriptor_group_3be6490d3e5fcc92, []int{9} } func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b) @@ -466,7 +466,7 @@ func (m *TransferGroupOwnerReq) Reset() { *m = TransferGroupOwnerReq{} } func (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) } func (*TransferGroupOwnerReq) ProtoMessage() {} func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{10} + return fileDescriptor_group_3be6490d3e5fcc92, []int{10} } func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b) @@ -517,7 +517,7 @@ func (m *TransferGroupOwnerResp) Reset() { *m = TransferGroupOwnerResp{} func (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) } func (*TransferGroupOwnerResp) ProtoMessage() {} func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{11} + return fileDescriptor_group_3be6490d3e5fcc92, []int{11} } func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b) @@ -540,8 +540,8 @@ var xxx_messageInfo_TransferGroupOwnerResp proto.InternalMessageInfo type JoinGroupReq struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` ReqMessage string `protobuf:"bytes,2,opt,name=reqMessage" json:"reqMessage,omitempty"` - JoinSource int32 `protobuf:"varint,5,opt,name=joinSource" json:"joinSource,omitempty"` - InviterUserID string `protobuf:"bytes,6,opt,name=inviterUserID" json:"inviterUserID,omitempty"` + JoinSource int32 `protobuf:"varint,3,opt,name=joinSource" json:"joinSource,omitempty"` + InviterUserID string `protobuf:"bytes,4,opt,name=inviterUserID" json:"inviterUserID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -551,7 +551,7 @@ func (m *JoinGroupReq) Reset() { *m = JoinGroupReq{} } func (m *JoinGroupReq) String() string { return proto.CompactTextString(m) } func (*JoinGroupReq) ProtoMessage() {} func (*JoinGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{12} + return fileDescriptor_group_3be6490d3e5fcc92, []int{12} } func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b) @@ -609,7 +609,7 @@ func (m *JoinGroupResp) Reset() { *m = JoinGroupResp{} } func (m *JoinGroupResp) String() string { return proto.CompactTextString(m) } func (*JoinGroupResp) ProtoMessage() {} func (*JoinGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{13} + return fileDescriptor_group_3be6490d3e5fcc92, []int{13} } func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b) @@ -630,10 +630,10 @@ func (m *JoinGroupResp) XXX_DiscardUnknown() { var xxx_messageInfo_JoinGroupResp proto.InternalMessageInfo type GroupApplicationResponseReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` - FromUserID string `protobuf:"bytes,4,opt,name=fromUserID" json:"fromUserID,omitempty"` - HandledMsg string `protobuf:"bytes,5,opt,name=handledMsg" json:"handledMsg,omitempty"` - HandleResult int32 `protobuf:"varint,6,opt,name=handleResult" json:"handleResult,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + FromUserID string `protobuf:"bytes,2,opt,name=fromUserID" json:"fromUserID,omitempty"` + HandledMsg string `protobuf:"bytes,3,opt,name=handledMsg" json:"handledMsg,omitempty"` + HandleResult int32 `protobuf:"varint,4,opt,name=handleResult" json:"handleResult,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -643,7 +643,7 @@ func (m *GroupApplicationResponseReq) Reset() { *m = GroupApplicationRes func (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) } func (*GroupApplicationResponseReq) ProtoMessage() {} func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{14} + return fileDescriptor_group_3be6490d3e5fcc92, []int{14} } func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b) @@ -701,7 +701,7 @@ func (m *GroupApplicationResponseResp) Reset() { *m = GroupApplicationRe func (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) } func (*GroupApplicationResponseResp) ProtoMessage() {} func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{15} + return fileDescriptor_group_3be6490d3e5fcc92, []int{15} } func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b) @@ -732,7 +732,7 @@ func (m *QuitGroupReq) Reset() { *m = QuitGroupReq{} } func (m *QuitGroupReq) String() string { return proto.CompactTextString(m) } func (*QuitGroupReq) ProtoMessage() {} func (*QuitGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{16} + return fileDescriptor_group_3be6490d3e5fcc92, []int{16} } func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b) @@ -769,7 +769,7 @@ func (m *QuitGroupResp) Reset() { *m = QuitGroupResp{} } func (m *QuitGroupResp) String() string { return proto.CompactTextString(m) } func (*QuitGroupResp) ProtoMessage() {} func (*QuitGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{17} + return fileDescriptor_group_3be6490d3e5fcc92, []int{17} } func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b) @@ -791,8 +791,9 @@ var xxx_messageInfo_QuitGroupResp proto.InternalMessageInfo type GetGroupMemberListReq struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` - Filter int32 `protobuf:"varint,4,opt,name=filter" json:"filter,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=pagination" json:"pagination,omitempty"` + Filter int32 `protobuf:"varint,2,opt,name=filter" json:"filter,omitempty"` + NextSeq int32 `protobuf:"varint,3,opt,name=nextSeq" json:"nextSeq,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,4,opt,name=pagination" json:"pagination,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -802,7 +803,7 @@ func (m *GetGroupMemberListReq) Reset() { *m = GetGroupMemberListReq{} } func (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberListReq) ProtoMessage() {} func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{18} + return fileDescriptor_group_3be6490d3e5fcc92, []int{18} } func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b) @@ -836,6 +837,13 @@ func (m *GetGroupMemberListReq) GetFilter() int32 { return 0 } +func (m *GetGroupMemberListReq) GetNextSeq() int32 { + if m != nil { + return m.NextSeq + } + return 0 +} + func (m *GetGroupMemberListReq) GetPagination() *sdk_ws.RequestPagination { if m != nil { return m.Pagination @@ -845,7 +853,8 @@ func (m *GetGroupMemberListReq) GetPagination() *sdk_ws.RequestPagination { type GetGroupMemberListResp struct { Total int32 `protobuf:"varint,1,opt,name=total" json:"total,omitempty"` - MemberList []*sdk_ws.GroupMemberFullInfo `protobuf:"bytes,3,rep,name=memberList" json:"memberList,omitempty"` + MemberList []*sdk_ws.GroupMemberFullInfo `protobuf:"bytes,2,rep,name=memberList" json:"memberList,omitempty"` + NextSeq int32 `protobuf:"varint,3,opt,name=nextSeq" json:"nextSeq,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -855,7 +864,7 @@ func (m *GetGroupMemberListResp) Reset() { *m = GetGroupMemberListResp{} func (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberListResp) ProtoMessage() {} func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{19} + return fileDescriptor_group_3be6490d3e5fcc92, []int{19} } func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b) @@ -889,6 +898,13 @@ func (m *GetGroupMemberListResp) GetMemberList() []*sdk_ws.GroupMemberFullInfo { return nil } +func (m *GetGroupMemberListResp) GetNextSeq() int32 { + if m != nil { + return m.NextSeq + } + return 0 +} + type GetGroupMembersInfoReq struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` MemberList []string `protobuf:"bytes,2,rep,name=memberList" json:"memberList,omitempty"` @@ -901,7 +917,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{} func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersInfoReq) ProtoMessage() {} func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{20} + return fileDescriptor_group_3be6490d3e5fcc92, []int{20} } func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b) @@ -936,7 +952,7 @@ func (m *GetGroupMembersInfoReq) GetMemberList() []string { } type GetGroupMembersInfoResp struct { - MemberList []*sdk_ws.GroupMemberFullInfo `protobuf:"bytes,3,rep,name=memberList" json:"memberList,omitempty"` + MemberList []*sdk_ws.GroupMemberFullInfo `protobuf:"bytes,1,rep,name=memberList" json:"memberList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -946,7 +962,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersInfoResp) ProtoMessage() {} func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{21} + return fileDescriptor_group_3be6490d3e5fcc92, []int{21} } func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b) @@ -986,7 +1002,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} } func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*KickGroupMemberReq) ProtoMessage() {} func (*KickGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{22} + return fileDescriptor_group_3be6490d3e5fcc92, []int{22} } func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b) @@ -1037,7 +1053,7 @@ func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} } func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*KickGroupMemberResp) ProtoMessage() {} func (*KickGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{23} + return fileDescriptor_group_3be6490d3e5fcc92, []int{23} } func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b) @@ -1069,7 +1085,7 @@ func (m *GetJoinedGroupListReq) Reset() { *m = GetJoinedGroupListReq{} } func (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) } func (*GetJoinedGroupListReq) ProtoMessage() {} func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{24} + return fileDescriptor_group_3be6490d3e5fcc92, []int{24} } func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b) @@ -1105,7 +1121,7 @@ func (m *GetJoinedGroupListReq) GetPagination() *sdk_ws.RequestPagination { type GetJoinedGroupListResp struct { Total int32 `protobuf:"varint,1,opt,name=total" json:"total,omitempty"` - GroupList []*sdk_ws.GroupInfo `protobuf:"bytes,3,rep,name=groupList" json:"groupList,omitempty"` + GroupList []*sdk_ws.GroupInfo `protobuf:"bytes,2,rep,name=groupList" json:"groupList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1115,7 +1131,7 @@ func (m *GetJoinedGroupListResp) Reset() { *m = GetJoinedGroupListResp{} func (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) } func (*GetJoinedGroupListResp) ProtoMessage() {} func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{25} + return fileDescriptor_group_3be6490d3e5fcc92, []int{25} } func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b) @@ -1150,9 +1166,9 @@ func (m *GetJoinedGroupListResp) GetGroupList() []*sdk_ws.GroupInfo { } type InviteUserToGroupReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` - Reason string `protobuf:"bytes,4,opt,name=reason" json:"reason,omitempty"` - InvitedUserIDList []string `protobuf:"bytes,5,rep,name=invitedUserIDList" json:"invitedUserIDList,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason" json:"reason,omitempty"` + InvitedUserIDList []string `protobuf:"bytes,3,rep,name=invitedUserIDList" json:"invitedUserIDList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1162,7 +1178,7 @@ func (m *InviteUserToGroupReq) Reset() { *m = InviteUserToGroupReq{} } func (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) } func (*InviteUserToGroupReq) ProtoMessage() {} func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{26} + return fileDescriptor_group_3be6490d3e5fcc92, []int{26} } func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b) @@ -1213,7 +1229,7 @@ func (m *InviteUserToGroupResp) Reset() { *m = InviteUserToGroupResp{} } func (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) } func (*InviteUserToGroupResp) ProtoMessage() {} func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{27} + return fileDescriptor_group_3be6490d3e5fcc92, []int{27} } func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b) @@ -1235,8 +1251,8 @@ var xxx_messageInfo_InviteUserToGroupResp proto.InternalMessageInfo type GetGroupAllMemberReq struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` - Offset int32 `protobuf:"varint,4,opt,name=offset" json:"offset,omitempty"` - Count int32 `protobuf:"varint,5,opt,name=count" json:"count,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset" json:"offset,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count" json:"count,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1246,7 +1262,7 @@ func (m *GetGroupAllMemberReq) Reset() { *m = GetGroupAllMemberReq{} } func (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) } func (*GetGroupAllMemberReq) ProtoMessage() {} func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{28} + return fileDescriptor_group_3be6490d3e5fcc92, []int{28} } func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b) @@ -1288,7 +1304,7 @@ func (m *GetGroupAllMemberReq) GetCount() int32 { } type GetGroupAllMemberResp struct { - MemberList []*sdk_ws.GroupMemberFullInfo `protobuf:"bytes,3,rep,name=memberList" json:"memberList,omitempty"` + MemberList []*sdk_ws.GroupMemberFullInfo `protobuf:"bytes,1,rep,name=memberList" json:"memberList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1298,7 +1314,7 @@ func (m *GetGroupAllMemberResp) Reset() { *m = GetGroupAllMemberResp{} } func (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) } func (*GetGroupAllMemberResp) ProtoMessage() {} func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{29} + return fileDescriptor_group_3be6490d3e5fcc92, []int{29} } func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b) @@ -1338,7 +1354,7 @@ func (m *CMSGroup) Reset() { *m = CMSGroup{} } func (m *CMSGroup) String() string { return proto.CompactTextString(m) } func (*CMSGroup) ProtoMessage() {} func (*CMSGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{30} + return fileDescriptor_group_3be6490d3e5fcc92, []int{30} } func (m *CMSGroup) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CMSGroup.Unmarshal(m, b) @@ -1392,7 +1408,7 @@ func (m *GetGroupsReq) Reset() { *m = GetGroupsReq{} } func (m *GetGroupsReq) String() string { return proto.CompactTextString(m) } func (*GetGroupsReq) ProtoMessage() {} func (*GetGroupsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{31} + return fileDescriptor_group_3be6490d3e5fcc92, []int{31} } func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b) @@ -1435,7 +1451,7 @@ func (m *GetGroupsReq) GetGroupID() string { type GetGroupsResp struct { Groups []*CMSGroup `protobuf:"bytes,1,rep,name=groups" json:"groups,omitempty"` - GroupNum int32 `protobuf:"varint,3,opt,name=GroupNum" json:"GroupNum,omitempty"` + GroupNum int32 `protobuf:"varint,2,opt,name=GroupNum" json:"GroupNum,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1445,7 +1461,7 @@ func (m *GetGroupsResp) Reset() { *m = GetGroupsResp{} } func (m *GetGroupsResp) String() string { return proto.CompactTextString(m) } func (*GetGroupsResp) ProtoMessage() {} func (*GetGroupsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{32} + return fileDescriptor_group_3be6490d3e5fcc92, []int{32} } func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b) @@ -1490,7 +1506,7 @@ func (m *GetGroupMemberReq) Reset() { *m = GetGroupMemberReq{} } func (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberReq) ProtoMessage() {} func (*GetGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{33} + return fileDescriptor_group_3be6490d3e5fcc92, []int{33} } func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b) @@ -1530,7 +1546,7 @@ func (m *GetGroupMembersCMSReq) Reset() { *m = GetGroupMembersCMSReq{} } func (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersCMSReq) ProtoMessage() {} func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{34} + return fileDescriptor_group_3be6490d3e5fcc92, []int{34} } func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b) @@ -1584,7 +1600,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{} func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersCMSResp) ProtoMessage() {} func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{35} + return fileDescriptor_group_3be6490d3e5fcc92, []int{35} } func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b) @@ -1626,7 +1642,7 @@ func (m *GetGroupMembersCMSResp) GetMemberNums() int32 { } type DismissGroupReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1636,7 +1652,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} } func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) } func (*DismissGroupReq) ProtoMessage() {} func (*DismissGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{36} + return fileDescriptor_group_3be6490d3e5fcc92, []int{36} } func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b) @@ -1673,7 +1689,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} } func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) } func (*DismissGroupResp) ProtoMessage() {} func (*DismissGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{37} + return fileDescriptor_group_3be6490d3e5fcc92, []int{37} } func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b) @@ -1694,9 +1710,9 @@ func (m *DismissGroupResp) XXX_DiscardUnknown() { var xxx_messageInfo_DismissGroupResp proto.InternalMessageInfo type MuteGroupMemberReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` - UserID string `protobuf:"bytes,4,opt,name=userID" json:"userID,omitempty"` - MutedSeconds uint32 `protobuf:"varint,5,opt,name=mutedSeconds" json:"mutedSeconds,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + MutedSeconds uint32 `protobuf:"varint,3,opt,name=mutedSeconds" json:"mutedSeconds,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1706,7 +1722,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} } func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*MuteGroupMemberReq) ProtoMessage() {} func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{38} + return fileDescriptor_group_3be6490d3e5fcc92, []int{38} } func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b) @@ -1757,7 +1773,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} } func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*MuteGroupMemberResp) ProtoMessage() {} func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{39} + return fileDescriptor_group_3be6490d3e5fcc92, []int{39} } func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b) @@ -1778,8 +1794,8 @@ func (m *MuteGroupMemberResp) XXX_DiscardUnknown() { var xxx_messageInfo_MuteGroupMemberResp proto.InternalMessageInfo type CancelMuteGroupMemberReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` - UserID string `protobuf:"bytes,4,opt,name=userID" json:"userID,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1789,7 +1805,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupMemberReq) ProtoMessage() {} func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{40} + return fileDescriptor_group_3be6490d3e5fcc92, []int{40} } func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b) @@ -1833,7 +1849,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupMemberResp) ProtoMessage() {} func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{41} + return fileDescriptor_group_3be6490d3e5fcc92, []int{41} } func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b) @@ -1854,7 +1870,7 @@ func (m *CancelMuteGroupMemberResp) XXX_DiscardUnknown() { var xxx_messageInfo_CancelMuteGroupMemberResp proto.InternalMessageInfo type MuteGroupReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1864,7 +1880,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} } func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) } func (*MuteGroupReq) ProtoMessage() {} func (*MuteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{42} + return fileDescriptor_group_3be6490d3e5fcc92, []int{42} } func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b) @@ -1901,7 +1917,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} } func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) } func (*MuteGroupResp) ProtoMessage() {} func (*MuteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{43} + return fileDescriptor_group_3be6490d3e5fcc92, []int{43} } func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b) @@ -1922,7 +1938,7 @@ func (m *MuteGroupResp) XXX_DiscardUnknown() { var xxx_messageInfo_MuteGroupResp proto.InternalMessageInfo type CancelMuteGroupReq struct { - GroupID string `protobuf:"bytes,3,opt,name=groupID" json:"groupID,omitempty"` + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1932,7 +1948,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} } func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupReq) ProtoMessage() {} func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{44} + return fileDescriptor_group_3be6490d3e5fcc92, []int{44} } func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b) @@ -1969,7 +1985,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} } func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupResp) ProtoMessage() {} func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{45} + return fileDescriptor_group_3be6490d3e5fcc92, []int{45} } func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b) @@ -1992,7 +2008,7 @@ var xxx_messageInfo_CancelMuteGroupResp proto.InternalMessageInfo type SetGroupMemberNicknameReq struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` - UserID string `protobuf:"bytes,5,opt,name=userID" json:"userID,omitempty"` + UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2002,7 +2018,7 @@ func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknam func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) } func (*SetGroupMemberNicknameReq) ProtoMessage() {} func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{46} + return fileDescriptor_group_3be6490d3e5fcc92, []int{46} } func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b) @@ -2053,7 +2069,7 @@ func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNickna func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) } func (*SetGroupMemberNicknameResp) ProtoMessage() {} func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{47} + return fileDescriptor_group_3be6490d3e5fcc92, []int{47} } func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b) @@ -2085,7 +2101,7 @@ func (m *GetJoinedSuperGroupListReq) Reset() { *m = GetJoinedSuperGroupL func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) } func (*GetJoinedSuperGroupListReq) ProtoMessage() {} func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{48} + return fileDescriptor_group_3be6490d3e5fcc92, []int{48} } func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b) @@ -2121,7 +2137,7 @@ func (m *GetJoinedSuperGroupListReq) GetUserID() string { type GetJoinedSuperGroupListResp struct { Total int32 `protobuf:"varint,1,opt,name=total" json:"total,omitempty"` - GroupList []*sdk_ws.GroupInfo `protobuf:"bytes,3,rep,name=groupList" json:"groupList,omitempty"` + GroupList []*sdk_ws.GroupInfo `protobuf:"bytes,2,rep,name=groupList" json:"groupList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2131,7 +2147,7 @@ func (m *GetJoinedSuperGroupListResp) Reset() { *m = GetJoinedSuperGroup func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) } func (*GetJoinedSuperGroupListResp) ProtoMessage() {} func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{49} + return fileDescriptor_group_3be6490d3e5fcc92, []int{49} } func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b) @@ -2176,7 +2192,7 @@ func (m *GetSuperGroupsInfoReq) Reset() { *m = GetSuperGroupsInfoReq{} } func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupsInfoReq) ProtoMessage() {} func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{50} + return fileDescriptor_group_3be6490d3e5fcc92, []int{50} } func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b) @@ -2204,7 +2220,7 @@ func (m *GetSuperGroupsInfoReq) GetGroupIDList() []string { } type GetSuperGroupsInfoResp struct { - GroupInfoList []*sdk_ws.GroupInfo `protobuf:"bytes,3,rep,name=groupInfoList" json:"groupInfoList,omitempty"` + GroupInfoList []*sdk_ws.GroupInfo `protobuf:"bytes,1,rep,name=groupInfoList" json:"groupInfoList,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2214,7 +2230,7 @@ func (m *GetSuperGroupsInfoResp) Reset() { *m = GetSuperGroupsInfoResp{} func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupsInfoResp) ProtoMessage() {} func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{51} + return fileDescriptor_group_3be6490d3e5fcc92, []int{51} } func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b) @@ -2244,10 +2260,10 @@ func (m *GetSuperGroupsInfoResp) GetGroupInfoList() []*sdk_ws.GroupInfo { type SetGroupMemberInfoReq struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - Nickname *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"` - FaceURL *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=faceURL" json:"faceURL,omitempty"` - RoleLevel *wrapperspb.Int32Value `protobuf:"bytes,7,opt,name=roleLevel" json:"roleLevel,omitempty"` - Ex *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=ex" json:"ex,omitempty"` + Nickname *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=nickname" json:"nickname,omitempty"` + FaceURL *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=faceURL" json:"faceURL,omitempty"` + RoleLevel *wrapperspb.Int32Value `protobuf:"bytes,5,opt,name=roleLevel" json:"roleLevel,omitempty"` + Ex *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=ex" json:"ex,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2257,7 +2273,7 @@ func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} } func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) } func (*SetGroupMemberInfoReq) ProtoMessage() {} func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{52} + return fileDescriptor_group_3be6490d3e5fcc92, []int{52} } func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b) @@ -2329,7 +2345,7 @@ func (m *SetGroupMemberInfoResp) Reset() { *m = SetGroupMemberInfoResp{} func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) } func (*SetGroupMemberInfoResp) ProtoMessage() {} func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{53} + return fileDescriptor_group_3be6490d3e5fcc92, []int{53} } func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b) @@ -2360,7 +2376,7 @@ func (m *GetGroupAbstractInfoReq) Reset() { *m = GetGroupAbstractInfoReq func (m *GetGroupAbstractInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupAbstractInfoReq) ProtoMessage() {} func (*GetGroupAbstractInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{54} + return fileDescriptor_group_3be6490d3e5fcc92, []int{54} } func (m *GetGroupAbstractInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAbstractInfoReq.Unmarshal(m, b) @@ -2400,7 +2416,7 @@ func (m *GroupAbstractInfo) Reset() { *m = GroupAbstractInfo{} } func (m *GroupAbstractInfo) String() string { return proto.CompactTextString(m) } func (*GroupAbstractInfo) ProtoMessage() {} func (*GroupAbstractInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{55} + return fileDescriptor_group_3be6490d3e5fcc92, []int{55} } func (m *GroupAbstractInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupAbstractInfo.Unmarshal(m, b) @@ -2452,7 +2468,7 @@ func (m *GetGroupAbstractInfoResp) Reset() { *m = GetGroupAbstractInfoRe func (m *GetGroupAbstractInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupAbstractInfoResp) ProtoMessage() {} func (*GetGroupAbstractInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_0c9461c2b49843c3, []int{56} + return fileDescriptor_group_3be6490d3e5fcc92, []int{56} } func (m *GetGroupAbstractInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAbstractInfoResp.Unmarshal(m, b) @@ -3484,125 +3500,125 @@ var _Group_serviceDesc = grpc.ServiceDesc{ Metadata: "group/group.proto", } -func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_0c9461c2b49843c3) } +func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_3be6490d3e5fcc92) } -var fileDescriptor_group_0c9461c2b49843c3 = []byte{ - // 1871 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x6f, 0x1b, 0xb9, - 0x11, 0xc7, 0xca, 0x91, 0x63, 0x4f, 0xec, 0x93, 0x43, 0x47, 0xb6, 0xb2, 0x71, 0x12, 0x1f, 0x2f, - 0xbd, 0x1a, 0x6d, 0x22, 0x17, 0xb9, 0xf6, 0xd0, 0x6b, 0x0b, 0x5c, 0xef, 0x92, 0x26, 0xe7, 0x9e, - 0xe5, 0x34, 0xab, 0x5c, 0x0f, 0x38, 0xb4, 0x75, 0xd7, 0x12, 0xb5, 0xb7, 0xb1, 0xb4, 0x4b, 0x2f, - 0x77, 0xed, 0xa0, 0x68, 0x81, 0xb6, 0x0f, 0x7d, 0xea, 0x9f, 0x87, 0x3e, 0xf6, 0xad, 0xe8, 0xa7, - 0xe8, 0x5b, 0xbf, 0x59, 0x41, 0x2e, 0x97, 0xe2, 0x2e, 0xb9, 0x92, 0x1d, 0xe8, 0x5e, 0x04, 0xec, - 0x70, 0x86, 0xfc, 0x71, 0x38, 0x33, 0xfc, 0x0d, 0x05, 0x37, 0x83, 0x24, 0xce, 0xe8, 0xbe, 0xf8, - 0xed, 0xd2, 0x24, 0x4e, 0x63, 0xd4, 0x14, 0x1f, 0xee, 0xde, 0x0b, 0x4a, 0xa2, 0x47, 0x07, 0xbd, - 0x47, 0x7d, 0x92, 0x9c, 0x93, 0x64, 0x9f, 0x9e, 0x06, 0xfb, 0x42, 0x61, 0x9f, 0x0d, 0x4f, 0x8f, - 0x2f, 0xd8, 0xfe, 0x05, 0xcb, 0x0d, 0xdc, 0xee, 0x5c, 0xcd, 0xc4, 0xa7, 0x94, 0x24, 0x52, 0x1f, - 0xff, 0xd7, 0x81, 0x77, 0x9e, 0x24, 0xc4, 0x4f, 0xc9, 0x73, 0xbe, 0x92, 0x47, 0xce, 0xd0, 0xfb, - 0xf0, 0x4e, 0x18, 0x85, 0x69, 0x8f, 0x4c, 0x4e, 0x48, 0x72, 0x18, 0xb2, 0xb4, 0xe3, 0xec, 0x2e, - 0xed, 0xad, 0x7a, 0x15, 0x29, 0xfa, 0x11, 0xac, 0x0a, 0x74, 0x07, 0xd1, 0x28, 0xee, 0x34, 0x76, - 0x9d, 0xbd, 0x1b, 0x8f, 0x77, 0xba, 0x4c, 0x2c, 0x7b, 0xec, 0xd3, 0xf0, 0x98, 0xfa, 0x89, 0x3f, - 0x61, 0xdd, 0xe7, 0x85, 0x8e, 0x37, 0x55, 0x47, 0x18, 0xd6, 0xfc, 0xe1, 0x24, 0x8c, 0xbe, 0x60, - 0x24, 0x39, 0x78, 0xca, 0x3a, 0x4b, 0x62, 0x85, 0x92, 0x0c, 0xed, 0xc2, 0x8d, 0xf8, 0x22, 0x22, - 0x49, 0xfe, 0xdd, 0x69, 0xee, 0x3a, 0x7b, 0xab, 0x9e, 0x2e, 0xc2, 0x3d, 0x68, 0x95, 0xb0, 0x33, - 0x5a, 0x06, 0xb5, 0x74, 0x25, 0x50, 0xf8, 0xfb, 0xb0, 0xf1, 0x9c, 0xa4, 0x62, 0x88, 0x89, 0x31, - 0x72, 0xc6, 0x41, 0xe4, 0x0a, 0x4f, 0x35, 0x4f, 0xe8, 0x22, 0xfc, 0x25, 0xdc, 0xac, 0x58, 0x31, - 0x8a, 0x3e, 0x85, 0x75, 0x35, 0xaf, 0x30, 0xe4, 0x1b, 0x9c, 0x07, 0xa5, 0x6c, 0x82, 0x8f, 0xa1, - 0xd5, 0x97, 0x13, 0x17, 0x68, 0x0e, 0xa1, 0xa5, 0x74, 0x9e, 0xc5, 0x49, 0x9f, 0x70, 0x44, 0x7c, - 0x8f, 0x78, 0xd6, 0xc4, 0xb9, 0xa6, 0x57, 0x35, 0xc5, 0x08, 0x36, 0xca, 0x0b, 0x30, 0x8a, 0xff, - 0xec, 0x80, 0x5b, 0x6c, 0xe7, 0x13, 0x4a, 0xc7, 0xe1, 0xc0, 0x4f, 0xc3, 0x38, 0xe2, 0x80, 0x38, - 0x80, 0xa7, 0x00, 0xd4, 0x0f, 0xc2, 0x48, 0x08, 0xe5, 0xda, 0x0f, 0x2c, 0x6b, 0x7b, 0xe4, 0x2c, - 0x23, 0x2c, 0xfd, 0x85, 0xd2, 0xf5, 0x34, 0x3b, 0x74, 0x0f, 0x60, 0x94, 0xc4, 0x13, 0x79, 0xb0, - 0x4b, 0xe2, 0x60, 0x35, 0x09, 0xfe, 0xa3, 0x03, 0x77, 0x6a, 0x41, 0x30, 0x8a, 0x6e, 0x41, 0x33, - 0x8d, 0x53, 0x7f, 0x2c, 0x00, 0x34, 0xbd, 0xfc, 0x03, 0x7d, 0x0e, 0x1b, 0x81, 0x8c, 0x61, 0xbe, - 0xb6, 0xe6, 0xf6, 0xfb, 0x75, 0xde, 0x91, 0xaa, 0x9e, 0x61, 0x88, 0x7f, 0x0f, 0x3b, 0xcf, 0x49, - 0xca, 0xf1, 0x78, 0xe4, 0xcc, 0xe2, 0x88, 0x2d, 0x58, 0xce, 0x72, 0xf8, 0x8e, 0x80, 0x2f, 0xbf, - 0x2a, 0x0e, 0x6a, 0xbc, 0x9d, 0x83, 0xf8, 0x29, 0xdc, 0x9d, 0xb1, 0xfc, 0x95, 0x5c, 0xd0, 0x78, - 0x5b, 0x17, 0xfc, 0xc9, 0x81, 0xf6, 0xab, 0xc4, 0x8f, 0xd8, 0x88, 0x24, 0x42, 0xf5, 0x05, 0x4f, - 0x3d, 0xbe, 0xf9, 0x0e, 0x5c, 0x97, 0x19, 0x20, 0x77, 0x5f, 0x7c, 0xf2, 0xda, 0x11, 0x8f, 0x87, - 0x2f, 0xb4, 0xb4, 0x6d, 0x08, 0x85, 0x8a, 0x94, 0xeb, 0x45, 0xe4, 0x42, 0xd7, 0xcb, 0xa3, 0xa0, - 0x22, 0xc5, 0x1d, 0xd8, 0xb2, 0x41, 0x60, 0x14, 0xff, 0xdd, 0x81, 0xb5, 0x9f, 0xc7, 0x61, 0xa4, - 0xca, 0x56, 0x3d, 0xa8, 0x7b, 0x00, 0x09, 0x39, 0xeb, 0x11, 0xc6, 0xfc, 0x80, 0x48, 0x40, 0x9a, - 0x84, 0x8f, 0xbf, 0x8e, 0xc3, 0xa8, 0x1f, 0x67, 0xc9, 0x80, 0x88, 0x3a, 0xd3, 0xf4, 0x34, 0x09, - 0x7a, 0x00, 0xeb, 0x61, 0x74, 0x1e, 0xa6, 0x0a, 0xeb, 0xb2, 0x98, 0xa2, 0x2c, 0xc4, 0x2d, 0x58, - 0xd7, 0xf0, 0x30, 0x8a, 0xff, 0xc5, 0xa3, 0xb8, 0x12, 0xc2, 0x7c, 0x20, 0x8e, 0x18, 0xa9, 0x00, - 0x5e, 0x32, 0x00, 0x6b, 0xf9, 0x71, 0xad, 0x9a, 0x1f, 0x7c, 0xfc, 0x6b, 0x3f, 0x1a, 0x8e, 0xc9, - 0xb0, 0xc7, 0x02, 0x59, 0x18, 0x35, 0x09, 0xaf, 0xae, 0xf9, 0x97, 0x47, 0x58, 0x36, 0x4e, 0x05, - 0xde, 0xa6, 0x57, 0x92, 0xe1, 0x7b, 0xb0, 0x53, 0x0f, 0x8e, 0x51, 0xbc, 0x07, 0x6b, 0x2f, 0xb3, - 0x30, 0x9d, 0xef, 0x5e, 0xbe, 0x71, 0x4d, 0x93, 0x51, 0xfc, 0x0f, 0x07, 0xda, 0x45, 0xfa, 0x4e, - 0xef, 0x8b, 0xd9, 0x67, 0xb4, 0x05, 0xcb, 0xa3, 0x70, 0x9c, 0x92, 0x44, 0x6c, 0xb7, 0xe9, 0xc9, - 0xaf, 0x05, 0xe5, 0xd3, 0x39, 0x6c, 0xd9, 0x00, 0xd5, 0xe6, 0xd1, 0x33, 0x80, 0xc9, 0xf4, 0xfa, - 0xcb, 0x8b, 0xc8, 0xfb, 0x75, 0x19, 0x94, 0xcf, 0xf8, 0x2c, 0x1b, 0x8f, 0x45, 0x15, 0xd5, 0x2c, - 0xb1, 0x57, 0x5d, 0x57, 0xdd, 0x2b, 0x33, 0xa3, 0x55, 0x5b, 0xbb, 0x21, 0x2e, 0x1c, 0x7d, 0x4e, - 0x1f, 0xb6, 0xad, 0x73, 0x32, 0xba, 0x30, 0xd8, 0x09, 0xa0, 0xcf, 0xc3, 0xc1, 0xa9, 0xa6, 0x36, - 0x1b, 0xf2, 0x77, 0x60, 0xe3, 0x34, 0x1c, 0x9c, 0x92, 0x61, 0x1e, 0x9f, 0x1a, 0x70, 0x43, 0xce, - 0x0f, 0x3a, 0x21, 0x3e, 0x8b, 0x23, 0x19, 0xf4, 0xf2, 0x0b, 0xb7, 0x61, 0xd3, 0x58, 0x93, 0x51, - 0xfc, 0x07, 0x11, 0x4a, 0x3c, 0xb1, 0xc8, 0x50, 0x8c, 0x15, 0xa1, 0x54, 0xce, 0x11, 0xc7, 0xc8, - 0x91, 0xc5, 0x04, 0xce, 0x6b, 0x71, 0x80, 0xc6, 0xf2, 0xb5, 0x81, 0x53, 0xd0, 0x8f, 0x4b, 0xdf, - 0xf9, 0x53, 0x75, 0x7c, 0x0e, 0xb7, 0x0e, 0x44, 0x45, 0xe1, 0x3b, 0x78, 0x15, 0xdb, 0x32, 0x6f, - 0xc9, 0x48, 0x1a, 0xe9, 0xcb, 0x6b, 0xba, 0x2f, 0xd1, 0x43, 0xb8, 0x99, 0xd7, 0x26, 0xfd, 0x40, - 0x9a, 0xe2, 0x40, 0xcc, 0x01, 0xbc, 0x0d, 0x6d, 0xcb, 0xba, 0x8c, 0xe2, 0xdf, 0xc0, 0x2d, 0x75, - 0x0b, 0x8f, 0xc7, 0x97, 0x09, 0x84, 0x2d, 0x58, 0x8e, 0x47, 0x23, 0x46, 0xd2, 0x22, 0x8b, 0xf3, - 0x2f, 0xee, 0xac, 0x41, 0x9c, 0x45, 0xa9, 0x2c, 0xae, 0xf9, 0x07, 0x3e, 0x9e, 0x96, 0x09, 0x6d, - 0xfe, 0x05, 0xc6, 0xf1, 0xbf, 0x1d, 0x58, 0x79, 0xd2, 0xeb, 0x0b, 0xb5, 0x32, 0x33, 0x74, 0xae, - 0x46, 0x57, 0xbb, 0x80, 0x02, 0x75, 0xfd, 0x70, 0x37, 0x1d, 0xf9, 0x93, 0xe2, 0x26, 0xb1, 0x8c, - 0xf0, 0x84, 0x28, 0x4b, 0xd5, 0xd9, 0x19, 0x72, 0xfc, 0x57, 0x07, 0xd6, 0x14, 0x81, 0x5c, 0x1c, - 0xc7, 0xda, 0x91, 0xdb, 0xd5, 0x90, 0x4e, 0x05, 0xf5, 0x31, 0x85, 0x5f, 0xc1, 0xba, 0x86, 0x86, - 0x51, 0xf4, 0x6d, 0x58, 0x16, 0x63, 0x4c, 0x90, 0xdf, 0x1b, 0x8f, 0x5b, 0xdd, 0xbc, 0x41, 0x29, - 0x1c, 0xeb, 0xc9, 0x61, 0xe4, 0xc2, 0x8a, 0x10, 0x1c, 0x65, 0x13, 0x31, 0x69, 0xd3, 0x53, 0xdf, - 0xf8, 0xd1, 0x94, 0x24, 0x5f, 0x22, 0x8e, 0xf0, 0x3f, 0x8d, 0x1b, 0x84, 0x3d, 0xe9, 0xf5, 0x67, - 0xc7, 0x9e, 0x0b, 0x2b, 0x59, 0xf9, 0x64, 0xd4, 0x77, 0xc5, 0xa5, 0x4b, 0x6f, 0x59, 0x0c, 0xfe, - 0xe7, 0x18, 0xe5, 0x5c, 0xa0, 0x62, 0x14, 0xfd, 0x14, 0xae, 0xe7, 0x71, 0x57, 0x78, 0xe9, 0xb2, - 0xe1, 0x5a, 0x98, 0xa1, 0x9f, 0x59, 0xea, 0xd5, 0xb7, 0xac, 0x10, 0xf3, 0x4b, 0xba, 0x9e, 0x5a, - 0xe7, 0x33, 0x1e, 0x65, 0x13, 0x26, 0x8f, 0x41, 0x93, 0xe0, 0xef, 0x42, 0xeb, 0x69, 0xc8, 0x26, - 0x21, 0x63, 0xf3, 0xeb, 0x0b, 0x6f, 0x10, 0xca, 0xca, 0x8c, 0xe2, 0xd7, 0x80, 0x7a, 0x99, 0xec, - 0xb8, 0xac, 0x47, 0x69, 0xd6, 0xa8, 0x4c, 0xe7, 0x31, 0x05, 0x51, 0xc6, 0xb0, 0x36, 0xc9, 0x52, - 0x32, 0xec, 0x93, 0x41, 0x1c, 0x0d, 0x99, 0xa8, 0x0c, 0xeb, 0x5e, 0x49, 0xc6, 0xef, 0x04, 0x63, - 0x2d, 0x46, 0xf1, 0x21, 0x74, 0x9e, 0xf8, 0xd1, 0x80, 0x8c, 0x17, 0x01, 0x04, 0xdf, 0x81, 0xdb, - 0x35, 0xb3, 0xe5, 0x2c, 0x48, 0x89, 0x67, 0xfb, 0xaa, 0x05, 0xeb, 0x9a, 0x26, 0xa3, 0xb8, 0x0b, - 0xa8, 0x32, 0xef, 0xec, 0x09, 0xda, 0xb0, 0x69, 0xe8, 0x33, 0x8a, 0x43, 0xb8, 0xdd, 0x2f, 0xc5, - 0xdc, 0x51, 0x38, 0x38, 0x8d, 0xfc, 0x09, 0x99, 0x9b, 0x0d, 0x91, 0x54, 0x2c, 0xb2, 0xa1, 0xf8, - 0xd6, 0x3c, 0xd1, 0x2c, 0x79, 0x62, 0x07, 0xdc, 0xba, 0xa5, 0x18, 0xc5, 0xbf, 0x13, 0x8d, 0x61, - 0x7e, 0x15, 0xf6, 0x33, 0x2a, 0x09, 0xf9, 0x62, 0x1b, 0xc3, 0x29, 0xb2, 0x46, 0x09, 0x59, 0x2c, - 0xfa, 0x41, 0xfb, 0xda, 0xdf, 0xc8, 0x5d, 0xfc, 0x91, 0xa8, 0x3f, 0xd3, 0xa5, 0xae, 0xf0, 0x1e, - 0xf0, 0x2b, 0x51, 0x24, 0x0c, 0xd3, 0x05, 0x3d, 0x0a, 0xfc, 0xa7, 0x01, 0xed, 0xf2, 0x21, 0xcd, - 0x67, 0x94, 0x35, 0x5e, 0x45, 0x3f, 0xd4, 0x62, 0xa4, 0x29, 0x2f, 0xc4, 0x20, 0x8e, 0x83, 0x31, - 0xc9, 0x1f, 0x87, 0x4e, 0xb2, 0x51, 0xb7, 0x9f, 0x26, 0x61, 0x14, 0xfc, 0xd2, 0x1f, 0x67, 0x44, - 0x8b, 0xa0, 0x0f, 0xe1, 0xfa, 0xc8, 0x1f, 0x90, 0x2f, 0xbc, 0x43, 0xd1, 0x5b, 0xcc, 0x33, 0x2c, - 0x94, 0xd1, 0x47, 0xb0, 0x9a, 0xc4, 0x63, 0x72, 0x48, 0xce, 0xc9, 0xb8, 0x73, 0x5d, 0x58, 0xde, - 0x31, 0x2c, 0x0f, 0xa2, 0xf4, 0x83, 0xc7, 0xb9, 0xe1, 0x54, 0x1b, 0x3d, 0x84, 0x06, 0x79, 0xd3, - 0x59, 0xb9, 0xc4, 0x6a, 0x0d, 0xf2, 0x86, 0xf7, 0x8d, 0x36, 0x2f, 0x31, 0x8a, 0x7f, 0x30, 0xa5, - 0xcf, 0x9f, 0x9c, 0xb0, 0x34, 0xf1, 0x07, 0x69, 0xe1, 0x41, 0x17, 0x56, 0xa4, 0xcb, 0x98, 0x3c, - 0x58, 0xf5, 0x8d, 0xff, 0xe6, 0xc0, 0x4d, 0xc3, 0x68, 0x86, 0xcf, 0x1f, 0xca, 0xd7, 0xbc, 0x5e, - 0x51, 0x7a, 0x4f, 0x48, 0x22, 0xdc, 0xdf, 0xf4, 0xcc, 0x01, 0xf4, 0x3d, 0xd8, 0x0c, 0xca, 0xcd, - 0xc9, 0x67, 0x3e, 0xfb, 0x5a, 0x54, 0x88, 0x6b, 0x9e, 0x6d, 0x08, 0x0f, 0xa1, 0x63, 0xdf, 0x06, - 0xa3, 0xe8, 0x33, 0xc9, 0x56, 0xf4, 0x81, 0xe2, 0x5e, 0xea, 0xc8, 0xdb, 0xdb, 0xb4, 0xb4, 0xd8, - 0x3c, 0xfe, 0xcb, 0x06, 0xe4, 0x2f, 0x90, 0xe8, 0x27, 0x70, 0x63, 0x30, 0x7d, 0x6a, 0x43, 0xed, - 0x82, 0x04, 0x94, 0x9e, 0x0e, 0xdd, 0x2d, 0x9b, 0x98, 0x51, 0xf4, 0x21, 0xac, 0xbe, 0x2e, 0x7a, - 0x63, 0xb4, 0x29, 0x95, 0xf4, 0xee, 0xdd, 0xbd, 0x65, 0x0a, 0x73, 0xbb, 0xb3, 0xa2, 0xb5, 0x54, - 0x76, 0x7a, 0x5b, 0xaa, 0xec, 0x4a, 0x1d, 0xa8, 0xc8, 0x34, 0xfd, 0x4d, 0x0e, 0x6d, 0x17, 0xdb, - 0xae, 0xbc, 0xef, 0xb9, 0x1d, 0xfb, 0x00, 0xa3, 0xe8, 0x63, 0x58, 0x63, 0xda, 0xeb, 0x18, 0x2a, - 0xf6, 0x56, 0x79, 0x93, 0x73, 0xb7, 0xad, 0x72, 0x46, 0xd1, 0x6f, 0x61, 0x3b, 0xb0, 0x3f, 0x62, - 0xa1, 0x77, 0x2b, 0xab, 0x9a, 0x0f, 0x4c, 0x2e, 0x9e, 0xa7, 0xc2, 0x28, 0x1a, 0xc1, 0xed, 0xa0, - 0xee, 0x95, 0x08, 0xbd, 0x37, 0x9d, 0xa0, 0xf6, 0x19, 0xcb, 0x7d, 0x30, 0x5f, 0x89, 0x51, 0xf4, - 0x12, 0x50, 0x6a, 0xbc, 0xc2, 0xa0, 0x1d, 0x69, 0x6b, 0x7d, 0x23, 0x72, 0xef, 0xce, 0x18, 0x65, - 0x14, 0x0d, 0xa0, 0x13, 0xd4, 0x3c, 0x3f, 0x20, 0x5c, 0x8a, 0x51, 0xeb, 0xe3, 0x89, 0xfb, 0xde, - 0x5c, 0x9d, 0x1c, 0x77, 0x60, 0xb4, 0xfd, 0x0a, 0xb7, 0xf5, 0x89, 0x42, 0xe1, 0xae, 0x79, 0x2f, - 0x78, 0x05, 0x9b, 0x81, 0xd9, 0x7d, 0x23, 0xbb, 0x95, 0x8a, 0xb2, 0x7b, 0xb3, 0x86, 0x45, 0xc6, - 0xb6, 0x4e, 0xcb, 0xcd, 0x2f, 0xba, 0x2d, 0x4d, 0xcc, 0x46, 0xdc, 0x75, 0xeb, 0x86, 0xd4, 0x96, - 0x2b, 0x0d, 0xab, 0xbe, 0x65, 0xb3, 0x95, 0xd6, 0xb7, 0x6c, 0xeb, 0x74, 0x8f, 0x8a, 0x6e, 0x52, - 0xeb, 0x0f, 0xd1, 0x1d, 0x69, 0x63, 0xeb, 0x58, 0xdd, 0x9d, 0xfa, 0xc1, 0x3c, 0xa9, 0x55, 0xb6, - 0xa9, 0xa4, 0xd6, 0x3b, 0x20, 0x95, 0xd4, 0xe5, 0x46, 0xe4, 0x25, 0x20, 0x93, 0x7d, 0xd7, 0x9c, - 0xa6, 0x6c, 0x17, 0x6a, 0x4e, 0x53, 0xd1, 0xf6, 0x8f, 0x61, 0x4d, 0x27, 0xb8, 0x2a, 0xc7, 0x2b, - 0x14, 0x59, 0xe5, 0x78, 0x95, 0x0d, 0xf3, 0x83, 0xab, 0xd0, 0x46, 0x75, 0x70, 0x26, 0x39, 0x55, - 0x07, 0x67, 0x61, 0x9a, 0xe8, 0x2b, 0x68, 0x5b, 0x69, 0x28, 0xba, 0x5f, 0xd4, 0xd4, 0x1a, 0xca, - 0xeb, 0xee, 0xce, 0x56, 0xc8, 0x3d, 0xae, 0xc4, 0xca, 0xe3, 0x3a, 0x2d, 0x55, 0x1e, 0x2f, 0x71, - 0x4f, 0xbe, 0xbb, 0xca, 0xa4, 0x6a, 0x77, 0x26, 0xb5, 0x55, 0xbb, 0xb3, 0xb0, 0x58, 0x5e, 0x0b, - 0x6b, 0x08, 0x9c, 0x5e, 0x0b, 0x6b, 0xc8, 0xa5, 0x5e, 0x0b, 0x6b, 0x39, 0x60, 0x1e, 0x1d, 0x15, - 0xda, 0xa5, 0x47, 0x87, 0x49, 0xe6, 0xf4, 0xe8, 0xb0, 0xf1, 0xb5, 0x5f, 0x57, 0x49, 0x44, 0xc1, - 0x87, 0xd1, 0x6e, 0xa5, 0xe6, 0x1b, 0xcc, 0xdc, 0x7d, 0x77, 0x8e, 0x46, 0x8e, 0xd8, 0xe4, 0x28, - 0x0a, 0xb1, 0x95, 0xe4, 0x29, 0xc4, 0x76, 0x72, 0x83, 0xbe, 0xd4, 0x5e, 0x6c, 0x74, 0x9e, 0x52, - 0xad, 0x3f, 0x15, 0xe6, 0xe3, 0xde, 0x9f, 0x39, 0xce, 0xe8, 0xa7, 0xf7, 0xbf, 0xba, 0xfb, 0x82, - 0x92, 0xe8, 0xf8, 0xa0, 0xa7, 0xfd, 0xa3, 0x28, 0x6c, 0x7e, 0x2c, 0x7e, 0x4f, 0x96, 0x85, 0xe8, - 0x83, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x22, 0x4e, 0x92, 0x9d, 0xc4, 0x1c, 0x00, 0x00, +var fileDescriptor_group_3be6490d3e5fcc92 = []byte{ + // 1859 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4f, 0x4f, 0x1c, 0xcb, + 0x11, 0xd7, 0x2c, 0x06, 0x43, 0x19, 0x0c, 0x34, 0x2c, 0x2c, 0x03, 0x06, 0xdc, 0x76, 0x1c, 0x94, + 0xd8, 0x4b, 0x64, 0x27, 0x56, 0x9c, 0x44, 0x72, 0x6c, 0x88, 0x31, 0x31, 0x0b, 0xf1, 0x2c, 0x8e, + 0x25, 0x2b, 0x09, 0x19, 0x76, 0x7b, 0xc7, 0x03, 0xbb, 0x33, 0xcd, 0xf4, 0x0c, 0x58, 0x51, 0x22, + 0x25, 0x39, 0xe4, 0x94, 0x44, 0x91, 0x72, 0xcc, 0x2d, 0xca, 0x25, 0x5f, 0xe1, 0xdd, 0xde, 0x37, + 0x7b, 0x9a, 0xee, 0x9e, 0xde, 0x9e, 0x7f, 0xbb, 0x98, 0xc7, 0x7b, 0x97, 0x95, 0xba, 0xba, 0x6a, + 0xba, 0xaa, 0xba, 0xaa, 0xfa, 0x57, 0xb5, 0x30, 0xeb, 0x04, 0x7e, 0x44, 0x37, 0xf9, 0x6f, 0x9d, + 0x06, 0x7e, 0xe8, 0xa3, 0x51, 0xbe, 0x30, 0x37, 0x0e, 0x28, 0xf1, 0x1e, 0xed, 0x36, 0x1e, 0x35, + 0x49, 0x70, 0x4e, 0x82, 0x4d, 0x7a, 0xea, 0x6c, 0x72, 0x86, 0x4d, 0xd6, 0x3e, 0x3d, 0xba, 0x60, + 0x9b, 0x17, 0x4c, 0x08, 0x98, 0xf5, 0xa1, 0x9c, 0x81, 0x4d, 0x29, 0x09, 0x24, 0x3f, 0xfe, 0xc2, + 0x80, 0xdb, 0x5b, 0x01, 0xb1, 0x43, 0xb2, 0x13, 0x9f, 0x64, 0x91, 0x33, 0xf4, 0x00, 0x6e, 0xbb, + 0x9e, 0x1b, 0x36, 0x48, 0xef, 0x98, 0x04, 0x7b, 0x2e, 0x0b, 0x6b, 0xc6, 0xfa, 0xc8, 0xc6, 0x84, + 0x95, 0xa1, 0xa2, 0x9f, 0xc0, 0x04, 0xd7, 0x6e, 0xd7, 0xeb, 0xf8, 0xb5, 0xca, 0xba, 0xb1, 0x71, + 0xeb, 0xf1, 0x4a, 0x9d, 0xf1, 0x63, 0x8f, 0x6c, 0xea, 0x1e, 0x51, 0x3b, 0xb0, 0x7b, 0xac, 0xbe, + 0x93, 0xf0, 0x58, 0x7d, 0x76, 0x84, 0x61, 0xd2, 0x6e, 0xf7, 0x5c, 0xef, 0x1d, 0x23, 0xc1, 0xee, + 0x36, 0xab, 0x8d, 0xf0, 0x13, 0x52, 0x34, 0xb4, 0x0e, 0xb7, 0xfc, 0x0b, 0x8f, 0x04, 0x62, 0x5d, + 0xbb, 0xb1, 0x6e, 0x6c, 0x4c, 0x58, 0x3a, 0x09, 0x37, 0x60, 0x3a, 0xa5, 0x3b, 0xa3, 0x69, 0xa5, + 0x8c, 0xcf, 0x52, 0x0a, 0xff, 0x10, 0x66, 0x76, 0x48, 0xc8, 0xb7, 0x18, 0xdf, 0x23, 0x67, 0xb1, + 0x12, 0x82, 0x61, 0x5b, 0xf3, 0x84, 0x4e, 0xc2, 0xef, 0x61, 0x36, 0x23, 0xc5, 0x28, 0x7a, 0x09, + 0x53, 0xea, 0xbb, 0x4a, 0x70, 0x98, 0x2a, 0x69, 0x11, 0x7c, 0x04, 0xd3, 0x4d, 0xf9, 0xe1, 0x44, + 0x9b, 0x3d, 0x98, 0x56, 0x3c, 0xaf, 0xfc, 0xa0, 0x49, 0x42, 0x69, 0x23, 0x1e, 0xf4, 0x61, 0xc1, + 0x69, 0x65, 0x45, 0x31, 0x82, 0x99, 0xf4, 0x01, 0x8c, 0xe2, 0xbf, 0x1a, 0x60, 0x26, 0xe6, 0xbc, + 0xa0, 0xb4, 0xeb, 0xb6, 0xec, 0xd0, 0xf5, 0xbd, 0x58, 0xa1, 0x58, 0x81, 0x6d, 0x00, 0x6a, 0x3b, + 0xae, 0xc7, 0x89, 0xf2, 0xec, 0xfb, 0x05, 0x67, 0x5b, 0xe4, 0x2c, 0x22, 0x2c, 0xfc, 0x95, 0xe2, + 0xb5, 0x34, 0x39, 0xb4, 0x0a, 0xd0, 0x09, 0xfc, 0x9e, 0xbc, 0xd8, 0x0a, 0xbf, 0x58, 0x8d, 0x82, + 0xff, 0x6c, 0xc0, 0x72, 0xa9, 0x12, 0x8c, 0xa2, 0x79, 0x18, 0x0d, 0xfd, 0xd0, 0xee, 0x72, 0x05, + 0x46, 0x2d, 0xb1, 0x40, 0x6f, 0x60, 0xc6, 0x91, 0x31, 0x1c, 0x9f, 0xcd, 0xdd, 0x5e, 0xe1, 0x6e, + 0x5f, 0x2b, 0xf3, 0x8e, 0x64, 0xb5, 0x72, 0x82, 0xf8, 0x8f, 0xb0, 0xb2, 0x43, 0xc2, 0x58, 0x1f, + 0x8b, 0x9c, 0x15, 0x38, 0x62, 0x01, 0xc6, 0x22, 0xa1, 0xbe, 0xc1, 0xd5, 0x97, 0xab, 0x8c, 0x83, + 0x2a, 0x57, 0x73, 0x50, 0x7c, 0x0b, 0x77, 0x06, 0x1c, 0xff, 0xed, 0xb8, 0xe0, 0x2f, 0x06, 0x54, + 0x0f, 0x03, 0xdb, 0x63, 0x1d, 0x12, 0x70, 0xd6, 0x83, 0x38, 0xf5, 0x62, 0xe3, 0x6b, 0x70, 0x53, + 0x66, 0x80, 0xb4, 0x3e, 0x59, 0xc6, 0xb5, 0xc3, 0xef, 0xb6, 0x0f, 0xb4, 0xb4, 0x15, 0xb7, 0x9b, + 0xa1, 0xc6, 0x7c, 0x1e, 0xb9, 0xd0, 0xf9, 0x46, 0x04, 0x5f, 0x9a, 0x8a, 0x6b, 0xb0, 0x50, 0xa4, + 0x02, 0xa3, 0xf8, 0x9f, 0x06, 0x4c, 0xfe, 0xd2, 0x77, 0x3d, 0x55, 0xb6, 0xca, 0x95, 0x5a, 0x05, + 0x08, 0xc8, 0x59, 0x83, 0x30, 0x66, 0x3b, 0x24, 0x09, 0xb7, 0x3e, 0x25, 0xde, 0x3f, 0xf1, 0x5d, + 0xaf, 0xe9, 0x47, 0x41, 0x8b, 0x70, 0x45, 0x46, 0x2d, 0x8d, 0x82, 0xee, 0xc3, 0x94, 0xeb, 0x9d, + 0xbb, 0x61, 0xa6, 0x14, 0xa5, 0x89, 0x78, 0x1a, 0xa6, 0x34, 0x7d, 0x18, 0xc5, 0xff, 0x89, 0xa3, + 0x38, 0x13, 0xc2, 0xf1, 0x86, 0xef, 0x31, 0x32, 0x54, 0xe1, 0x41, 0xf9, 0x11, 0xef, 0x7f, 0xb4, + 0xbd, 0x76, 0x97, 0xb4, 0x1b, 0xcc, 0x91, 0x9e, 0xd3, 0x28, 0x71, 0x75, 0x15, 0x2b, 0x8b, 0xb0, + 0xa8, 0x1b, 0x72, 0x7d, 0x47, 0xad, 0x14, 0x0d, 0xaf, 0xc2, 0x4a, 0xb9, 0x72, 0x8c, 0xe2, 0x0d, + 0x98, 0x7c, 0x1b, 0xb9, 0xe1, 0x70, 0xf7, 0xc6, 0x86, 0x6b, 0x9c, 0x8c, 0xe2, 0xff, 0x1b, 0x50, + 0x4d, 0xd2, 0xb7, 0xff, 0x5e, 0x0c, 0x36, 0x79, 0x01, 0xc6, 0x3a, 0x6e, 0x37, 0x24, 0x01, 0x37, + 0x77, 0xd4, 0x92, 0xab, 0x58, 0xc2, 0x23, 0x9f, 0xc2, 0x26, 0x39, 0x93, 0x17, 0x93, 0x2c, 0x33, + 0x99, 0x76, 0xe3, 0x8a, 0x99, 0xf6, 0x2f, 0x03, 0x16, 0x8a, 0x74, 0x2d, 0x4d, 0xb1, 0x57, 0x00, + 0xbd, 0xfe, 0xcb, 0x28, 0x92, 0xeb, 0x41, 0x59, 0x72, 0x89, 0x2f, 0xbe, 0x8a, 0xba, 0x5d, 0x5e, + 0x60, 0x35, 0xc9, 0x72, 0xc3, 0xb0, 0x95, 0xd5, 0x48, 0x3d, 0x46, 0x03, 0x23, 0x26, 0xa3, 0xd5, + 0x84, 0x7e, 0x1a, 0xb6, 0x61, 0xb1, 0xf0, 0x9b, 0x8c, 0x66, 0x0c, 0x32, 0xae, 0x6a, 0x10, 0x0e, + 0x00, 0xbd, 0x71, 0x5b, 0xa7, 0x1a, 0xdb, 0x60, 0x95, 0xbf, 0x07, 0x33, 0xa7, 0x6e, 0xeb, 0x94, + 0xb4, 0x45, 0x50, 0x6b, 0x8a, 0xe7, 0xe8, 0x71, 0x74, 0x04, 0xc4, 0x66, 0xbe, 0x27, 0x83, 0x5d, + 0xae, 0x70, 0x15, 0xe6, 0x72, 0x67, 0x32, 0x8a, 0xff, 0xc4, 0xe3, 0x2f, 0xce, 0x46, 0xd2, 0xe6, + 0x7b, 0x49, 0xfc, 0xa5, 0x13, 0xcb, 0xc8, 0x25, 0xd6, 0xf5, 0x54, 0xef, 0x13, 0x7e, 0x81, 0xb9, + 0xe3, 0x4b, 0x43, 0x2a, 0xc1, 0x2c, 0x5a, 0x44, 0x5d, 0x06, 0xb3, 0x70, 0xaf, 0x9f, 0xc3, 0xfc, + 0x2e, 0x2f, 0x43, 0xb1, 0x05, 0x87, 0xfe, 0x25, 0xaa, 0x61, 0xdf, 0x97, 0x15, 0xdd, 0x97, 0xe8, + 0x21, 0xcc, 0x8a, 0x82, 0xa6, 0x5f, 0x88, 0xc0, 0x65, 0xf9, 0x0d, 0xbc, 0x08, 0xd5, 0x82, 0x73, + 0x19, 0xc5, 0xbf, 0x83, 0x79, 0xf5, 0x74, 0x77, 0xbb, 0x97, 0x09, 0x84, 0x05, 0x18, 0xf3, 0x3b, + 0x1d, 0x46, 0xc2, 0x24, 0xf5, 0xc5, 0x2a, 0x76, 0x56, 0xcb, 0x8f, 0xbc, 0x50, 0xe6, 0x87, 0x58, + 0xe0, 0xa3, 0x7e, 0x6d, 0xd1, 0xbe, 0x7f, 0x8d, 0x71, 0xfc, 0x5f, 0x03, 0xc6, 0xb7, 0x1a, 0x4d, + 0xce, 0xf6, 0x75, 0xe0, 0x24, 0xaa, 0x03, 0x72, 0xd4, 0x9b, 0x15, 0xbb, 0x69, 0xdf, 0xee, 0x25, + 0xcf, 0x4f, 0xc1, 0x4e, 0x9c, 0x10, 0x69, 0xaa, 0x7a, 0x15, 0x73, 0x74, 0xfc, 0x77, 0x03, 0x26, + 0x15, 0xea, 0xbc, 0x3e, 0x60, 0xb6, 0x22, 0xcd, 0xd5, 0x34, 0xed, 0x13, 0xf4, 0x2b, 0x1c, 0x49, + 0x3f, 0x01, 0x87, 0x30, 0xa5, 0x69, 0xc3, 0x28, 0xfa, 0x2e, 0x8c, 0xf1, 0x3d, 0x26, 0x2f, 0x62, + 0xba, 0x2e, 0xba, 0x9a, 0xc4, 0xb1, 0x96, 0xdc, 0x46, 0x26, 0x8c, 0x73, 0xc2, 0x7e, 0xd4, 0x93, + 0xd7, 0xaf, 0xd6, 0xf8, 0x51, 0x1f, 0x59, 0x5f, 0x22, 0x8e, 0xf0, 0xbf, 0x73, 0xcf, 0x0e, 0xdb, + 0x6a, 0x34, 0x07, 0xc7, 0x9e, 0x09, 0xe3, 0x51, 0xfa, 0x66, 0xd4, 0x3a, 0xe3, 0xd2, 0x91, 0x2b, + 0x16, 0x83, 0x2f, 0x73, 0x0f, 0x8c, 0xd0, 0x8a, 0x51, 0xf4, 0x73, 0xb8, 0x29, 0xe2, 0x8e, 0x7d, + 0x66, 0xb8, 0x26, 0x62, 0xe8, 0x17, 0x05, 0xf5, 0xea, 0x3b, 0x85, 0x2a, 0x8a, 0x97, 0xbd, 0x1c, + 0x8f, 0x8b, 0x2f, 0xee, 0x47, 0x3d, 0x96, 0x00, 0xa0, 0x3e, 0x05, 0x7f, 0x1f, 0xa6, 0xb7, 0x5d, + 0xd6, 0x73, 0x19, 0xbb, 0x04, 0x1c, 0x40, 0x30, 0x93, 0x66, 0x66, 0x14, 0x9f, 0x00, 0x6a, 0x44, + 0xb2, 0x4d, 0xbb, 0x64, 0x49, 0x88, 0x74, 0xf0, 0x93, 0xa0, 0x6b, 0x0c, 0x93, 0xbd, 0x28, 0x24, + 0xed, 0x26, 0x69, 0xf9, 0x5e, 0x5b, 0xa8, 0x3a, 0x65, 0xa5, 0x68, 0xf1, 0x9b, 0x90, 0x3b, 0x8b, + 0x51, 0xbc, 0x07, 0xb5, 0x2d, 0xdb, 0x6b, 0x91, 0xee, 0x75, 0x28, 0x82, 0x97, 0x61, 0xa9, 0xe4, + 0x6b, 0x02, 0x3a, 0x29, 0xf2, 0x50, 0xe8, 0xa4, 0x71, 0x32, 0x8a, 0xeb, 0x80, 0x32, 0xdf, 0x1d, + 0xfc, 0x81, 0x2a, 0xcc, 0xe5, 0xf8, 0x19, 0xc5, 0x2e, 0x2c, 0x35, 0x53, 0x31, 0xb7, 0xef, 0xb6, + 0x4e, 0x3d, 0xbb, 0x47, 0x86, 0x66, 0x83, 0x27, 0x19, 0x93, 0x6c, 0x48, 0xd6, 0x9a, 0x27, 0x46, + 0x52, 0x9e, 0x58, 0x01, 0xb3, 0xec, 0x28, 0x46, 0xf1, 0x1f, 0x78, 0x37, 0x29, 0x9e, 0xc2, 0x66, + 0x44, 0x25, 0x8a, 0xbf, 0xde, 0x6e, 0xb2, 0xec, 0x8e, 0x7c, 0xde, 0x44, 0x16, 0x9f, 0xfd, 0x8d, + 0xbc, 0xc5, 0xcf, 0x78, 0xfd, 0xe9, 0x1f, 0xf5, 0x19, 0x43, 0x84, 0xdf, 0xf0, 0x22, 0x91, 0x13, + 0xbd, 0xa6, 0x49, 0xc2, 0xff, 0x2a, 0x50, 0x4d, 0x5f, 0xd2, 0x70, 0x44, 0x59, 0x96, 0x82, 0x3f, + 0xd6, 0x62, 0x64, 0x44, 0x3e, 0x88, 0x8e, 0xef, 0x3b, 0x5d, 0x22, 0x26, 0x4a, 0xc7, 0x51, 0xa7, + 0xde, 0x0c, 0x03, 0xd7, 0x73, 0x7e, 0x6d, 0x77, 0x23, 0xa2, 0x45, 0xd0, 0x53, 0xb8, 0xd9, 0xb1, + 0x5b, 0xe4, 0x9d, 0xb5, 0x27, 0xd1, 0xfa, 0x60, 0xc1, 0x84, 0x19, 0x3d, 0x83, 0x89, 0xc0, 0xef, + 0x92, 0x3d, 0x72, 0x4e, 0xba, 0xb5, 0x51, 0x2e, 0xb9, 0x9c, 0x93, 0xdc, 0xf5, 0xc2, 0x27, 0x8f, + 0x85, 0x60, 0x9f, 0x1b, 0x3d, 0x84, 0x0a, 0xf9, 0x54, 0x1b, 0xbb, 0xc4, 0x69, 0x15, 0xf2, 0x29, + 0x6e, 0x36, 0x8b, 0xbc, 0xc4, 0x28, 0xfe, 0x51, 0x1f, 0x3e, 0xbf, 0x38, 0x66, 0x61, 0x60, 0xb7, + 0xc2, 0xc4, 0x83, 0x26, 0x8c, 0x4b, 0x97, 0x31, 0x79, 0xb1, 0x6a, 0x8d, 0xff, 0x61, 0xc0, 0x6c, + 0x4e, 0x68, 0x80, 0xcf, 0x1f, 0xca, 0x11, 0x60, 0x23, 0x29, 0xbd, 0xc7, 0xaa, 0x1f, 0xca, 0x6f, + 0xa0, 0x1f, 0xc0, 0x9c, 0x93, 0x6e, 0x5b, 0x5e, 0xdb, 0xec, 0x23, 0xbf, 0x94, 0x1b, 0x56, 0xd1, + 0x16, 0x6e, 0x43, 0xad, 0xd8, 0x0c, 0x46, 0xd1, 0x6b, 0x89, 0x56, 0xf4, 0x8d, 0xe4, 0x5d, 0xaa, + 0xc9, 0xd7, 0x3b, 0x2f, 0x59, 0x20, 0xf3, 0xf8, 0x6f, 0x33, 0x20, 0xc6, 0x96, 0xe8, 0x67, 0x70, + 0xab, 0xd5, 0x9f, 0xcf, 0xa1, 0x6a, 0x02, 0x02, 0x52, 0xf3, 0x46, 0x73, 0xa1, 0x88, 0xcc, 0x28, + 0x7a, 0x0a, 0x13, 0x27, 0x49, 0x43, 0x8d, 0xe6, 0x24, 0x93, 0xde, 0xf2, 0x9b, 0xf3, 0x79, 0xa2, + 0x90, 0x3b, 0x4b, 0xfa, 0x51, 0x25, 0xa7, 0xf7, 0xb2, 0x4a, 0x2e, 0xd5, 0xb6, 0xf2, 0x4c, 0xd3, + 0x07, 0x79, 0x68, 0x31, 0x31, 0x3b, 0x33, 0x14, 0x34, 0x6b, 0xc5, 0x1b, 0x8c, 0xa2, 0xe7, 0x30, + 0xc9, 0xb4, 0x91, 0x1a, 0x4a, 0x6c, 0xcb, 0x0c, 0xf2, 0xcc, 0xc5, 0x42, 0x3a, 0xa3, 0xe8, 0xf7, + 0xb0, 0xe8, 0x14, 0x4f, 0xbe, 0xd0, 0xdd, 0xcc, 0xa9, 0xf9, 0xa9, 0x94, 0x89, 0x87, 0xb1, 0x30, + 0x8a, 0x3a, 0xb0, 0xe4, 0x94, 0x8d, 0x96, 0xd0, 0xbd, 0xfe, 0x07, 0x4a, 0x67, 0x5f, 0xe6, 0xfd, + 0xe1, 0x4c, 0x8c, 0xa2, 0xb7, 0x80, 0xc2, 0xdc, 0xe8, 0x06, 0xad, 0x48, 0xd9, 0xc2, 0xc1, 0x92, + 0x79, 0x67, 0xc0, 0x2e, 0xa3, 0xa8, 0x05, 0x35, 0xa7, 0x64, 0x66, 0x81, 0x70, 0x2a, 0x46, 0x0b, + 0x27, 0x2e, 0xe6, 0xbd, 0xa1, 0x3c, 0x42, 0x6f, 0x27, 0x37, 0x10, 0x50, 0x7a, 0x17, 0xce, 0x35, + 0x94, 0xde, 0x25, 0x93, 0x84, 0x43, 0x98, 0x73, 0xf2, 0xdd, 0x37, 0x2a, 0x96, 0x52, 0x51, 0xb6, + 0x3a, 0x68, 0x9b, 0x67, 0xec, 0xf4, 0x69, 0xba, 0xf9, 0x45, 0x4b, 0x52, 0x24, 0xdf, 0x88, 0x9b, + 0x66, 0xd9, 0x96, 0x32, 0x39, 0xd3, 0xb0, 0xea, 0x26, 0xe7, 0x5b, 0x69, 0xdd, 0xe4, 0xa2, 0x4e, + 0x77, 0x3f, 0xe9, 0x26, 0xb5, 0xfe, 0x10, 0x2d, 0x4b, 0x99, 0xa2, 0x8e, 0xd5, 0x5c, 0x29, 0xdf, + 0x14, 0x49, 0xad, 0xb2, 0x4d, 0x25, 0xb5, 0xde, 0x01, 0xa9, 0xa4, 0x4e, 0x37, 0x22, 0x6f, 0x01, + 0xe5, 0xd1, 0x77, 0xc9, 0x6d, 0xca, 0x76, 0xa1, 0xe4, 0x36, 0x15, 0x6c, 0x7f, 0x0e, 0x93, 0x3a, + 0xc0, 0x55, 0x39, 0x9e, 0x81, 0xc8, 0x2a, 0xc7, 0xb3, 0x68, 0x38, 0xbe, 0xb8, 0x0c, 0x6c, 0x54, + 0x17, 0x97, 0x07, 0xa7, 0xea, 0xe2, 0x0a, 0x90, 0x26, 0xfa, 0x00, 0xd5, 0x42, 0x18, 0x8a, 0xd6, + 0x92, 0x9a, 0x5a, 0x02, 0x79, 0xcd, 0xf5, 0xc1, 0x0c, 0xc2, 0xe3, 0x8a, 0xac, 0x3c, 0xae, 0xc3, + 0x52, 0xe5, 0xf1, 0x14, 0xf6, 0x8c, 0xad, 0xcb, 0x7c, 0x54, 0x59, 0x97, 0x87, 0xb6, 0xca, 0xba, + 0x02, 0x14, 0x1b, 0xd7, 0xc2, 0x12, 0x00, 0xa7, 0xd7, 0xc2, 0x12, 0x70, 0xa9, 0xd7, 0xc2, 0x52, + 0x0c, 0x28, 0xa2, 0x23, 0x03, 0xbb, 0xf4, 0xe8, 0xc8, 0x83, 0x39, 0x3d, 0x3a, 0x8a, 0xf0, 0xda, + 0x6f, 0xb3, 0x20, 0x22, 0xc1, 0xc3, 0x68, 0x3d, 0x53, 0xf3, 0x73, 0xc8, 0xdc, 0xbc, 0x3b, 0x84, + 0x43, 0x68, 0x9c, 0xc7, 0x28, 0x4a, 0xe3, 0x42, 0x90, 0xa7, 0x34, 0x2e, 0x06, 0x37, 0xe8, 0xbd, + 0x36, 0xb1, 0xd1, 0x71, 0x4a, 0xb6, 0xfe, 0x64, 0x90, 0x8f, 0xb9, 0x36, 0x70, 0x9f, 0xd1, 0x97, + 0x6b, 0x1f, 0xee, 0x1c, 0x50, 0xe2, 0x1d, 0xed, 0x36, 0xb4, 0xbf, 0x21, 0xb9, 0xcc, 0x4f, 0xf9, + 0xef, 0xf1, 0x18, 0x27, 0x3d, 0xf9, 0x2a, 0x00, 0x00, 0xff, 0xff, 0x94, 0x0b, 0x60, 0xde, 0xf9, + 0x1c, 0x00, 0x00, }