Merge remote-tracking branch 'origin/v2.3.0release' into v2.3.0release

This commit is contained in:
Gordon 2022-12-22 17:25:29 +08:00
commit 98ce12d74e
5 changed files with 483 additions and 261 deletions

View File

@ -7,11 +7,12 @@ import (
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
server_api_params "Open_IM/pkg/proto/sdk_ws" server_api_params "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
goRedis "github.com/go-redis/redis/v8"
"github.com/golang/protobuf/proto"
"math" "math"
"strconv" "strconv"
"strings" "strings"
goRedis "github.com/go-redis/redis/v8"
"github.com/golang/protobuf/proto"
) )
const oldestList = 0 const oldestList = 0
@ -105,6 +106,8 @@ func deleteMongoMsg(operationID string, ID string, index int64, delStruct *delMs
if len(msgs.Msg) > db.GetSingleGocMsgNum() { if len(msgs.Msg) > db.GetSingleGocMsgNum() {
log.NewWarn(operationID, utils.GetSelfFuncName(), "msgs too large", len(msgs.Msg), msgs.UID) log.NewWarn(operationID, utils.GetSelfFuncName(), "msgs too large", len(msgs.Msg), msgs.UID)
} }
// lastMsgSendTime := msgs.Msg[len(msgs.Msg)-1].SendTime
var hasMsgDoNotNeedDel bool var hasMsgDoNotNeedDel bool
for i, msg := range msgs.Msg { for i, msg := range msgs.Msg {
// 找到列表中不需要删除的消息了, 表示为递归到最后一个块 // 找到列表中不需要删除的消息了, 表示为递归到最后一个块
@ -130,20 +133,16 @@ func deleteMongoMsg(operationID string, ID string, index int64, delStruct *delMs
} }
// 递归结束 // 递归结束
return msgPb.Seq, nil return msgPb.Seq, nil
} else {
if !msgListIsFull(msgs) {
}
} }
} }
// 该列表中消息全部为老消息并且列表满了, 加入删除列表继续递归 // 该列表中消息全部为老消息并且列表满了, 加入删除列表继续递归
lastMsgPb := &server_api_params.MsgData{} // lastMsgPb := &server_api_params.MsgData{}
err = proto.Unmarshal(msgs.Msg[len(msgs.Msg)-1].Msg, lastMsgPb) // err = proto.Unmarshal(msgs.Msg[len(msgs.Msg)-1].Msg, lastMsgPb)
if err != nil { // if err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID) // log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), len(msgs.Msg)-1, msgs.UID)
return 0, utils.Wrap(err, "proto.Unmarshal failed") // return 0, utils.Wrap(err, "proto.Unmarshal failed")
} // }
delStruct.minSeq = lastMsgPb.Seq // delStruct.minSeq = lastMsgPb.Seq
if msgListIsFull(msgs) { if msgListIsFull(msgs) {
log.NewDebug(operationID, "msg list is full", msgs.UID) log.NewDebug(operationID, "msg list is full", msgs.UID)
delStruct.delUidList = append(delStruct.delUidList, msgs.UID) delStruct.delUidList = append(delStruct.delUidList, msgs.UID)

View File

@ -26,8 +26,10 @@ var (
) )
const ( const (
PushURL = "/push/single/alias" PushURL = "/push/single/alias"
AuthURL = "/auth" AuthURL = "/auth"
TaskURL = "/push/list/message"
BatchPushURL = "/push/list/alias"
) )
func init() { func init() {
@ -53,23 +55,42 @@ type AuthResp struct {
Token string `json:"token"` Token string `json:"token"`
} }
type TaskResp struct {
TaskID string `json:"taskID"`
}
type Settings struct {
TTL *int64 `json:"ttl"`
}
type Audience struct {
Alias []string `json:"alias"`
}
type PushMessage struct {
Notification *Notification `json:"notification,omitempty"`
Transmission *string `json:"transmission,omitempty"`
}
type PushChannel struct {
Ios *Ios `json:"ios"`
Android *Android `json:"android"`
}
type PushReq struct { type PushReq struct {
RequestID string `json:"request_id"` RequestID *string `json:"request_id"`
Audience struct { Settings *Settings `json:"settings"`
Alias []string `json:"alias"` Audience *Audience `json:"audience"`
} `json:"audience"` PushMessage *PushMessage `json:"push_message"`
PushMessage struct { PushChannel *PushChannel `json:"push_channel"`
Notification Notification `json:"notification,omitempty"` IsAsync *bool `json:"is_async"`
Transmission string `json:"transmission,omitempty"` Taskid *string `json:"taskid"`
} `json:"push_message"`
PushChannel struct {
Ios Ios `json:"ios"`
Android Android `json:"android"`
} `json:"push_channel"`
} }
type Ios struct { type Ios struct {
Aps struct { NotiType *string `json:"type"`
AutoBadge *string `json:"auto_badge"`
Aps struct {
Sound string `json:"sound"` Sound string `json:"sound"`
Alert Alert `json:"alert"` Alert Alert `json:"alert"`
} `json:"aps"` } `json:"aps"`
@ -119,9 +140,9 @@ func newGetuiClient() *Getui {
func (g *Getui) Push(userIDList []string, title, detailContent, operationID string, opts push.PushOpts) (resp string, err error) { func (g *Getui) Push(userIDList []string, title, detailContent, operationID string, opts push.PushOpts) (resp string, err error) {
token, err := db.DB.GetGetuiToken() token, err := db.DB.GetGetuiToken()
log.NewDebug(operationID, utils.GetSelfFuncName(), "token", token) log.NewDebug(operationID, utils.GetSelfFuncName(), "token", token, userIDList)
if err != nil { if err != nil {
log.NewError(operationID, utils.OperationIDGenerator(), "GetGetuiToken failed", err.Error()) log.NewError(operationID, utils.GetSelfFuncName(), "GetGetuiToken failed", err.Error())
} }
if token == "" || err != nil { if token == "" || err != nil {
token, err = g.getTokenAndSave2Redis(operationID) token, err = g.getTokenAndSave2Redis(operationID)
@ -130,47 +151,32 @@ func (g *Getui) Push(userIDList []string, title, detailContent, operationID stri
return "", utils.Wrap(err, "") return "", utils.Wrap(err, "")
} }
} }
pushReq := PushReq{
RequestID: utils.OperationIDGenerator(), pushReq := PushReq{PushMessage: &PushMessage{Notification: &Notification{
Audience: struct {
Alias []string `json:"alias"`
}{Alias: []string{userIDList[0]}},
}
pushReq.PushMessage.Notification = Notification{
Title: title, Title: title,
Body: detailContent, Body: detailContent,
ClickType: "startapp", ClickType: "startapp",
ChannelID: config.Config.Push.Getui.ChannelID, ChannelID: config.Config.Push.Getui.ChannelID,
ChannelName: config.Config.Push.Getui.ChannelName, ChannelName: config.Config.Push.Getui.ChannelName,
} }}}
pushReq.PushChannel.Ios.Aps.Sound = "default" pushReq.setPushChannel(title, detailContent)
pushReq.PushChannel.Ios.Aps.Alert = Alert{
Title: title,
Body: title,
}
pushReq.PushChannel.Android.Ups.Notification = Notification{
Title: title,
Body: title,
ClickType: "startapp",
}
pushReq.PushChannel.Android.Ups.Options = Options{
HW: struct {
DefaultSound bool `json:"/message/android/notification/default_sound"`
ChannelID string `json:"/message/android/notification/channel_id"`
Sound string `json:"/message/android/notification/sound"`
Importance string `json:"/message/android/notification/importance"`
}{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"},
XM: struct {
ChannelID string `json:"/extra.channel_id"`
}{ChannelID: "high_system"},
VV: struct {
Classification int "json:\"/classification\""
}{
Classification: 1,
},
}
pushResp := PushResp{} pushResp := PushResp{}
err = g.request(PushURL, pushReq, token, &pushResp, operationID) if len(userIDList) > 1 {
taskID, err := g.GetTaskID(operationID, token, pushReq)
if err != nil {
return "", utils.Wrap(err, "GetTaskIDAndSave2Redis failed")
}
pushReq = PushReq{Audience: &Audience{Alias: userIDList}}
var IsAsync = false
pushReq.IsAsync = &IsAsync
pushReq.Taskid = &taskID
err = g.request(BatchPushURL, pushReq, token, &pushResp, operationID)
} else {
reqID := utils.OperationIDGenerator()
pushReq.RequestID = &reqID
pushReq.Audience = &Audience{Alias: []string{userIDList[0]}}
err = g.request(PushURL, pushReq, token, &pushResp, operationID)
}
switch err { switch err {
case TokenExpireError: case TokenExpireError:
token, err = g.getTokenAndSave2Redis(operationID) token, err = g.getTokenAndSave2Redis(operationID)
@ -209,6 +215,17 @@ func (g *Getui) Auth(operationID string, timeStamp int64) (token string, expireT
return respAuth.Token, int64(expire), err return respAuth.Token, int64(expire), err
} }
func (g *Getui) GetTaskID(operationID, token string, pushReq PushReq) (string, error) {
respTask := TaskResp{}
ttl := int64(1000 * 60 * 5)
pushReq.Settings = &Settings{TTL: &ttl}
err := g.request(TaskURL, pushReq, token, &respTask, operationID)
if err != nil {
return "", utils.Wrap(err, "")
}
return respTask.TaskID, nil
}
func (g *Getui) request(url string, content interface{}, token string, returnStruct interface{}, operationID string) error { func (g *Getui) request(url string, content interface{}, token string, returnStruct interface{}, operationID string) error {
con, err := json.Marshal(content) con, err := json.Marshal(content)
if err != nil { if err != nil {
@ -245,6 +262,41 @@ func (g *Getui) request(url string, content interface{}, token string, returnStr
return nil return nil
} }
func (pushReq *PushReq) setPushChannel(title string, body string) {
pushReq.PushChannel = &PushChannel{}
autoBadge := "+1"
pushReq.PushChannel.Ios = &Ios{AutoBadge: &autoBadge}
notify := "notify"
pushReq.PushChannel.Ios.NotiType = &notify
pushReq.PushChannel.Ios.Aps.Sound = "default"
pushReq.PushChannel.Ios.Aps.Alert = Alert{
Title: title,
Body: body,
}
pushReq.PushChannel.Android = &Android{}
pushReq.PushChannel.Android.Ups.Notification = Notification{
Title: title,
Body: body,
ClickType: "startapp",
}
pushReq.PushChannel.Android.Ups.Options = Options{
HW: struct {
DefaultSound bool `json:"/message/android/notification/default_sound"`
ChannelID string `json:"/message/android/notification/channel_id"`
Sound string `json:"/message/android/notification/sound"`
Importance string `json:"/message/android/notification/importance"`
}{ChannelID: "RingRing4", Sound: "/raw/ring001", Importance: "NORMAL"},
XM: struct {
ChannelID string `json:"/extra.channel_id"`
}{ChannelID: "high_system"},
VV: struct {
Classification int "json:\"/classification\""
}{
Classification: 1,
},
}
}
func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err error) { func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err error) {
token, expireTime, err := g.Auth(operationID, time.Now().UnixNano()/1e6) token, expireTime, err := g.Auth(operationID, time.Now().UnixNano()/1e6)
if err != nil { if err != nil {
@ -257,3 +309,17 @@ func (g *Getui) getTokenAndSave2Redis(operationID string) (token string, err err
} }
return token, nil return token, nil
} }
func (g *Getui) GetTaskIDAndSave2Redis(operationID, token string, pushReq PushReq) (taskID string, err error) {
ttl := int64(1000 * 60 * 60 * 24)
pushReq.Settings = &Settings{TTL: &ttl}
taskID, err = g.GetTaskID(operationID, token, pushReq)
if err != nil {
return "", utils.Wrap(err, "GetTaskIDAndSave2Redis failed")
}
err = db.DB.SetGetuiTaskID(taskID, 60*60*23)
if err != nil {
return "", utils.Wrap(err, "Auth failed")
}
return token, nil
}

View File

@ -237,7 +237,7 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) {
if err != nil { if err != nil {
log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "GetOfflinePushOpts failed", pushMsg, err.Error()) log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "GetOfflinePushOpts failed", pushMsg, err.Error())
} }
log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), onlineFailedUserIDList, title, detailContent, "opts:", opts) log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), needOfflinePushUserIDList, title, detailContent, "opts:", opts)
if title == "" { if title == "" {
switch pushMsg.MsgData.ContentType { switch pushMsg.MsgData.ContentType {
case constant.Text: case constant.Text:

View File

@ -28,6 +28,7 @@ const (
uidPidToken = "UID_PID_TOKEN_STATUS:" uidPidToken = "UID_PID_TOKEN_STATUS:"
conversationReceiveMessageOpt = "CON_RECV_MSG_OPT:" conversationReceiveMessageOpt = "CON_RECV_MSG_OPT:"
getuiToken = "GETUI_TOKEN" getuiToken = "GETUI_TOKEN"
getuiTaskID = "GETUI_TASK_ID"
messageCache = "MESSAGE_CACHE:" messageCache = "MESSAGE_CACHE:"
SignalCache = "SIGNAL_CACHE:" SignalCache = "SIGNAL_CACHE:"
SignalListCache = "SIGNAL_LIST_CACHE:" SignalListCache = "SIGNAL_LIST_CACHE:"
@ -397,6 +398,15 @@ func (d *DataBases) GetGetuiToken() (string, error) {
return result, err return result, err
} }
func (d *DataBases) SetGetuiTaskID(taskID string, expireTime int64) error {
return d.RDB.Set(context.Background(), getuiTaskID, taskID, time.Duration(expireTime)*time.Second).Err()
}
func (d *DataBases) GetGetuiTaskID() (string, error) {
result, err := d.RDB.Get(context.Background(), getuiTaskID).Result()
return result, err
}
func (d *DataBases) SetSendMsgStatus(status int32, operationID string) error { func (d *DataBases) SetSendMsgStatus(status int32, operationID string) error {
return d.RDB.Set(context.Background(), sendMsgFailedFlag+operationID, status, time.Hour*24).Err() return d.RDB.Set(context.Background(), sendMsgFailedFlag+operationID, status, time.Hour*24).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_admin_cms_ab5a35fab6587b8a, []int{0} return fileDescriptor_admin_cms_49bc09b1772ecee1, []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)
@ -83,7 +83,7 @@ func (m *AdminLoginReq) Reset() { *m = AdminLoginReq{} }
func (m *AdminLoginReq) String() string { return proto.CompactTextString(m) } func (m *AdminLoginReq) String() string { return proto.CompactTextString(m) }
func (*AdminLoginReq) ProtoMessage() {} func (*AdminLoginReq) ProtoMessage() {}
func (*AdminLoginReq) Descriptor() ([]byte, []int) { func (*AdminLoginReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{1} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{1}
} }
func (m *AdminLoginReq) XXX_Unmarshal(b []byte) error { func (m *AdminLoginReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AdminLoginReq.Unmarshal(m, b) return xxx_messageInfo_AdminLoginReq.Unmarshal(m, b)
@ -138,7 +138,7 @@ func (m *AdminLoginResp) Reset() { *m = AdminLoginResp{} }
func (m *AdminLoginResp) String() string { return proto.CompactTextString(m) } func (m *AdminLoginResp) String() string { return proto.CompactTextString(m) }
func (*AdminLoginResp) ProtoMessage() {} func (*AdminLoginResp) ProtoMessage() {}
func (*AdminLoginResp) Descriptor() ([]byte, []int) { func (*AdminLoginResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{2} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{2}
} }
func (m *AdminLoginResp) XXX_Unmarshal(b []byte) error { func (m *AdminLoginResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AdminLoginResp.Unmarshal(m, b) return xxx_messageInfo_AdminLoginResp.Unmarshal(m, b)
@ -186,6 +186,114 @@ func (m *AdminLoginResp) GetCommonResp() *CommonResp {
return nil return nil
} }
type GetUserTokenReq struct {
OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"`
UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"`
PlatformID int32 `protobuf:"varint,3,opt,name=platformID" json:"platformID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUserTokenReq) Reset() { *m = GetUserTokenReq{} }
func (m *GetUserTokenReq) String() string { return proto.CompactTextString(m) }
func (*GetUserTokenReq) ProtoMessage() {}
func (*GetUserTokenReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{3}
}
func (m *GetUserTokenReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTokenReq.Unmarshal(m, b)
}
func (m *GetUserTokenReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserTokenReq.Marshal(b, m, deterministic)
}
func (dst *GetUserTokenReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserTokenReq.Merge(dst, src)
}
func (m *GetUserTokenReq) XXX_Size() int {
return xxx_messageInfo_GetUserTokenReq.Size(m)
}
func (m *GetUserTokenReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetUserTokenReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetUserTokenReq proto.InternalMessageInfo
func (m *GetUserTokenReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
func (m *GetUserTokenReq) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *GetUserTokenReq) GetPlatformID() int32 {
if m != nil {
return m.PlatformID
}
return 0
}
type GetUserTokenResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
ExpTime int64 `protobuf:"varint,3,opt,name=expTime" json:"expTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetUserTokenResp) Reset() { *m = GetUserTokenResp{} }
func (m *GetUserTokenResp) String() string { return proto.CompactTextString(m) }
func (*GetUserTokenResp) ProtoMessage() {}
func (*GetUserTokenResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{4}
}
func (m *GetUserTokenResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserTokenResp.Unmarshal(m, b)
}
func (m *GetUserTokenResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserTokenResp.Marshal(b, m, deterministic)
}
func (dst *GetUserTokenResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserTokenResp.Merge(dst, src)
}
func (m *GetUserTokenResp) XXX_Size() int {
return xxx_messageInfo_GetUserTokenResp.Size(m)
}
func (m *GetUserTokenResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetUserTokenResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetUserTokenResp proto.InternalMessageInfo
func (m *GetUserTokenResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
func (m *GetUserTokenResp) GetToken() string {
if m != nil {
return m.Token
}
return ""
}
func (m *GetUserTokenResp) GetExpTime() int64 {
if m != nil {
return m.ExpTime
}
return 0
}
type AddUserRegisterAddFriendIDListReq struct { type AddUserRegisterAddFriendIDListReq struct {
OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"`
UserIDList []string `protobuf:"bytes,2,rep,name=userIDList" json:"userIDList,omitempty"` UserIDList []string `protobuf:"bytes,2,rep,name=userIDList" json:"userIDList,omitempty"`
@ -198,7 +306,7 @@ func (m *AddUserRegisterAddFriendIDListReq) Reset() { *m = AddUserRegist
func (m *AddUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) } func (m *AddUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) }
func (*AddUserRegisterAddFriendIDListReq) ProtoMessage() {} func (*AddUserRegisterAddFriendIDListReq) ProtoMessage() {}
func (*AddUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { func (*AddUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{3} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{5}
} }
func (m *AddUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error { func (m *AddUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Unmarshal(m, b) return xxx_messageInfo_AddUserRegisterAddFriendIDListReq.Unmarshal(m, b)
@ -243,7 +351,7 @@ func (m *AddUserRegisterAddFriendIDListResp) Reset() { *m = AddUserRegis
func (m *AddUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) } func (m *AddUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) }
func (*AddUserRegisterAddFriendIDListResp) ProtoMessage() {} func (*AddUserRegisterAddFriendIDListResp) ProtoMessage() {}
func (*AddUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) { func (*AddUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{4} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{6}
} }
func (m *AddUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error { func (m *AddUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Unmarshal(m, b) return xxx_messageInfo_AddUserRegisterAddFriendIDListResp.Unmarshal(m, b)
@ -283,7 +391,7 @@ func (m *ReduceUserRegisterAddFriendIDListReq) Reset() { *m = ReduceUser
func (m *ReduceUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) } func (m *ReduceUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) }
func (*ReduceUserRegisterAddFriendIDListReq) ProtoMessage() {} func (*ReduceUserRegisterAddFriendIDListReq) ProtoMessage() {}
func (*ReduceUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { func (*ReduceUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{5} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{7}
} }
func (m *ReduceUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error { func (m *ReduceUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Unmarshal(m, b) return xxx_messageInfo_ReduceUserRegisterAddFriendIDListReq.Unmarshal(m, b)
@ -335,7 +443,7 @@ func (m *ReduceUserRegisterAddFriendIDListResp) Reset() { *m = ReduceUse
func (m *ReduceUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) } func (m *ReduceUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) }
func (*ReduceUserRegisterAddFriendIDListResp) ProtoMessage() {} func (*ReduceUserRegisterAddFriendIDListResp) ProtoMessage() {}
func (*ReduceUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) { func (*ReduceUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{6} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{8}
} }
func (m *ReduceUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error { func (m *ReduceUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Unmarshal(m, b) return xxx_messageInfo_ReduceUserRegisterAddFriendIDListResp.Unmarshal(m, b)
@ -374,7 +482,7 @@ func (m *GetUserRegisterAddFriendIDListReq) Reset() { *m = GetUserRegist
func (m *GetUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) } func (m *GetUserRegisterAddFriendIDListReq) String() string { return proto.CompactTextString(m) }
func (*GetUserRegisterAddFriendIDListReq) ProtoMessage() {} func (*GetUserRegisterAddFriendIDListReq) ProtoMessage() {}
func (*GetUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) { func (*GetUserRegisterAddFriendIDListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{7} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{9}
} }
func (m *GetUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error { func (m *GetUserRegisterAddFriendIDListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Unmarshal(m, b) return xxx_messageInfo_GetUserRegisterAddFriendIDListReq.Unmarshal(m, b)
@ -421,7 +529,7 @@ func (m *GetUserRegisterAddFriendIDListResp) Reset() { *m = GetUserRegis
func (m *GetUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) } func (m *GetUserRegisterAddFriendIDListResp) String() string { return proto.CompactTextString(m) }
func (*GetUserRegisterAddFriendIDListResp) ProtoMessage() {} func (*GetUserRegisterAddFriendIDListResp) ProtoMessage() {}
func (*GetUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) { func (*GetUserRegisterAddFriendIDListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{8} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{10}
} }
func (m *GetUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error { func (m *GetUserRegisterAddFriendIDListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Unmarshal(m, b) return xxx_messageInfo_GetUserRegisterAddFriendIDListResp.Unmarshal(m, b)
@ -481,7 +589,7 @@ func (m *GetChatLogsReq) Reset() { *m = GetChatLogsReq{} }
func (m *GetChatLogsReq) String() string { return proto.CompactTextString(m) } func (m *GetChatLogsReq) String() string { return proto.CompactTextString(m) }
func (*GetChatLogsReq) ProtoMessage() {} func (*GetChatLogsReq) ProtoMessage() {}
func (*GetChatLogsReq) Descriptor() ([]byte, []int) { func (*GetChatLogsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{9} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{11}
} }
func (m *GetChatLogsReq) XXX_Unmarshal(b []byte) error { func (m *GetChatLogsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetChatLogsReq.Unmarshal(m, b) return xxx_messageInfo_GetChatLogsReq.Unmarshal(m, b)
@ -592,7 +700,7 @@ func (m *ChatLog) Reset() { *m = ChatLog{} }
func (m *ChatLog) String() string { return proto.CompactTextString(m) } func (m *ChatLog) String() string { return proto.CompactTextString(m) }
func (*ChatLog) ProtoMessage() {} func (*ChatLog) ProtoMessage() {}
func (*ChatLog) Descriptor() ([]byte, []int) { func (*ChatLog) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{10} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{12}
} }
func (m *ChatLog) XXX_Unmarshal(b []byte) error { func (m *ChatLog) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChatLog.Unmarshal(m, b) return xxx_messageInfo_ChatLog.Unmarshal(m, b)
@ -752,7 +860,7 @@ func (m *GetChatLogsResp) Reset() { *m = GetChatLogsResp{} }
func (m *GetChatLogsResp) String() string { return proto.CompactTextString(m) } func (m *GetChatLogsResp) String() string { return proto.CompactTextString(m) }
func (*GetChatLogsResp) ProtoMessage() {} func (*GetChatLogsResp) ProtoMessage() {}
func (*GetChatLogsResp) Descriptor() ([]byte, []int) { func (*GetChatLogsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{11} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{13}
} }
func (m *GetChatLogsResp) XXX_Unmarshal(b []byte) error { func (m *GetChatLogsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetChatLogsResp.Unmarshal(m, b) return xxx_messageInfo_GetChatLogsResp.Unmarshal(m, b)
@ -812,7 +920,7 @@ func (m *StatisticsReq) Reset() { *m = StatisticsReq{} }
func (m *StatisticsReq) String() string { return proto.CompactTextString(m) } func (m *StatisticsReq) String() string { return proto.CompactTextString(m) }
func (*StatisticsReq) ProtoMessage() {} func (*StatisticsReq) ProtoMessage() {}
func (*StatisticsReq) Descriptor() ([]byte, []int) { func (*StatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{12} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{14}
} }
func (m *StatisticsReq) XXX_Unmarshal(b []byte) error { func (m *StatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatisticsReq.Unmarshal(m, b) return xxx_messageInfo_StatisticsReq.Unmarshal(m, b)
@ -858,7 +966,7 @@ func (m *GetActiveUserReq) Reset() { *m = GetActiveUserReq{} }
func (m *GetActiveUserReq) String() string { return proto.CompactTextString(m) } func (m *GetActiveUserReq) String() string { return proto.CompactTextString(m) }
func (*GetActiveUserReq) ProtoMessage() {} func (*GetActiveUserReq) ProtoMessage() {}
func (*GetActiveUserReq) Descriptor() ([]byte, []int) { func (*GetActiveUserReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{13} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{15}
} }
func (m *GetActiveUserReq) XXX_Unmarshal(b []byte) error { func (m *GetActiveUserReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveUserReq.Unmarshal(m, b) return xxx_messageInfo_GetActiveUserReq.Unmarshal(m, b)
@ -905,7 +1013,7 @@ func (m *UserResp) Reset() { *m = UserResp{} }
func (m *UserResp) String() string { return proto.CompactTextString(m) } func (m *UserResp) String() string { return proto.CompactTextString(m) }
func (*UserResp) ProtoMessage() {} func (*UserResp) ProtoMessage() {}
func (*UserResp) Descriptor() ([]byte, []int) { func (*UserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{14} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{16}
} }
func (m *UserResp) XXX_Unmarshal(b []byte) error { func (m *UserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserResp.Unmarshal(m, b) return xxx_messageInfo_UserResp.Unmarshal(m, b)
@ -958,7 +1066,7 @@ func (m *GetActiveUserResp) Reset() { *m = GetActiveUserResp{} }
func (m *GetActiveUserResp) String() string { return proto.CompactTextString(m) } func (m *GetActiveUserResp) String() string { return proto.CompactTextString(m) }
func (*GetActiveUserResp) ProtoMessage() {} func (*GetActiveUserResp) ProtoMessage() {}
func (*GetActiveUserResp) Descriptor() ([]byte, []int) { func (*GetActiveUserResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{15} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{17}
} }
func (m *GetActiveUserResp) XXX_Unmarshal(b []byte) error { func (m *GetActiveUserResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveUserResp.Unmarshal(m, b) return xxx_messageInfo_GetActiveUserResp.Unmarshal(m, b)
@ -1004,7 +1112,7 @@ func (m *GetActiveGroupReq) Reset() { *m = GetActiveGroupReq{} }
func (m *GetActiveGroupReq) String() string { return proto.CompactTextString(m) } func (m *GetActiveGroupReq) String() string { return proto.CompactTextString(m) }
func (*GetActiveGroupReq) ProtoMessage() {} func (*GetActiveGroupReq) ProtoMessage() {}
func (*GetActiveGroupReq) Descriptor() ([]byte, []int) { func (*GetActiveGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{16} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{18}
} }
func (m *GetActiveGroupReq) XXX_Unmarshal(b []byte) error { func (m *GetActiveGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveGroupReq.Unmarshal(m, b) return xxx_messageInfo_GetActiveGroupReq.Unmarshal(m, b)
@ -1052,7 +1160,7 @@ func (m *GroupResp) Reset() { *m = GroupResp{} }
func (m *GroupResp) String() string { return proto.CompactTextString(m) } func (m *GroupResp) String() string { return proto.CompactTextString(m) }
func (*GroupResp) ProtoMessage() {} func (*GroupResp) ProtoMessage() {}
func (*GroupResp) Descriptor() ([]byte, []int) { func (*GroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{17} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{19}
} }
func (m *GroupResp) XXX_Unmarshal(b []byte) error { func (m *GroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupResp.Unmarshal(m, b) return xxx_messageInfo_GroupResp.Unmarshal(m, b)
@ -1112,7 +1220,7 @@ func (m *GetActiveGroupResp) Reset() { *m = GetActiveGroupResp{} }
func (m *GetActiveGroupResp) String() string { return proto.CompactTextString(m) } func (m *GetActiveGroupResp) String() string { return proto.CompactTextString(m) }
func (*GetActiveGroupResp) ProtoMessage() {} func (*GetActiveGroupResp) ProtoMessage() {}
func (*GetActiveGroupResp) Descriptor() ([]byte, []int) { func (*GetActiveGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{18} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{20}
} }
func (m *GetActiveGroupResp) XXX_Unmarshal(b []byte) error { func (m *GetActiveGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetActiveGroupResp.Unmarshal(m, b) return xxx_messageInfo_GetActiveGroupResp.Unmarshal(m, b)
@ -1158,7 +1266,7 @@ func (m *DateNumList) Reset() { *m = DateNumList{} }
func (m *DateNumList) String() string { return proto.CompactTextString(m) } func (m *DateNumList) String() string { return proto.CompactTextString(m) }
func (*DateNumList) ProtoMessage() {} func (*DateNumList) ProtoMessage() {}
func (*DateNumList) Descriptor() ([]byte, []int) { func (*DateNumList) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{19} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{21}
} }
func (m *DateNumList) XXX_Unmarshal(b []byte) error { func (m *DateNumList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DateNumList.Unmarshal(m, b) return xxx_messageInfo_DateNumList.Unmarshal(m, b)
@ -1204,7 +1312,7 @@ func (m *GetMessageStatisticsReq) Reset() { *m = GetMessageStatisticsReq
func (m *GetMessageStatisticsReq) String() string { return proto.CompactTextString(m) } func (m *GetMessageStatisticsReq) String() string { return proto.CompactTextString(m) }
func (*GetMessageStatisticsReq) ProtoMessage() {} func (*GetMessageStatisticsReq) ProtoMessage() {}
func (*GetMessageStatisticsReq) Descriptor() ([]byte, []int) { func (*GetMessageStatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{20} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{22}
} }
func (m *GetMessageStatisticsReq) XXX_Unmarshal(b []byte) error { func (m *GetMessageStatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMessageStatisticsReq.Unmarshal(m, b) return xxx_messageInfo_GetMessageStatisticsReq.Unmarshal(m, b)
@ -1253,7 +1361,7 @@ func (m *GetMessageStatisticsResp) Reset() { *m = GetMessageStatisticsRe
func (m *GetMessageStatisticsResp) String() string { return proto.CompactTextString(m) } func (m *GetMessageStatisticsResp) String() string { return proto.CompactTextString(m) }
func (*GetMessageStatisticsResp) ProtoMessage() {} func (*GetMessageStatisticsResp) ProtoMessage() {}
func (*GetMessageStatisticsResp) Descriptor() ([]byte, []int) { func (*GetMessageStatisticsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{21} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{23}
} }
func (m *GetMessageStatisticsResp) XXX_Unmarshal(b []byte) error { func (m *GetMessageStatisticsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMessageStatisticsResp.Unmarshal(m, b) return xxx_messageInfo_GetMessageStatisticsResp.Unmarshal(m, b)
@ -1320,7 +1428,7 @@ func (m *GetGroupStatisticsReq) Reset() { *m = GetGroupStatisticsReq{} }
func (m *GetGroupStatisticsReq) String() string { return proto.CompactTextString(m) } func (m *GetGroupStatisticsReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupStatisticsReq) ProtoMessage() {} func (*GetGroupStatisticsReq) ProtoMessage() {}
func (*GetGroupStatisticsReq) Descriptor() ([]byte, []int) { func (*GetGroupStatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{22} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{24}
} }
func (m *GetGroupStatisticsReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupStatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupStatisticsReq.Unmarshal(m, b) return xxx_messageInfo_GetGroupStatisticsReq.Unmarshal(m, b)
@ -1369,7 +1477,7 @@ func (m *GetGroupStatisticsResp) Reset() { *m = GetGroupStatisticsResp{}
func (m *GetGroupStatisticsResp) String() string { return proto.CompactTextString(m) } func (m *GetGroupStatisticsResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupStatisticsResp) ProtoMessage() {} func (*GetGroupStatisticsResp) ProtoMessage() {}
func (*GetGroupStatisticsResp) Descriptor() ([]byte, []int) { func (*GetGroupStatisticsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{23} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{25}
} }
func (m *GetGroupStatisticsResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupStatisticsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupStatisticsResp.Unmarshal(m, b) return xxx_messageInfo_GetGroupStatisticsResp.Unmarshal(m, b)
@ -1436,7 +1544,7 @@ func (m *GetUserStatisticsReq) Reset() { *m = GetUserStatisticsReq{} }
func (m *GetUserStatisticsReq) String() string { return proto.CompactTextString(m) } func (m *GetUserStatisticsReq) String() string { return proto.CompactTextString(m) }
func (*GetUserStatisticsReq) ProtoMessage() {} func (*GetUserStatisticsReq) ProtoMessage() {}
func (*GetUserStatisticsReq) Descriptor() ([]byte, []int) { func (*GetUserStatisticsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{24} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{26}
} }
func (m *GetUserStatisticsReq) XXX_Unmarshal(b []byte) error { func (m *GetUserStatisticsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserStatisticsReq.Unmarshal(m, b) return xxx_messageInfo_GetUserStatisticsReq.Unmarshal(m, b)
@ -1487,7 +1595,7 @@ func (m *GetUserStatisticsResp) Reset() { *m = GetUserStatisticsResp{} }
func (m *GetUserStatisticsResp) String() string { return proto.CompactTextString(m) } func (m *GetUserStatisticsResp) String() string { return proto.CompactTextString(m) }
func (*GetUserStatisticsResp) ProtoMessage() {} func (*GetUserStatisticsResp) ProtoMessage() {}
func (*GetUserStatisticsResp) Descriptor() ([]byte, []int) { func (*GetUserStatisticsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{25} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{27}
} }
func (m *GetUserStatisticsResp) XXX_Unmarshal(b []byte) error { func (m *GetUserStatisticsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserStatisticsResp.Unmarshal(m, b) return xxx_messageInfo_GetUserStatisticsResp.Unmarshal(m, b)
@ -1569,7 +1677,7 @@ func (m *GenerateInvitationCodeReq) Reset() { *m = GenerateInvitationCod
func (m *GenerateInvitationCodeReq) String() string { return proto.CompactTextString(m) } func (m *GenerateInvitationCodeReq) String() string { return proto.CompactTextString(m) }
func (*GenerateInvitationCodeReq) ProtoMessage() {} func (*GenerateInvitationCodeReq) ProtoMessage() {}
func (*GenerateInvitationCodeReq) Descriptor() ([]byte, []int) { func (*GenerateInvitationCodeReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{26} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{28}
} }
func (m *GenerateInvitationCodeReq) XXX_Unmarshal(b []byte) error { func (m *GenerateInvitationCodeReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenerateInvitationCodeReq.Unmarshal(m, b) return xxx_messageInfo_GenerateInvitationCodeReq.Unmarshal(m, b)
@ -1621,7 +1729,7 @@ func (m *GenerateInvitationCodeResp) Reset() { *m = GenerateInvitationCo
func (m *GenerateInvitationCodeResp) String() string { return proto.CompactTextString(m) } func (m *GenerateInvitationCodeResp) String() string { return proto.CompactTextString(m) }
func (*GenerateInvitationCodeResp) ProtoMessage() {} func (*GenerateInvitationCodeResp) ProtoMessage() {}
func (*GenerateInvitationCodeResp) Descriptor() ([]byte, []int) { func (*GenerateInvitationCodeResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{27} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{29}
} }
func (m *GenerateInvitationCodeResp) XXX_Unmarshal(b []byte) error { func (m *GenerateInvitationCodeResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenerateInvitationCodeResp.Unmarshal(m, b) return xxx_messageInfo_GenerateInvitationCodeResp.Unmarshal(m, b)
@ -1662,7 +1770,7 @@ func (m *GetInvitationCodesReq) Reset() { *m = GetInvitationCodesReq{} }
func (m *GetInvitationCodesReq) String() string { return proto.CompactTextString(m) } func (m *GetInvitationCodesReq) String() string { return proto.CompactTextString(m) }
func (*GetInvitationCodesReq) ProtoMessage() {} func (*GetInvitationCodesReq) ProtoMessage() {}
func (*GetInvitationCodesReq) Descriptor() ([]byte, []int) { func (*GetInvitationCodesReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{28} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{30}
} }
func (m *GetInvitationCodesReq) XXX_Unmarshal(b []byte) error { func (m *GetInvitationCodesReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInvitationCodesReq.Unmarshal(m, b) return xxx_messageInfo_GetInvitationCodesReq.Unmarshal(m, b)
@ -1725,7 +1833,7 @@ func (m *InvitationCode) Reset() { *m = InvitationCode{} }
func (m *InvitationCode) String() string { return proto.CompactTextString(m) } func (m *InvitationCode) String() string { return proto.CompactTextString(m) }
func (*InvitationCode) ProtoMessage() {} func (*InvitationCode) ProtoMessage() {}
func (*InvitationCode) Descriptor() ([]byte, []int) { func (*InvitationCode) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{29} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{31}
} }
func (m *InvitationCode) XXX_Unmarshal(b []byte) error { func (m *InvitationCode) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvitationCode.Unmarshal(m, b) return xxx_messageInfo_InvitationCode.Unmarshal(m, b)
@ -1793,7 +1901,7 @@ func (m *GetInvitationCodesResp) Reset() { *m = GetInvitationCodesResp{}
func (m *GetInvitationCodesResp) String() string { return proto.CompactTextString(m) } func (m *GetInvitationCodesResp) String() string { return proto.CompactTextString(m) }
func (*GetInvitationCodesResp) ProtoMessage() {} func (*GetInvitationCodesResp) ProtoMessage() {}
func (*GetInvitationCodesResp) Descriptor() ([]byte, []int) { func (*GetInvitationCodesResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{30} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{32}
} }
func (m *GetInvitationCodesResp) XXX_Unmarshal(b []byte) error { func (m *GetInvitationCodesResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInvitationCodesResp.Unmarshal(m, b) return xxx_messageInfo_GetInvitationCodesResp.Unmarshal(m, b)
@ -1846,7 +1954,7 @@ func (m *QueryIPRegisterReq) Reset() { *m = QueryIPRegisterReq{} }
func (m *QueryIPRegisterReq) String() string { return proto.CompactTextString(m) } func (m *QueryIPRegisterReq) String() string { return proto.CompactTextString(m) }
func (*QueryIPRegisterReq) ProtoMessage() {} func (*QueryIPRegisterReq) ProtoMessage() {}
func (*QueryIPRegisterReq) Descriptor() ([]byte, []int) { func (*QueryIPRegisterReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{31} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{33}
} }
func (m *QueryIPRegisterReq) XXX_Unmarshal(b []byte) error { func (m *QueryIPRegisterReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryIPRegisterReq.Unmarshal(m, b) return xxx_messageInfo_QueryIPRegisterReq.Unmarshal(m, b)
@ -1895,7 +2003,7 @@ func (m *QueryIPRegisterResp) Reset() { *m = QueryIPRegisterResp{} }
func (m *QueryIPRegisterResp) String() string { return proto.CompactTextString(m) } func (m *QueryIPRegisterResp) String() string { return proto.CompactTextString(m) }
func (*QueryIPRegisterResp) ProtoMessage() {} func (*QueryIPRegisterResp) ProtoMessage() {}
func (*QueryIPRegisterResp) Descriptor() ([]byte, []int) { func (*QueryIPRegisterResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{32} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{34}
} }
func (m *QueryIPRegisterResp) XXX_Unmarshal(b []byte) error { func (m *QueryIPRegisterResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryIPRegisterResp.Unmarshal(m, b) return xxx_messageInfo_QueryIPRegisterResp.Unmarshal(m, b)
@ -1963,7 +2071,7 @@ func (m *AddIPLimitReq) Reset() { *m = AddIPLimitReq{} }
func (m *AddIPLimitReq) String() string { return proto.CompactTextString(m) } func (m *AddIPLimitReq) String() string { return proto.CompactTextString(m) }
func (*AddIPLimitReq) ProtoMessage() {} func (*AddIPLimitReq) ProtoMessage() {}
func (*AddIPLimitReq) Descriptor() ([]byte, []int) { func (*AddIPLimitReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{33} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{35}
} }
func (m *AddIPLimitReq) XXX_Unmarshal(b []byte) error { func (m *AddIPLimitReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddIPLimitReq.Unmarshal(m, b) return xxx_messageInfo_AddIPLimitReq.Unmarshal(m, b)
@ -2015,7 +2123,7 @@ func (m *AddIPLimitResp) Reset() { *m = AddIPLimitResp{} }
func (m *AddIPLimitResp) String() string { return proto.CompactTextString(m) } func (m *AddIPLimitResp) String() string { return proto.CompactTextString(m) }
func (*AddIPLimitResp) ProtoMessage() {} func (*AddIPLimitResp) ProtoMessage() {}
func (*AddIPLimitResp) Descriptor() ([]byte, []int) { func (*AddIPLimitResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{34} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{36}
} }
func (m *AddIPLimitResp) XXX_Unmarshal(b []byte) error { func (m *AddIPLimitResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddIPLimitResp.Unmarshal(m, b) return xxx_messageInfo_AddIPLimitResp.Unmarshal(m, b)
@ -2054,7 +2162,7 @@ func (m *RemoveIPLimitReq) Reset() { *m = RemoveIPLimitReq{} }
func (m *RemoveIPLimitReq) String() string { return proto.CompactTextString(m) } func (m *RemoveIPLimitReq) String() string { return proto.CompactTextString(m) }
func (*RemoveIPLimitReq) ProtoMessage() {} func (*RemoveIPLimitReq) ProtoMessage() {}
func (*RemoveIPLimitReq) Descriptor() ([]byte, []int) { func (*RemoveIPLimitReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{35} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{37}
} }
func (m *RemoveIPLimitReq) XXX_Unmarshal(b []byte) error { func (m *RemoveIPLimitReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveIPLimitReq.Unmarshal(m, b) return xxx_messageInfo_RemoveIPLimitReq.Unmarshal(m, b)
@ -2099,7 +2207,7 @@ func (m *RemoveIPLimitResp) Reset() { *m = RemoveIPLimitResp{} }
func (m *RemoveIPLimitResp) String() string { return proto.CompactTextString(m) } func (m *RemoveIPLimitResp) String() string { return proto.CompactTextString(m) }
func (*RemoveIPLimitResp) ProtoMessage() {} func (*RemoveIPLimitResp) ProtoMessage() {}
func (*RemoveIPLimitResp) Descriptor() ([]byte, []int) { func (*RemoveIPLimitResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{36} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{38}
} }
func (m *RemoveIPLimitResp) XXX_Unmarshal(b []byte) error { func (m *RemoveIPLimitResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveIPLimitResp.Unmarshal(m, b) return xxx_messageInfo_RemoveIPLimitResp.Unmarshal(m, b)
@ -2138,7 +2246,7 @@ func (m *QueryUserIDIPLimitLoginReq) Reset() { *m = QueryUserIDIPLimitLo
func (m *QueryUserIDIPLimitLoginReq) String() string { return proto.CompactTextString(m) } func (m *QueryUserIDIPLimitLoginReq) String() string { return proto.CompactTextString(m) }
func (*QueryUserIDIPLimitLoginReq) ProtoMessage() {} func (*QueryUserIDIPLimitLoginReq) ProtoMessage() {}
func (*QueryUserIDIPLimitLoginReq) Descriptor() ([]byte, []int) { func (*QueryUserIDIPLimitLoginReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{37} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{39}
} }
func (m *QueryUserIDIPLimitLoginReq) XXX_Unmarshal(b []byte) error { func (m *QueryUserIDIPLimitLoginReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryUserIDIPLimitLoginReq.Unmarshal(m, b) return xxx_messageInfo_QueryUserIDIPLimitLoginReq.Unmarshal(m, b)
@ -2185,7 +2293,7 @@ func (m *UserIPLimit) Reset() { *m = UserIPLimit{} }
func (m *UserIPLimit) String() string { return proto.CompactTextString(m) } func (m *UserIPLimit) String() string { return proto.CompactTextString(m) }
func (*UserIPLimit) ProtoMessage() {} func (*UserIPLimit) ProtoMessage() {}
func (*UserIPLimit) Descriptor() ([]byte, []int) { func (*UserIPLimit) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{38} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{40}
} }
func (m *UserIPLimit) XXX_Unmarshal(b []byte) error { func (m *UserIPLimit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserIPLimit.Unmarshal(m, b) return xxx_messageInfo_UserIPLimit.Unmarshal(m, b)
@ -2238,7 +2346,7 @@ func (m *QueryUserIDIPLimitLoginResp) Reset() { *m = QueryUserIDIPLimitL
func (m *QueryUserIDIPLimitLoginResp) String() string { return proto.CompactTextString(m) } func (m *QueryUserIDIPLimitLoginResp) String() string { return proto.CompactTextString(m) }
func (*QueryUserIDIPLimitLoginResp) ProtoMessage() {} func (*QueryUserIDIPLimitLoginResp) ProtoMessage() {}
func (*QueryUserIDIPLimitLoginResp) Descriptor() ([]byte, []int) { func (*QueryUserIDIPLimitLoginResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{39} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{41}
} }
func (m *QueryUserIDIPLimitLoginResp) XXX_Unmarshal(b []byte) error { func (m *QueryUserIDIPLimitLoginResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryUserIDIPLimitLoginResp.Unmarshal(m, b) return xxx_messageInfo_QueryUserIDIPLimitLoginResp.Unmarshal(m, b)
@ -2285,7 +2393,7 @@ func (m *AddUserIPLimitLoginReq) Reset() { *m = AddUserIPLimitLoginReq{}
func (m *AddUserIPLimitLoginReq) String() string { return proto.CompactTextString(m) } func (m *AddUserIPLimitLoginReq) String() string { return proto.CompactTextString(m) }
func (*AddUserIPLimitLoginReq) ProtoMessage() {} func (*AddUserIPLimitLoginReq) ProtoMessage() {}
func (*AddUserIPLimitLoginReq) Descriptor() ([]byte, []int) { func (*AddUserIPLimitLoginReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{40} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{42}
} }
func (m *AddUserIPLimitLoginReq) XXX_Unmarshal(b []byte) error { func (m *AddUserIPLimitLoginReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserIPLimitLoginReq.Unmarshal(m, b) return xxx_messageInfo_AddUserIPLimitLoginReq.Unmarshal(m, b)
@ -2337,7 +2445,7 @@ func (m *AddUserIPLimitLoginResp) Reset() { *m = AddUserIPLimitLoginResp
func (m *AddUserIPLimitLoginResp) String() string { return proto.CompactTextString(m) } func (m *AddUserIPLimitLoginResp) String() string { return proto.CompactTextString(m) }
func (*AddUserIPLimitLoginResp) ProtoMessage() {} func (*AddUserIPLimitLoginResp) ProtoMessage() {}
func (*AddUserIPLimitLoginResp) Descriptor() ([]byte, []int) { func (*AddUserIPLimitLoginResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{41} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{43}
} }
func (m *AddUserIPLimitLoginResp) XXX_Unmarshal(b []byte) error { func (m *AddUserIPLimitLoginResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddUserIPLimitLoginResp.Unmarshal(m, b) return xxx_messageInfo_AddUserIPLimitLoginResp.Unmarshal(m, b)
@ -2377,7 +2485,7 @@ func (m *RemoveUserIPLimitReq) Reset() { *m = RemoveUserIPLimitReq{} }
func (m *RemoveUserIPLimitReq) String() string { return proto.CompactTextString(m) } func (m *RemoveUserIPLimitReq) String() string { return proto.CompactTextString(m) }
func (*RemoveUserIPLimitReq) ProtoMessage() {} func (*RemoveUserIPLimitReq) ProtoMessage() {}
func (*RemoveUserIPLimitReq) Descriptor() ([]byte, []int) { func (*RemoveUserIPLimitReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{42} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{44}
} }
func (m *RemoveUserIPLimitReq) XXX_Unmarshal(b []byte) error { func (m *RemoveUserIPLimitReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveUserIPLimitReq.Unmarshal(m, b) return xxx_messageInfo_RemoveUserIPLimitReq.Unmarshal(m, b)
@ -2429,7 +2537,7 @@ func (m *RemoveUserIPLimitResp) Reset() { *m = RemoveUserIPLimitResp{} }
func (m *RemoveUserIPLimitResp) String() string { return proto.CompactTextString(m) } func (m *RemoveUserIPLimitResp) String() string { return proto.CompactTextString(m) }
func (*RemoveUserIPLimitResp) ProtoMessage() {} func (*RemoveUserIPLimitResp) ProtoMessage() {}
func (*RemoveUserIPLimitResp) Descriptor() ([]byte, []int) { func (*RemoveUserIPLimitResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{43} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{45}
} }
func (m *RemoveUserIPLimitResp) XXX_Unmarshal(b []byte) error { func (m *RemoveUserIPLimitResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveUserIPLimitResp.Unmarshal(m, b) return xxx_messageInfo_RemoveUserIPLimitResp.Unmarshal(m, b)
@ -2467,7 +2575,7 @@ func (m *GetClientInitConfigReq) Reset() { *m = GetClientInitConfigReq{}
func (m *GetClientInitConfigReq) String() string { return proto.CompactTextString(m) } func (m *GetClientInitConfigReq) String() string { return proto.CompactTextString(m) }
func (*GetClientInitConfigReq) ProtoMessage() {} func (*GetClientInitConfigReq) ProtoMessage() {}
func (*GetClientInitConfigReq) Descriptor() ([]byte, []int) { func (*GetClientInitConfigReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{44} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{46}
} }
func (m *GetClientInitConfigReq) XXX_Unmarshal(b []byte) error { func (m *GetClientInitConfigReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetClientInitConfigReq.Unmarshal(m, b) return xxx_messageInfo_GetClientInitConfigReq.Unmarshal(m, b)
@ -2505,7 +2613,7 @@ func (m *GetClientInitConfigResp) Reset() { *m = GetClientInitConfigResp
func (m *GetClientInitConfigResp) String() string { return proto.CompactTextString(m) } func (m *GetClientInitConfigResp) String() string { return proto.CompactTextString(m) }
func (*GetClientInitConfigResp) ProtoMessage() {} func (*GetClientInitConfigResp) ProtoMessage() {}
func (*GetClientInitConfigResp) Descriptor() ([]byte, []int) { func (*GetClientInitConfigResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{45} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{47}
} }
func (m *GetClientInitConfigResp) XXX_Unmarshal(b []byte) error { func (m *GetClientInitConfigResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetClientInitConfigResp.Unmarshal(m, b) return xxx_messageInfo_GetClientInitConfigResp.Unmarshal(m, b)
@ -2544,7 +2652,7 @@ func (m *SetClientInitConfigReq) Reset() { *m = SetClientInitConfigReq{}
func (m *SetClientInitConfigReq) String() string { return proto.CompactTextString(m) } func (m *SetClientInitConfigReq) String() string { return proto.CompactTextString(m) }
func (*SetClientInitConfigReq) ProtoMessage() {} func (*SetClientInitConfigReq) ProtoMessage() {}
func (*SetClientInitConfigReq) Descriptor() ([]byte, []int) { func (*SetClientInitConfigReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{46} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{48}
} }
func (m *SetClientInitConfigReq) XXX_Unmarshal(b []byte) error { func (m *SetClientInitConfigReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetClientInitConfigReq.Unmarshal(m, b) return xxx_messageInfo_SetClientInitConfigReq.Unmarshal(m, b)
@ -2589,7 +2697,7 @@ func (m *SetClientInitConfigResp) Reset() { *m = SetClientInitConfigResp
func (m *SetClientInitConfigResp) String() string { return proto.CompactTextString(m) } func (m *SetClientInitConfigResp) String() string { return proto.CompactTextString(m) }
func (*SetClientInitConfigResp) ProtoMessage() {} func (*SetClientInitConfigResp) ProtoMessage() {}
func (*SetClientInitConfigResp) Descriptor() ([]byte, []int) { func (*SetClientInitConfigResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{47} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{49}
} }
func (m *SetClientInitConfigResp) XXX_Unmarshal(b []byte) error { func (m *SetClientInitConfigResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetClientInitConfigResp.Unmarshal(m, b) return xxx_messageInfo_SetClientInitConfigResp.Unmarshal(m, b)
@ -2631,7 +2739,7 @@ func (m *GetUserFriendsReq) Reset() { *m = GetUserFriendsReq{} }
func (m *GetUserFriendsReq) String() string { return proto.CompactTextString(m) } func (m *GetUserFriendsReq) String() string { return proto.CompactTextString(m) }
func (*GetUserFriendsReq) ProtoMessage() {} func (*GetUserFriendsReq) ProtoMessage() {}
func (*GetUserFriendsReq) Descriptor() ([]byte, []int) { func (*GetUserFriendsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{48} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{50}
} }
func (m *GetUserFriendsReq) XXX_Unmarshal(b []byte) error { func (m *GetUserFriendsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserFriendsReq.Unmarshal(m, b) return xxx_messageInfo_GetUserFriendsReq.Unmarshal(m, b)
@ -2700,7 +2808,7 @@ func (m *GetUserFriendsResp) Reset() { *m = GetUserFriendsResp{} }
func (m *GetUserFriendsResp) String() string { return proto.CompactTextString(m) } func (m *GetUserFriendsResp) String() string { return proto.CompactTextString(m) }
func (*GetUserFriendsResp) ProtoMessage() {} func (*GetUserFriendsResp) ProtoMessage() {}
func (*GetUserFriendsResp) Descriptor() ([]byte, []int) { func (*GetUserFriendsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{49} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{51}
} }
func (m *GetUserFriendsResp) XXX_Unmarshal(b []byte) error { func (m *GetUserFriendsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserFriendsResp.Unmarshal(m, b) return xxx_messageInfo_GetUserFriendsResp.Unmarshal(m, b)
@ -2761,7 +2869,7 @@ func (m *GetUserIDByEmailAndPhoneNumberReq) Reset() { *m = GetUserIDByEm
func (m *GetUserIDByEmailAndPhoneNumberReq) String() string { return proto.CompactTextString(m) } func (m *GetUserIDByEmailAndPhoneNumberReq) String() string { return proto.CompactTextString(m) }
func (*GetUserIDByEmailAndPhoneNumberReq) ProtoMessage() {} func (*GetUserIDByEmailAndPhoneNumberReq) ProtoMessage() {}
func (*GetUserIDByEmailAndPhoneNumberReq) Descriptor() ([]byte, []int) { func (*GetUserIDByEmailAndPhoneNumberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{50} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{52}
} }
func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_Unmarshal(b []byte) error { func (m *GetUserIDByEmailAndPhoneNumberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Unmarshal(m, b) return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberReq.Unmarshal(m, b)
@ -2814,7 +2922,7 @@ func (m *GetUserIDByEmailAndPhoneNumberResp) Reset() { *m = GetUserIDByE
func (m *GetUserIDByEmailAndPhoneNumberResp) String() string { return proto.CompactTextString(m) } func (m *GetUserIDByEmailAndPhoneNumberResp) String() string { return proto.CompactTextString(m) }
func (*GetUserIDByEmailAndPhoneNumberResp) ProtoMessage() {} func (*GetUserIDByEmailAndPhoneNumberResp) ProtoMessage() {}
func (*GetUserIDByEmailAndPhoneNumberResp) Descriptor() ([]byte, []int) { func (*GetUserIDByEmailAndPhoneNumberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_admin_cms_ab5a35fab6587b8a, []int{51} return fileDescriptor_admin_cms_49bc09b1772ecee1, []int{53}
} }
func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_Unmarshal(b []byte) error { func (m *GetUserIDByEmailAndPhoneNumberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Unmarshal(m, b) return xxx_messageInfo_GetUserIDByEmailAndPhoneNumberResp.Unmarshal(m, b)
@ -2852,6 +2960,8 @@ func init() {
proto.RegisterType((*CommonResp)(nil), "admin_cms.CommonResp") proto.RegisterType((*CommonResp)(nil), "admin_cms.CommonResp")
proto.RegisterType((*AdminLoginReq)(nil), "admin_cms.AdminLoginReq") proto.RegisterType((*AdminLoginReq)(nil), "admin_cms.AdminLoginReq")
proto.RegisterType((*AdminLoginResp)(nil), "admin_cms.AdminLoginResp") proto.RegisterType((*AdminLoginResp)(nil), "admin_cms.AdminLoginResp")
proto.RegisterType((*GetUserTokenReq)(nil), "admin_cms.GetUserTokenReq")
proto.RegisterType((*GetUserTokenResp)(nil), "admin_cms.GetUserTokenResp")
proto.RegisterType((*AddUserRegisterAddFriendIDListReq)(nil), "admin_cms.AddUserRegisterAddFriendIDListReq") proto.RegisterType((*AddUserRegisterAddFriendIDListReq)(nil), "admin_cms.AddUserRegisterAddFriendIDListReq")
proto.RegisterType((*AddUserRegisterAddFriendIDListResp)(nil), "admin_cms.AddUserRegisterAddFriendIDListResp") proto.RegisterType((*AddUserRegisterAddFriendIDListResp)(nil), "admin_cms.AddUserRegisterAddFriendIDListResp")
proto.RegisterType((*ReduceUserRegisterAddFriendIDListReq)(nil), "admin_cms.ReduceUserRegisterAddFriendIDListReq") proto.RegisterType((*ReduceUserRegisterAddFriendIDListReq)(nil), "admin_cms.ReduceUserRegisterAddFriendIDListReq")
@ -2936,6 +3046,7 @@ type AdminCMSClient interface {
SetClientInitConfig(ctx context.Context, in *SetClientInitConfigReq, opts ...grpc.CallOption) (*SetClientInitConfigResp, error) SetClientInitConfig(ctx context.Context, in *SetClientInitConfigReq, opts ...grpc.CallOption) (*SetClientInitConfigResp, error)
GetUserFriends(ctx context.Context, in *GetUserFriendsReq, opts ...grpc.CallOption) (*GetUserFriendsResp, error) GetUserFriends(ctx context.Context, in *GetUserFriendsReq, opts ...grpc.CallOption) (*GetUserFriendsResp, error)
GetUserIDByEmailAndPhoneNumber(ctx context.Context, in *GetUserIDByEmailAndPhoneNumberReq, opts ...grpc.CallOption) (*GetUserIDByEmailAndPhoneNumberResp, error) GetUserIDByEmailAndPhoneNumber(ctx context.Context, in *GetUserIDByEmailAndPhoneNumberReq, opts ...grpc.CallOption) (*GetUserIDByEmailAndPhoneNumberResp, error)
GetUserToken(ctx context.Context, in *GetUserTokenReq, opts ...grpc.CallOption) (*GetUserTokenResp, error)
} }
type adminCMSClient struct { type adminCMSClient struct {
@ -3144,6 +3255,15 @@ func (c *adminCMSClient) GetUserIDByEmailAndPhoneNumber(ctx context.Context, in
return out, nil return out, nil
} }
func (c *adminCMSClient) GetUserToken(ctx context.Context, in *GetUserTokenReq, opts ...grpc.CallOption) (*GetUserTokenResp, error) {
out := new(GetUserTokenResp)
err := grpc.Invoke(ctx, "/admin_cms.adminCMS/GetUserToken", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for AdminCMS service // Server API for AdminCMS service
type AdminCMSServer interface { type AdminCMSServer interface {
@ -3169,6 +3289,7 @@ type AdminCMSServer interface {
SetClientInitConfig(context.Context, *SetClientInitConfigReq) (*SetClientInitConfigResp, error) SetClientInitConfig(context.Context, *SetClientInitConfigReq) (*SetClientInitConfigResp, error)
GetUserFriends(context.Context, *GetUserFriendsReq) (*GetUserFriendsResp, error) GetUserFriends(context.Context, *GetUserFriendsReq) (*GetUserFriendsResp, error)
GetUserIDByEmailAndPhoneNumber(context.Context, *GetUserIDByEmailAndPhoneNumberReq) (*GetUserIDByEmailAndPhoneNumberResp, error) GetUserIDByEmailAndPhoneNumber(context.Context, *GetUserIDByEmailAndPhoneNumberReq) (*GetUserIDByEmailAndPhoneNumberResp, error)
GetUserToken(context.Context, *GetUserTokenReq) (*GetUserTokenResp, error)
} }
func RegisterAdminCMSServer(s *grpc.Server, srv AdminCMSServer) { func RegisterAdminCMSServer(s *grpc.Server, srv AdminCMSServer) {
@ -3571,6 +3692,24 @@ func _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler(srv interface{}, ctx conte
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _AdminCMS_GetUserToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetUserTokenReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AdminCMSServer).GetUserToken(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/admin_cms.adminCMS/GetUserToken",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AdminCMSServer).GetUserToken(ctx, req.(*GetUserTokenReq))
}
return interceptor(ctx, in, info, handler)
}
var _AdminCMS_serviceDesc = grpc.ServiceDesc{ var _AdminCMS_serviceDesc = grpc.ServiceDesc{
ServiceName: "admin_cms.adminCMS", ServiceName: "admin_cms.adminCMS",
HandlerType: (*AdminCMSServer)(nil), HandlerType: (*AdminCMSServer)(nil),
@ -3663,155 +3802,163 @@ var _AdminCMS_serviceDesc = grpc.ServiceDesc{
MethodName: "GetUserIDByEmailAndPhoneNumber", MethodName: "GetUserIDByEmailAndPhoneNumber",
Handler: _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler, Handler: _AdminCMS_GetUserIDByEmailAndPhoneNumber_Handler,
}, },
{
MethodName: "GetUserToken",
Handler: _AdminCMS_GetUserToken_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "admin_cms/admin_cms.proto", Metadata: "admin_cms/admin_cms.proto",
} }
func init() { func init() {
proto.RegisterFile("admin_cms/admin_cms.proto", fileDescriptor_admin_cms_ab5a35fab6587b8a) proto.RegisterFile("admin_cms/admin_cms.proto", fileDescriptor_admin_cms_49bc09b1772ecee1)
} }
var fileDescriptor_admin_cms_ab5a35fab6587b8a = []byte{ var fileDescriptor_admin_cms_49bc09b1772ecee1 = []byte{
// 2240 bytes of a gzipped FileDescriptorProto // 2301 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x1a, 0x4d, 0x6f, 0xdb, 0xc8, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x1a, 0x4d, 0x6f, 0x1c, 0x49,
0x15, 0xd4, 0x87, 0x3f, 0x9e, 0xe3, 0xaf, 0xb1, 0xe3, 0xc8, 0xcc, 0x6e, 0x6a, 0xb3, 0xf1, 0xd6, 0x55, 0x3d, 0x1f, 0xfe, 0x78, 0xfe, 0x2e, 0x3b, 0xce, 0xb8, 0xb3, 0x6b, 0xec, 0x26, 0x5e, 0x0c,
0x2d, 0x36, 0x76, 0xe1, 0xa0, 0x97, 0x2d, 0x90, 0xc2, 0xb1, 0x62, 0x55, 0x81, 0xed, 0xa8, 0x54, 0xda, 0xd8, 0xc8, 0x11, 0x97, 0x45, 0x0a, 0x72, 0x3c, 0xb1, 0x99, 0xc8, 0x76, 0x86, 0x9e, 0x78,
0xb2, 0x40, 0xdb, 0xc5, 0xba, 0x8c, 0x34, 0x56, 0x08, 0x5b, 0xe4, 0x84, 0x43, 0x79, 0x13, 0x2c, 0x25, 0x60, 0xb5, 0xa6, 0x33, 0x53, 0x9e, 0xb4, 0xec, 0xe9, 0xae, 0x74, 0xb5, 0xbd, 0xb1, 0x56,
0xf6, 0xba, 0x97, 0x5e, 0x0a, 0x14, 0xc8, 0xa1, 0xe7, 0xde, 0x7a, 0xe8, 0xa1, 0x40, 0x8f, 0x05, 0x7b, 0xdd, 0x0b, 0x17, 0x24, 0x24, 0x0e, 0x9c, 0xb9, 0x71, 0xe0, 0x80, 0xc4, 0x11, 0x89, 0xdf,
0xfa, 0x3b, 0x7a, 0x28, 0x8a, 0xfe, 0x8a, 0xde, 0x8a, 0x99, 0xe1, 0xc7, 0xcc, 0x90, 0x92, 0x18, 0xc1, 0x21, 0x42, 0xfc, 0x0a, 0x6e, 0xa8, 0xaa, 0xfa, 0xa3, 0xaa, 0xba, 0x67, 0xa6, 0xd3, 0x8e,
0x3a, 0xc8, 0x4d, 0xef, 0xcd, 0x9b, 0xf7, 0xe6, 0x7d, 0xce, 0x9b, 0x47, 0xc1, 0xa6, 0xd3, 0x1f, 0x72, 0x9b, 0xf7, 0xfa, 0xd5, 0xfb, 0xae, 0x57, 0xaf, 0x5e, 0x0d, 0xac, 0x39, 0xbd, 0x81, 0xeb,
0xba, 0xde, 0x79, 0x6f, 0x48, 0xf7, 0x93, 0x5f, 0x7b, 0x24, 0xf0, 0x43, 0x1f, 0xcd, 0x27, 0x08, 0x9d, 0x77, 0x07, 0x74, 0x37, 0xf9, 0xb5, 0x43, 0x02, 0x3f, 0xf4, 0xd1, 0x74, 0x82, 0x30, 0xb7,
0x73, 0xf7, 0x19, 0xc1, 0xde, 0x83, 0xf6, 0xe9, 0x83, 0x2e, 0x0e, 0xae, 0x71, 0xb0, 0x4f, 0x2e, 0x5f, 0x10, 0xec, 0x3d, 0x6a, 0x9d, 0x3c, 0xea, 0xe0, 0xe0, 0x06, 0x07, 0xbb, 0xe4, 0xb2, 0xbf,
0x07, 0xfb, 0x9c, 0x68, 0x9f, 0xf6, 0x2f, 0xcf, 0xbf, 0xa1, 0xfb, 0xdf, 0x44, 0x9b, 0xac, 0x47, 0xcb, 0x89, 0x76, 0x69, 0xef, 0xf2, 0xfc, 0x1b, 0xba, 0xfb, 0x4d, 0xb4, 0xc8, 0x7a, 0x02, 0x70,
0x00, 0x47, 0xfe, 0x70, 0xe8, 0x7b, 0x36, 0xa6, 0x04, 0x35, 0x60, 0x16, 0x07, 0xc1, 0x91, 0xdf, 0xe0, 0x0f, 0x06, 0xbe, 0x67, 0x63, 0x4a, 0x50, 0x03, 0x26, 0x71, 0x10, 0x1c, 0xf8, 0x3d, 0xdc,
0xc7, 0x0d, 0x63, 0xcb, 0xd8, 0xad, 0xdb, 0x31, 0x88, 0x36, 0x60, 0x06, 0x07, 0xc1, 0x29, 0x1d, 0x30, 0x36, 0x8c, 0xed, 0xba, 0x1d, 0x83, 0x68, 0x15, 0x26, 0x70, 0x10, 0x9c, 0xd0, 0x7e, 0xa3,
0x34, 0x2a, 0x5b, 0xc6, 0xee, 0xbc, 0x1d, 0x41, 0x56, 0x0f, 0x16, 0x0f, 0x99, 0xd8, 0x13, 0x7f, 0xb2, 0x61, 0x6c, 0x4f, 0xdb, 0x11, 0x64, 0x75, 0x61, 0x6e, 0x9f, 0x89, 0x3d, 0xf6, 0xfb, 0xae,
0xe0, 0x7a, 0x36, 0x7e, 0x8d, 0xb6, 0x60, 0xc1, 0x27, 0x38, 0x70, 0x42, 0xd7, 0xf7, 0xda, 0x4d, 0x67, 0xe3, 0x37, 0x68, 0x03, 0x66, 0x7c, 0x82, 0x03, 0x27, 0x74, 0x7d, 0xaf, 0xd5, 0xe4, 0x6c,
0xce, 0x66, 0xde, 0x96, 0x51, 0x4c, 0x08, 0x3f, 0x69, 0xbb, 0x19, 0xf1, 0x8a, 0x41, 0x26, 0x84, 0xa6, 0x6d, 0x19, 0xc5, 0x84, 0x70, 0x4d, 0x5b, 0xcd, 0x88, 0x57, 0x0c, 0x32, 0x21, 0x14, 0x77,
0xe2, 0x5e, 0x80, 0xc3, 0x46, 0x55, 0x08, 0x11, 0x90, 0xf5, 0x47, 0x03, 0x96, 0x64, 0x29, 0x94, 0x03, 0x1c, 0x36, 0xaa, 0x42, 0x88, 0x80, 0xac, 0x3f, 0x1a, 0x30, 0x2f, 0x4b, 0xa1, 0x04, 0xad,
0xa0, 0x75, 0xa8, 0x87, 0xfe, 0x25, 0xf6, 0x22, 0x01, 0x02, 0x40, 0x26, 0xcc, 0x8d, 0x28, 0x0e, 0x40, 0x3d, 0xf4, 0x2f, 0xb1, 0x17, 0x09, 0x10, 0x00, 0x32, 0x61, 0xea, 0x9a, 0xe2, 0xe0, 0xd4,
0xce, 0x9c, 0x21, 0x8e, 0x78, 0x27, 0x30, 0x13, 0x7b, 0xe1, 0xf4, 0xf0, 0x0b, 0xfb, 0x24, 0xe2, 0x19, 0xe0, 0x88, 0x77, 0x02, 0x33, 0xb1, 0x17, 0x4e, 0x17, 0x9f, 0xd9, 0xc7, 0x11, 0xf7, 0x18,
0x1e, 0x83, 0xe8, 0x67, 0x00, 0xbd, 0xc4, 0x06, 0x8d, 0xda, 0x96, 0xb1, 0xbb, 0x70, 0x70, 0x7b, 0x44, 0x3f, 0x03, 0xe8, 0x26, 0x3e, 0x68, 0xd4, 0x36, 0x8c, 0xed, 0x99, 0xbd, 0x7b, 0x3b, 0xa9,
0x2f, 0x35, 0x6f, 0x6a, 0x20, 0x5b, 0x22, 0xb4, 0x30, 0x6c, 0x1f, 0xf6, 0xfb, 0x2f, 0x28, 0x0e, 0x7b, 0x53, 0x07, 0xd9, 0x12, 0xa1, 0x75, 0x09, 0x0b, 0x47, 0x38, 0x3c, 0xa3, 0x38, 0x78, 0xc9,
0x6c, 0x3c, 0x70, 0x69, 0x88, 0x83, 0xc3, 0x7e, 0xff, 0x38, 0x70, 0xb1, 0xd7, 0x6f, 0x37, 0x4f, 0x84, 0x17, 0x33, 0x7e, 0x15, 0x26, 0x98, 0x46, 0x89, 0xed, 0x11, 0x84, 0xd6, 0x01, 0xc8, 0x95,
0x5c, 0x1a, 0x16, 0x33, 0xc7, 0x3d, 0x00, 0x76, 0x46, 0xb1, 0xa5, 0x51, 0xd9, 0xaa, 0xee, 0xce, 0x13, 0x5e, 0xf8, 0xc1, 0xa0, 0xd5, 0xe4, 0x0a, 0xd6, 0x6d, 0x09, 0x63, 0xdd, 0xc2, 0xa2, 0x2a,
0xdb, 0x12, 0xc6, 0xfa, 0x2d, 0x58, 0xd3, 0xc4, 0x50, 0xa2, 0xe9, 0x60, 0x14, 0xd5, 0xe1, 0x7b, 0x8c, 0x12, 0x4d, 0x6f, 0xa3, 0xa0, 0xde, 0xa9, 0xeb, 0x2a, 0xb2, 0xeb, 0x58, 0xe8, 0xdf, 0x92,
0x03, 0xee, 0xdb, 0xb8, 0x3f, 0xea, 0xe1, 0x1b, 0xeb, 0xf1, 0x09, 0xcc, 0x27, 0x20, 0x37, 0x7e, 0x97, 0xee, 0x00, 0x73, 0xe9, 0x55, 0x3b, 0x06, 0x2d, 0x0c, 0x9b, 0xfb, 0xbd, 0x1e, 0x13, 0x6d,
0xdd, 0x4e, 0x11, 0x9a, 0x96, 0xd5, 0x8c, 0x96, 0x5f, 0xc3, 0x4e, 0x81, 0x73, 0x94, 0x57, 0xf4, 0xe3, 0xbe, 0x4b, 0x43, 0x1c, 0xec, 0xf7, 0x7a, 0x87, 0x81, 0x8b, 0xbd, 0x5e, 0xab, 0x79, 0xec,
0xf7, 0x06, 0x6c, 0xb7, 0x70, 0x78, 0x63, 0x2d, 0x9b, 0x00, 0xc4, 0x19, 0xb8, 0x5e, 0xaa, 0xe6, 0xd2, 0xb0, 0x98, 0xe5, 0xeb, 0x00, 0xc2, 0x56, 0xb6, 0xa4, 0x51, 0xd9, 0xa8, 0x6e, 0x4f, 0xdb,
0xc2, 0xc1, 0xfd, 0x3d, 0xca, 0xd3, 0xec, 0xdc, 0x21, 0xee, 0x39, 0x71, 0x02, 0x67, 0x48, 0xf7, 0x12, 0xc6, 0xfa, 0x2d, 0x58, 0xe3, 0xc4, 0x94, 0xb6, 0xd9, 0xfa, 0xde, 0x80, 0x87, 0x36, 0xee,
0x6c, 0xfc, 0x7a, 0x84, 0x69, 0xd8, 0x49, 0x68, 0x6d, 0x69, 0x9f, 0xf5, 0x5f, 0x03, 0xac, 0x69, 0x5d, 0x77, 0xf1, 0x9d, 0xed, 0xf8, 0x04, 0xa6, 0x13, 0x90, 0xbb, 0xb0, 0x6e, 0xa7, 0x08, 0xcd,
0xa7, 0xa1, 0x04, 0xfd, 0x02, 0x6e, 0x71, 0x13, 0x79, 0x17, 0x3e, 0x37, 0x9b, 0xb1, 0x55, 0xdd, 0xca, 0x6a, 0xc6, 0xca, 0xaf, 0x61, 0xab, 0x80, 0x1e, 0xe5, 0x0d, 0xfd, 0xbd, 0x01, 0x9b, 0x51,
0x5d, 0x38, 0xb8, 0x9b, 0x23, 0xee, 0x45, 0x44, 0x66, 0x2b, 0x1b, 0xd0, 0x93, 0x9c, 0xd3, 0xee, 0xa2, 0xdc, 0xc9, 0xca, 0x26, 0x00, 0x71, 0xfa, 0xae, 0x97, 0x9a, 0x39, 0xb3, 0xf7, 0x70, 0x87,
0xe4, 0x9e, 0x96, 0x12, 0xdf, 0xa3, 0x38, 0xff, 0xb8, 0x9a, 0xcd, 0xab, 0x45, 0x6d, 0xfe, 0x8f, 0xf2, 0x72, 0x72, 0xee, 0x10, 0xf7, 0x9c, 0x38, 0x81, 0x33, 0xa0, 0x3b, 0x36, 0x7e, 0x73, 0x8d,
0x0a, 0x2c, 0xb5, 0x70, 0x78, 0xf4, 0xca, 0x09, 0x4f, 0xfc, 0x01, 0x65, 0x06, 0x6e, 0xc0, 0x6c, 0x69, 0xd8, 0x4e, 0x68, 0x6d, 0x69, 0x9d, 0xf5, 0x5f, 0x03, 0xac, 0x71, 0xda, 0x50, 0x82, 0x7e,
0xcf, 0xf7, 0x42, 0xec, 0x85, 0x91, 0x71, 0x63, 0x50, 0xe4, 0x3e, 0xd3, 0x3e, 0x2e, 0x30, 0x02, 0x01, 0xb3, 0xdc, 0x45, 0xde, 0x85, 0xcf, 0xdd, 0x66, 0x6c, 0x54, 0xb7, 0x67, 0xf6, 0x1e, 0xe4,
0x62, 0xf8, 0x00, 0xf7, 0xae, 0xdb, 0xcd, 0xb8, 0x26, 0x08, 0x88, 0xa5, 0x3a, 0xa3, 0x78, 0xee, 0x88, 0x3b, 0x8b, 0xc8, 0x6c, 0x65, 0x01, 0x7a, 0x96, 0xa3, 0xed, 0x56, 0xae, 0xb6, 0x94, 0xf8,
0x0e, 0x31, 0x4f, 0xd9, 0x79, 0x3b, 0x81, 0x99, 0x1b, 0x29, 0xa6, 0xd4, 0xf5, 0xbd, 0xe7, 0x6f, 0x1e, 0xc5, 0xf9, 0xea, 0x6a, 0x3e, 0xaf, 0x16, 0xf5, 0xf9, 0x3f, 0x2b, 0x30, 0x7f, 0x84, 0xc3,
0x09, 0x6e, 0xd4, 0x79, 0x30, 0xca, 0x28, 0x46, 0x11, 0x09, 0xe6, 0x14, 0x33, 0x82, 0x42, 0x42, 0x83, 0xd7, 0x4e, 0x78, 0xec, 0xf7, 0x29, 0x73, 0x70, 0x03, 0x26, 0xbb, 0xbe, 0x17, 0x62, 0x2f,
0x69, 0x8e, 0x9e, 0x2d, 0xe7, 0x68, 0x3d, 0xa0, 0xe6, 0xb2, 0x01, 0x65, 0xc2, 0x9c, 0x4f, 0xb8, 0x8c, 0x9c, 0x1b, 0x83, 0xa2, 0xc6, 0x31, 0xeb, 0xe3, 0x02, 0x20, 0x20, 0x86, 0x0f, 0x70, 0xf7,
0xfb, 0x9a, 0x8d, 0x79, 0xa1, 0x47, 0x0c, 0x5b, 0x7f, 0xad, 0xc1, 0x6c, 0x64, 0x3d, 0xa1, 0x13, 0x26, 0xda, 0xfc, 0xd3, 0x76, 0x04, 0xb1, 0x92, 0xc6, 0x28, 0xf8, 0xc6, 0xac, 0x89, 0x92, 0x16,
0x13, 0x7e, 0x4a, 0x07, 0x69, 0x68, 0x4a, 0x28, 0xae, 0xd3, 0x95, 0x8b, 0xbd, 0x50, 0x50, 0x08, 0xc3, 0x2c, 0x8c, 0x14, 0x53, 0xea, 0xfa, 0xde, 0xcb, 0x5b, 0x82, 0x1b, 0x75, 0x9e, 0x8c, 0x32,
0x33, 0xca, 0x28, 0xc9, 0xc6, 0xd5, 0x31, 0x36, 0xae, 0x29, 0x36, 0x6e, 0xc0, 0xec, 0x20, 0xf0, 0x8a, 0x51, 0x44, 0x82, 0x39, 0xc5, 0x84, 0xa0, 0x90, 0x50, 0x5a, 0xa0, 0x27, 0xcb, 0x05, 0x5a,
0x47, 0xa4, 0xdd, 0xe4, 0x36, 0x9c, 0xb7, 0x63, 0x10, 0x59, 0x70, 0x8b, 0xd1, 0x9c, 0xb9, 0xbd, 0x4f, 0xa8, 0xa9, 0x6c, 0x42, 0x99, 0x30, 0xe5, 0x93, 0x33, 0x51, 0xfa, 0xa6, 0x85, 0x1d, 0x31,
0x4b, 0x8f, 0x15, 0xdb, 0x19, 0xbe, 0xac, 0xe0, 0xd0, 0x4f, 0x60, 0x85, 0xf1, 0xc7, 0x41, 0xe7, 0x6c, 0xfd, 0xad, 0x06, 0x93, 0x91, 0xf7, 0x84, 0x4d, 0x4c, 0xf8, 0x09, 0xed, 0xa7, 0xa9, 0x29,
0xca, 0x09, 0x2f, 0xfc, 0x60, 0xd8, 0x6e, 0x72, 0x3b, 0xd6, 0xed, 0x0c, 0x1e, 0x7d, 0x06, 0x4b, 0xa1, 0xb8, 0x4d, 0x57, 0x2e, 0xf6, 0x42, 0x41, 0x21, 0xdc, 0x28, 0xa3, 0x24, 0x1f, 0x57, 0x87,
0x02, 0x97, 0x70, 0x14, 0xa6, 0xd2, 0xb0, 0xe8, 0x3e, 0x2c, 0x0a, 0xcc, 0x71, 0x54, 0xca, 0x85, 0xf8, 0xb8, 0xa6, 0xf8, 0xb8, 0x01, 0x93, 0xfd, 0xc0, 0xbf, 0x26, 0xad, 0x26, 0xf7, 0xe1, 0xb4,
0xc9, 0x54, 0x24, 0x2b, 0x45, 0xfc, 0xa0, 0xfc, 0x1e, 0x00, 0x4e, 0x91, 0x22, 0xf4, 0xe8, 0x58, 0x1d, 0x83, 0xc8, 0x82, 0x59, 0x46, 0x73, 0xea, 0x76, 0x2f, 0x3d, 0x76, 0xa8, 0x4c, 0xf0, 0xcf,
0xc8, 0x46, 0x47, 0x03, 0x66, 0x87, 0x74, 0x70, 0x1c, 0xf8, 0xc3, 0xc6, 0x2d, 0x71, 0x0d, 0x46, 0x0a, 0x0e, 0xfd, 0x04, 0x16, 0x19, 0x7f, 0x1c, 0xb4, 0xd3, 0x02, 0x3e, 0xc9, 0x1d, 0x9d, 0xc1,
0xa0, 0x1e, 0x37, 0x8b, 0xd9, 0xb8, 0x91, 0x22, 0x7c, 0x29, 0x1b, 0xe1, 0xa1, 0x13, 0x8e, 0x68, 0xa3, 0xcf, 0x60, 0x5e, 0xe0, 0x12, 0x8e, 0xc2, 0x55, 0x1a, 0x16, 0x3d, 0x84, 0x39, 0x81, 0x39,
0x63, 0x99, 0x6f, 0x8b, 0x20, 0x25, 0x92, 0x57, 0xb6, 0x8c, 0xdd, 0xaa, 0x14, 0xc9, 0xf7, 0x00, 0x8c, 0x8e, 0x2c, 0xe1, 0x32, 0x15, 0xc9, 0x4a, 0x11, 0x57, 0x94, 0x9f, 0x77, 0xc0, 0x29, 0x52,
0x7a, 0x01, 0x76, 0x42, 0xcc, 0x57, 0x57, 0xf9, 0xaa, 0x84, 0x41, 0x4b, 0x50, 0xc1, 0x6f, 0x1a, 0x84, 0x9e, 0x1d, 0x33, 0xd9, 0xec, 0x68, 0xc0, 0xe4, 0x80, 0xf6, 0x0f, 0x03, 0x7f, 0xd0, 0x98,
0x88, 0x0b, 0xaa, 0xe0, 0x37, 0xd6, 0x7f, 0x0c, 0x58, 0x56, 0x52, 0x8e, 0x12, 0xb4, 0x07, 0x73, 0x15, 0xc7, 0x7d, 0x04, 0xea, 0x79, 0x33, 0x97, 0xcd, 0x1b, 0x29, 0xc3, 0xe7, 0xb3, 0x19, 0x1e,
0xbd, 0x08, 0x8e, 0x2a, 0x08, 0x92, 0x73, 0x57, 0x2c, 0xd9, 0x09, 0xcd, 0x87, 0x2a, 0x1a, 0xcc, 0x3a, 0xe1, 0x35, 0x6d, 0x2c, 0xf0, 0x65, 0x11, 0xa4, 0x64, 0xf2, 0x22, 0x3f, 0x62, 0xd2, 0x4c,
0x54, 0x11, 0xcb, 0xb3, 0xd1, 0x90, 0x47, 0x1c, 0x33, 0x55, 0x8a, 0x2a, 0x7b, 0xef, 0x3e, 0x84, 0x5e, 0x07, 0xe8, 0x06, 0xd8, 0x09, 0x31, 0xff, 0xba, 0xc4, 0xbf, 0x4a, 0x18, 0x34, 0x0f, 0x15,
0xc5, 0x6e, 0xe8, 0x84, 0x2e, 0x0d, 0xdd, 0x1e, 0x2f, 0x2a, 0x08, 0x6a, 0x17, 0xcc, 0x57, 0x22, 0xfc, 0xb6, 0x81, 0xb8, 0xa0, 0x0a, 0x7e, 0x6b, 0xfd, 0xc7, 0xe0, 0x87, 0x6f, 0xba, 0xe5, 0x28,
0x27, 0xf8, 0x6f, 0x66, 0x98, 0xd0, 0x8f, 0x72, 0xa0, 0x12, 0xfa, 0x56, 0x08, 0x2b, 0x2d, 0x1c, 0x41, 0x3b, 0x30, 0xd5, 0x8d, 0xe0, 0xa8, 0x82, 0x20, 0x79, 0xef, 0x8a, 0x4f, 0x76, 0x42, 0xf3,
0x1e, 0xf6, 0x42, 0xf7, 0x3a, 0xba, 0x62, 0x5e, 0xa3, 0x47, 0xb0, 0x48, 0x65, 0x46, 0xd1, 0x6d, 0xa1, 0x8a, 0x06, 0x73, 0x55, 0xc4, 0xf2, 0xf4, 0x7a, 0x10, 0x1d, 0xdd, 0x32, 0xaa, 0x6c, 0x7f,
0xd2, 0x90, 0x8e, 0xa0, 0x08, 0xb2, 0x55, 0x72, 0x3d, 0xb9, 0x2b, 0x99, 0xe4, 0xb6, 0xbe, 0x86, 0xf1, 0x18, 0xe6, 0x3a, 0xa1, 0x13, 0xba, 0x34, 0x74, 0xbb, 0xbc, 0xa8, 0x20, 0xa8, 0x5d, 0xb0,
0x39, 0x21, 0x8c, 0x12, 0xe6, 0x66, 0xcf, 0xed, 0x5d, 0xf2, 0x98, 0x14, 0x27, 0x4d, 0x60, 0x16, 0x58, 0x89, 0x3d, 0xc1, 0x7f, 0x33, 0xc7, 0x84, 0x7e, 0xb4, 0x07, 0x2a, 0xa1, 0x6f, 0x85, 0xbc,
0x1a, 0xe2, 0x2e, 0x8c, 0x8b, 0x9f, 0x80, 0x98, 0xfb, 0x87, 0x98, 0x52, 0x67, 0x80, 0x53, 0x13, 0x4f, 0xd8, 0xef, 0x86, 0xee, 0x4d, 0x74, 0xc4, 0xbc, 0x41, 0x4f, 0x60, 0x8e, 0xca, 0x8c, 0xa2,
0x4a, 0x18, 0x6b, 0x04, 0xab, 0x9a, 0x56, 0x94, 0xa0, 0x1f, 0x43, 0x9d, 0xfd, 0x8e, 0x9d, 0xbd, 0xd3, 0xa4, 0x21, 0xa9, 0xa0, 0x08, 0xb2, 0x55, 0x72, 0x7d, 0x73, 0x57, 0x32, 0x9b, 0xdb, 0xfa,
0x26, 0xa9, 0x13, 0xd3, 0xd8, 0x82, 0x42, 0xf3, 0x40, 0xa5, 0xa8, 0x07, 0x64, 0xb1, 0x2d, 0x96, 0x1a, 0xa6, 0x84, 0x30, 0x4a, 0x58, 0x98, 0x3d, 0xb7, 0x7b, 0xc9, 0x73, 0x52, 0x68, 0x9a, 0xc0,
0x57, 0x1f, 0xc7, 0x9a, 0x7f, 0x32, 0x60, 0x3e, 0x12, 0x47, 0x09, 0x4b, 0xf2, 0x56, 0x92, 0xe4, 0xa3, 0xba, 0x9f, 0x01, 0xa6, 0xd4, 0xe9, 0xe3, 0xd4, 0x85, 0x12, 0xc6, 0xba, 0x86, 0x25, 0xcd,
0xc2, 0xa0, 0x29, 0x82, 0xa5, 0x21, 0x07, 0xda, 0xfd, 0xb8, 0xc9, 0x8c, 0x40, 0x66, 0xd3, 0xd3, 0x2a, 0x4a, 0xd0, 0x8f, 0xa1, 0xce, 0x7e, 0xc7, 0xc1, 0x5e, 0x96, 0xcc, 0x89, 0x69, 0x6c, 0x41,
0x8c, 0x4d, 0x53, 0x4c, 0xd9, 0xa8, 0x7c, 0x0b, 0x48, 0xb7, 0x09, 0x25, 0xe8, 0x73, 0x98, 0xe1, 0xa1, 0x45, 0xa0, 0x52, 0x34, 0x02, 0xb2, 0xd8, 0x23, 0xb6, 0xaf, 0x3e, 0x8e, 0x37, 0xff, 0x6c,
0x40, 0xec, 0x8c, 0x75, 0x89, 0x51, 0x42, 0x65, 0x47, 0x34, 0x65, 0xdd, 0xf1, 0x10, 0x16, 0x9a, 0xc0, 0x74, 0x24, 0x8e, 0x12, 0xb6, 0xc9, 0x8f, 0x92, 0x4d, 0x2e, 0x1c, 0x9a, 0x22, 0xd8, 0x36,
0x4e, 0xc8, 0x0e, 0xcf, 0x2f, 0x7d, 0x04, 0x35, 0x06, 0xc6, 0xe9, 0xc0, 0x7e, 0xa3, 0x15, 0xa8, 0xe4, 0x40, 0xab, 0x17, 0x37, 0xd3, 0x11, 0xc8, 0x7c, 0x7a, 0x92, 0xf1, 0x69, 0x8a, 0x29, 0x9b,
0x32, 0x6d, 0x45, 0x5b, 0xc6, 0x7e, 0x5a, 0xdf, 0xc2, 0x9d, 0x16, 0x0e, 0x23, 0xbd, 0xd5, 0x7c, 0x95, 0xb7, 0x80, 0x74, 0x9f, 0x50, 0x82, 0x3e, 0x87, 0x09, 0x0e, 0xc4, 0xc1, 0x58, 0x91, 0x18,
0x7a, 0xa4, 0x25, 0xd8, 0x74, 0x4f, 0x76, 0x75, 0x4f, 0x3e, 0xcb, 0x7a, 0x52, 0x42, 0x59, 0xff, 0x25, 0x54, 0x76, 0x44, 0x53, 0x36, 0x1c, 0x8f, 0x61, 0xa6, 0xe9, 0x84, 0x4c, 0x79, 0x7e, 0xe8,
0xac, 0x40, 0x23, 0x5f, 0x3a, 0xb7, 0xd9, 0x6a, 0x27, 0x70, 0xaf, 0x9d, 0x10, 0x4b, 0x7e, 0x12, 0x23, 0xa8, 0x31, 0x30, 0xde, 0x0e, 0xec, 0x37, 0x5a, 0x84, 0x2a, 0xb3, 0x56, 0xb4, 0x65, 0xec,
0xcf, 0x91, 0xec, 0x02, 0xda, 0x85, 0x65, 0x6e, 0x3d, 0x89, 0x56, 0x68, 0xa9, 0xa3, 0xd1, 0x09, 0xa7, 0xf5, 0x2d, 0xdc, 0x3f, 0xc2, 0x61, 0x64, 0xb7, 0xba, 0x9f, 0x9e, 0x68, 0x1b, 0x6c, 0x7c,
0xdc, 0xce, 0x6c, 0x4f, 0xba, 0xd1, 0x85, 0x83, 0x0d, 0x49, 0x3d, 0xc9, 0x9c, 0x76, 0xfe, 0x26, 0x24, 0x3b, 0x7a, 0x24, 0x5f, 0x64, 0x23, 0x29, 0xa1, 0xac, 0x7f, 0x55, 0xa0, 0x91, 0x2f, 0x9d,
0xf4, 0x4b, 0x58, 0xd3, 0x04, 0x70, 0x5e, 0xb5, 0x89, 0xbc, 0xf2, 0xb6, 0x68, 0x5e, 0xaf, 0x17, 0xfb, 0x6c, 0xa9, 0x1d, 0xb8, 0x37, 0x4e, 0x88, 0xa5, 0x38, 0x89, 0x6b, 0x57, 0xf6, 0x03, 0xda,
0x0f, 0xb8, 0xdb, 0x2d, 0x1c, 0x72, 0x86, 0x1f, 0xdb, 0x7d, 0x7f, 0xab, 0xc0, 0x46, 0x9e, 0x6c, 0x86, 0x05, 0xee, 0x3d, 0x89, 0x56, 0x58, 0xa9, 0xa3, 0xd1, 0x31, 0xdc, 0xcb, 0x2c, 0x4f, 0xba,
0x4a, 0xd8, 0xa5, 0xdf, 0xf6, 0xd8, 0x05, 0x45, 0x45, 0x16, 0xa4, 0xbe, 0xcb, 0xe0, 0xd9, 0x65, 0xd1, 0x99, 0xbd, 0x55, 0xc9, 0x3c, 0xc9, 0x9d, 0x76, 0xfe, 0x22, 0xf4, 0x4b, 0x58, 0xd6, 0x04,
0xfe, 0xdc, 0x0f, 0x9d, 0xab, 0x84, 0x50, 0x38, 0x4e, 0x45, 0xa2, 0xa7, 0xb0, 0xae, 0xef, 0x2c, 0x70, 0x5e, 0xb5, 0x91, 0xbc, 0xf2, 0x96, 0x68, 0x51, 0xaf, 0x17, 0x4f, 0xb8, 0x7b, 0x47, 0x38,
0xe0, 0xb5, 0xdc, 0x3d, 0xa8, 0x09, 0xab, 0x0a, 0xf3, 0x02, 0x2e, 0xcb, 0x6e, 0x28, 0xeb, 0xb0, 0xe4, 0x0c, 0x3f, 0x76, 0xf8, 0xfe, 0x5e, 0x81, 0xd5, 0x3c, 0xd9, 0x94, 0xb0, 0x43, 0xbf, 0xe5,
0x37, 0xb0, 0x1e, 0xf5, 0xfc, 0x1f, 0xdb, 0x5f, 0xef, 0xaa, 0x3c, 0x56, 0x74, 0xd1, 0x94, 0xb0, 0xb1, 0x03, 0x8a, 0x8a, 0x5d, 0x90, 0xc6, 0x2e, 0x83, 0x67, 0x87, 0xf9, 0x4b, 0x3f, 0x74, 0xae,
0xec, 0x89, 0x0d, 0xc5, 0x56, 0x53, 0x6f, 0xe9, 0x68, 0xe6, 0xac, 0xf4, 0x9e, 0x91, 0x9c, 0xa5, 0x12, 0x42, 0x11, 0x38, 0x15, 0x89, 0x9e, 0xc3, 0x8a, 0xbe, 0xb2, 0x40, 0xd4, 0x72, 0xd7, 0xa0,
0x20, 0x59, 0x5f, 0xc8, 0xed, 0x15, 0x13, 0x89, 0xf2, 0xaa, 0xe0, 0x58, 0xe6, 0x68, 0xcc, 0x8b, 0x26, 0x2c, 0x29, 0xcc, 0x0b, 0x84, 0x2c, 0xbb, 0xa0, 0x6c, 0xc0, 0xde, 0xc2, 0x4a, 0xd4, 0xf3,
0x64, 0x4e, 0xce, 0x16, 0xe6, 0x4e, 0x45, 0x3c, 0xe7, 0x53, 0x9f, 0xec, 0xce, 0xcc, 0x06, 0xf4, 0x7f, 0xec, 0x78, 0xfd, 0xa9, 0xca, 0x73, 0x45, 0x17, 0x4d, 0x09, 0xdb, 0x3d, 0xb1, 0xa3, 0xd8,
0x18, 0x56, 0xe4, 0xf3, 0x71, 0x26, 0x33, 0x13, 0x99, 0x64, 0xe8, 0xb5, 0x90, 0x98, 0x2d, 0x1a, 0xd7, 0x34, 0x5a, 0x3a, 0x9a, 0x05, 0x2b, 0x3d, 0x67, 0xa4, 0x60, 0x29, 0x48, 0xd6, 0x17, 0x72,
0x12, 0xaf, 0x61, 0xb3, 0x85, 0x3d, 0xe6, 0x28, 0xdc, 0xf6, 0xae, 0xdd, 0x90, 0x3b, 0xec, 0xc8, 0x7f, 0xc5, 0x44, 0xa2, 0xbc, 0x2a, 0x38, 0xb6, 0x73, 0x34, 0xe6, 0x45, 0x76, 0x4e, 0xce, 0x12,
0xef, 0xe3, 0xc2, 0x93, 0x94, 0x9e, 0xdf, 0xc7, 0x27, 0x38, 0x7e, 0x70, 0xc7, 0x60, 0xbc, 0x92, 0x16, 0x4e, 0x45, 0x3c, 0xe7, 0x53, 0x1f, 0x1d, 0xce, 0xcc, 0x02, 0xf4, 0x14, 0x16, 0x65, 0xfd,
0xba, 0x20, 0x06, 0xad, 0x2e, 0x98, 0xe3, 0x44, 0x96, 0x7f, 0x5d, 0xff, 0xc5, 0xe0, 0x01, 0xa6, 0x38, 0x93, 0x89, 0x91, 0x4c, 0x32, 0xf4, 0x5a, 0x4a, 0x4c, 0x16, 0x4d, 0x89, 0x37, 0xb0, 0x76,
0x32, 0xa4, 0xc5, 0x94, 0x40, 0x50, 0x63, 0x67, 0x8b, 0xe2, 0x96, 0xff, 0x96, 0x5a, 0xe5, 0xaa, 0x84, 0x3d, 0x16, 0x28, 0xdc, 0xf2, 0x6e, 0xdc, 0x90, 0x07, 0xec, 0xc0, 0xef, 0xe1, 0xc2, 0x13,
0xd2, 0x2a, 0xab, 0x8f, 0xb2, 0x5a, 0xc9, 0xd7, 0xf7, 0x9f, 0x0d, 0x58, 0x72, 0x95, 0xa3, 0xb2, 0xa3, 0xae, 0xdf, 0xc3, 0xc7, 0x38, 0xbe, 0x70, 0xc7, 0x60, 0xfc, 0x25, 0x0d, 0x41, 0x0c, 0x5a,
0xf7, 0x87, 0x8a, 0x89, 0x4e, 0xaa, 0xd3, 0xa9, 0xfd, 0xb8, 0x30, 0xba, 0xdc, 0x8f, 0x9b, 0x30, 0x1d, 0x30, 0x87, 0x89, 0x2c, 0x7f, 0xbb, 0xfe, 0xab, 0xc1, 0x13, 0x4c, 0x65, 0x48, 0x8b, 0x19,
0x77, 0xe5, 0xd0, 0x90, 0xaf, 0x8a, 0xa3, 0x27, 0xb0, 0xd4, 0xe4, 0xd5, 0x94, 0x26, 0x2f, 0x55, 0x81, 0xa0, 0xc6, 0x74, 0x8b, 0xf2, 0x96, 0xff, 0x96, 0x5a, 0xe5, 0xaa, 0xd2, 0x2a, 0xab, 0x97,
0xb6, 0x2e, 0x2b, 0x6b, 0xfd, 0xcb, 0xe0, 0x55, 0x36, 0x63, 0x54, 0x4a, 0xd0, 0x11, 0x2c, 0xab, 0xb2, 0x5a, 0xc9, 0xdb, 0xf7, 0x5f, 0x0c, 0x98, 0x77, 0x15, 0x55, 0xd9, 0xfd, 0x43, 0xc5, 0x44,
0x07, 0x8b, 0xfb, 0x8b, 0x4d, 0xc9, 0x57, 0x2a, 0x85, 0xad, 0xef, 0x60, 0x7d, 0x7e, 0xa7, 0x6c, 0x9a, 0xea, 0x74, 0x6a, 0x3f, 0x2e, 0x9c, 0x2e, 0xf7, 0xe3, 0x26, 0x4c, 0x5d, 0x39, 0x34, 0x4c,
0x9f, 0xdf, 0xb9, 0xf1, 0x70, 0xe0, 0x18, 0xd0, 0xaf, 0x46, 0x38, 0x78, 0xdb, 0xee, 0xc4, 0x13, 0xc6, 0x45, 0x75, 0x3b, 0x81, 0xa5, 0x26, 0xaf, 0xa6, 0x34, 0x79, 0xa9, 0xb1, 0x75, 0xd9, 0x58,
0x90, 0x62, 0xe1, 0xb2, 0x04, 0x95, 0x76, 0x27, 0x6e, 0xec, 0xdb, 0x1d, 0xeb, 0xef, 0x06, 0xac, 0xeb, 0xdf, 0x06, 0xaf, 0xb2, 0x19, 0xa7, 0x52, 0x82, 0x0e, 0x60, 0x41, 0x55, 0x2c, 0xee, 0x2f,
0x65, 0x18, 0x51, 0x12, 0xd1, 0x19, 0x31, 0x1d, 0xe3, 0x1c, 0xaf, 0xa7, 0xd5, 0x4b, 0x46, 0x31, 0xd6, 0xa4, 0x58, 0xa9, 0x14, 0xb6, 0xbe, 0x82, 0xf5, 0xf9, 0xed, 0xb2, 0x7d, 0x7e, 0xfb, 0xce,
0x3f, 0x74, 0x95, 0xa0, 0x13, 0x90, 0x36, 0xba, 0xaa, 0xe9, 0xa3, 0xab, 0xb2, 0xd7, 0xc1, 0x39, 0xc3, 0x81, 0x43, 0x40, 0xbf, 0xba, 0xc6, 0xc1, 0x6d, 0xab, 0x1d, 0x4f, 0x40, 0x8a, 0xa5, 0xcb,
0x2c, 0x1e, 0xf6, 0xfb, 0xed, 0xce, 0x89, 0x3b, 0x74, 0xc3, 0x52, 0xba, 0xb3, 0x16, 0xf8, 0x8a, 0x3c, 0x54, 0x5a, 0xed, 0xb8, 0xb1, 0x6f, 0xb5, 0xad, 0x7f, 0x18, 0xb0, 0x9c, 0x61, 0x44, 0x49,
0xed, 0x96, 0xc2, 0x2d, 0x45, 0x58, 0x2d, 0x58, 0x92, 0x05, 0x94, 0xcf, 0xee, 0x26, 0xac, 0xd8, 0x44, 0x67, 0xc4, 0x74, 0x8c, 0x73, 0xfc, 0x3d, 0xad, 0x5e, 0x32, 0x8a, 0xc5, 0xa1, 0xa3, 0x24,
0x78, 0xe8, 0x5f, 0xe3, 0x9b, 0x1c, 0xd6, 0x7a, 0x0a, 0xab, 0x1a, 0x97, 0xf2, 0x27, 0xfa, 0x12, 0x9d, 0x80, 0xb4, 0xd1, 0x55, 0x4d, 0x1f, 0x5d, 0x95, 0x3d, 0x0e, 0xce, 0x61, 0x6e, 0xbf, 0xd7,
0x4c, 0xee, 0x73, 0x31, 0x27, 0x89, 0x18, 0xbe, 0xc7, 0x08, 0x7a, 0xcc, 0x7b, 0xcb, 0x7a, 0x01, 0x6b, 0xb5, 0x8f, 0xdd, 0x81, 0x1b, 0x96, 0xb2, 0x9d, 0xb5, 0xc0, 0x57, 0x6c, 0xb5, 0x94, 0x6e,
0x0b, 0x9c, 0xa5, 0x60, 0x28, 0x91, 0x19, 0x4a, 0xc6, 0xea, 0x7e, 0x50, 0xab, 0x42, 0x55, 0xaf, 0x29, 0xc2, 0x3a, 0x82, 0x79, 0x59, 0x40, 0xf9, 0xdd, 0xdd, 0x84, 0x45, 0x1b, 0x0f, 0xfc, 0x1b,
0x0a, 0xd6, 0x1f, 0x0c, 0xb8, 0x3b, 0xf6, 0xbc, 0x94, 0xa0, 0x2f, 0xe0, 0x96, 0x24, 0x36, 0xce, 0x7c, 0x17, 0x65, 0xad, 0xe7, 0xb0, 0xa4, 0x71, 0x29, 0xaf, 0xd1, 0x97, 0x60, 0xf2, 0x98, 0x8b,
0xe5, 0x0d, 0xed, 0xe1, 0x16, 0xdb, 0x4d, 0xa1, 0x2d, 0xfb, 0x66, 0x78, 0x09, 0x1b, 0xd1, 0x54, 0x39, 0x49, 0xc4, 0xf0, 0x3d, 0x46, 0xed, 0x43, 0xee, 0x5b, 0xd6, 0x19, 0xcc, 0x70, 0x96, 0x82,
0x59, 0xb7, 0xde, 0x38, 0xa5, 0xa7, 0xbe, 0xcf, 0x22, 0xb3, 0x54, 0x13, 0x8f, 0x77, 0xe0, 0x4e, 0xa1, 0x44, 0x66, 0x28, 0x3b, 0x56, 0x8f, 0x83, 0x5a, 0x15, 0xaa, 0x7a, 0x55, 0xb0, 0xfe, 0x60,
0xae, 0x8c, 0xf2, 0x7e, 0xff, 0x1d, 0xac, 0x8b, 0x18, 0x92, 0xed, 0xf1, 0x41, 0xcf, 0x7c, 0x06, 0xc0, 0x83, 0xa1, 0xfa, 0x52, 0x82, 0xbe, 0x80, 0x59, 0x49, 0x6c, 0xbc, 0x97, 0x57, 0xb5, 0x8b,
0xb7, 0x73, 0x24, 0x94, 0x3f, 0xf1, 0x17, 0xbc, 0x86, 0x1f, 0xf1, 0x21, 0x5c, 0xdb, 0x73, 0xc3, 0x5b, 0xec, 0x37, 0x85, 0xb6, 0xec, 0x9d, 0xe1, 0x15, 0xac, 0x46, 0x53, 0x65, 0xdd, 0x7b, 0xc3,
0x23, 0xdf, 0xbb, 0x70, 0x07, 0x85, 0xa2, 0x94, 0xd9, 0x2f, 0x77, 0x6f, 0xf9, 0xd3, 0xf4, 0x61, 0x8c, 0x1e, 0x7b, 0x3f, 0x8b, 0xdc, 0x52, 0x4d, 0x22, 0xde, 0x86, 0xfb, 0xb9, 0x32, 0xca, 0xc7,
0xa3, 0x5b, 0xf2, 0x34, 0xac, 0x55, 0xec, 0xbb, 0xb4, 0xe7, 0x5f, 0xe3, 0xa0, 0xe3, 0x0c, 0xf8, 0xfd, 0x77, 0xb0, 0x22, 0x72, 0x48, 0xf6, 0xc7, 0x07, 0xd5, 0xf9, 0x14, 0xee, 0xe5, 0x48, 0x28,
0xf0, 0x4d, 0xd8, 0x53, 0x47, 0xb3, 0x73, 0x77, 0x3f, 0xec, 0xb9, 0xff, 0x6d, 0xf0, 0x89, 0x03, 0xaf, 0xf1, 0x17, 0xbc, 0x86, 0x1f, 0xf0, 0x21, 0x5c, 0xcb, 0x73, 0xc3, 0x03, 0xdf, 0xbb, 0x70,
0xf3, 0x89, 0x18, 0x92, 0xd3, 0x1b, 0xe5, 0x39, 0x6b, 0x53, 0x2f, 0x38, 0x9f, 0x68, 0xf0, 0x2a, 0xfb, 0x85, 0xb2, 0x94, 0xf9, 0x2f, 0x77, 0x6d, 0x79, 0x6d, 0x7a, 0xb0, 0xda, 0x29, 0xa9, 0x0d,
0xfc, 0xaf, 0xe0, 0x58, 0x4b, 0x90, 0xc2, 0x7c, 0xc8, 0x20, 0xae, 0x6d, 0x0d, 0xab, 0xf5, 0x24, 0x6b, 0x15, 0x7b, 0x2e, 0xed, 0xfa, 0x37, 0x38, 0x68, 0x3b, 0x7d, 0x3e, 0x7c, 0x13, 0xfe, 0xd4,
0xf5, 0x92, 0x3d, 0xc9, 0xff, 0x0c, 0x3e, 0x3f, 0x50, 0x34, 0xa4, 0x44, 0x9b, 0xc5, 0x19, 0x65, 0xd1, 0x4c, 0xef, 0xce, 0x87, 0xd5, 0xfb, 0x9d, 0xc1, 0x27, 0x0e, 0x2c, 0x26, 0x62, 0x48, 0x4e,
0x67, 0x71, 0x4f, 0x62, 0x5d, 0x92, 0x4f, 0x09, 0x15, 0x5e, 0x62, 0x3e, 0xcd, 0x61, 0x75, 0x9c, 0xef, 0xf6, 0xaa, 0x64, 0xc1, 0xec, 0x05, 0xe7, 0x13, 0x0d, 0x5e, 0x45, 0xfc, 0x15, 0x1c, 0x6b,
0x10, 0xda, 0xda, 0x26, 0x56, 0xe7, 0x04, 0xe6, 0x6c, 0x34, 0x8c, 0x6f, 0x49, 0x09, 0x53, 0x76, 0x09, 0x52, 0x98, 0x0f, 0x19, 0xc4, 0xb1, 0xad, 0x61, 0xb5, 0x9e, 0xa4, 0x5e, 0xb2, 0x27, 0xf9,
0x74, 0xf2, 0x5d, 0xf2, 0x69, 0xa6, 0xdd, 0x7c, 0xfc, 0xf6, 0xc9, 0xd0, 0x71, 0xaf, 0x0e, 0xbd, 0x9f, 0xc1, 0xe7, 0x07, 0x8a, 0x85, 0x94, 0x68, 0xb3, 0x38, 0xa3, 0xec, 0x2c, 0xee, 0x59, 0x6c,
0x7e, 0xe7, 0x95, 0xef, 0xb1, 0x8e, 0xf5, 0x65, 0xd1, 0xce, 0x60, 0x1d, 0xea, 0x98, 0xed, 0x8d, 0x4b, 0xf2, 0x94, 0x50, 0xe1, 0x25, 0xe6, 0xd3, 0x1c, 0x56, 0x87, 0x09, 0xa1, 0xad, 0x2d, 0x62,
0x7c, 0x2d, 0x00, 0xb6, 0x8f, 0xa4, 0x9c, 0x22, 0x4f, 0xcb, 0x28, 0xeb, 0xdb, 0xe4, 0x5b, 0xcc, 0x75, 0x4e, 0x60, 0x4e, 0xaf, 0x07, 0xf1, 0x29, 0x29, 0x61, 0xca, 0x8e, 0x4e, 0xbe, 0x4b, 0x9e,
0x58, 0xf1, 0x94, 0x68, 0x5d, 0x80, 0x31, 0xa5, 0x0b, 0x28, 0x5a, 0x87, 0x0f, 0xde, 0xad, 0xc0, 0x66, 0x5a, 0xcd, 0xa7, 0xb7, 0xcf, 0x06, 0x8e, 0x7b, 0xb5, 0xef, 0xf5, 0xda, 0xaf, 0x7d, 0x8f,
0x1c, 0x27, 0x3a, 0x3a, 0xed, 0xa2, 0x43, 0x80, 0xf4, 0x33, 0x27, 0x92, 0x1f, 0x80, 0xca, 0x37, 0x75, 0xac, 0xaf, 0x8a, 0x76, 0x06, 0x2b, 0x50, 0xc7, 0x6c, 0x6d, 0xfc, 0x7e, 0xc7, 0x01, 0xb6,
0x56, 0x73, 0x73, 0xcc, 0x0a, 0x25, 0xe8, 0x3b, 0xb8, 0x37, 0xf9, 0x6b, 0x21, 0xfa, 0x5c, 0xd9, 0x8e, 0xa4, 0x9c, 0xa2, 0x48, 0xcb, 0x28, 0xeb, 0xdb, 0xe4, 0x2d, 0x66, 0xa8, 0x78, 0x4a, 0xb4,
0x3c, 0xe5, 0xfb, 0xa5, 0xf9, 0xe0, 0x3d, 0xa8, 0x29, 0x41, 0xdf, 0x1b, 0xb0, 0x3d, 0xf5, 0x3b, 0x2e, 0xc0, 0x18, 0xd3, 0x05, 0x14, 0xad, 0xc3, 0x7b, 0xef, 0x16, 0x61, 0x8a, 0x13, 0x1d, 0x9c,
0x1e, 0xda, 0x97, 0x98, 0x16, 0xf9, 0xfa, 0x68, 0xfe, 0xf4, 0xfd, 0x36, 0x08, 0x3b, 0x4c, 0xfe, 0x74, 0xd0, 0x3e, 0x40, 0xfa, 0x9c, 0x8b, 0xe4, 0x0b, 0xa0, 0xf2, 0x96, 0x6c, 0xae, 0x0d, 0xf9,
0xc0, 0xa6, 0xd8, 0x61, 0xea, 0x97, 0x41, 0xc5, 0x0e, 0x05, 0xbe, 0xdc, 0x35, 0x61, 0x41, 0x1a, 0x42, 0x09, 0xfa, 0x0e, 0xd6, 0x47, 0xbf, 0x16, 0xa2, 0xcf, 0x95, 0xc5, 0x63, 0xde, 0x2f, 0xcd,
0xc3, 0xa3, 0x4d, 0x75, 0xb7, 0xf4, 0x45, 0xcc, 0x34, 0xc7, 0x2d, 0x51, 0x82, 0x9e, 0xc2, 0xa2, 0x47, 0xef, 0x41, 0x4d, 0x09, 0xfa, 0xde, 0x80, 0xcd, 0xb1, 0xef, 0x78, 0x68, 0x57, 0x62, 0x5a,
0x32, 0xde, 0x45, 0x77, 0x55, 0x62, 0x65, 0x9c, 0x6d, 0x7e, 0x32, 0x7e, 0x91, 0x12, 0x74, 0xca, 0xe4, 0xf5, 0xd1, 0xfc, 0xe9, 0xfb, 0x2d, 0x10, 0x7e, 0x18, 0xfd, 0xc0, 0xa6, 0xf8, 0x61, 0xec,
0xbf, 0xc5, 0x49, 0xf3, 0x49, 0x94, 0x4b, 0x1f, 0x8f, 0x73, 0xcd, 0x4f, 0x27, 0xac, 0x52, 0x82, 0xcb, 0xa0, 0xe2, 0x87, 0x02, 0x2f, 0x77, 0x4d, 0x98, 0x91, 0xc6, 0xf0, 0x68, 0x4d, 0x5d, 0x2d,
0xce, 0xf9, 0x30, 0x23, 0x33, 0xc0, 0x43, 0x96, 0xba, 0x2d, 0x6f, 0xbe, 0x68, 0xfe, 0x70, 0x2a, 0xbd, 0x88, 0x99, 0xe6, 0xb0, 0x4f, 0x94, 0xa0, 0xe7, 0x30, 0xa7, 0x8c, 0x77, 0xd1, 0x03, 0x95,
0x0d, 0x25, 0xe8, 0xd7, 0xbc, 0x1e, 0x6a, 0x23, 0x26, 0xb4, 0xa5, 0x6e, 0xcd, 0x4e, 0xbf, 0xcc, 0x58, 0x19, 0x67, 0x9b, 0x9f, 0x0c, 0xff, 0x48, 0x09, 0x3a, 0xe1, 0x6f, 0x71, 0xd2, 0x7c, 0x12,
0xed, 0x29, 0x14, 0x94, 0xa0, 0x2f, 0x93, 0xcb, 0x44, 0xe2, 0xfc, 0x83, 0xac, 0x83, 0x55, 0xc6, 0xe5, 0xd2, 0xc7, 0xe3, 0x5c, 0xf3, 0xd3, 0x11, 0x5f, 0x29, 0x41, 0xe7, 0x7c, 0x98, 0x91, 0x19,
0x5b, 0x93, 0x09, 0x28, 0x41, 0x98, 0xdd, 0xf5, 0x79, 0x4f, 0x6b, 0x74, 0x5f, 0xd9, 0x3b, 0xe6, 0xe0, 0x21, 0x4b, 0x5d, 0x96, 0x37, 0x5f, 0x34, 0x7f, 0x38, 0x96, 0x86, 0x12, 0xf4, 0x6b, 0x5e,
0xc1, 0x6f, 0xee, 0x14, 0xa0, 0x4a, 0x2c, 0xa3, 0x3d, 0x0b, 0x75, 0xcb, 0x64, 0x9f, 0xe2, 0xba, 0x0f, 0xb5, 0x11, 0x13, 0xda, 0x50, 0x97, 0x66, 0xa7, 0x5f, 0xe6, 0xe6, 0x18, 0x0a, 0x4a, 0xd0,
0x65, 0xf2, 0xde, 0x95, 0x1d, 0x58, 0xd6, 0xde, 0x52, 0x48, 0x8e, 0x83, 0xec, 0x83, 0xcd, 0xbc, 0x97, 0xc9, 0x61, 0x22, 0x71, 0xfe, 0x41, 0x36, 0xc0, 0x2a, 0xe3, 0x8d, 0xd1, 0x04, 0x94, 0x20,
0x37, 0x69, 0x99, 0x12, 0x51, 0xd2, 0xe2, 0x47, 0x88, 0x56, 0xd2, 0xa4, 0xc7, 0x8f, 0x56, 0xd2, 0xcc, 0xce, 0xfa, 0xbc, 0xab, 0x35, 0x7a, 0xa8, 0xac, 0x1d, 0x72, 0xe1, 0x37, 0xb7, 0x0a, 0x50,
0x94, 0x57, 0xcb, 0x53, 0x58, 0x54, 0x1e, 0x0e, 0x4a, 0x16, 0xe8, 0x0f, 0x13, 0x25, 0x0b, 0xb2, 0x25, 0x9e, 0xd1, 0xae, 0x85, 0xba, 0x67, 0xb2, 0x57, 0x71, 0xdd, 0x33, 0x79, 0xf7, 0xca, 0x36,
0xef, 0x8d, 0x57, 0x70, 0x67, 0x4c, 0x23, 0x8e, 0x76, 0x74, 0x4d, 0x72, 0x1f, 0x17, 0xe6, 0x67, 0x2c, 0x68, 0x77, 0x29, 0x24, 0xe7, 0x41, 0xf6, 0xc2, 0x66, 0xae, 0x8f, 0xfa, 0x4c, 0x89, 0x28,
0x45, 0xc8, 0x28, 0x41, 0x5f, 0xc1, 0x5a, 0x4e, 0xf3, 0x8b, 0xb6, 0xb3, 0xf5, 0x54, 0x97, 0x60, 0x69, 0xf1, 0x25, 0x44, 0x2b, 0x69, 0xd2, 0xe5, 0x47, 0x2b, 0x69, 0xca, 0xad, 0xe5, 0x39, 0xcc,
0x4d, 0x23, 0x11, 0x21, 0x9c, 0x69, 0x53, 0x95, 0x10, 0xce, 0x6b, 0x93, 0x95, 0x10, 0xce, 0xef, 0x29, 0x17, 0x07, 0x65, 0x17, 0xe8, 0x17, 0x13, 0x65, 0x17, 0x64, 0xef, 0x1b, 0xaf, 0xe1, 0xfe,
0x72, 0xbf, 0x82, 0xb5, 0x9c, 0x96, 0x13, 0x69, 0xa1, 0x93, 0xd3, 0x40, 0x9a, 0xd6, 0x34, 0x12, 0x90, 0x46, 0x1c, 0x6d, 0xe9, 0x96, 0xe4, 0x5e, 0x2e, 0xcc, 0xcf, 0x8a, 0x90, 0x51, 0x82, 0xbe,
0xc1, 0xbd, 0x3b, 0x85, 0x7b, 0x77, 0x3a, 0xf7, 0x71, 0xbd, 0xa5, 0xa8, 0x70, 0x52, 0x07, 0xa5, 0x82, 0xe5, 0x9c, 0xe6, 0x17, 0x6d, 0x66, 0xeb, 0xa9, 0x2e, 0xc1, 0x1a, 0x47, 0x22, 0x52, 0x38,
0x57, 0x38, 0xb5, 0x7d, 0xd4, 0x2b, 0x9c, 0xde, 0x7a, 0xa5, 0x37, 0xc8, 0x98, 0xb6, 0x20, 0xef, 0xd3, 0xa6, 0x2a, 0x29, 0x9c, 0xd7, 0x26, 0x2b, 0x29, 0x9c, 0xdf, 0xe5, 0x7e, 0x05, 0xcb, 0x39,
0x06, 0x19, 0xdf, 0xc0, 0xe4, 0xdd, 0x20, 0x13, 0xfa, 0x8d, 0xc7, 0x3f, 0xfa, 0xcd, 0xce, 0x33, 0x2d, 0x27, 0xd2, 0x52, 0x27, 0xa7, 0x81, 0x34, 0xad, 0x71, 0x24, 0x82, 0x7b, 0x67, 0x0c, 0xf7,
0x82, 0xbd, 0xf3, 0xf6, 0xa9, 0xf4, 0xef, 0xad, 0x84, 0xc3, 0xcf, 0x93, 0x5f, 0x2f, 0x67, 0xf8, 0xce, 0x78, 0xee, 0xc3, 0x7a, 0x4b, 0x51, 0xe1, 0xa4, 0x0e, 0x4a, 0xaf, 0x70, 0x6a, 0xfb, 0xa8,
0xd2, 0xc3, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x13, 0xb4, 0xc1, 0x1a, 0x26, 0x00, 0x00, 0x57, 0x38, 0xbd, 0xf5, 0x4a, 0x4f, 0x90, 0x21, 0x6d, 0x41, 0xde, 0x09, 0x32, 0xbc, 0x81, 0xc9,
0x3b, 0x41, 0x46, 0xf5, 0x1b, 0x47, 0x30, 0x2b, 0xff, 0xb1, 0x09, 0x99, 0xd9, 0xe5, 0xf1, 0xdf,
0xab, 0xcc, 0x07, 0x43, 0xbf, 0x51, 0xf2, 0xf4, 0x47, 0xbf, 0xd9, 0x7a, 0x41, 0xb0, 0x77, 0xde,
0x3a, 0x91, 0xfe, 0xee, 0x96, 0xd0, 0xff, 0x3c, 0xf9, 0xf5, 0x6a, 0x82, 0x7f, 0x7a, 0xfc, 0xff,
0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x1c, 0xab, 0x91, 0x4b, 0x27, 0x00, 0x00,
} }