From 214039749639dc20cc6c25ebecfd7c8110001c93 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 15 Apr 2024 16:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=9B=86=E5=8D=A1=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_CollectBox.dat | 16 + data/DB_CollectBox.json | 95 + data/DB_CollectBoxGain.dat | 29 + data/DB_CollectBoxGain.json | 100 + data/DB_GameItem.dat | Bin 2840 -> 3807 bytes data/DB_GameItem.json | 328 ++ data/DB_PropExchange.dat | 5 + data/DB_PropExchange.json | 68 + data/DB_Task.dat | Bin 583 -> 583 bytes protocol/server/pbdata.pb.go | 3496 +++++++------ protocol/server/pbdata.proto | 42 + public | 2 +- srvdata/db_collectbox.go | 68 + srvdata/db_collectboxgain.go | 68 + srvdata/db_propexchange.go | 68 + tools/xlsx2binary/agc.go | 9190 +++++++++++----------------------- update_public.bat | 2 +- xlsx/DB_CollectBox.xlsx | Bin 0 -> 10883 bytes xlsx/DB_CollectBoxGain.xlsx | Bin 0 -> 10732 bytes xlsx/DB_GameItem.xlsx | Bin 36987 -> 38138 bytes xlsx/DB_PropExchange.xlsx | Bin 0 -> 10067 bytes 21 files changed, 5748 insertions(+), 7829 deletions(-) create mode 100644 data/DB_CollectBox.dat create mode 100644 data/DB_CollectBox.json create mode 100644 data/DB_CollectBoxGain.dat create mode 100644 data/DB_CollectBoxGain.json create mode 100644 data/DB_PropExchange.dat create mode 100644 data/DB_PropExchange.json create mode 100644 srvdata/db_collectbox.go create mode 100644 srvdata/db_collectboxgain.go create mode 100644 srvdata/db_propexchange.go create mode 100644 xlsx/DB_CollectBox.xlsx create mode 100644 xlsx/DB_CollectBoxGain.xlsx create mode 100644 xlsx/DB_PropExchange.xlsx diff --git a/data/DB_CollectBox.dat b/data/DB_CollectBox.dat new file mode 100644 index 0000000..cd62d76 --- /dev/null +++ b/data/DB_CollectBox.dat @@ -0,0 +1,16 @@ + + úÓ† + úÔ† + úÕ† + úÖ† + ú׆ + È؆ + ÈÙ† + ÈÚ† +  ÈÛ† +  + +܆ +  2¡N + ¬¡І + 2¡  \ No newline at end of file diff --git a/data/DB_CollectBox.json b/data/DB_CollectBox.json new file mode 100644 index 0000000..84c8aa6 --- /dev/null +++ b/data/DB_CollectBox.json @@ -0,0 +1,95 @@ +{ + "Arr": [ + { + "Id": 1, + "Rate": 250, + "ItemID": { + "50003": 1 + } + }, + { + "Id": 2, + "Rate": 250, + "ItemID": { + "50004": 1 + } + }, + { + "Id": 3, + "Rate": 250, + "ItemID": { + "50005": 1 + } + }, + { + "Id": 4, + "Rate": 250, + "ItemID": { + "50006": 1 + } + }, + { + "Id": 5, + "Rate": 250, + "ItemID": { + "50007": 1 + } + }, + { + "Id": 6, + "Rate": 200, + "ItemID": { + "50008": 1 + } + }, + { + "Id": 7, + "Rate": 200, + "ItemID": { + "50009": 1 + } + }, + { + "Id": 8, + "Rate": 200, + "ItemID": { + "50010": 1 + } + }, + { + "Id": 9, + "Rate": 200, + "ItemID": { + "50011": 1 + } + }, + { + "Id": 10, + "Rate": 10, + "ItemID": { + "50012": 1 + } + }, + { + "Id": 11, + "Rate": 50, + "ItemID": { + "100001": 10000 + } + }, + { + "Id": 12, + "Rate": 300, + "ItemID": { + "100001": 50000 + } + }, + { + "Id": 13, + "Rate": 50, + "ItemID": { + "100001": 100000 + } + } + ] +} \ No newline at end of file diff --git a/data/DB_CollectBoxGain.dat b/data/DB_CollectBoxGain.dat new file mode 100644 index 0000000..040f96e --- /dev/null +++ b/data/DB_CollectBoxGain.dat @@ -0,0 +1,29 @@ + +¡Ú“ +¢Ú“ + +£Ú“ +¤Ú“ +¥Ú“ +¦Ú“ +á’– +â’– + +ã’– +ä’– +å’– +æ’– +±¨” +²¨” + +³¨” +´¨” +µ¨” +¶¨” +ñà– +òà– + +óà– +ôà– +õà– +öà– \ No newline at end of file diff --git a/data/DB_CollectBoxGain.json b/data/DB_CollectBoxGain.json new file mode 100644 index 0000000..2c2b5bd --- /dev/null +++ b/data/DB_CollectBoxGain.json @@ -0,0 +1,100 @@ +{ + "Arr": [ + { + "Id": 2420001, + "Rate": 3 + }, + { + "Id": 2420002, + "Rate": 10 + }, + { + "Id": 2420003, + "Rate": 15 + }, + { + "Id": 2420004, + "Rate": 20 + }, + { + "Id": 2420005, + "Rate": 25 + }, + { + "Id": 2420006, + "Rate": 30 + }, + { + "Id": 2460001, + "Rate": 3 + }, + { + "Id": 2460002, + "Rate": 10 + }, + { + "Id": 2460003, + "Rate": 15 + }, + { + "Id": 2460004, + "Rate": 20 + }, + { + "Id": 2460005, + "Rate": 25 + }, + { + "Id": 2460006, + "Rate": 30 + }, + { + "Id": 2430001, + "Rate": 3 + }, + { + "Id": 2430002, + "Rate": 10 + }, + { + "Id": 2430003, + "Rate": 15 + }, + { + "Id": 2430004, + "Rate": 20 + }, + { + "Id": 2430005, + "Rate": 25 + }, + { + "Id": 2430006, + "Rate": 30 + }, + { + "Id": 2470001, + "Rate": 3 + }, + { + "Id": 2470002, + "Rate": 10 + }, + { + "Id": 2470003, + "Rate": 15 + }, + { + "Id": 2470004, + "Rate": 20 + }, + { + "Id": 2470005, + "Rate": 25 + }, + { + "Id": 2470006, + "Rate": 30 + } + ] +} \ No newline at end of file diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 886ed960818e12a9b95be2044d7ed9d15e781f3a..000c018bc2e7522425f312dadde0010c0724bb7e 100644 GIT binary patch delta 745 zcmbOsc3*bGH8$Q7j!SLKLOd^Lw>|A$I5~?=Mb-Jq-Z{^wta!g?){DOFPy466Y@hga zN8_`OX)hZmKW*Lqbm_FGT^lEFV^feX=eP{i%j*l&`Mk6J`L0DTIyXr%F)}JKGcq!0 z@J^H$O<^=Bav;V$t|z;eKW*RjvSG^8eJwz%LGD>Q{n?h?PrFud`Ey(W+2e@Y9vh%N z63BX%W0y|I6Ji7~xFF|2IMUq2Wi4 z{#zjZ(0C?C|809@uke|{Wyfckk}bWM6TZw|x|)MO@xUHj(qY@RFty#;6) delta 12 TcmcaFJ40;4HMY%jxtv%4B#Z>t diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 0cf9c27..cbfd726 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -381,6 +381,334 @@ "Location": "0", "Describe": "作用:获å–宠物或角色碎片;\n产出途径:周任务奖励" }, + { + "Id": 50002, + "Name": "集å¡ç¤¼ç›’", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 4, + "Effect0": [ + 1, + 0, + 0 + ], + "Effect": [ + 1, + 0, + 0 + ], + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "作用:获å–金叿ˆ–é“具奖励\n产出途径:周任务奖励" + }, + { + "Id": 50003, + "Name": "Må¡ç‰‡çº¢è‰²", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "作用:获å–金叿ˆ–é“具奖励\n产出途径:集字活动" + }, + { + "Id": 50004, + "Name": "Aå¡ç‰‡çº¢è‰²", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50005, + "Name": "Nå¡ç‰‡çº¢è‰²", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50006, + "Name": "Gå¡ç‰‡çº¢è‰²", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50007, + "Name": "Oå¡ç‰‡çº¢è‰²", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50008, + "Name": "Gå¡ç‰‡é»„色", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50009, + "Name": "Aå¡ç‰‡é»„色", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50010, + "Name": "Må¡ç‰‡é»„色", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50011, + "Name": "Eå¡ç‰‡é»„色", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, + { + "Id": 50012, + "Name": "芒果å¡ç‰‡", + "ShowLocation": [ + 1, + 1 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 13, + "Effect0": [ + 0, + 0, + 1 + ], + "Effect": [ + 0, + 0, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "集字活动兑æ¢å¥–励" + }, { "Id": 100001, "Name": "金å¸", diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat new file mode 100644 index 0000000..4b162ba --- /dev/null +++ b/data/DB_PropExchange.dat @@ -0,0 +1,5 @@ + +6Õ†Ö†׆Ó†Ô†"¡À„= +.Ù†Ú†Û†؆"¡À„= +WÔ†׆Ú†Ó†Õ†Ö†؆Ù†Û†" ¡€­â +]Ó†Õ†؆Ù†܆Ô†Ö†׆Ú†Û†"¢ô \ No newline at end of file diff --git a/data/DB_PropExchange.json b/data/DB_PropExchange.json new file mode 100644 index 0000000..e4e72b6 --- /dev/null +++ b/data/DB_PropExchange.json @@ -0,0 +1,68 @@ +{ + "Arr": [ + { + "Id": 1, + "Group": 1, + "Cost": { + "50003": 1, + "50004": 1, + "50005": 1, + "50006": 1, + "50007": 1 + }, + "Gain": { + "100001": 1000000 + } + }, + { + "Id": 2, + "Group": 1, + "Cost": { + "50008": 1, + "50009": 1, + "50010": 1, + "50011": 1 + }, + "Gain": { + "100001": 1000000 + } + }, + { + "Id": 3, + "Group": 1, + "Cost": { + "50003": 1, + "50004": 1, + "50005": 1, + "50006": 1, + "50007": 1, + "50008": 1, + "50009": 1, + "50010": 1, + "50011": 1 + }, + "Gain": { + "100001": 10000000 + } + }, + { + "Id": 4, + "Group": 1, + "Cost": { + "50003": 1, + "50004": 1, + "50005": 1, + "50006": 1, + "50007": 1, + "50008": 1, + "50009": 1, + "50010": 1, + "50011": 1, + "50012": 1 + }, + "Gain": { + "100002": 500 + } + } + ] +} \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 55a8fc4c225465861e1b16f6c042c1e3e05c0686..f96cbc429efed23cd954a95a2a752afe02d7e812 100644 GIT binary patch delta 73 zcmX@ka-3yCpdbgw!d^Ck3vJ9sY#d8~EdGs2MvQ`N9E*T#E+dHSffn1zOBwTpAfiS_ QoM1f-w~la5R%22G0P`>uPyhe` delta 73 zcmX@ka-3yCpdcH^l3q3eej^T!g+Tg38}r5_BSt|8??8*K5gW%Mpg7m$rHuJPoM1H# Pw~lZ^g^ebwF)0E7|49^3 diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index 4152ba3..027162f 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -1863,6 +1863,218 @@ func (x *DB_ClientVerArray) GetArr() []*DB_ClientVer { return nil } +type DB_CollectBox struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Rate int32 `protobuf:"varint,2,opt,name=Rate,proto3" json:"Rate,omitempty"` + ItemID map[int64]int64 `protobuf:"bytes,3,rep,name=ItemID,proto3" json:"ItemID,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *DB_CollectBox) Reset() { + *x = DB_CollectBox{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_CollectBox) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_CollectBox) ProtoMessage() {} + +func (x *DB_CollectBox) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_CollectBox.ProtoReflect.Descriptor instead. +func (*DB_CollectBox) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{24} +} + +func (x *DB_CollectBox) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_CollectBox) GetRate() int32 { + if x != nil { + return x.Rate + } + return 0 +} + +func (x *DB_CollectBox) GetItemID() map[int64]int64 { + if x != nil { + return x.ItemID + } + return nil +} + +type DB_CollectBoxArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_CollectBox `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_CollectBoxArray) Reset() { + *x = DB_CollectBoxArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_CollectBoxArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_CollectBoxArray) ProtoMessage() {} + +func (x *DB_CollectBoxArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_CollectBoxArray.ProtoReflect.Descriptor instead. +func (*DB_CollectBoxArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{25} +} + +func (x *DB_CollectBoxArray) GetArr() []*DB_CollectBox { + if x != nil { + return x.Arr + } + return nil +} + +type DB_CollectBoxGain struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Rate int32 `protobuf:"varint,2,opt,name=Rate,proto3" json:"Rate,omitempty"` +} + +func (x *DB_CollectBoxGain) Reset() { + *x = DB_CollectBoxGain{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_CollectBoxGain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_CollectBoxGain) ProtoMessage() {} + +func (x *DB_CollectBoxGain) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_CollectBoxGain.ProtoReflect.Descriptor instead. +func (*DB_CollectBoxGain) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{26} +} + +func (x *DB_CollectBoxGain) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_CollectBoxGain) GetRate() int32 { + if x != nil { + return x.Rate + } + return 0 +} + +type DB_CollectBoxGainArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_CollectBoxGain `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_CollectBoxGainArray) Reset() { + *x = DB_CollectBoxGainArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_CollectBoxGainArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_CollectBoxGainArray) ProtoMessage() {} + +func (x *DB_CollectBoxGainArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_CollectBoxGainArray.ProtoReflect.Descriptor instead. +func (*DB_CollectBoxGainArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{27} +} + +func (x *DB_CollectBoxGainArray) GetArr() []*DB_CollectBoxGain { + if x != nil { + return x.Arr + } + return nil +} + type DB_CrashSearch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1876,7 +2088,7 @@ type DB_CrashSearch struct { func (x *DB_CrashSearch) Reset() { *x = DB_CrashSearch{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[24] + mi := &file_pbdata_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1889,7 +2101,7 @@ func (x *DB_CrashSearch) String() string { func (*DB_CrashSearch) ProtoMessage() {} func (x *DB_CrashSearch) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[24] + mi := &file_pbdata_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1902,7 +2114,7 @@ func (x *DB_CrashSearch) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CrashSearch.ProtoReflect.Descriptor instead. func (*DB_CrashSearch) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{24} + return file_pbdata_proto_rawDescGZIP(), []int{28} } func (x *DB_CrashSearch) GetId() int32 { @@ -1937,7 +2149,7 @@ type DB_CrashSearchArray struct { func (x *DB_CrashSearchArray) Reset() { *x = DB_CrashSearchArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[25] + mi := &file_pbdata_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1950,7 +2162,7 @@ func (x *DB_CrashSearchArray) String() string { func (*DB_CrashSearchArray) ProtoMessage() {} func (x *DB_CrashSearchArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[25] + mi := &file_pbdata_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1963,7 +2175,7 @@ func (x *DB_CrashSearchArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CrashSearchArray.ProtoReflect.Descriptor instead. func (*DB_CrashSearchArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{25} + return file_pbdata_proto_rawDescGZIP(), []int{29} } func (x *DB_CrashSearchArray) GetArr() []*DB_CrashSearch { @@ -1988,7 +2200,7 @@ type DB_Createroom struct { func (x *DB_Createroom) Reset() { *x = DB_Createroom{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[26] + mi := &file_pbdata_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2001,7 +2213,7 @@ func (x *DB_Createroom) String() string { func (*DB_Createroom) ProtoMessage() {} func (x *DB_Createroom) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[26] + mi := &file_pbdata_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2014,7 +2226,7 @@ func (x *DB_Createroom) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Createroom.ProtoReflect.Descriptor instead. func (*DB_Createroom) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{26} + return file_pbdata_proto_rawDescGZIP(), []int{30} } func (x *DB_Createroom) GetId() int32 { @@ -2063,7 +2275,7 @@ type DB_CreateroomArray struct { func (x *DB_CreateroomArray) Reset() { *x = DB_CreateroomArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[27] + mi := &file_pbdata_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2076,7 +2288,7 @@ func (x *DB_CreateroomArray) String() string { func (*DB_CreateroomArray) ProtoMessage() {} func (x *DB_CreateroomArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[27] + mi := &file_pbdata_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2089,7 +2301,7 @@ func (x *DB_CreateroomArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CreateroomArray.ProtoReflect.Descriptor instead. func (*DB_CreateroomArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{27} + return file_pbdata_proto_rawDescGZIP(), []int{31} } func (x *DB_CreateroomArray) GetArr() []*DB_Createroom { @@ -2144,7 +2356,7 @@ type DB_Fish struct { func (x *DB_Fish) Reset() { *x = DB_Fish{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[28] + mi := &file_pbdata_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2157,7 +2369,7 @@ func (x *DB_Fish) String() string { func (*DB_Fish) ProtoMessage() {} func (x *DB_Fish) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[28] + mi := &file_pbdata_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2170,7 +2382,7 @@ func (x *DB_Fish) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Fish.ProtoReflect.Descriptor instead. func (*DB_Fish) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{28} + return file_pbdata_proto_rawDescGZIP(), []int{32} } func (x *DB_Fish) GetId() int32 { @@ -2429,7 +2641,7 @@ type DB_FishArray struct { func (x *DB_FishArray) Reset() { *x = DB_FishArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[29] + mi := &file_pbdata_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2442,7 +2654,7 @@ func (x *DB_FishArray) String() string { func (*DB_FishArray) ProtoMessage() {} func (x *DB_FishArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[29] + mi := &file_pbdata_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2455,7 +2667,7 @@ func (x *DB_FishArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishArray.ProtoReflect.Descriptor instead. func (*DB_FishArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{29} + return file_pbdata_proto_rawDescGZIP(), []int{33} } func (x *DB_FishArray) GetArr() []*DB_Fish { @@ -2485,7 +2697,7 @@ type DB_FishOut struct { func (x *DB_FishOut) Reset() { *x = DB_FishOut{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[30] + mi := &file_pbdata_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2498,7 +2710,7 @@ func (x *DB_FishOut) String() string { func (*DB_FishOut) ProtoMessage() {} func (x *DB_FishOut) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[30] + mi := &file_pbdata_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2511,7 +2723,7 @@ func (x *DB_FishOut) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishOut.ProtoReflect.Descriptor instead. func (*DB_FishOut) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{30} + return file_pbdata_proto_rawDescGZIP(), []int{34} } func (x *DB_FishOut) GetId() int32 { @@ -2595,7 +2807,7 @@ type DB_FishOutArray struct { func (x *DB_FishOutArray) Reset() { *x = DB_FishOutArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[31] + mi := &file_pbdata_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2608,7 +2820,7 @@ func (x *DB_FishOutArray) String() string { func (*DB_FishOutArray) ProtoMessage() {} func (x *DB_FishOutArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[31] + mi := &file_pbdata_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2621,7 +2833,7 @@ func (x *DB_FishOutArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishOutArray.ProtoReflect.Descriptor instead. func (*DB_FishOutArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{31} + return file_pbdata_proto_rawDescGZIP(), []int{35} } func (x *DB_FishOutArray) GetArr() []*DB_FishOut { @@ -2644,7 +2856,7 @@ type DB_FishPath struct { func (x *DB_FishPath) Reset() { *x = DB_FishPath{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[32] + mi := &file_pbdata_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2657,7 +2869,7 @@ func (x *DB_FishPath) String() string { func (*DB_FishPath) ProtoMessage() {} func (x *DB_FishPath) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[32] + mi := &file_pbdata_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2670,7 +2882,7 @@ func (x *DB_FishPath) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishPath.ProtoReflect.Descriptor instead. func (*DB_FishPath) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{32} + return file_pbdata_proto_rawDescGZIP(), []int{36} } func (x *DB_FishPath) GetId() int32 { @@ -2705,7 +2917,7 @@ type DB_FishPathArray struct { func (x *DB_FishPathArray) Reset() { *x = DB_FishPathArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[33] + mi := &file_pbdata_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2718,7 +2930,7 @@ func (x *DB_FishPathArray) String() string { func (*DB_FishPathArray) ProtoMessage() {} func (x *DB_FishPathArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[33] + mi := &file_pbdata_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2731,7 +2943,7 @@ func (x *DB_FishPathArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishPathArray.ProtoReflect.Descriptor instead. func (*DB_FishPathArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{33} + return file_pbdata_proto_rawDescGZIP(), []int{37} } func (x *DB_FishPathArray) GetArr() []*DB_FishPath { @@ -2763,7 +2975,7 @@ type DB_FishRoom struct { func (x *DB_FishRoom) Reset() { *x = DB_FishRoom{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[34] + mi := &file_pbdata_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2776,7 +2988,7 @@ func (x *DB_FishRoom) String() string { func (*DB_FishRoom) ProtoMessage() {} func (x *DB_FishRoom) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[34] + mi := &file_pbdata_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2789,7 +3001,7 @@ func (x *DB_FishRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishRoom.ProtoReflect.Descriptor instead. func (*DB_FishRoom) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{34} + return file_pbdata_proto_rawDescGZIP(), []int{38} } func (x *DB_FishRoom) GetId() int32 { @@ -2887,7 +3099,7 @@ type DB_FishRoomArray struct { func (x *DB_FishRoomArray) Reset() { *x = DB_FishRoomArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[35] + mi := &file_pbdata_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2900,7 +3112,7 @@ func (x *DB_FishRoomArray) String() string { func (*DB_FishRoomArray) ProtoMessage() {} func (x *DB_FishRoomArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[35] + mi := &file_pbdata_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2913,7 +3125,7 @@ func (x *DB_FishRoomArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishRoomArray.ProtoReflect.Descriptor instead. func (*DB_FishRoomArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{35} + return file_pbdata_proto_rawDescGZIP(), []int{39} } func (x *DB_FishRoomArray) GetArr() []*DB_FishRoom { @@ -2952,7 +3164,7 @@ type DB_FishSkill struct { func (x *DB_FishSkill) Reset() { *x = DB_FishSkill{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[36] + mi := &file_pbdata_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2965,7 +3177,7 @@ func (x *DB_FishSkill) String() string { func (*DB_FishSkill) ProtoMessage() {} func (x *DB_FishSkill) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[36] + mi := &file_pbdata_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2978,7 +3190,7 @@ func (x *DB_FishSkill) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishSkill.ProtoReflect.Descriptor instead. func (*DB_FishSkill) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{36} + return file_pbdata_proto_rawDescGZIP(), []int{40} } func (x *DB_FishSkill) GetId() int32 { @@ -3125,7 +3337,7 @@ type DB_FishSkillArray struct { func (x *DB_FishSkillArray) Reset() { *x = DB_FishSkillArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[37] + mi := &file_pbdata_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3138,7 +3350,7 @@ func (x *DB_FishSkillArray) String() string { func (*DB_FishSkillArray) ProtoMessage() {} func (x *DB_FishSkillArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[37] + mi := &file_pbdata_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3151,7 +3363,7 @@ func (x *DB_FishSkillArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishSkillArray.ProtoReflect.Descriptor instead. func (*DB_FishSkillArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{37} + return file_pbdata_proto_rawDescGZIP(), []int{41} } func (x *DB_FishSkillArray) GetArr() []*DB_FishSkill { @@ -3176,7 +3388,7 @@ type DB_FortuneGod_Odds struct { func (x *DB_FortuneGod_Odds) Reset() { *x = DB_FortuneGod_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[38] + mi := &file_pbdata_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3189,7 +3401,7 @@ func (x *DB_FortuneGod_Odds) String() string { func (*DB_FortuneGod_Odds) ProtoMessage() {} func (x *DB_FortuneGod_Odds) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[38] + mi := &file_pbdata_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3202,7 +3414,7 @@ func (x *DB_FortuneGod_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_Odds.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_Odds) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{38} + return file_pbdata_proto_rawDescGZIP(), []int{42} } func (x *DB_FortuneGod_Odds) GetId() int32 { @@ -3251,7 +3463,7 @@ type DB_FortuneGod_OddsArray struct { func (x *DB_FortuneGod_OddsArray) Reset() { *x = DB_FortuneGod_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[39] + mi := &file_pbdata_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3264,7 +3476,7 @@ func (x *DB_FortuneGod_OddsArray) String() string { func (*DB_FortuneGod_OddsArray) ProtoMessage() {} func (x *DB_FortuneGod_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[39] + mi := &file_pbdata_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3277,7 +3489,7 @@ func (x *DB_FortuneGod_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_OddsArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_OddsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{39} + return file_pbdata_proto_rawDescGZIP(), []int{43} } func (x *DB_FortuneGod_OddsArray) GetArr() []*DB_FortuneGod_Odds { @@ -3301,7 +3513,7 @@ type DB_FortuneGod_TurnRate struct { func (x *DB_FortuneGod_TurnRate) Reset() { *x = DB_FortuneGod_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[40] + mi := &file_pbdata_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3314,7 +3526,7 @@ func (x *DB_FortuneGod_TurnRate) String() string { func (*DB_FortuneGod_TurnRate) ProtoMessage() {} func (x *DB_FortuneGod_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[40] + mi := &file_pbdata_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3327,7 +3539,7 @@ func (x *DB_FortuneGod_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_TurnRate.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_TurnRate) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{40} + return file_pbdata_proto_rawDescGZIP(), []int{44} } func (x *DB_FortuneGod_TurnRate) GetId() int32 { @@ -3369,7 +3581,7 @@ type DB_FortuneGod_TurnRateArray struct { func (x *DB_FortuneGod_TurnRateArray) Reset() { *x = DB_FortuneGod_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[41] + mi := &file_pbdata_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3382,7 +3594,7 @@ func (x *DB_FortuneGod_TurnRateArray) String() string { func (*DB_FortuneGod_TurnRateArray) ProtoMessage() {} func (x *DB_FortuneGod_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[41] + mi := &file_pbdata_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +3607,7 @@ func (x *DB_FortuneGod_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_TurnRateArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{41} + return file_pbdata_proto_rawDescGZIP(), []int{45} } func (x *DB_FortuneGod_TurnRateArray) GetArr() []*DB_FortuneGod_TurnRate { @@ -3418,7 +3630,7 @@ type DB_FortuneGod_Weight struct { func (x *DB_FortuneGod_Weight) Reset() { *x = DB_FortuneGod_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[42] + mi := &file_pbdata_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3431,7 +3643,7 @@ func (x *DB_FortuneGod_Weight) String() string { func (*DB_FortuneGod_Weight) ProtoMessage() {} func (x *DB_FortuneGod_Weight) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[42] + mi := &file_pbdata_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3444,7 +3656,7 @@ func (x *DB_FortuneGod_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_Weight.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_Weight) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{42} + return file_pbdata_proto_rawDescGZIP(), []int{46} } func (x *DB_FortuneGod_Weight) GetId() int32 { @@ -3479,7 +3691,7 @@ type DB_FortuneGod_WeightArray struct { func (x *DB_FortuneGod_WeightArray) Reset() { *x = DB_FortuneGod_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[43] + mi := &file_pbdata_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3492,7 +3704,7 @@ func (x *DB_FortuneGod_WeightArray) String() string { func (*DB_FortuneGod_WeightArray) ProtoMessage() {} func (x *DB_FortuneGod_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[43] + mi := &file_pbdata_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3505,7 +3717,7 @@ func (x *DB_FortuneGod_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_WeightArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{43} + return file_pbdata_proto_rawDescGZIP(), []int{47} } func (x *DB_FortuneGod_WeightArray) GetArr() []*DB_FortuneGod_Weight { @@ -3530,7 +3742,7 @@ type DB_FortuneGod_WeightCondition struct { func (x *DB_FortuneGod_WeightCondition) Reset() { *x = DB_FortuneGod_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[44] + mi := &file_pbdata_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3543,7 +3755,7 @@ func (x *DB_FortuneGod_WeightCondition) String() string { func (*DB_FortuneGod_WeightCondition) ProtoMessage() {} func (x *DB_FortuneGod_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[44] + mi := &file_pbdata_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3556,7 +3768,7 @@ func (x *DB_FortuneGod_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightCondition) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{44} + return file_pbdata_proto_rawDescGZIP(), []int{48} } func (x *DB_FortuneGod_WeightCondition) GetId() int32 { @@ -3605,7 +3817,7 @@ type DB_FortuneGod_WeightConditionArray struct { func (x *DB_FortuneGod_WeightConditionArray) Reset() { *x = DB_FortuneGod_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[45] + mi := &file_pbdata_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3618,7 +3830,7 @@ func (x *DB_FortuneGod_WeightConditionArray) String() string { func (*DB_FortuneGod_WeightConditionArray) ProtoMessage() {} func (x *DB_FortuneGod_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[45] + mi := &file_pbdata_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3631,7 +3843,7 @@ func (x *DB_FortuneGod_WeightConditionArray) ProtoReflect() protoreflect.Message // Deprecated: Use DB_FortuneGod_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{45} + return file_pbdata_proto_rawDescGZIP(), []int{49} } func (x *DB_FortuneGod_WeightConditionArray) GetArr() []*DB_FortuneGod_WeightCondition { @@ -3664,7 +3876,7 @@ type DB_GamMatchLV struct { func (x *DB_GamMatchLV) Reset() { *x = DB_GamMatchLV{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[46] + mi := &file_pbdata_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3677,7 +3889,7 @@ func (x *DB_GamMatchLV) String() string { func (*DB_GamMatchLV) ProtoMessage() {} func (x *DB_GamMatchLV) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[46] + mi := &file_pbdata_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3690,7 +3902,7 @@ func (x *DB_GamMatchLV) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GamMatchLV.ProtoReflect.Descriptor instead. func (*DB_GamMatchLV) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{46} + return file_pbdata_proto_rawDescGZIP(), []int{50} } func (x *DB_GamMatchLV) GetId() int32 { @@ -3795,7 +4007,7 @@ type DB_GamMatchLVArray struct { func (x *DB_GamMatchLVArray) Reset() { *x = DB_GamMatchLVArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[47] + mi := &file_pbdata_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3808,7 +4020,7 @@ func (x *DB_GamMatchLVArray) String() string { func (*DB_GamMatchLVArray) ProtoMessage() {} func (x *DB_GamMatchLVArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[47] + mi := &file_pbdata_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3821,7 +4033,7 @@ func (x *DB_GamMatchLVArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GamMatchLVArray.ProtoReflect.Descriptor instead. func (*DB_GamMatchLVArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{47} + return file_pbdata_proto_rawDescGZIP(), []int{51} } func (x *DB_GamMatchLVArray) GetArr() []*DB_GamMatchLV { @@ -3851,7 +4063,7 @@ type DB_GameCoinPool struct { func (x *DB_GameCoinPool) Reset() { *x = DB_GameCoinPool{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[48] + mi := &file_pbdata_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3864,7 +4076,7 @@ func (x *DB_GameCoinPool) String() string { func (*DB_GameCoinPool) ProtoMessage() {} func (x *DB_GameCoinPool) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[48] + mi := &file_pbdata_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3877,7 +4089,7 @@ func (x *DB_GameCoinPool) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameCoinPool.ProtoReflect.Descriptor instead. func (*DB_GameCoinPool) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{48} + return file_pbdata_proto_rawDescGZIP(), []int{52} } func (x *DB_GameCoinPool) GetId() int32 { @@ -3961,7 +4173,7 @@ type DB_GameCoinPoolArray struct { func (x *DB_GameCoinPoolArray) Reset() { *x = DB_GameCoinPoolArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[49] + mi := &file_pbdata_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3974,7 +4186,7 @@ func (x *DB_GameCoinPoolArray) String() string { func (*DB_GameCoinPoolArray) ProtoMessage() {} func (x *DB_GameCoinPoolArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[49] + mi := &file_pbdata_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3987,7 +4199,7 @@ func (x *DB_GameCoinPoolArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameCoinPoolArray.ProtoReflect.Descriptor instead. func (*DB_GameCoinPoolArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{49} + return file_pbdata_proto_rawDescGZIP(), []int{53} } func (x *DB_GameCoinPoolArray) GetArr() []*DB_GameCoinPool { @@ -4078,7 +4290,7 @@ type DB_GameFree struct { func (x *DB_GameFree) Reset() { *x = DB_GameFree{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[50] + mi := &file_pbdata_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4091,7 +4303,7 @@ func (x *DB_GameFree) String() string { func (*DB_GameFree) ProtoMessage() {} func (x *DB_GameFree) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[50] + mi := &file_pbdata_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4104,7 +4316,7 @@ func (x *DB_GameFree) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameFree.ProtoReflect.Descriptor instead. func (*DB_GameFree) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{50} + return file_pbdata_proto_rawDescGZIP(), []int{54} } func (x *DB_GameFree) GetId() int32 { @@ -4615,7 +4827,7 @@ type DB_GameFreeArray struct { func (x *DB_GameFreeArray) Reset() { *x = DB_GameFreeArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[51] + mi := &file_pbdata_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4628,7 +4840,7 @@ func (x *DB_GameFreeArray) String() string { func (*DB_GameFreeArray) ProtoMessage() {} func (x *DB_GameFreeArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[51] + mi := &file_pbdata_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4641,7 +4853,7 @@ func (x *DB_GameFreeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameFreeArray.ProtoReflect.Descriptor instead. func (*DB_GameFreeArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{51} + return file_pbdata_proto_rawDescGZIP(), []int{55} } func (x *DB_GameFreeArray) GetArr() []*DB_GameFree { @@ -4677,7 +4889,7 @@ type DB_GameItem struct { func (x *DB_GameItem) Reset() { *x = DB_GameItem{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[52] + mi := &file_pbdata_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4690,7 +4902,7 @@ func (x *DB_GameItem) String() string { func (*DB_GameItem) ProtoMessage() {} func (x *DB_GameItem) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[52] + mi := &file_pbdata_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4703,7 +4915,7 @@ func (x *DB_GameItem) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameItem.ProtoReflect.Descriptor instead. func (*DB_GameItem) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{52} + return file_pbdata_proto_rawDescGZIP(), []int{56} } func (x *DB_GameItem) GetId() int32 { @@ -4829,7 +5041,7 @@ type DB_GameItemArray struct { func (x *DB_GameItemArray) Reset() { *x = DB_GameItemArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[53] + mi := &file_pbdata_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4842,7 +5054,7 @@ func (x *DB_GameItemArray) String() string { func (*DB_GameItemArray) ProtoMessage() {} func (x *DB_GameItemArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[53] + mi := &file_pbdata_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4855,7 +5067,7 @@ func (x *DB_GameItemArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameItemArray.ProtoReflect.Descriptor instead. func (*DB_GameItemArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{53} + return file_pbdata_proto_rawDescGZIP(), []int{57} } func (x *DB_GameItemArray) GetArr() []*DB_GameItem { @@ -4883,7 +5095,7 @@ type DB_GameMatchLevel struct { func (x *DB_GameMatchLevel) Reset() { *x = DB_GameMatchLevel{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[54] + mi := &file_pbdata_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4896,7 +5108,7 @@ func (x *DB_GameMatchLevel) String() string { func (*DB_GameMatchLevel) ProtoMessage() {} func (x *DB_GameMatchLevel) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[54] + mi := &file_pbdata_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4909,7 +5121,7 @@ func (x *DB_GameMatchLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameMatchLevel.ProtoReflect.Descriptor instead. func (*DB_GameMatchLevel) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{54} + return file_pbdata_proto_rawDescGZIP(), []int{58} } func (x *DB_GameMatchLevel) GetId() int32 { @@ -4979,7 +5191,7 @@ type DB_GameMatchLevelArray struct { func (x *DB_GameMatchLevelArray) Reset() { *x = DB_GameMatchLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[55] + mi := &file_pbdata_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4992,7 +5204,7 @@ func (x *DB_GameMatchLevelArray) String() string { func (*DB_GameMatchLevelArray) ProtoMessage() {} func (x *DB_GameMatchLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[55] + mi := &file_pbdata_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5005,7 +5217,7 @@ func (x *DB_GameMatchLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameMatchLevelArray.ProtoReflect.Descriptor instead. func (*DB_GameMatchLevelArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{55} + return file_pbdata_proto_rawDescGZIP(), []int{59} } func (x *DB_GameMatchLevelArray) GetArr() []*DB_GameMatchLevel { @@ -5032,7 +5244,7 @@ type DB_GameRule struct { func (x *DB_GameRule) Reset() { *x = DB_GameRule{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[56] + mi := &file_pbdata_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5045,7 +5257,7 @@ func (x *DB_GameRule) String() string { func (*DB_GameRule) ProtoMessage() {} func (x *DB_GameRule) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[56] + mi := &file_pbdata_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5058,7 +5270,7 @@ func (x *DB_GameRule) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameRule.ProtoReflect.Descriptor instead. func (*DB_GameRule) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{56} + return file_pbdata_proto_rawDescGZIP(), []int{60} } func (x *DB_GameRule) GetId() int32 { @@ -5121,7 +5333,7 @@ type DB_GameRuleArray struct { func (x *DB_GameRuleArray) Reset() { *x = DB_GameRuleArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[57] + mi := &file_pbdata_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5134,7 +5346,7 @@ func (x *DB_GameRuleArray) String() string { func (*DB_GameRuleArray) ProtoMessage() {} func (x *DB_GameRuleArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[57] + mi := &file_pbdata_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5147,7 +5359,7 @@ func (x *DB_GameRuleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameRuleArray.ProtoReflect.Descriptor instead. func (*DB_GameRuleArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{57} + return file_pbdata_proto_rawDescGZIP(), []int{61} } func (x *DB_GameRuleArray) GetArr() []*DB_GameRule { @@ -5171,7 +5383,7 @@ type DB_GameSubsidy struct { func (x *DB_GameSubsidy) Reset() { *x = DB_GameSubsidy{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[58] + mi := &file_pbdata_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5184,7 +5396,7 @@ func (x *DB_GameSubsidy) String() string { func (*DB_GameSubsidy) ProtoMessage() {} func (x *DB_GameSubsidy) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[58] + mi := &file_pbdata_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5197,7 +5409,7 @@ func (x *DB_GameSubsidy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameSubsidy.ProtoReflect.Descriptor instead. func (*DB_GameSubsidy) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{58} + return file_pbdata_proto_rawDescGZIP(), []int{62} } func (x *DB_GameSubsidy) GetId() int32 { @@ -5239,7 +5451,7 @@ type DB_GameSubsidyArray struct { func (x *DB_GameSubsidyArray) Reset() { *x = DB_GameSubsidyArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[59] + mi := &file_pbdata_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5252,7 +5464,7 @@ func (x *DB_GameSubsidyArray) String() string { func (*DB_GameSubsidyArray) ProtoMessage() {} func (x *DB_GameSubsidyArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[59] + mi := &file_pbdata_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5265,7 +5477,7 @@ func (x *DB_GameSubsidyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameSubsidyArray.ProtoReflect.Descriptor instead. func (*DB_GameSubsidyArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{59} + return file_pbdata_proto_rawDescGZIP(), []int{63} } func (x *DB_GameSubsidyArray) GetArr() []*DB_GameSubsidy { @@ -5292,7 +5504,7 @@ type DB_Game_Drop struct { func (x *DB_Game_Drop) Reset() { *x = DB_Game_Drop{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[60] + mi := &file_pbdata_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5305,7 +5517,7 @@ func (x *DB_Game_Drop) String() string { func (*DB_Game_Drop) ProtoMessage() {} func (x *DB_Game_Drop) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[60] + mi := &file_pbdata_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5318,7 +5530,7 @@ func (x *DB_Game_Drop) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Drop.ProtoReflect.Descriptor instead. func (*DB_Game_Drop) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{60} + return file_pbdata_proto_rawDescGZIP(), []int{64} } func (x *DB_Game_Drop) GetId() int32 { @@ -5381,7 +5593,7 @@ type DB_Game_DropArray struct { func (x *DB_Game_DropArray) Reset() { *x = DB_Game_DropArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[61] + mi := &file_pbdata_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5394,7 +5606,7 @@ func (x *DB_Game_DropArray) String() string { func (*DB_Game_DropArray) ProtoMessage() {} func (x *DB_Game_DropArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[61] + mi := &file_pbdata_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5407,7 +5619,7 @@ func (x *DB_Game_DropArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_DropArray.ProtoReflect.Descriptor instead. func (*DB_Game_DropArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{61} + return file_pbdata_proto_rawDescGZIP(), []int{65} } func (x *DB_Game_DropArray) GetArr() []*DB_Game_Drop { @@ -5433,7 +5645,7 @@ type DB_Game_Introduction struct { func (x *DB_Game_Introduction) Reset() { *x = DB_Game_Introduction{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[62] + mi := &file_pbdata_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5446,7 +5658,7 @@ func (x *DB_Game_Introduction) String() string { func (*DB_Game_Introduction) ProtoMessage() {} func (x *DB_Game_Introduction) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[62] + mi := &file_pbdata_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5459,7 +5671,7 @@ func (x *DB_Game_Introduction) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Introduction.ProtoReflect.Descriptor instead. func (*DB_Game_Introduction) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{62} + return file_pbdata_proto_rawDescGZIP(), []int{66} } func (x *DB_Game_Introduction) GetId() int32 { @@ -5515,7 +5727,7 @@ type DB_Game_IntroductionArray struct { func (x *DB_Game_IntroductionArray) Reset() { *x = DB_Game_IntroductionArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[63] + mi := &file_pbdata_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5528,7 +5740,7 @@ func (x *DB_Game_IntroductionArray) String() string { func (*DB_Game_IntroductionArray) ProtoMessage() {} func (x *DB_Game_IntroductionArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[63] + mi := &file_pbdata_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5541,7 +5753,7 @@ func (x *DB_Game_IntroductionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_IntroductionArray.ProtoReflect.Descriptor instead. func (*DB_Game_IntroductionArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{63} + return file_pbdata_proto_rawDescGZIP(), []int{67} } func (x *DB_Game_IntroductionArray) GetArr() []*DB_Game_Introduction { @@ -5571,7 +5783,7 @@ type DB_Game_Pet struct { func (x *DB_Game_Pet) Reset() { *x = DB_Game_Pet{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[64] + mi := &file_pbdata_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5584,7 +5796,7 @@ func (x *DB_Game_Pet) String() string { func (*DB_Game_Pet) ProtoMessage() {} func (x *DB_Game_Pet) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[64] + mi := &file_pbdata_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5597,7 +5809,7 @@ func (x *DB_Game_Pet) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Pet.ProtoReflect.Descriptor instead. func (*DB_Game_Pet) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{64} + return file_pbdata_proto_rawDescGZIP(), []int{68} } func (x *DB_Game_Pet) GetId() int32 { @@ -5681,7 +5893,7 @@ type DB_Game_PetArray struct { func (x *DB_Game_PetArray) Reset() { *x = DB_Game_PetArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[65] + mi := &file_pbdata_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5694,7 +5906,7 @@ func (x *DB_Game_PetArray) String() string { func (*DB_Game_PetArray) ProtoMessage() {} func (x *DB_Game_PetArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[65] + mi := &file_pbdata_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5707,7 +5919,7 @@ func (x *DB_Game_PetArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_PetArray.ProtoReflect.Descriptor instead. func (*DB_Game_PetArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{65} + return file_pbdata_proto_rawDescGZIP(), []int{69} } func (x *DB_Game_PetArray) GetArr() []*DB_Game_Pet { @@ -5737,7 +5949,7 @@ type DB_Game_Role struct { func (x *DB_Game_Role) Reset() { *x = DB_Game_Role{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[66] + mi := &file_pbdata_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5750,7 +5962,7 @@ func (x *DB_Game_Role) String() string { func (*DB_Game_Role) ProtoMessage() {} func (x *DB_Game_Role) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[66] + mi := &file_pbdata_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5763,7 +5975,7 @@ func (x *DB_Game_Role) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Role.ProtoReflect.Descriptor instead. func (*DB_Game_Role) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{66} + return file_pbdata_proto_rawDescGZIP(), []int{70} } func (x *DB_Game_Role) GetId() int32 { @@ -5847,7 +6059,7 @@ type DB_Game_RoleArray struct { func (x *DB_Game_RoleArray) Reset() { *x = DB_Game_RoleArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[67] + mi := &file_pbdata_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5860,7 +6072,7 @@ func (x *DB_Game_RoleArray) String() string { func (*DB_Game_RoleArray) ProtoMessage() {} func (x *DB_Game_RoleArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[67] + mi := &file_pbdata_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5873,7 +6085,7 @@ func (x *DB_Game_RoleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_RoleArray.ProtoReflect.Descriptor instead. func (*DB_Game_RoleArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{67} + return file_pbdata_proto_rawDescGZIP(), []int{71} } func (x *DB_Game_RoleArray) GetArr() []*DB_Game_Role { @@ -5896,7 +6108,7 @@ type DB_GiftBox struct { func (x *DB_GiftBox) Reset() { *x = DB_GiftBox{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[68] + mi := &file_pbdata_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5909,7 +6121,7 @@ func (x *DB_GiftBox) String() string { func (*DB_GiftBox) ProtoMessage() {} func (x *DB_GiftBox) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[68] + mi := &file_pbdata_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5922,7 +6134,7 @@ func (x *DB_GiftBox) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftBox.ProtoReflect.Descriptor instead. func (*DB_GiftBox) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{68} + return file_pbdata_proto_rawDescGZIP(), []int{72} } func (x *DB_GiftBox) GetId() int32 { @@ -5957,7 +6169,7 @@ type DB_GiftBoxArray struct { func (x *DB_GiftBoxArray) Reset() { *x = DB_GiftBoxArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[69] + mi := &file_pbdata_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5970,7 +6182,7 @@ func (x *DB_GiftBoxArray) String() string { func (*DB_GiftBoxArray) ProtoMessage() {} func (x *DB_GiftBoxArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[69] + mi := &file_pbdata_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5983,7 +6195,7 @@ func (x *DB_GiftBoxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftBoxArray.ProtoReflect.Descriptor instead. func (*DB_GiftBoxArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{69} + return file_pbdata_proto_rawDescGZIP(), []int{73} } func (x *DB_GiftBoxArray) GetArr() []*DB_GiftBox { @@ -6007,7 +6219,7 @@ type DB_IceAgeElementRate struct { func (x *DB_IceAgeElementRate) Reset() { *x = DB_IceAgeElementRate{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[70] + mi := &file_pbdata_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6020,7 +6232,7 @@ func (x *DB_IceAgeElementRate) String() string { func (*DB_IceAgeElementRate) ProtoMessage() {} func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[70] + mi := &file_pbdata_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6033,7 +6245,7 @@ func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRate.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRate) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{70} + return file_pbdata_proto_rawDescGZIP(), []int{74} } func (x *DB_IceAgeElementRate) GetId() int32 { @@ -6075,7 +6287,7 @@ type DB_IceAgeElementRateArray struct { func (x *DB_IceAgeElementRateArray) Reset() { *x = DB_IceAgeElementRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[71] + mi := &file_pbdata_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6088,7 +6300,7 @@ func (x *DB_IceAgeElementRateArray) String() string { func (*DB_IceAgeElementRateArray) ProtoMessage() {} func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[71] + mi := &file_pbdata_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6101,7 +6313,7 @@ func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRateArray.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRateArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{71} + return file_pbdata_proto_rawDescGZIP(), []int{75} } func (x *DB_IceAgeElementRateArray) GetArr() []*DB_IceAgeElementRate { @@ -6126,7 +6338,7 @@ type DB_Legend_Odds struct { func (x *DB_Legend_Odds) Reset() { *x = DB_Legend_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[72] + mi := &file_pbdata_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6139,7 +6351,7 @@ func (x *DB_Legend_Odds) String() string { func (*DB_Legend_Odds) ProtoMessage() {} func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[72] + mi := &file_pbdata_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6152,7 +6364,7 @@ func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Odds.ProtoReflect.Descriptor instead. func (*DB_Legend_Odds) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{72} + return file_pbdata_proto_rawDescGZIP(), []int{76} } func (x *DB_Legend_Odds) GetId() int32 { @@ -6201,7 +6413,7 @@ type DB_Legend_OddsArray struct { func (x *DB_Legend_OddsArray) Reset() { *x = DB_Legend_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[73] + mi := &file_pbdata_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6214,7 +6426,7 @@ func (x *DB_Legend_OddsArray) String() string { func (*DB_Legend_OddsArray) ProtoMessage() {} func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[73] + mi := &file_pbdata_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6227,7 +6439,7 @@ func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_OddsArray.ProtoReflect.Descriptor instead. func (*DB_Legend_OddsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{73} + return file_pbdata_proto_rawDescGZIP(), []int{77} } func (x *DB_Legend_OddsArray) GetArr() []*DB_Legend_Odds { @@ -6251,7 +6463,7 @@ type DB_Legend_TurnRate struct { func (x *DB_Legend_TurnRate) Reset() { *x = DB_Legend_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[74] + mi := &file_pbdata_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6264,7 +6476,7 @@ func (x *DB_Legend_TurnRate) String() string { func (*DB_Legend_TurnRate) ProtoMessage() {} func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[74] + mi := &file_pbdata_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6277,7 +6489,7 @@ func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRate.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRate) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{74} + return file_pbdata_proto_rawDescGZIP(), []int{78} } func (x *DB_Legend_TurnRate) GetId() int32 { @@ -6319,7 +6531,7 @@ type DB_Legend_TurnRateArray struct { func (x *DB_Legend_TurnRateArray) Reset() { *x = DB_Legend_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[75] + mi := &file_pbdata_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6332,7 +6544,7 @@ func (x *DB_Legend_TurnRateArray) String() string { func (*DB_Legend_TurnRateArray) ProtoMessage() {} func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[75] + mi := &file_pbdata_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6345,7 +6557,7 @@ func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRateArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{75} + return file_pbdata_proto_rawDescGZIP(), []int{79} } func (x *DB_Legend_TurnRateArray) GetArr() []*DB_Legend_TurnRate { @@ -6368,7 +6580,7 @@ type DB_Legend_Weight struct { func (x *DB_Legend_Weight) Reset() { *x = DB_Legend_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[76] + mi := &file_pbdata_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6381,7 +6593,7 @@ func (x *DB_Legend_Weight) String() string { func (*DB_Legend_Weight) ProtoMessage() {} func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[76] + mi := &file_pbdata_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6394,7 +6606,7 @@ func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Weight.ProtoReflect.Descriptor instead. func (*DB_Legend_Weight) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{76} + return file_pbdata_proto_rawDescGZIP(), []int{80} } func (x *DB_Legend_Weight) GetId() int32 { @@ -6429,7 +6641,7 @@ type DB_Legend_WeightArray struct { func (x *DB_Legend_WeightArray) Reset() { *x = DB_Legend_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[77] + mi := &file_pbdata_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6442,7 +6654,7 @@ func (x *DB_Legend_WeightArray) String() string { func (*DB_Legend_WeightArray) ProtoMessage() {} func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[77] + mi := &file_pbdata_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6455,7 +6667,7 @@ func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{77} + return file_pbdata_proto_rawDescGZIP(), []int{81} } func (x *DB_Legend_WeightArray) GetArr() []*DB_Legend_Weight { @@ -6480,7 +6692,7 @@ type DB_Legend_WeightCondition struct { func (x *DB_Legend_WeightCondition) Reset() { *x = DB_Legend_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[78] + mi := &file_pbdata_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6493,7 +6705,7 @@ func (x *DB_Legend_WeightCondition) String() string { func (*DB_Legend_WeightCondition) ProtoMessage() {} func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[78] + mi := &file_pbdata_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6506,7 +6718,7 @@ func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightCondition) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{78} + return file_pbdata_proto_rawDescGZIP(), []int{82} } func (x *DB_Legend_WeightCondition) GetId() int32 { @@ -6555,7 +6767,7 @@ type DB_Legend_WeightConditionArray struct { func (x *DB_Legend_WeightConditionArray) Reset() { *x = DB_Legend_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[79] + mi := &file_pbdata_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6568,7 +6780,7 @@ func (x *DB_Legend_WeightConditionArray) String() string { func (*DB_Legend_WeightConditionArray) ProtoMessage() {} func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[79] + mi := &file_pbdata_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6581,7 +6793,7 @@ func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{79} + return file_pbdata_proto_rawDescGZIP(), []int{83} } func (x *DB_Legend_WeightConditionArray) GetArr() []*DB_Legend_WeightCondition { @@ -6603,7 +6815,7 @@ type DB_MatchRank struct { func (x *DB_MatchRank) Reset() { *x = DB_MatchRank{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[80] + mi := &file_pbdata_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6616,7 +6828,7 @@ func (x *DB_MatchRank) String() string { func (*DB_MatchRank) ProtoMessage() {} func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[80] + mi := &file_pbdata_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6629,7 +6841,7 @@ func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRank.ProtoReflect.Descriptor instead. func (*DB_MatchRank) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{80} + return file_pbdata_proto_rawDescGZIP(), []int{84} } func (x *DB_MatchRank) GetId() int32 { @@ -6657,7 +6869,7 @@ type DB_MatchRankArray struct { func (x *DB_MatchRankArray) Reset() { *x = DB_MatchRankArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[81] + mi := &file_pbdata_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6670,7 +6882,7 @@ func (x *DB_MatchRankArray) String() string { func (*DB_MatchRankArray) ProtoMessage() {} func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[81] + mi := &file_pbdata_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6683,7 +6895,7 @@ func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRankArray.ProtoReflect.Descriptor instead. func (*DB_MatchRankArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{81} + return file_pbdata_proto_rawDescGZIP(), []int{85} } func (x *DB_MatchRankArray) GetArr() []*DB_MatchRank { @@ -6705,7 +6917,7 @@ type DB_Name struct { func (x *DB_Name) Reset() { *x = DB_Name{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[82] + mi := &file_pbdata_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6718,7 +6930,7 @@ func (x *DB_Name) String() string { func (*DB_Name) ProtoMessage() {} func (x *DB_Name) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[82] + mi := &file_pbdata_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6731,7 +6943,7 @@ func (x *DB_Name) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Name.ProtoReflect.Descriptor instead. func (*DB_Name) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{82} + return file_pbdata_proto_rawDescGZIP(), []int{86} } func (x *DB_Name) GetId() int32 { @@ -6759,7 +6971,7 @@ type DB_NameArray struct { func (x *DB_NameArray) Reset() { *x = DB_NameArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[83] + mi := &file_pbdata_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6772,7 +6984,7 @@ func (x *DB_NameArray) String() string { func (*DB_NameArray) ProtoMessage() {} func (x *DB_NameArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[83] + mi := &file_pbdata_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6785,7 +6997,7 @@ func (x *DB_NameArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameArray.ProtoReflect.Descriptor instead. func (*DB_NameArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{83} + return file_pbdata_proto_rawDescGZIP(), []int{87} } func (x *DB_NameArray) GetArr() []*DB_Name { @@ -6807,7 +7019,7 @@ type DB_NameBoy struct { func (x *DB_NameBoy) Reset() { *x = DB_NameBoy{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[84] + mi := &file_pbdata_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6820,7 +7032,7 @@ func (x *DB_NameBoy) String() string { func (*DB_NameBoy) ProtoMessage() {} func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[84] + mi := &file_pbdata_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6833,7 +7045,7 @@ func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoy.ProtoReflect.Descriptor instead. func (*DB_NameBoy) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{84} + return file_pbdata_proto_rawDescGZIP(), []int{88} } func (x *DB_NameBoy) GetId() int32 { @@ -6861,7 +7073,7 @@ type DB_NameBoyArray struct { func (x *DB_NameBoyArray) Reset() { *x = DB_NameBoyArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[85] + mi := &file_pbdata_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6874,7 +7086,7 @@ func (x *DB_NameBoyArray) String() string { func (*DB_NameBoyArray) ProtoMessage() {} func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[85] + mi := &file_pbdata_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6887,7 +7099,7 @@ func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoyArray.ProtoReflect.Descriptor instead. func (*DB_NameBoyArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{85} + return file_pbdata_proto_rawDescGZIP(), []int{89} } func (x *DB_NameBoyArray) GetArr() []*DB_NameBoy { @@ -6909,7 +7121,7 @@ type DB_NameGirl struct { func (x *DB_NameGirl) Reset() { *x = DB_NameGirl{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[86] + mi := &file_pbdata_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6922,7 +7134,7 @@ func (x *DB_NameGirl) String() string { func (*DB_NameGirl) ProtoMessage() {} func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[86] + mi := &file_pbdata_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6935,7 +7147,7 @@ func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirl.ProtoReflect.Descriptor instead. func (*DB_NameGirl) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{86} + return file_pbdata_proto_rawDescGZIP(), []int{90} } func (x *DB_NameGirl) GetId() int32 { @@ -6963,7 +7175,7 @@ type DB_NameGirlArray struct { func (x *DB_NameGirlArray) Reset() { *x = DB_NameGirlArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[87] + mi := &file_pbdata_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6976,7 +7188,7 @@ func (x *DB_NameGirlArray) String() string { func (*DB_NameGirlArray) ProtoMessage() {} func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[87] + mi := &file_pbdata_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6989,7 +7201,7 @@ func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirlArray.ProtoReflect.Descriptor instead. func (*DB_NameGirlArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{87} + return file_pbdata_proto_rawDescGZIP(), []int{91} } func (x *DB_NameGirlArray) GetArr() []*DB_NameGirl { @@ -7019,7 +7231,7 @@ type DB_NewPlayer struct { func (x *DB_NewPlayer) Reset() { *x = DB_NewPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[88] + mi := &file_pbdata_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7032,7 +7244,7 @@ func (x *DB_NewPlayer) String() string { func (*DB_NewPlayer) ProtoMessage() {} func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[88] + mi := &file_pbdata_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7045,7 +7257,7 @@ func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayer.ProtoReflect.Descriptor instead. func (*DB_NewPlayer) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{88} + return file_pbdata_proto_rawDescGZIP(), []int{92} } func (x *DB_NewPlayer) GetId() int32 { @@ -7129,7 +7341,7 @@ type DB_NewPlayerArray struct { func (x *DB_NewPlayerArray) Reset() { *x = DB_NewPlayerArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[89] + mi := &file_pbdata_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7142,7 +7354,7 @@ func (x *DB_NewPlayerArray) String() string { func (*DB_NewPlayerArray) ProtoMessage() {} func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[89] + mi := &file_pbdata_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7155,7 +7367,7 @@ func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayerArray.ProtoReflect.Descriptor instead. func (*DB_NewPlayerArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{89} + return file_pbdata_proto_rawDescGZIP(), []int{93} } func (x *DB_NewPlayerArray) GetArr() []*DB_NewPlayer { @@ -7187,7 +7399,7 @@ type DB_PhoneLottery struct { func (x *DB_PhoneLottery) Reset() { *x = DB_PhoneLottery{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[90] + mi := &file_pbdata_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7200,7 +7412,7 @@ func (x *DB_PhoneLottery) String() string { func (*DB_PhoneLottery) ProtoMessage() {} func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[90] + mi := &file_pbdata_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7213,7 +7425,7 @@ func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLottery.ProtoReflect.Descriptor instead. func (*DB_PhoneLottery) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{90} + return file_pbdata_proto_rawDescGZIP(), []int{94} } func (x *DB_PhoneLottery) GetId() int32 { @@ -7311,7 +7523,7 @@ type DB_PhoneLotteryArray struct { func (x *DB_PhoneLotteryArray) Reset() { *x = DB_PhoneLotteryArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[91] + mi := &file_pbdata_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7324,7 +7536,7 @@ func (x *DB_PhoneLotteryArray) String() string { func (*DB_PhoneLotteryArray) ProtoMessage() {} func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[91] + mi := &file_pbdata_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7337,7 +7549,7 @@ func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLotteryArray.ProtoReflect.Descriptor instead. func (*DB_PhoneLotteryArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{91} + return file_pbdata_proto_rawDescGZIP(), []int{95} } func (x *DB_PhoneLotteryArray) GetArr() []*DB_PhoneLottery { @@ -7359,7 +7571,7 @@ type DB_PlayerExp struct { func (x *DB_PlayerExp) Reset() { *x = DB_PlayerExp{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[92] + mi := &file_pbdata_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7372,7 +7584,7 @@ func (x *DB_PlayerExp) String() string { func (*DB_PlayerExp) ProtoMessage() {} func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[92] + mi := &file_pbdata_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7385,7 +7597,7 @@ func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExp.ProtoReflect.Descriptor instead. func (*DB_PlayerExp) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{92} + return file_pbdata_proto_rawDescGZIP(), []int{96} } func (x *DB_PlayerExp) GetId() int32 { @@ -7413,7 +7625,7 @@ type DB_PlayerExpArray struct { func (x *DB_PlayerExpArray) Reset() { *x = DB_PlayerExpArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[93] + mi := &file_pbdata_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7426,7 +7638,7 @@ func (x *DB_PlayerExpArray) String() string { func (*DB_PlayerExpArray) ProtoMessage() {} func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[93] + mi := &file_pbdata_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7439,7 +7651,7 @@ func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExpArray.ProtoReflect.Descriptor instead. func (*DB_PlayerExpArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{93} + return file_pbdata_proto_rawDescGZIP(), []int{97} } func (x *DB_PlayerExpArray) GetArr() []*DB_PlayerExp { @@ -7464,7 +7676,7 @@ type DB_PlayerInfo struct { func (x *DB_PlayerInfo) Reset() { *x = DB_PlayerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[94] + mi := &file_pbdata_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7477,7 +7689,7 @@ func (x *DB_PlayerInfo) String() string { func (*DB_PlayerInfo) ProtoMessage() {} func (x *DB_PlayerInfo) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[94] + mi := &file_pbdata_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7490,7 +7702,7 @@ func (x *DB_PlayerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerInfo.ProtoReflect.Descriptor instead. func (*DB_PlayerInfo) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{94} + return file_pbdata_proto_rawDescGZIP(), []int{98} } func (x *DB_PlayerInfo) GetCity() string { @@ -7539,7 +7751,7 @@ type DB_PlayerInfoArray struct { func (x *DB_PlayerInfoArray) Reset() { *x = DB_PlayerInfoArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[95] + mi := &file_pbdata_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7552,7 +7764,7 @@ func (x *DB_PlayerInfoArray) String() string { func (*DB_PlayerInfoArray) ProtoMessage() {} func (x *DB_PlayerInfoArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[95] + mi := &file_pbdata_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7565,7 +7777,7 @@ func (x *DB_PlayerInfoArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerInfoArray.ProtoReflect.Descriptor instead. func (*DB_PlayerInfoArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{95} + return file_pbdata_proto_rawDescGZIP(), []int{99} } func (x *DB_PlayerInfoArray) GetArr() []*DB_PlayerInfo { @@ -7603,7 +7815,7 @@ type DB_PlayerType struct { func (x *DB_PlayerType) Reset() { *x = DB_PlayerType{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[96] + mi := &file_pbdata_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7616,7 +7828,7 @@ func (x *DB_PlayerType) String() string { func (*DB_PlayerType) ProtoMessage() {} func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[96] + mi := &file_pbdata_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7629,7 +7841,7 @@ func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerType.ProtoReflect.Descriptor instead. func (*DB_PlayerType) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{96} + return file_pbdata_proto_rawDescGZIP(), []int{100} } func (x *DB_PlayerType) GetId() int32 { @@ -7769,7 +7981,7 @@ type DB_PlayerTypeArray struct { func (x *DB_PlayerTypeArray) Reset() { *x = DB_PlayerTypeArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[97] + mi := &file_pbdata_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7782,7 +7994,7 @@ func (x *DB_PlayerTypeArray) String() string { func (*DB_PlayerTypeArray) ProtoMessage() {} func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[97] + mi := &file_pbdata_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7795,7 +8007,7 @@ func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerTypeArray.ProtoReflect.Descriptor instead. func (*DB_PlayerTypeArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{97} + return file_pbdata_proto_rawDescGZIP(), []int{101} } func (x *DB_PlayerTypeArray) GetArr() []*DB_PlayerType { @@ -7819,7 +8031,7 @@ type DB_PotOdd struct { func (x *DB_PotOdd) Reset() { *x = DB_PotOdd{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[98] + mi := &file_pbdata_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7832,7 +8044,7 @@ func (x *DB_PotOdd) String() string { func (*DB_PotOdd) ProtoMessage() {} func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[98] + mi := &file_pbdata_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7845,7 +8057,7 @@ func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOdd.ProtoReflect.Descriptor instead. func (*DB_PotOdd) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{98} + return file_pbdata_proto_rawDescGZIP(), []int{102} } func (x *DB_PotOdd) GetId() int32 { @@ -7887,7 +8099,7 @@ type DB_PotOddArray struct { func (x *DB_PotOddArray) Reset() { *x = DB_PotOddArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[99] + mi := &file_pbdata_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7900,7 +8112,7 @@ func (x *DB_PotOddArray) String() string { func (*DB_PotOddArray) ProtoMessage() {} func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[99] + mi := &file_pbdata_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7913,7 +8125,7 @@ func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOddArray.ProtoReflect.Descriptor instead. func (*DB_PotOddArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{99} + return file_pbdata_proto_rawDescGZIP(), []int{103} } func (x *DB_PotOddArray) GetArr() []*DB_PotOdd { @@ -7923,6 +8135,124 @@ func (x *DB_PotOddArray) GetArr() []*DB_PotOdd { return nil } +type DB_PropExchange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Group int32 `protobuf:"varint,2,opt,name=Group,proto3" json:"Group,omitempty"` + Cost map[int64]int64 `protobuf:"bytes,3,rep,name=Cost,proto3" json:"Cost,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Gain map[int64]int64 `protobuf:"bytes,4,rep,name=Gain,proto3" json:"Gain,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *DB_PropExchange) Reset() { + *x = DB_PropExchange{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_PropExchange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_PropExchange) ProtoMessage() {} + +func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_PropExchange.ProtoReflect.Descriptor instead. +func (*DB_PropExchange) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{104} +} + +func (x *DB_PropExchange) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_PropExchange) GetGroup() int32 { + if x != nil { + return x.Group + } + return 0 +} + +func (x *DB_PropExchange) GetCost() map[int64]int64 { + if x != nil { + return x.Cost + } + return nil +} + +func (x *DB_PropExchange) GetGain() map[int64]int64 { + if x != nil { + return x.Gain + } + return nil +} + +type DB_PropExchangeArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_PropExchange `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_PropExchangeArray) Reset() { + *x = DB_PropExchangeArray{} + if protoimpl.UnsafeEnabled { + mi := &file_pbdata_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_PropExchangeArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_PropExchangeArray) ProtoMessage() {} + +func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { + mi := &file_pbdata_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_PropExchangeArray.ProtoReflect.Descriptor instead. +func (*DB_PropExchangeArray) Descriptor() ([]byte, []int) { + return file_pbdata_proto_rawDescGZIP(), []int{105} +} + +func (x *DB_PropExchangeArray) GetArr() []*DB_PropExchange { + if x != nil { + return x.Arr + } + return nil +} + type DB_RankCycle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7936,7 +8266,7 @@ type DB_RankCycle struct { func (x *DB_RankCycle) Reset() { *x = DB_RankCycle{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[100] + mi := &file_pbdata_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7949,7 +8279,7 @@ func (x *DB_RankCycle) String() string { func (*DB_RankCycle) ProtoMessage() {} func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[100] + mi := &file_pbdata_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7962,7 +8292,7 @@ func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycle.ProtoReflect.Descriptor instead. func (*DB_RankCycle) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{100} + return file_pbdata_proto_rawDescGZIP(), []int{106} } func (x *DB_RankCycle) GetId() int32 { @@ -7997,7 +8327,7 @@ type DB_RankCycleArray struct { func (x *DB_RankCycleArray) Reset() { *x = DB_RankCycleArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[101] + mi := &file_pbdata_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8010,7 +8340,7 @@ func (x *DB_RankCycleArray) String() string { func (*DB_RankCycleArray) ProtoMessage() {} func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[101] + mi := &file_pbdata_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8023,7 +8353,7 @@ func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycleArray.ProtoReflect.Descriptor instead. func (*DB_RankCycleArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{101} + return file_pbdata_proto_rawDescGZIP(), []int{107} } func (x *DB_RankCycleArray) GetArr() []*DB_RankCycle { @@ -8048,7 +8378,7 @@ type DB_RankLevel struct { func (x *DB_RankLevel) Reset() { *x = DB_RankLevel{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[102] + mi := &file_pbdata_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8061,7 +8391,7 @@ func (x *DB_RankLevel) String() string { func (*DB_RankLevel) ProtoMessage() {} func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[102] + mi := &file_pbdata_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8074,7 +8404,7 @@ func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevel.ProtoReflect.Descriptor instead. func (*DB_RankLevel) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{102} + return file_pbdata_proto_rawDescGZIP(), []int{108} } func (x *DB_RankLevel) GetId() int32 { @@ -8123,7 +8453,7 @@ type DB_RankLevelArray struct { func (x *DB_RankLevelArray) Reset() { *x = DB_RankLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[103] + mi := &file_pbdata_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8136,7 +8466,7 @@ func (x *DB_RankLevelArray) String() string { func (*DB_RankLevelArray) ProtoMessage() {} func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[103] + mi := &file_pbdata_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8149,7 +8479,7 @@ func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevelArray.ProtoReflect.Descriptor instead. func (*DB_RankLevelArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{103} + return file_pbdata_proto_rawDescGZIP(), []int{109} } func (x *DB_RankLevelArray) GetArr() []*DB_RankLevel { @@ -8178,7 +8508,7 @@ type DB_RankReward struct { func (x *DB_RankReward) Reset() { *x = DB_RankReward{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[104] + mi := &file_pbdata_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8191,7 +8521,7 @@ func (x *DB_RankReward) String() string { func (*DB_RankReward) ProtoMessage() {} func (x *DB_RankReward) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[104] + mi := &file_pbdata_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8204,7 +8534,7 @@ func (x *DB_RankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankReward.ProtoReflect.Descriptor instead. func (*DB_RankReward) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{104} + return file_pbdata_proto_rawDescGZIP(), []int{110} } func (x *DB_RankReward) GetId() int32 { @@ -8281,7 +8611,7 @@ type DB_RankRewardArray struct { func (x *DB_RankRewardArray) Reset() { *x = DB_RankRewardArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[105] + mi := &file_pbdata_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8294,7 +8624,7 @@ func (x *DB_RankRewardArray) String() string { func (*DB_RankRewardArray) ProtoMessage() {} func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[105] + mi := &file_pbdata_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8307,7 +8637,7 @@ func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankRewardArray.ProtoReflect.Descriptor instead. func (*DB_RankRewardArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{105} + return file_pbdata_proto_rawDescGZIP(), []int{111} } func (x *DB_RankRewardArray) GetArr() []*DB_RankReward { @@ -8329,7 +8659,7 @@ type DB_Sensitive_Words struct { func (x *DB_Sensitive_Words) Reset() { *x = DB_Sensitive_Words{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[106] + mi := &file_pbdata_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8342,7 +8672,7 @@ func (x *DB_Sensitive_Words) String() string { func (*DB_Sensitive_Words) ProtoMessage() {} func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[106] + mi := &file_pbdata_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8355,7 +8685,7 @@ func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_Words.ProtoReflect.Descriptor instead. func (*DB_Sensitive_Words) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{106} + return file_pbdata_proto_rawDescGZIP(), []int{112} } func (x *DB_Sensitive_Words) GetId() int32 { @@ -8383,7 +8713,7 @@ type DB_Sensitive_WordsArray struct { func (x *DB_Sensitive_WordsArray) Reset() { *x = DB_Sensitive_WordsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[107] + mi := &file_pbdata_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8396,7 +8726,7 @@ func (x *DB_Sensitive_WordsArray) String() string { func (*DB_Sensitive_WordsArray) ProtoMessage() {} func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[107] + mi := &file_pbdata_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8409,7 +8739,7 @@ func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_WordsArray.ProtoReflect.Descriptor instead. func (*DB_Sensitive_WordsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{107} + return file_pbdata_proto_rawDescGZIP(), []int{113} } func (x *DB_Sensitive_WordsArray) GetArr() []*DB_Sensitive_Words { @@ -8445,7 +8775,7 @@ type DB_SlotRateWeight struct { func (x *DB_SlotRateWeight) Reset() { *x = DB_SlotRateWeight{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[108] + mi := &file_pbdata_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8458,7 +8788,7 @@ func (x *DB_SlotRateWeight) String() string { func (*DB_SlotRateWeight) ProtoMessage() {} func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[108] + mi := &file_pbdata_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8471,7 +8801,7 @@ func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeight.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeight) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{108} + return file_pbdata_proto_rawDescGZIP(), []int{114} } func (x *DB_SlotRateWeight) GetId() int32 { @@ -8597,7 +8927,7 @@ type DB_SlotRateWeightArray struct { func (x *DB_SlotRateWeightArray) Reset() { *x = DB_SlotRateWeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[109] + mi := &file_pbdata_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8610,7 +8940,7 @@ func (x *DB_SlotRateWeightArray) String() string { func (*DB_SlotRateWeightArray) ProtoMessage() {} func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[109] + mi := &file_pbdata_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8623,7 +8953,7 @@ func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeightArray.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeightArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{109} + return file_pbdata_proto_rawDescGZIP(), []int{115} } func (x *DB_SlotRateWeightArray) GetArr() []*DB_SlotRateWeight { @@ -8648,7 +8978,7 @@ type DB_SystemChance struct { func (x *DB_SystemChance) Reset() { *x = DB_SystemChance{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[110] + mi := &file_pbdata_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8661,7 +8991,7 @@ func (x *DB_SystemChance) String() string { func (*DB_SystemChance) ProtoMessage() {} func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[110] + mi := &file_pbdata_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8674,7 +9004,7 @@ func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChance.ProtoReflect.Descriptor instead. func (*DB_SystemChance) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{110} + return file_pbdata_proto_rawDescGZIP(), []int{116} } func (x *DB_SystemChance) GetId() int32 { @@ -8723,7 +9053,7 @@ type DB_SystemChanceArray struct { func (x *DB_SystemChanceArray) Reset() { *x = DB_SystemChanceArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[111] + mi := &file_pbdata_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8736,7 +9066,7 @@ func (x *DB_SystemChanceArray) String() string { func (*DB_SystemChanceArray) ProtoMessage() {} func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[111] + mi := &file_pbdata_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8749,7 +9079,7 @@ func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChanceArray.ProtoReflect.Descriptor instead. func (*DB_SystemChanceArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{111} + return file_pbdata_proto_rawDescGZIP(), []int{117} } func (x *DB_SystemChanceArray) GetArr() []*DB_SystemChance { @@ -8777,7 +9107,7 @@ type DB_Task struct { func (x *DB_Task) Reset() { *x = DB_Task{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[112] + mi := &file_pbdata_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8790,7 +9120,7 @@ func (x *DB_Task) String() string { func (*DB_Task) ProtoMessage() {} func (x *DB_Task) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[112] + mi := &file_pbdata_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8803,7 +9133,7 @@ func (x *DB_Task) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Task.ProtoReflect.Descriptor instead. func (*DB_Task) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{112} + return file_pbdata_proto_rawDescGZIP(), []int{118} } func (x *DB_Task) GetId() int32 { @@ -8873,7 +9203,7 @@ type DB_TaskArray struct { func (x *DB_TaskArray) Reset() { *x = DB_TaskArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[113] + mi := &file_pbdata_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8886,7 +9216,7 @@ func (x *DB_TaskArray) String() string { func (*DB_TaskArray) ProtoMessage() {} func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[113] + mi := &file_pbdata_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8899,7 +9229,7 @@ func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TaskArray.ProtoReflect.Descriptor instead. func (*DB_TaskArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{113} + return file_pbdata_proto_rawDescGZIP(), []int{119} } func (x *DB_TaskArray) GetArr() []*DB_Task { @@ -8926,7 +9256,7 @@ type DB_ThirdPlatformGameMapping struct { func (x *DB_ThirdPlatformGameMapping) Reset() { *x = DB_ThirdPlatformGameMapping{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[114] + mi := &file_pbdata_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8939,7 +9269,7 @@ func (x *DB_ThirdPlatformGameMapping) String() string { func (*DB_ThirdPlatformGameMapping) ProtoMessage() {} func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[114] + mi := &file_pbdata_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8952,7 +9282,7 @@ func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMapping.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMapping) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{114} + return file_pbdata_proto_rawDescGZIP(), []int{120} } func (x *DB_ThirdPlatformGameMapping) GetId() int32 { @@ -9015,7 +9345,7 @@ type DB_ThirdPlatformGameMappingArray struct { func (x *DB_ThirdPlatformGameMappingArray) Reset() { *x = DB_ThirdPlatformGameMappingArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[115] + mi := &file_pbdata_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9028,7 +9358,7 @@ func (x *DB_ThirdPlatformGameMappingArray) String() string { func (*DB_ThirdPlatformGameMappingArray) ProtoMessage() {} func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[115] + mi := &file_pbdata_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9041,7 +9371,7 @@ func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMappingArray.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMappingArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{115} + return file_pbdata_proto_rawDescGZIP(), []int{121} } func (x *DB_ThirdPlatformGameMappingArray) GetArr() []*DB_ThirdPlatformGameMapping { @@ -9064,7 +9394,7 @@ type DB_Tips struct { func (x *DB_Tips) Reset() { *x = DB_Tips{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[116] + mi := &file_pbdata_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9077,7 +9407,7 @@ func (x *DB_Tips) String() string { func (*DB_Tips) ProtoMessage() {} func (x *DB_Tips) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[116] + mi := &file_pbdata_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9090,7 +9420,7 @@ func (x *DB_Tips) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Tips.ProtoReflect.Descriptor instead. func (*DB_Tips) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{116} + return file_pbdata_proto_rawDescGZIP(), []int{122} } func (x *DB_Tips) GetId() int32 { @@ -9125,7 +9455,7 @@ type DB_TipsArray struct { func (x *DB_TipsArray) Reset() { *x = DB_TipsArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[117] + mi := &file_pbdata_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9138,7 +9468,7 @@ func (x *DB_TipsArray) String() string { func (*DB_TipsArray) ProtoMessage() {} func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[117] + mi := &file_pbdata_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9151,7 +9481,7 @@ func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TipsArray.ProtoReflect.Descriptor instead. func (*DB_TipsArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{117} + return file_pbdata_proto_rawDescGZIP(), []int{123} } func (x *DB_TipsArray) GetArr() []*DB_Tips { @@ -9190,7 +9520,7 @@ type DB_VIP struct { func (x *DB_VIP) Reset() { *x = DB_VIP{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[118] + mi := &file_pbdata_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9203,7 +9533,7 @@ func (x *DB_VIP) String() string { func (*DB_VIP) ProtoMessage() {} func (x *DB_VIP) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[118] + mi := &file_pbdata_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9216,7 +9546,7 @@ func (x *DB_VIP) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIP.ProtoReflect.Descriptor instead. func (*DB_VIP) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{118} + return file_pbdata_proto_rawDescGZIP(), []int{124} } func (x *DB_VIP) GetId() int32 { @@ -9363,7 +9693,7 @@ type DB_VIPArray struct { func (x *DB_VIPArray) Reset() { *x = DB_VIPArray{} if protoimpl.UnsafeEnabled { - mi := &file_pbdata_proto_msgTypes[119] + mi := &file_pbdata_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9376,7 +9706,7 @@ func (x *DB_VIPArray) String() string { func (*DB_VIPArray) ProtoMessage() {} func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { - mi := &file_pbdata_proto_msgTypes[119] + mi := &file_pbdata_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9389,7 +9719,7 @@ func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPArray.ProtoReflect.Descriptor instead. func (*DB_VIPArray) Descriptor() ([]byte, []int) { - return file_pbdata_proto_rawDescGZIP(), []int{119} + return file_pbdata_proto_rawDescGZIP(), []int{125} } func (x *DB_VIPArray) GetArr() []*DB_VIP { @@ -9633,993 +9963,1038 @@ var file_pbdata_proto_rawDesc = []byte{ 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4a, 0x0a, - 0x0e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa9, 0x01, + 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, - 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x44, - 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x09, 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x42, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x42, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, - 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x91, 0x07, 0x0a, 0x07, 0x44, 0x42, - 0x5f, 0x46, 0x69, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x61, 0x6d, - 0x65, 0x45, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x12, - 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, - 0x6f, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x45, 0x78, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, - 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x52, - 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x68, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, - 0x53, 0x68, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, - 0x75, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x44, 0x69, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x44, 0x69, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, - 0x69, 0x65, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, - 0x69, 0x65, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, - 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, - 0x73, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x44, - 0x69, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x5a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, - 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x12, - 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x73, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, - 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x69, - 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, - 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x22, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x31, 0x0a, - 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xfc, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, - 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, - 0x4f, 0x75, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x63, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, - 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x70, 0x70, - 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, - 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x39, 0x0a, - 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, - 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, - 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, - 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, - 0x6f, 0x6c, 0x64, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, - 0x6f, 0x6c, 0x64, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, - 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x2a, 0x0a, 0x10, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x4c, 0x69, 0x74, 0x74, - 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, - 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xda, 0x03, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x43, 0x44, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x43, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, - 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, - 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, - 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x75, 0x74, 0x65, - 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x1c, - 0x0a, 0x09, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x46, 0x75, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x75, 0x72, 0x79, - 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x92, 0x01, - 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, - 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, - 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, - 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, - 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, - 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, - 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, - 0x73, 0x35, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, - 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, - 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x16, - 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, - 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x42, - 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, - 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, - 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x44, - 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, - 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, - 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, - 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x01, 0x0a, - 0x1d, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, - 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, - 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, - 0x22, 0x5d, 0x0a, 0x22, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, - 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x37, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xdf, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, - 0x56, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x72, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x12, - 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, - 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, - 0x32, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x33, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4c, 0x56, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xb7, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, - 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, - 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, - 0x73, 0x4d, 0x61, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, - 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x11, - 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x12, 0x0e, 0x0a, + 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, + 0x0a, 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x37, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, - 0x72, 0x65, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, - 0x72, 0x65, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, - 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x41, 0x64, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x41, 0x64, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, - 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, - 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x75, 0x62, 0x53, - 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x54, - 0x65, 0x73, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, - 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0d, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x12, - 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x6f, 0x74, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, - 0x69, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x41, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x42, - 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x61, 0x6e, - 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x18, 0x1c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, - 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x1d, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x52, 0x61, 0x6e, 0x6b, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4a, - 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, - 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, - 0x6d, 0x52, 0x6e, 0x67, 0x18, 0x21, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x62, 0x6f, - 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, - 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, - 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, - 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x23, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, - 0x61, 0x6d, 0x65, 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, - 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, - 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, - 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x29, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x2a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x2b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x12, - 0x28, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4b, 0x69, - 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x74, - 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, - 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x35, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, - 0x36, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, - 0x74, 0x69, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, - 0x6e, 0x18, 0x37, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, - 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x38, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, - 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x39, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, - 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x3a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, - 0x6e, 0x4d, 0x69, 0x6e, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, - 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, - 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x3c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, - 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x28, 0x0a, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, - 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x44, 0x72, 0x61, 0x77, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, - 0x72, 0x61, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, - 0x18, 0x3f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x78, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x41, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, - 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, - 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x43, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, - 0x65, 0x74, 0x18, 0x44, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, - 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x44, 0x72, 0x6f, 0x70, 0x18, 0x45, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x46, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x74, - 0x69, 0x6f, 0x4d, 0x61, 0x78, 0x18, 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x74, - 0x69, 0x6f, 0x4d, 0x61, 0x78, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xad, 0x03, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, + 0x65, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, + 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, + 0x61, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x43, + 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, + 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, + 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0x91, 0x07, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x68, 0x6f, 0x77, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x69, 0x66, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x30, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x30, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, - 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, - 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, + 0x6c, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, + 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, + 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, + 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x68, 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, + 0x50, 0x6f, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, + 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, + 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, + 0x69, 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x45, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, + 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, + 0x6b, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, + 0x6b, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x6f, + 0x73, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x69, 0x65, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, + 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, + 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x4a, 0x73, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, + 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x64, + 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x61, + 0x6e, 0x64, 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, + 0x69, 0x73, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0a, + 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, + 0x70, 0x65, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, + 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x63, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, + 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, + 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, + 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x53, + 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, + 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, + 0x6c, 0x64, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, + 0x6c, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x42, + 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x4c, + 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, + 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, + 0x6f, 0x73, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, + 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xda, + 0x03, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x43, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x47, 0x43, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, + 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x75, 0x74, + 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x75, + 0x74, 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x72, 0x79, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x75, 0x72, 0x79, 0x22, 0x3b, 0x0a, 0x11, 0x44, + 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, + 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, + 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x47, 0x0a, + 0x17, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, + 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, + 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x46, 0x6f, + 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, + 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, + 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, + 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, + 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, + 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, + 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, + 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x1d, 0x44, 0x42, 0x5f, 0x46, + 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, + 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, + 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, + 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x22, 0x44, + 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x37, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, + 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xdf, 0x02, 0x0a, 0x0d, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, + 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, + 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x22, 0x3d, 0x0a, 0x12, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb7, 0x02, 0x0a, 0x0f, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, + 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, + 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, + 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, + 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, + 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, + 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x11, 0x0a, 0x0b, 0x44, 0x42, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x44, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, + 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x65, + 0x73, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, + 0x6f, 0x77, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, + 0x65, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, + 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x77, + 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, + 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, + 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x42, 0x65, + 0x74, 0x44, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x6f, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x42, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x69, 0x18, 0x1a, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x02, 0x41, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, + 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x10, 0x43, 0x68, 0x65, 0x73, + 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x0f, + 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x1f, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, + 0x74, 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, + 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, 0x67, 0x18, + 0x21, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, + 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, + 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x6f, 0x62, 0x6f, + 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x24, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, + 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x61, 0x6d, + 0x65, 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x61, 0x6d, 0x65, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x28, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, + 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, + 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x2c, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, + 0x6d, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, + 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x2f, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, 0x74, 0x65, 0x72, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x65, 0x74, 0x57, + 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4a, 0x61, + 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x36, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1e, + 0x0a, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x37, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x28, + 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x38, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, + 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x18, + 0x3b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, + 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, + 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, + 0x12, 0x28, 0x0a, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, + 0x42, 0x65, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, + 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x72, + 0x61, 0x77, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x12, 0x1c, + 0x0a, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x40, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, + 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x41, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x69, 0x6e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x43, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, 0x44, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, + 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x18, + 0x45, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, + 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, + 0x78, 0x18, 0x46, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x4d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, 0x61, 0x78, + 0x18, 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, 0x61, 0x78, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x11, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, - 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, - 0x24, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x4f, 0x64, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, 0x0a, - 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xad, 0x03, 0x0a, 0x0b, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x12, 0x16, 0x0a, + 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, + 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, + 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, + 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x6f, + 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, + 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x22, 0x39, 0x0a, + 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x3f, + 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xb0, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x74, + 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x64, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x31, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x31, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, + 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, + 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, + 0x61, 0x78, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xf9, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, + 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, + 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, + 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, + 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x6f, 0x64, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, + 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, + 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, + 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x4c, 0x65, + 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, + 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, + 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, + 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x4c, 0x65, + 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, + 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, + 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, + 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, + 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, + 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, + 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4e, 0x0a, 0x10, + 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x43, 0x0a, 0x15, + 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, + 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, + 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, + 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, + 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, - 0x44, 0x69, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, - 0x69, 0x66, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, - 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, 0x0a, - 0x0e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x47, - 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, - 0x62, 0x73, 0x69, 0x64, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, - 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xb0, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, - 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, - 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, + 0x42, 0x6f, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x31, + 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x5f, 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, - 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, - 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, - 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, + 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb0, 0x02, 0x0a, + 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x28, 0x0a, + 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x12, + 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x22, + 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, + 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa2, 0x02, 0x0a, + 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x64, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, + 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, + 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x6d, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, + 0x65, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, + 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, + 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, + 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, + 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, + 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, + 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, + 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, + 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, + 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, + 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, + 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, + 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, + 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, + 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x97, + 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, + 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, + 0x35, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, + 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, + 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, + 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, + 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, + 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, + 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, + 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, + 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, + 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, + 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, + 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, + 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, + 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, + 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, + 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, + 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xc1, 0x02, 0x0a, 0x07, 0x44, 0x42, + 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, - 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, - 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, - 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, - 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, - 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, - 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, - 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, - 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, - 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, - 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, - 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, - 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, - 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, - 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, - 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, - 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, - 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, - 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, - 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, - 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, - 0x0c, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, - 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, - 0x72, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, - 0x65, 0x47, 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, - 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, - 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, - 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, - 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, - 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4f, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, - 0x64, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, - 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, - 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, - 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, - 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, - 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x6d, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, - 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, - 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, - 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, - 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, - 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, - 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, - 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, - 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, - 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, - 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, - 0x09, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, - 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, - 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, - 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, - 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, - 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, - 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, + 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, - 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, - 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, - 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, - 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, - 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, - 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xc1, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, - 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, - 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, - 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, - 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, - 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, - 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, - 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, - 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, - 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, - 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, - 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, - 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, - 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, - 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xe0, 0x05, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, - 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, - 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, - 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, - 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, - 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3d, 0x0a, - 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, - 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, + 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, + 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, + 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, + 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe0, 0x05, 0x0a, 0x06, + 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, + 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, + 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, + 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, + 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, + 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, + 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, + 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, + 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -10634,7 +11009,7 @@ func file_pbdata_proto_rawDescGZIP() []byte { return file_pbdata_proto_rawDescData } -var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 124) +var file_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 133) var file_pbdata_proto_goTypes = []interface{}{ (*DB_ActSign)(nil), // 0: server.DB_ActSign (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray @@ -10660,106 +11035,115 @@ var file_pbdata_proto_goTypes = []interface{}{ (*DB_ChessRankArray)(nil), // 21: server.DB_ChessRankArray (*DB_ClientVer)(nil), // 22: server.DB_ClientVer (*DB_ClientVerArray)(nil), // 23: server.DB_ClientVerArray - (*DB_CrashSearch)(nil), // 24: server.DB_CrashSearch - (*DB_CrashSearchArray)(nil), // 25: server.DB_CrashSearchArray - (*DB_Createroom)(nil), // 26: server.DB_Createroom - (*DB_CreateroomArray)(nil), // 27: server.DB_CreateroomArray - (*DB_Fish)(nil), // 28: server.DB_Fish - (*DB_FishArray)(nil), // 29: server.DB_FishArray - (*DB_FishOut)(nil), // 30: server.DB_FishOut - (*DB_FishOutArray)(nil), // 31: server.DB_FishOutArray - (*DB_FishPath)(nil), // 32: server.DB_FishPath - (*DB_FishPathArray)(nil), // 33: server.DB_FishPathArray - (*DB_FishRoom)(nil), // 34: server.DB_FishRoom - (*DB_FishRoomArray)(nil), // 35: server.DB_FishRoomArray - (*DB_FishSkill)(nil), // 36: server.DB_FishSkill - (*DB_FishSkillArray)(nil), // 37: server.DB_FishSkillArray - (*DB_FortuneGod_Odds)(nil), // 38: server.DB_FortuneGod_Odds - (*DB_FortuneGod_OddsArray)(nil), // 39: server.DB_FortuneGod_OddsArray - (*DB_FortuneGod_TurnRate)(nil), // 40: server.DB_FortuneGod_TurnRate - (*DB_FortuneGod_TurnRateArray)(nil), // 41: server.DB_FortuneGod_TurnRateArray - (*DB_FortuneGod_Weight)(nil), // 42: server.DB_FortuneGod_Weight - (*DB_FortuneGod_WeightArray)(nil), // 43: server.DB_FortuneGod_WeightArray - (*DB_FortuneGod_WeightCondition)(nil), // 44: server.DB_FortuneGod_WeightCondition - (*DB_FortuneGod_WeightConditionArray)(nil), // 45: server.DB_FortuneGod_WeightConditionArray - (*DB_GamMatchLV)(nil), // 46: server.DB_GamMatchLV - (*DB_GamMatchLVArray)(nil), // 47: server.DB_GamMatchLVArray - (*DB_GameCoinPool)(nil), // 48: server.DB_GameCoinPool - (*DB_GameCoinPoolArray)(nil), // 49: server.DB_GameCoinPoolArray - (*DB_GameFree)(nil), // 50: server.DB_GameFree - (*DB_GameFreeArray)(nil), // 51: server.DB_GameFreeArray - (*DB_GameItem)(nil), // 52: server.DB_GameItem - (*DB_GameItemArray)(nil), // 53: server.DB_GameItemArray - (*DB_GameMatchLevel)(nil), // 54: server.DB_GameMatchLevel - (*DB_GameMatchLevelArray)(nil), // 55: server.DB_GameMatchLevelArray - (*DB_GameRule)(nil), // 56: server.DB_GameRule - (*DB_GameRuleArray)(nil), // 57: server.DB_GameRuleArray - (*DB_GameSubsidy)(nil), // 58: server.DB_GameSubsidy - (*DB_GameSubsidyArray)(nil), // 59: server.DB_GameSubsidyArray - (*DB_Game_Drop)(nil), // 60: server.DB_Game_Drop - (*DB_Game_DropArray)(nil), // 61: server.DB_Game_DropArray - (*DB_Game_Introduction)(nil), // 62: server.DB_Game_Introduction - (*DB_Game_IntroductionArray)(nil), // 63: server.DB_Game_IntroductionArray - (*DB_Game_Pet)(nil), // 64: server.DB_Game_Pet - (*DB_Game_PetArray)(nil), // 65: server.DB_Game_PetArray - (*DB_Game_Role)(nil), // 66: server.DB_Game_Role - (*DB_Game_RoleArray)(nil), // 67: server.DB_Game_RoleArray - (*DB_GiftBox)(nil), // 68: server.DB_GiftBox - (*DB_GiftBoxArray)(nil), // 69: server.DB_GiftBoxArray - (*DB_IceAgeElementRate)(nil), // 70: server.DB_IceAgeElementRate - (*DB_IceAgeElementRateArray)(nil), // 71: server.DB_IceAgeElementRateArray - (*DB_Legend_Odds)(nil), // 72: server.DB_Legend_Odds - (*DB_Legend_OddsArray)(nil), // 73: server.DB_Legend_OddsArray - (*DB_Legend_TurnRate)(nil), // 74: server.DB_Legend_TurnRate - (*DB_Legend_TurnRateArray)(nil), // 75: server.DB_Legend_TurnRateArray - (*DB_Legend_Weight)(nil), // 76: server.DB_Legend_Weight - (*DB_Legend_WeightArray)(nil), // 77: server.DB_Legend_WeightArray - (*DB_Legend_WeightCondition)(nil), // 78: server.DB_Legend_WeightCondition - (*DB_Legend_WeightConditionArray)(nil), // 79: server.DB_Legend_WeightConditionArray - (*DB_MatchRank)(nil), // 80: server.DB_MatchRank - (*DB_MatchRankArray)(nil), // 81: server.DB_MatchRankArray - (*DB_Name)(nil), // 82: server.DB_Name - (*DB_NameArray)(nil), // 83: server.DB_NameArray - (*DB_NameBoy)(nil), // 84: server.DB_NameBoy - (*DB_NameBoyArray)(nil), // 85: server.DB_NameBoyArray - (*DB_NameGirl)(nil), // 86: server.DB_NameGirl - (*DB_NameGirlArray)(nil), // 87: server.DB_NameGirlArray - (*DB_NewPlayer)(nil), // 88: server.DB_NewPlayer - (*DB_NewPlayerArray)(nil), // 89: server.DB_NewPlayerArray - (*DB_PhoneLottery)(nil), // 90: server.DB_PhoneLottery - (*DB_PhoneLotteryArray)(nil), // 91: server.DB_PhoneLotteryArray - (*DB_PlayerExp)(nil), // 92: server.DB_PlayerExp - (*DB_PlayerExpArray)(nil), // 93: server.DB_PlayerExpArray - (*DB_PlayerInfo)(nil), // 94: server.DB_PlayerInfo - (*DB_PlayerInfoArray)(nil), // 95: server.DB_PlayerInfoArray - (*DB_PlayerType)(nil), // 96: server.DB_PlayerType - (*DB_PlayerTypeArray)(nil), // 97: server.DB_PlayerTypeArray - (*DB_PotOdd)(nil), // 98: server.DB_PotOdd - (*DB_PotOddArray)(nil), // 99: server.DB_PotOddArray - (*DB_RankCycle)(nil), // 100: server.DB_RankCycle - (*DB_RankCycleArray)(nil), // 101: server.DB_RankCycleArray - (*DB_RankLevel)(nil), // 102: server.DB_RankLevel - (*DB_RankLevelArray)(nil), // 103: server.DB_RankLevelArray - (*DB_RankReward)(nil), // 104: server.DB_RankReward - (*DB_RankRewardArray)(nil), // 105: server.DB_RankRewardArray - (*DB_Sensitive_Words)(nil), // 106: server.DB_Sensitive_Words - (*DB_Sensitive_WordsArray)(nil), // 107: server.DB_Sensitive_WordsArray - (*DB_SlotRateWeight)(nil), // 108: server.DB_SlotRateWeight - (*DB_SlotRateWeightArray)(nil), // 109: server.DB_SlotRateWeightArray - (*DB_SystemChance)(nil), // 110: server.DB_SystemChance - (*DB_SystemChanceArray)(nil), // 111: server.DB_SystemChanceArray - (*DB_Task)(nil), // 112: server.DB_Task - (*DB_TaskArray)(nil), // 113: server.DB_TaskArray - (*DB_ThirdPlatformGameMapping)(nil), // 114: server.DB_ThirdPlatformGameMapping - (*DB_ThirdPlatformGameMappingArray)(nil), // 115: server.DB_ThirdPlatformGameMappingArray - (*DB_Tips)(nil), // 116: server.DB_Tips - (*DB_TipsArray)(nil), // 117: server.DB_TipsArray - (*DB_VIP)(nil), // 118: server.DB_VIP - (*DB_VIPArray)(nil), // 119: server.DB_VIPArray - nil, // 120: server.DB_GiftBox.ItemIDEntry - nil, // 121: server.DB_Task.AwardEntry - nil, // 122: server.DB_VIP.Privilege7Entry - nil, // 123: server.DB_VIP.AwardEntry + (*DB_CollectBox)(nil), // 24: server.DB_CollectBox + (*DB_CollectBoxArray)(nil), // 25: server.DB_CollectBoxArray + (*DB_CollectBoxGain)(nil), // 26: server.DB_CollectBoxGain + (*DB_CollectBoxGainArray)(nil), // 27: server.DB_CollectBoxGainArray + (*DB_CrashSearch)(nil), // 28: server.DB_CrashSearch + (*DB_CrashSearchArray)(nil), // 29: server.DB_CrashSearchArray + (*DB_Createroom)(nil), // 30: server.DB_Createroom + (*DB_CreateroomArray)(nil), // 31: server.DB_CreateroomArray + (*DB_Fish)(nil), // 32: server.DB_Fish + (*DB_FishArray)(nil), // 33: server.DB_FishArray + (*DB_FishOut)(nil), // 34: server.DB_FishOut + (*DB_FishOutArray)(nil), // 35: server.DB_FishOutArray + (*DB_FishPath)(nil), // 36: server.DB_FishPath + (*DB_FishPathArray)(nil), // 37: server.DB_FishPathArray + (*DB_FishRoom)(nil), // 38: server.DB_FishRoom + (*DB_FishRoomArray)(nil), // 39: server.DB_FishRoomArray + (*DB_FishSkill)(nil), // 40: server.DB_FishSkill + (*DB_FishSkillArray)(nil), // 41: server.DB_FishSkillArray + (*DB_FortuneGod_Odds)(nil), // 42: server.DB_FortuneGod_Odds + (*DB_FortuneGod_OddsArray)(nil), // 43: server.DB_FortuneGod_OddsArray + (*DB_FortuneGod_TurnRate)(nil), // 44: server.DB_FortuneGod_TurnRate + (*DB_FortuneGod_TurnRateArray)(nil), // 45: server.DB_FortuneGod_TurnRateArray + (*DB_FortuneGod_Weight)(nil), // 46: server.DB_FortuneGod_Weight + (*DB_FortuneGod_WeightArray)(nil), // 47: server.DB_FortuneGod_WeightArray + (*DB_FortuneGod_WeightCondition)(nil), // 48: server.DB_FortuneGod_WeightCondition + (*DB_FortuneGod_WeightConditionArray)(nil), // 49: server.DB_FortuneGod_WeightConditionArray + (*DB_GamMatchLV)(nil), // 50: server.DB_GamMatchLV + (*DB_GamMatchLVArray)(nil), // 51: server.DB_GamMatchLVArray + (*DB_GameCoinPool)(nil), // 52: server.DB_GameCoinPool + (*DB_GameCoinPoolArray)(nil), // 53: server.DB_GameCoinPoolArray + (*DB_GameFree)(nil), // 54: server.DB_GameFree + (*DB_GameFreeArray)(nil), // 55: server.DB_GameFreeArray + (*DB_GameItem)(nil), // 56: server.DB_GameItem + (*DB_GameItemArray)(nil), // 57: server.DB_GameItemArray + (*DB_GameMatchLevel)(nil), // 58: server.DB_GameMatchLevel + (*DB_GameMatchLevelArray)(nil), // 59: server.DB_GameMatchLevelArray + (*DB_GameRule)(nil), // 60: server.DB_GameRule + (*DB_GameRuleArray)(nil), // 61: server.DB_GameRuleArray + (*DB_GameSubsidy)(nil), // 62: server.DB_GameSubsidy + (*DB_GameSubsidyArray)(nil), // 63: server.DB_GameSubsidyArray + (*DB_Game_Drop)(nil), // 64: server.DB_Game_Drop + (*DB_Game_DropArray)(nil), // 65: server.DB_Game_DropArray + (*DB_Game_Introduction)(nil), // 66: server.DB_Game_Introduction + (*DB_Game_IntroductionArray)(nil), // 67: server.DB_Game_IntroductionArray + (*DB_Game_Pet)(nil), // 68: server.DB_Game_Pet + (*DB_Game_PetArray)(nil), // 69: server.DB_Game_PetArray + (*DB_Game_Role)(nil), // 70: server.DB_Game_Role + (*DB_Game_RoleArray)(nil), // 71: server.DB_Game_RoleArray + (*DB_GiftBox)(nil), // 72: server.DB_GiftBox + (*DB_GiftBoxArray)(nil), // 73: server.DB_GiftBoxArray + (*DB_IceAgeElementRate)(nil), // 74: server.DB_IceAgeElementRate + (*DB_IceAgeElementRateArray)(nil), // 75: server.DB_IceAgeElementRateArray + (*DB_Legend_Odds)(nil), // 76: server.DB_Legend_Odds + (*DB_Legend_OddsArray)(nil), // 77: server.DB_Legend_OddsArray + (*DB_Legend_TurnRate)(nil), // 78: server.DB_Legend_TurnRate + (*DB_Legend_TurnRateArray)(nil), // 79: server.DB_Legend_TurnRateArray + (*DB_Legend_Weight)(nil), // 80: server.DB_Legend_Weight + (*DB_Legend_WeightArray)(nil), // 81: server.DB_Legend_WeightArray + (*DB_Legend_WeightCondition)(nil), // 82: server.DB_Legend_WeightCondition + (*DB_Legend_WeightConditionArray)(nil), // 83: server.DB_Legend_WeightConditionArray + (*DB_MatchRank)(nil), // 84: server.DB_MatchRank + (*DB_MatchRankArray)(nil), // 85: server.DB_MatchRankArray + (*DB_Name)(nil), // 86: server.DB_Name + (*DB_NameArray)(nil), // 87: server.DB_NameArray + (*DB_NameBoy)(nil), // 88: server.DB_NameBoy + (*DB_NameBoyArray)(nil), // 89: server.DB_NameBoyArray + (*DB_NameGirl)(nil), // 90: server.DB_NameGirl + (*DB_NameGirlArray)(nil), // 91: server.DB_NameGirlArray + (*DB_NewPlayer)(nil), // 92: server.DB_NewPlayer + (*DB_NewPlayerArray)(nil), // 93: server.DB_NewPlayerArray + (*DB_PhoneLottery)(nil), // 94: server.DB_PhoneLottery + (*DB_PhoneLotteryArray)(nil), // 95: server.DB_PhoneLotteryArray + (*DB_PlayerExp)(nil), // 96: server.DB_PlayerExp + (*DB_PlayerExpArray)(nil), // 97: server.DB_PlayerExpArray + (*DB_PlayerInfo)(nil), // 98: server.DB_PlayerInfo + (*DB_PlayerInfoArray)(nil), // 99: server.DB_PlayerInfoArray + (*DB_PlayerType)(nil), // 100: server.DB_PlayerType + (*DB_PlayerTypeArray)(nil), // 101: server.DB_PlayerTypeArray + (*DB_PotOdd)(nil), // 102: server.DB_PotOdd + (*DB_PotOddArray)(nil), // 103: server.DB_PotOddArray + (*DB_PropExchange)(nil), // 104: server.DB_PropExchange + (*DB_PropExchangeArray)(nil), // 105: server.DB_PropExchangeArray + (*DB_RankCycle)(nil), // 106: server.DB_RankCycle + (*DB_RankCycleArray)(nil), // 107: server.DB_RankCycleArray + (*DB_RankLevel)(nil), // 108: server.DB_RankLevel + (*DB_RankLevelArray)(nil), // 109: server.DB_RankLevelArray + (*DB_RankReward)(nil), // 110: server.DB_RankReward + (*DB_RankRewardArray)(nil), // 111: server.DB_RankRewardArray + (*DB_Sensitive_Words)(nil), // 112: server.DB_Sensitive_Words + (*DB_Sensitive_WordsArray)(nil), // 113: server.DB_Sensitive_WordsArray + (*DB_SlotRateWeight)(nil), // 114: server.DB_SlotRateWeight + (*DB_SlotRateWeightArray)(nil), // 115: server.DB_SlotRateWeightArray + (*DB_SystemChance)(nil), // 116: server.DB_SystemChance + (*DB_SystemChanceArray)(nil), // 117: server.DB_SystemChanceArray + (*DB_Task)(nil), // 118: server.DB_Task + (*DB_TaskArray)(nil), // 119: server.DB_TaskArray + (*DB_ThirdPlatformGameMapping)(nil), // 120: server.DB_ThirdPlatformGameMapping + (*DB_ThirdPlatformGameMappingArray)(nil), // 121: server.DB_ThirdPlatformGameMappingArray + (*DB_Tips)(nil), // 122: server.DB_Tips + (*DB_TipsArray)(nil), // 123: server.DB_TipsArray + (*DB_VIP)(nil), // 124: server.DB_VIP + (*DB_VIPArray)(nil), // 125: server.DB_VIPArray + nil, // 126: server.DB_CollectBox.ItemIDEntry + nil, // 127: server.DB_GiftBox.ItemIDEntry + nil, // 128: server.DB_PropExchange.CostEntry + nil, // 129: server.DB_PropExchange.GainEntry + nil, // 130: server.DB_Task.AwardEntry + nil, // 131: server.DB_VIP.Privilege7Entry + nil, // 132: server.DB_VIP.AwardEntry } var file_pbdata_proto_depIdxs = []int32{ 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign @@ -10774,63 +11158,69 @@ var file_pbdata_proto_depIdxs = []int32{ 18, // 9: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules 20, // 10: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank 22, // 11: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer - 24, // 12: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch - 26, // 13: server.DB_CreateroomArray.Arr:type_name -> server.DB_Createroom - 28, // 14: server.DB_FishArray.Arr:type_name -> server.DB_Fish - 30, // 15: server.DB_FishOutArray.Arr:type_name -> server.DB_FishOut - 32, // 16: server.DB_FishPathArray.Arr:type_name -> server.DB_FishPath - 34, // 17: server.DB_FishRoomArray.Arr:type_name -> server.DB_FishRoom - 36, // 18: server.DB_FishSkillArray.Arr:type_name -> server.DB_FishSkill - 38, // 19: server.DB_FortuneGod_OddsArray.Arr:type_name -> server.DB_FortuneGod_Odds - 40, // 20: server.DB_FortuneGod_TurnRateArray.Arr:type_name -> server.DB_FortuneGod_TurnRate - 42, // 21: server.DB_FortuneGod_WeightArray.Arr:type_name -> server.DB_FortuneGod_Weight - 44, // 22: server.DB_FortuneGod_WeightConditionArray.Arr:type_name -> server.DB_FortuneGod_WeightCondition - 46, // 23: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV - 48, // 24: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool - 50, // 25: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree - 52, // 26: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem - 54, // 27: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel - 56, // 28: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule - 58, // 29: server.DB_GameSubsidyArray.Arr:type_name -> server.DB_GameSubsidy - 60, // 30: server.DB_Game_DropArray.Arr:type_name -> server.DB_Game_Drop - 62, // 31: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction - 64, // 32: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet - 66, // 33: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role - 120, // 34: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry - 68, // 35: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox - 70, // 36: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate - 72, // 37: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds - 74, // 38: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate - 76, // 39: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight - 78, // 40: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition - 80, // 41: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank - 82, // 42: server.DB_NameArray.Arr:type_name -> server.DB_Name - 84, // 43: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy - 86, // 44: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl - 88, // 45: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer - 90, // 46: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery - 92, // 47: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 94, // 48: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo - 96, // 49: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 98, // 50: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 100, // 51: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 102, // 52: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 104, // 53: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 106, // 54: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 108, // 55: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 110, // 56: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 121, // 57: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 112, // 58: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 114, // 59: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 116, // 60: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 122, // 61: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 123, // 62: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 118, // 63: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 64, // [64:64] is the sub-list for method output_type - 64, // [64:64] is the sub-list for method input_type - 64, // [64:64] is the sub-list for extension type_name - 64, // [64:64] is the sub-list for extension extendee - 0, // [0:64] is the sub-list for field type_name + 126, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry + 24, // 13: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox + 26, // 14: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain + 28, // 15: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch + 30, // 16: server.DB_CreateroomArray.Arr:type_name -> server.DB_Createroom + 32, // 17: server.DB_FishArray.Arr:type_name -> server.DB_Fish + 34, // 18: server.DB_FishOutArray.Arr:type_name -> server.DB_FishOut + 36, // 19: server.DB_FishPathArray.Arr:type_name -> server.DB_FishPath + 38, // 20: server.DB_FishRoomArray.Arr:type_name -> server.DB_FishRoom + 40, // 21: server.DB_FishSkillArray.Arr:type_name -> server.DB_FishSkill + 42, // 22: server.DB_FortuneGod_OddsArray.Arr:type_name -> server.DB_FortuneGod_Odds + 44, // 23: server.DB_FortuneGod_TurnRateArray.Arr:type_name -> server.DB_FortuneGod_TurnRate + 46, // 24: server.DB_FortuneGod_WeightArray.Arr:type_name -> server.DB_FortuneGod_Weight + 48, // 25: server.DB_FortuneGod_WeightConditionArray.Arr:type_name -> server.DB_FortuneGod_WeightCondition + 50, // 26: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV + 52, // 27: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool + 54, // 28: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree + 56, // 29: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem + 58, // 30: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel + 60, // 31: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule + 62, // 32: server.DB_GameSubsidyArray.Arr:type_name -> server.DB_GameSubsidy + 64, // 33: server.DB_Game_DropArray.Arr:type_name -> server.DB_Game_Drop + 66, // 34: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction + 68, // 35: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet + 70, // 36: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role + 127, // 37: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry + 72, // 38: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox + 74, // 39: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate + 76, // 40: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds + 78, // 41: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate + 80, // 42: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight + 82, // 43: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition + 84, // 44: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank + 86, // 45: server.DB_NameArray.Arr:type_name -> server.DB_Name + 88, // 46: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy + 90, // 47: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl + 92, // 48: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer + 94, // 49: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery + 96, // 50: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 98, // 51: server.DB_PlayerInfoArray.Arr:type_name -> server.DB_PlayerInfo + 100, // 52: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 102, // 53: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 128, // 54: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 129, // 55: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 104, // 56: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 106, // 57: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 108, // 58: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 110, // 59: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 112, // 60: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 114, // 61: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 116, // 62: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 130, // 63: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 118, // 64: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 120, // 65: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 122, // 66: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 131, // 67: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 132, // 68: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 124, // 69: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 70, // [70:70] is the sub-list for method output_type + 70, // [70:70] is the sub-list for method input_type + 70, // [70:70] is the sub-list for extension type_name + 70, // [70:70] is the sub-list for extension extendee + 0, // [0:70] is the sub-list for field type_name } func init() { file_pbdata_proto_init() } @@ -11128,7 +11518,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CrashSearch); i { + switch v := v.(*DB_CollectBox); i { case 0: return &v.state case 1: @@ -11140,7 +11530,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CrashSearchArray); i { + switch v := v.(*DB_CollectBoxArray); i { case 0: return &v.state case 1: @@ -11152,7 +11542,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Createroom); i { + switch v := v.(*DB_CollectBoxGain); i { case 0: return &v.state case 1: @@ -11164,7 +11554,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CreateroomArray); i { + switch v := v.(*DB_CollectBoxGainArray); i { case 0: return &v.state case 1: @@ -11176,7 +11566,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Fish); i { + switch v := v.(*DB_CrashSearch); i { case 0: return &v.state case 1: @@ -11188,7 +11578,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishArray); i { + switch v := v.(*DB_CrashSearchArray); i { case 0: return &v.state case 1: @@ -11200,7 +11590,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishOut); i { + switch v := v.(*DB_Createroom); i { case 0: return &v.state case 1: @@ -11212,7 +11602,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishOutArray); i { + switch v := v.(*DB_CreateroomArray); i { case 0: return &v.state case 1: @@ -11224,7 +11614,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishPath); i { + switch v := v.(*DB_Fish); i { case 0: return &v.state case 1: @@ -11236,7 +11626,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishPathArray); i { + switch v := v.(*DB_FishArray); i { case 0: return &v.state case 1: @@ -11248,7 +11638,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishRoom); i { + switch v := v.(*DB_FishOut); i { case 0: return &v.state case 1: @@ -11260,7 +11650,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishRoomArray); i { + switch v := v.(*DB_FishOutArray); i { case 0: return &v.state case 1: @@ -11272,7 +11662,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishSkill); i { + switch v := v.(*DB_FishPath); i { case 0: return &v.state case 1: @@ -11284,7 +11674,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishSkillArray); i { + switch v := v.(*DB_FishPathArray); i { case 0: return &v.state case 1: @@ -11296,7 +11686,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_Odds); i { + switch v := v.(*DB_FishRoom); i { case 0: return &v.state case 1: @@ -11308,7 +11698,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_OddsArray); i { + switch v := v.(*DB_FishRoomArray); i { case 0: return &v.state case 1: @@ -11320,7 +11710,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_TurnRate); i { + switch v := v.(*DB_FishSkill); i { case 0: return &v.state case 1: @@ -11332,7 +11722,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_TurnRateArray); i { + switch v := v.(*DB_FishSkillArray); i { case 0: return &v.state case 1: @@ -11344,7 +11734,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_Weight); i { + switch v := v.(*DB_FortuneGod_Odds); i { case 0: return &v.state case 1: @@ -11356,7 +11746,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightArray); i { + switch v := v.(*DB_FortuneGod_OddsArray); i { case 0: return &v.state case 1: @@ -11368,7 +11758,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightCondition); i { + switch v := v.(*DB_FortuneGod_TurnRate); i { case 0: return &v.state case 1: @@ -11380,7 +11770,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightConditionArray); i { + switch v := v.(*DB_FortuneGod_TurnRateArray); i { case 0: return &v.state case 1: @@ -11392,7 +11782,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GamMatchLV); i { + switch v := v.(*DB_FortuneGod_Weight); i { case 0: return &v.state case 1: @@ -11404,7 +11794,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GamMatchLVArray); i { + switch v := v.(*DB_FortuneGod_WeightArray); i { case 0: return &v.state case 1: @@ -11416,7 +11806,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameCoinPool); i { + switch v := v.(*DB_FortuneGod_WeightCondition); i { case 0: return &v.state case 1: @@ -11428,7 +11818,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameCoinPoolArray); i { + switch v := v.(*DB_FortuneGod_WeightConditionArray); i { case 0: return &v.state case 1: @@ -11440,7 +11830,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameFree); i { + switch v := v.(*DB_GamMatchLV); i { case 0: return &v.state case 1: @@ -11452,7 +11842,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameFreeArray); i { + switch v := v.(*DB_GamMatchLVArray); i { case 0: return &v.state case 1: @@ -11464,7 +11854,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameItem); i { + switch v := v.(*DB_GameCoinPool); i { case 0: return &v.state case 1: @@ -11476,7 +11866,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameItemArray); i { + switch v := v.(*DB_GameCoinPoolArray); i { case 0: return &v.state case 1: @@ -11488,7 +11878,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameMatchLevel); i { + switch v := v.(*DB_GameFree); i { case 0: return &v.state case 1: @@ -11500,7 +11890,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameMatchLevelArray); i { + switch v := v.(*DB_GameFreeArray); i { case 0: return &v.state case 1: @@ -11512,7 +11902,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameRule); i { + switch v := v.(*DB_GameItem); i { case 0: return &v.state case 1: @@ -11524,7 +11914,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameRuleArray); i { + switch v := v.(*DB_GameItemArray); i { case 0: return &v.state case 1: @@ -11536,7 +11926,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameSubsidy); i { + switch v := v.(*DB_GameMatchLevel); i { case 0: return &v.state case 1: @@ -11548,7 +11938,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameSubsidyArray); i { + switch v := v.(*DB_GameMatchLevelArray); i { case 0: return &v.state case 1: @@ -11560,7 +11950,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Drop); i { + switch v := v.(*DB_GameRule); i { case 0: return &v.state case 1: @@ -11572,7 +11962,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_DropArray); i { + switch v := v.(*DB_GameRuleArray); i { case 0: return &v.state case 1: @@ -11584,7 +11974,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Introduction); i { + switch v := v.(*DB_GameSubsidy); i { case 0: return &v.state case 1: @@ -11596,7 +11986,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_IntroductionArray); i { + switch v := v.(*DB_GameSubsidyArray); i { case 0: return &v.state case 1: @@ -11608,7 +11998,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Pet); i { + switch v := v.(*DB_Game_Drop); i { case 0: return &v.state case 1: @@ -11620,7 +12010,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_PetArray); i { + switch v := v.(*DB_Game_DropArray); i { case 0: return &v.state case 1: @@ -11632,7 +12022,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Role); i { + switch v := v.(*DB_Game_Introduction); i { case 0: return &v.state case 1: @@ -11644,7 +12034,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_RoleArray); i { + switch v := v.(*DB_Game_IntroductionArray); i { case 0: return &v.state case 1: @@ -11656,7 +12046,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftBox); i { + switch v := v.(*DB_Game_Pet); i { case 0: return &v.state case 1: @@ -11668,7 +12058,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftBoxArray); i { + switch v := v.(*DB_Game_PetArray); i { case 0: return &v.state case 1: @@ -11680,7 +12070,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_IceAgeElementRate); i { + switch v := v.(*DB_Game_Role); i { case 0: return &v.state case 1: @@ -11692,7 +12082,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_IceAgeElementRateArray); i { + switch v := v.(*DB_Game_RoleArray); i { case 0: return &v.state case 1: @@ -11704,7 +12094,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_Odds); i { + switch v := v.(*DB_GiftBox); i { case 0: return &v.state case 1: @@ -11716,7 +12106,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_OddsArray); i { + switch v := v.(*DB_GiftBoxArray); i { case 0: return &v.state case 1: @@ -11728,7 +12118,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_TurnRate); i { + switch v := v.(*DB_IceAgeElementRate); i { case 0: return &v.state case 1: @@ -11740,7 +12130,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_TurnRateArray); i { + switch v := v.(*DB_IceAgeElementRateArray); i { case 0: return &v.state case 1: @@ -11752,7 +12142,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_Weight); i { + switch v := v.(*DB_Legend_Odds); i { case 0: return &v.state case 1: @@ -11764,7 +12154,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightArray); i { + switch v := v.(*DB_Legend_OddsArray); i { case 0: return &v.state case 1: @@ -11776,7 +12166,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightCondition); i { + switch v := v.(*DB_Legend_TurnRate); i { case 0: return &v.state case 1: @@ -11788,7 +12178,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightConditionArray); i { + switch v := v.(*DB_Legend_TurnRateArray); i { case 0: return &v.state case 1: @@ -11800,7 +12190,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_MatchRank); i { + switch v := v.(*DB_Legend_Weight); i { case 0: return &v.state case 1: @@ -11812,7 +12202,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_MatchRankArray); i { + switch v := v.(*DB_Legend_WeightArray); i { case 0: return &v.state case 1: @@ -11824,7 +12214,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Name); i { + switch v := v.(*DB_Legend_WeightCondition); i { case 0: return &v.state case 1: @@ -11836,7 +12226,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameArray); i { + switch v := v.(*DB_Legend_WeightConditionArray); i { case 0: return &v.state case 1: @@ -11848,7 +12238,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameBoy); i { + switch v := v.(*DB_MatchRank); i { case 0: return &v.state case 1: @@ -11860,7 +12250,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameBoyArray); i { + switch v := v.(*DB_MatchRankArray); i { case 0: return &v.state case 1: @@ -11872,7 +12262,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameGirl); i { + switch v := v.(*DB_Name); i { case 0: return &v.state case 1: @@ -11884,7 +12274,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameGirlArray); i { + switch v := v.(*DB_NameArray); i { case 0: return &v.state case 1: @@ -11896,7 +12286,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewPlayer); i { + switch v := v.(*DB_NameBoy); i { case 0: return &v.state case 1: @@ -11908,7 +12298,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewPlayerArray); i { + switch v := v.(*DB_NameBoyArray); i { case 0: return &v.state case 1: @@ -11920,7 +12310,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLottery); i { + switch v := v.(*DB_NameGirl); i { case 0: return &v.state case 1: @@ -11932,7 +12322,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLotteryArray); i { + switch v := v.(*DB_NameGirlArray); i { case 0: return &v.state case 1: @@ -11944,7 +12334,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExp); i { + switch v := v.(*DB_NewPlayer); i { case 0: return &v.state case 1: @@ -11956,7 +12346,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExpArray); i { + switch v := v.(*DB_NewPlayerArray); i { case 0: return &v.state case 1: @@ -11968,7 +12358,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerInfo); i { + switch v := v.(*DB_PhoneLottery); i { case 0: return &v.state case 1: @@ -11980,7 +12370,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerInfoArray); i { + switch v := v.(*DB_PhoneLotteryArray); i { case 0: return &v.state case 1: @@ -11992,7 +12382,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerType); i { + switch v := v.(*DB_PlayerExp); i { case 0: return &v.state case 1: @@ -12004,7 +12394,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerTypeArray); i { + switch v := v.(*DB_PlayerExpArray); i { case 0: return &v.state case 1: @@ -12016,7 +12406,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOdd); i { + switch v := v.(*DB_PlayerInfo); i { case 0: return &v.state case 1: @@ -12028,7 +12418,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOddArray); i { + switch v := v.(*DB_PlayerInfoArray); i { case 0: return &v.state case 1: @@ -12040,7 +12430,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycle); i { + switch v := v.(*DB_PlayerType); i { case 0: return &v.state case 1: @@ -12052,7 +12442,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycleArray); i { + switch v := v.(*DB_PlayerTypeArray); i { case 0: return &v.state case 1: @@ -12064,7 +12454,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevel); i { + switch v := v.(*DB_PotOdd); i { case 0: return &v.state case 1: @@ -12076,7 +12466,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevelArray); i { + switch v := v.(*DB_PotOddArray); i { case 0: return &v.state case 1: @@ -12088,7 +12478,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankReward); i { + switch v := v.(*DB_PropExchange); i { case 0: return &v.state case 1: @@ -12100,7 +12490,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankRewardArray); i { + switch v := v.(*DB_PropExchangeArray); i { case 0: return &v.state case 1: @@ -12112,7 +12502,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_Words); i { + switch v := v.(*DB_RankCycle); i { case 0: return &v.state case 1: @@ -12124,7 +12514,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_WordsArray); i { + switch v := v.(*DB_RankCycleArray); i { case 0: return &v.state case 1: @@ -12136,7 +12526,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeight); i { + switch v := v.(*DB_RankLevel); i { case 0: return &v.state case 1: @@ -12148,7 +12538,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeightArray); i { + switch v := v.(*DB_RankLevelArray); i { case 0: return &v.state case 1: @@ -12160,7 +12550,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChance); i { + switch v := v.(*DB_RankReward); i { case 0: return &v.state case 1: @@ -12172,7 +12562,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChanceArray); i { + switch v := v.(*DB_RankRewardArray); i { case 0: return &v.state case 1: @@ -12184,7 +12574,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Task); i { + switch v := v.(*DB_Sensitive_Words); i { case 0: return &v.state case 1: @@ -12196,7 +12586,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TaskArray); i { + switch v := v.(*DB_Sensitive_WordsArray); i { case 0: return &v.state case 1: @@ -12208,7 +12598,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMapping); i { + switch v := v.(*DB_SlotRateWeight); i { case 0: return &v.state case 1: @@ -12220,7 +12610,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + switch v := v.(*DB_SlotRateWeightArray); i { case 0: return &v.state case 1: @@ -12232,7 +12622,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Tips); i { + switch v := v.(*DB_SystemChance); i { case 0: return &v.state case 1: @@ -12244,7 +12634,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TipsArray); i { + switch v := v.(*DB_SystemChanceArray); i { case 0: return &v.state case 1: @@ -12256,7 +12646,7 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIP); i { + switch v := v.(*DB_Task); i { case 0: return &v.state case 1: @@ -12268,6 +12658,78 @@ func file_pbdata_proto_init() { } } file_pbdata_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_TaskArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_ThirdPlatformGameMapping); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_Tips); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_TipsArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIP); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pbdata_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_VIPArray); i { case 0: return &v.state @@ -12286,7 +12748,7 @@ func file_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 124, + NumMessages: 133, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 129620e..aebae9d 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -303,6 +303,32 @@ message DB_ClientVerArray { repeated DB_ClientVer Arr = 1; } +message DB_CollectBox { + + int32 Id = 1; + + int32 Rate = 2; + + map ItemID = 3; + +} + +message DB_CollectBoxArray { + repeated DB_CollectBox Arr = 1; +} + +message DB_CollectBoxGain { + + int32 Id = 1; + + int32 Rate = 2; + +} + +message DB_CollectBoxGainArray { + repeated DB_CollectBoxGain Arr = 1; +} + message DB_CrashSearch { int32 Id = 1; @@ -1305,6 +1331,22 @@ message DB_PotOddArray { repeated DB_PotOdd Arr = 1; } +message DB_PropExchange { + + int32 Id = 1; + + int32 Group = 2; + + map Cost = 3; + + map Gain = 4; + +} + +message DB_PropExchangeArray { + repeated DB_PropExchange Arr = 1; +} + message DB_RankCycle { int32 Id = 1; diff --git a/public b/public index dd2f835..af179ea 160000 --- a/public +++ b/public @@ -1 +1 @@ -Subproject commit dd2f83586934e7b32c64f57f561154eb6a374656 +Subproject commit af179ea10ec248fddcbdc596baf969d9f774cf42 diff --git a/srvdata/db_collectbox.go b/srvdata/db_collectbox.go new file mode 100644 index 0000000..f508213 --- /dev/null +++ b/srvdata/db_collectbox.go @@ -0,0 +1,68 @@ +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_CollectBoxMgr = &DB_CollectBoxMgr{pool: make(map[int32]*server.DB_CollectBox), Datas: &server.DB_CollectBoxArray{}} + +type DB_CollectBoxMgr struct { + Datas *server.DB_CollectBoxArray + pool map[int32]*server.DB_CollectBox +} + +func (this *DB_CollectBoxMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_CollectBoxMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_CollectBoxArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_CollectBoxMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + } +} + +func (this *DB_CollectBoxMgr) GetData(id int32) *server.DB_CollectBox { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + +func init() { + DataMgr.RegisteLoader("DB_CollectBox.dat", &ProtobufDataLoader{dh: PBDB_CollectBoxMgr}) +} diff --git a/srvdata/db_collectboxgain.go b/srvdata/db_collectboxgain.go new file mode 100644 index 0000000..27c71ae --- /dev/null +++ b/srvdata/db_collectboxgain.go @@ -0,0 +1,68 @@ +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_CollectBoxGainMgr = &DB_CollectBoxGainMgr{pool: make(map[int32]*server.DB_CollectBoxGain), Datas: &server.DB_CollectBoxGainArray{}} + +type DB_CollectBoxGainMgr struct { + Datas *server.DB_CollectBoxGainArray + pool map[int32]*server.DB_CollectBoxGain +} + +func (this *DB_CollectBoxGainMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_CollectBoxGainMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_CollectBoxGainArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_CollectBoxGainMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + } +} + +func (this *DB_CollectBoxGainMgr) GetData(id int32) *server.DB_CollectBoxGain { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + +func init() { + DataMgr.RegisteLoader("DB_CollectBoxGain.dat", &ProtobufDataLoader{dh: PBDB_CollectBoxGainMgr}) +} diff --git a/srvdata/db_propexchange.go b/srvdata/db_propexchange.go new file mode 100644 index 0000000..9a09e8c --- /dev/null +++ b/srvdata/db_propexchange.go @@ -0,0 +1,68 @@ +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_PropExchangeMgr = &DB_PropExchangeMgr{pool: make(map[int32]*server.DB_PropExchange), Datas: &server.DB_PropExchangeArray{}} + +type DB_PropExchangeMgr struct { + Datas *server.DB_PropExchangeArray + pool map[int32]*server.DB_PropExchange +} + +func (this *DB_PropExchangeMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_PropExchangeMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_PropExchangeArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_PropExchangeMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + } +} + +func (this *DB_PropExchangeMgr) GetData(id int32) *server.DB_PropExchange { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + +func init() { + DataMgr.RegisteLoader("DB_PropExchange.dat", &ProtobufDataLoader{dh: PBDB_PropExchangeMgr}) +} diff --git a/tools/xlsx2binary/agc.go b/tools/xlsx2binary/agc.go index 0ac5b2e..1d85b42 100644 --- a/tools/xlsx2binary/agc.go +++ b/tools/xlsx2binary/agc.go @@ -1,8 +1,8 @@ - // Code generated by xlsx2proto. // DO NOT EDIT! package main + import ( "encoding/json" "fmt" @@ -12,15 +12,14 @@ import ( "strings" "github.com/tealeg/xlsx" - "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/proto" "mongo.games.com/game/protocol/server" ) var _ = strings.Split - -func AgcConvertDB_ActSign(fi,fo string) { +func AgcConvertDB_ActSign(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -34,19 +33,19 @@ func AgcConvertDB_ActSign(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ActSignArray{ - Arr:make([]*server.DB_ActSign, 0, len(sheet.Rows)), + arr := &server.DB_ActSignArray{ + Arr: make([]*server.DB_ActSign, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -54,82 +53,46 @@ func AgcConvertDB_ActSign(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ActSign{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Name = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Item_Id = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Grade = int32(temp) - - - - - - - - break } @@ -137,26 +100,26 @@ func AgcConvertDB_ActSign(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Activity1(fi,fo string) { + +func AgcConvertDB_Activity1(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -170,19 +133,19 @@ func AgcConvertDB_Activity1(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Activity1Array{ - Arr:make([]*server.DB_Activity1, 0, len(sheet.Rows)), + arr := &server.DB_Activity1Array{ + Arr: make([]*server.DB_Activity1, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -190,165 +153,87 @@ func AgcConvertDB_Activity1(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Activity1{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Parameter = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Turn = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.Title = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Costype = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Costp = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Cost = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Typee = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Propid = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Value = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Getype = int32(temp) - - - - - - - - break } @@ -356,26 +241,26 @@ func AgcConvertDB_Activity1(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_AnimalColor(fi,fo string) { + +func AgcConvertDB_AnimalColor(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -389,19 +274,19 @@ func AgcConvertDB_AnimalColor(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_AnimalColorArray{ - Arr:make([]*server.DB_AnimalColor, 0, len(sheet.Rows)), + arr := &server.DB_AnimalColorArray{ + Arr: make([]*server.DB_AnimalColor, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -409,46 +294,29 @@ func AgcConvertDB_AnimalColor(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_AnimalColor{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Desc = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -459,11 +327,6 @@ func AgcConvertDB_AnimalColor(fi,fo string) { } } data.ColorChance = arrInt - - - - - break } @@ -471,26 +334,26 @@ func AgcConvertDB_AnimalColor(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ArtilleryRate(fi,fo string) { + +func AgcConvertDB_ArtilleryRate(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -504,19 +367,19 @@ func AgcConvertDB_ArtilleryRate(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ArtilleryRateArray{ - Arr:make([]*server.DB_ArtilleryRate, 0, len(sheet.Rows)), + arr := &server.DB_ArtilleryRateArray{ + Arr: make([]*server.DB_ArtilleryRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -524,67 +387,38 @@ func AgcConvertDB_ArtilleryRate(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ArtilleryRate{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Shell = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.Desc = row.Cells[3].String() - - - - - - break } @@ -592,26 +426,26 @@ func AgcConvertDB_ArtilleryRate(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ArtillerySkin(fi,fo string) { + +func AgcConvertDB_ArtillerySkin(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -625,19 +459,19 @@ func AgcConvertDB_ArtillerySkin(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ArtillerySkinArray{ - Arr:make([]*server.DB_ArtillerySkin, 0, len(sheet.Rows)), + arr := &server.DB_ArtillerySkinArray{ + Arr: make([]*server.DB_ArtillerySkin, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -645,181 +479,94 @@ func AgcConvertDB_ArtillerySkin(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ArtillerySkin{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.CannonId = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.ExprieTime = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Show = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Order = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - - - + data.NameIcon = row.Cells[7].String() - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - - - + data.PicIcon = row.Cells[8].String() - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - - - + data.BaseIcon = row.Cells[9].String() - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - - - + data.ShellIcon = row.Cells[10].String() - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - - - + data.NetIcon = row.Cells[11].String() - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - - - - + arrStr = strings.Split(row.Cells[12].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[12].String() != "" { @@ -830,108 +577,54 @@ func AgcConvertDB_ArtillerySkin(fi,fo string) { } } data.Vip = arrInt - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) data.Gold = int32(temp) - - - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Diamond = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Income = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.Speed = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ + + if len(row.Cells) < 17+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) data.Caught = int32(temp) - - - - - - - - - if len(row.Cells)<18+1{ + + if len(row.Cells) < 18+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) data.Introduce = int32(temp) - - - - - - - - - if len(row.Cells)<19+1{ + + if len(row.Cells) < 19+1 { break } - - - + data.Source = row.Cells[19].String() - - - - - - break } @@ -939,26 +632,26 @@ func AgcConvertDB_ArtillerySkin(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_BlackWhite(fi,fo string) { + +func AgcConvertDB_BlackWhite(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -972,19 +665,19 @@ func AgcConvertDB_BlackWhite(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_BlackWhiteArray{ - Arr:make([]*server.DB_BlackWhite, 0, len(sheet.Rows)), + arr := &server.DB_BlackWhiteArray{ + Arr: make([]*server.DB_BlackWhite, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -992,33 +685,23 @@ func AgcConvertDB_BlackWhite(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_BlackWhite{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -1029,18 +712,11 @@ func AgcConvertDB_BlackWhite(fi,fo string) { } } data.BlackOdds = arrInt - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -1051,11 +727,6 @@ func AgcConvertDB_BlackWhite(fi,fo string) { } } data.WhiteOdds = arrInt - - - - - break } @@ -1063,26 +734,26 @@ func AgcConvertDB_BlackWhite(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CardsJD(fi,fo string) { + +func AgcConvertDB_CardsJD(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1096,19 +767,19 @@ func AgcConvertDB_CardsJD(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CardsJDArray{ - Arr:make([]*server.DB_CardsJD, 0, len(sheet.Rows)), + arr := &server.DB_CardsJDArray{ + Arr: make([]*server.DB_CardsJD, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1116,242 +787,122 @@ func AgcConvertDB_CardsJD(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CardsJD{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Card1 = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Card1Score = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Card1HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - + data.Change1Cards = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - + data.Card2 = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Card2Score = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Card2HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - - - + data.Change2Cards = row.Cells[8].String() - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - - - + data.Card3 = row.Cells[9].String() - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Card3Score = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Card3HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - - - + data.Change3Cards = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - + data.Card4 = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Card4Score = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Card4HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - - - + data.Change4Cards = row.Cells[16].String() - - - - - - break } @@ -1359,26 +910,26 @@ func AgcConvertDB_CardsJD(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CardsYuLe(fi,fo string) { + +func AgcConvertDB_CardsYuLe(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1392,19 +943,19 @@ func AgcConvertDB_CardsYuLe(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CardsYuLeArray{ - Arr:make([]*server.DB_CardsYuLe, 0, len(sheet.Rows)), + arr := &server.DB_CardsYuLeArray{ + Arr: make([]*server.DB_CardsYuLe, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1412,242 +963,122 @@ func AgcConvertDB_CardsYuLe(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CardsYuLe{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Card1 = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Card1Score = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Card1HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - + data.Change1Cards = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - + data.Card2 = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Card2Score = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Card2HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - - - + data.Change2Cards = row.Cells[8].String() - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - - - + data.Card3 = row.Cells[9].String() - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Card3Score = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Card3HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - - - + data.Change3Cards = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - + data.Card4 = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Card4Score = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Card4HandNum = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - - - + data.Change4Cards = row.Cells[16].String() - - - - - - break } @@ -1655,26 +1086,26 @@ func AgcConvertDB_CardsYuLe(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ChessBilledRules(fi,fo string) { + +func AgcConvertDB_ChessBilledRules(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1688,19 +1119,19 @@ func AgcConvertDB_ChessBilledRules(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ChessBilledRulesArray{ - Arr:make([]*server.DB_ChessBilledRules, 0, len(sheet.Rows)), + arr := &server.DB_ChessBilledRulesArray{ + Arr: make([]*server.DB_ChessBilledRules, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1708,110 +1139,60 @@ func AgcConvertDB_ChessBilledRules(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ChessBilledRules{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.TypeId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.WinScore = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.LoseScore = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.DrawScore = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.WinTimes = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.OtherScore = int32(temp) - - - - - - - - break } @@ -1819,26 +1200,26 @@ func AgcConvertDB_ChessBilledRules(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ChessMatchRules(fi,fo string) { + +func AgcConvertDB_ChessMatchRules(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -1852,19 +1233,19 @@ func AgcConvertDB_ChessMatchRules(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ChessMatchRulesArray{ - Arr:make([]*server.DB_ChessMatchRules, 0, len(sheet.Rows)), + arr := &server.DB_ChessMatchRulesArray{ + Arr: make([]*server.DB_ChessMatchRules, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -1872,89 +1253,51 @@ func AgcConvertDB_ChessMatchRules(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ChessMatchRules{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ScoreMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ScoreMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.MatchScoreMin = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.MatchScoreMax = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -1965,18 +1308,11 @@ func AgcConvertDB_ChessMatchRules(fi,fo string) { } } data.MatchScoreLowStep = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - - + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -1987,11 +1323,6 @@ func AgcConvertDB_ChessMatchRules(fi,fo string) { } } data.MatchScoreHightStep = arrInt - - - - - break } @@ -1999,26 +1330,26 @@ func AgcConvertDB_ChessMatchRules(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ChessRank(fi,fo string) { + +func AgcConvertDB_ChessRank(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2032,19 +1363,19 @@ func AgcConvertDB_ChessRank(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ChessRankArray{ - Arr:make([]*server.DB_ChessRank, 0, len(sheet.Rows)), + arr := &server.DB_ChessRankArray{ + Arr: make([]*server.DB_ChessRank, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2052,53 +1383,31 @@ func AgcConvertDB_ChessRank(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ChessRank{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Score = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - break } @@ -2106,26 +1415,26 @@ func AgcConvertDB_ChessRank(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ClientVer(fi,fo string) { + +func AgcConvertDB_ClientVer(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2139,19 +1448,19 @@ func AgcConvertDB_ClientVer(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ClientVerArray{ - Arr:make([]*server.DB_ClientVer, 0, len(sheet.Rows)), + arr := &server.DB_ClientVerArray{ + Arr: make([]*server.DB_ClientVer, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2159,65 +1468,36 @@ func AgcConvertDB_ClientVer(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ClientVer{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.PackageFlag = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.PackVers = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.GameVers = row.Cells[3].String() - - - - - - break } @@ -2225,26 +1505,26 @@ func AgcConvertDB_ClientVer(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_CrashSearch(fi,fo string) { + +func AgcConvertDB_CollectBox(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2258,19 +1538,19 @@ func AgcConvertDB_CrashSearch(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CrashSearchArray{ - Arr:make([]*server.DB_CrashSearch, 0, len(sheet.Rows)), + arr := &server.DB_CollectBoxArray{ + Arr: make([]*server.DB_CollectBox, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2278,54 +1558,216 @@ func AgcConvertDB_CrashSearch(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CollectBox{} + + for { + + if len(row.Cells) < 0+1 { + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + if len(row.Cells) < 1+1 { + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Rate = int32(temp) + + if len(row.Cells) < 2+1 { + break + } + + if row.Cells[2].String() != "" { + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value + } + data.ItemID = resultMap + } + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil { + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CollectBoxGain(fi, fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr := &server.DB_CollectBoxGainArray{ + Arr: make([]*server.DB_CollectBoxGain, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_CollectBoxGain{} + + for { + + if len(row.Cells) < 0+1 { + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + if len(row.Cells) < 1+1 { + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Rate = int32(temp) + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil { + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_CrashSearch(fi, fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr := &server.DB_CrashSearchArray{ + Arr: make([]*server.DB_CrashSearch, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_CrashSearch{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Time = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Price = int32(temp) - - - - - - - - break } @@ -2333,26 +1775,26 @@ func AgcConvertDB_CrashSearch(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Createroom(fi,fo string) { + +func AgcConvertDB_Createroom(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2366,19 +1808,19 @@ func AgcConvertDB_Createroom(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_CreateroomArray{ - Arr:make([]*server.DB_Createroom, 0, len(sheet.Rows)), + arr := &server.DB_CreateroomArray{ + Arr: make([]*server.DB_Createroom, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2386,61 +1828,37 @@ func AgcConvertDB_Createroom(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Createroom{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.GameSite = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -2451,18 +1869,11 @@ func AgcConvertDB_Createroom(fi,fo string) { } } data.GoldRange = arrInt - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -2473,11 +1884,6 @@ func AgcConvertDB_Createroom(fi,fo string) { } } data.BetRange = arrInt - - - - - break } @@ -2485,26 +1891,26 @@ func AgcConvertDB_Createroom(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Fish(fi,fo string) { + +func AgcConvertDB_Fish(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -2518,19 +1924,19 @@ func AgcConvertDB_Fish(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishArray{ - Arr:make([]*server.DB_Fish, 0, len(sheet.Rows)), + arr := &server.DB_FishArray{ + Arr: make([]*server.DB_Fish, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -2538,59 +1944,35 @@ func AgcConvertDB_Fish(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Fish{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.NameE = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -2601,143 +1983,73 @@ func AgcConvertDB_Fish(fi,fo string) { } } data.Gold = arrInt - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - + data.Icon = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Speed = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Exp = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.FrameCnt = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.FrameDelay = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Rate = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.ShowType = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Show = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.ShowScale = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - - + arrStr = strings.Split(row.Cells[13].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[13].String() != "" { @@ -2748,169 +2060,85 @@ func AgcConvertDB_Fish(fi,fo string) { } } data.ShowPos = arrInt - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - - - + data.DieSound = row.Cells[14].String() - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.DieFrame = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.DieRotate = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ + + if len(row.Cells) < 17+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) data.DieEffect = int32(temp) - - - - - - - - - if len(row.Cells)<18+1{ + + if len(row.Cells) < 18+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) data.DieShake = int32(temp) - - - - - - - - - if len(row.Cells)<19+1{ + + if len(row.Cells) < 19+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) data.ShakeRange = int32(temp) - - - - - - - - - if len(row.Cells)<20+1{ + + if len(row.Cells) < 20+1 { break } - - - + data.Shape = row.Cells[20].String() - - - - - - - if len(row.Cells)<21+1{ + + if len(row.Cells) < 21+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) data.IsBoss = int32(temp) - - - - - - - - - if len(row.Cells)<22+1{ + + if len(row.Cells) < 22+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) data.ResId = int32(temp) - - - - - - - - - if len(row.Cells)<23+1{ + + if len(row.Cells) < 23+1 { break } - - - + data.DieParticle = row.Cells[23].String() - - - - - - - if len(row.Cells)<24+1{ + + if len(row.Cells) < 24+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) data.GroupShape = int32(temp) - - - - - - - - - if len(row.Cells)<25+1{ + + if len(row.Cells) < 25+1 { break } - - - - + arrStr = strings.Split(row.Cells[25].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[25].String() != "" { @@ -2921,132 +2149,64 @@ func AgcConvertDB_Fish(fi,fo string) { } } data.GroupFishes = arrInt - - - - - - if len(row.Cells)<26+1{ + + if len(row.Cells) < 26+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) data.Zorder = int32(temp) - - - - - - - - - if len(row.Cells)<27+1{ + + if len(row.Cells) < 27+1 { break } - - - + data.ResPng = row.Cells[27].String() - - - - - - - if len(row.Cells)<28+1{ + + if len(row.Cells) < 28+1 { break } - - - + data.ResPlist = row.Cells[28].String() - - - - - - - if len(row.Cells)<29+1{ + + if len(row.Cells) < 29+1 { break } - - - + data.ExportJson = row.Cells[29].String() - - - - - - - if len(row.Cells)<30+1{ + + if len(row.Cells) < 30+1 { break } - - - + data.AimIcon = row.Cells[30].String() - - - - - - - if len(row.Cells)<31+1{ + + if len(row.Cells) < 31+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[31].String(), 10, 32) data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<32+1{ + + if len(row.Cells) < 32+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[32].String(), 10, 32) data.Sort = int32(temp) - - - - - - - - - if len(row.Cells)<33+1{ + + if len(row.Cells) < 33+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[33].String(), 10, 32) data.FishType = int32(temp) - - - - - - - - - if len(row.Cells)<34+1{ + + if len(row.Cells) < 34+1 { break } - - - + data.RandomCoin = row.Cells[34].String() - - - - - - break } @@ -3054,26 +2214,26 @@ func AgcConvertDB_Fish(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishOut(fi,fo string) { + +func AgcConvertDB_FishOut(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3087,19 +2247,19 @@ func AgcConvertDB_FishOut(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishOutArray{ - Arr:make([]*server.DB_FishOut, 0, len(sheet.Rows)), + arr := &server.DB_FishOutArray{ + Arr: make([]*server.DB_FishOut, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3107,74 +2267,43 @@ func AgcConvertDB_FishOut(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishOut{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.SceneType = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Exp = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -3185,18 +2314,11 @@ func AgcConvertDB_FishOut(fi,fo string) { } } data.Multiple = arrInt - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -3207,18 +2329,11 @@ func AgcConvertDB_FishOut(fi,fo string) { } } data.Path = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - - + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -3229,53 +2344,27 @@ func AgcConvertDB_FishOut(fi,fo string) { } } data.Count = arrInt - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.RefreshInterval = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Speed = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Event = int32(temp) - - - - - - - - break } @@ -3283,26 +2372,26 @@ func AgcConvertDB_FishOut(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishPath(fi,fo string) { + +func AgcConvertDB_FishPath(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3316,19 +2405,19 @@ func AgcConvertDB_FishPath(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishPathArray{ - Arr:make([]*server.DB_FishPath, 0, len(sheet.Rows)), + arr := &server.DB_FishPathArray{ + Arr: make([]*server.DB_FishPath, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3336,54 +2425,32 @@ func AgcConvertDB_FishPath(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishPath{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.AppearTime = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.DisappearTime = int32(temp) - - - - - - - - break } @@ -3391,26 +2458,26 @@ func AgcConvertDB_FishPath(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishRoom(fi,fo string) { + +func AgcConvertDB_FishRoom(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3424,19 +2491,19 @@ func AgcConvertDB_FishRoom(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishRoomArray{ - Arr:make([]*server.DB_FishRoom, 0, len(sheet.Rows)), + arr := &server.DB_FishRoomArray{ + Arr: make([]*server.DB_FishRoom, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3444,172 +2511,87 @@ func AgcConvertDB_FishRoom(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishRoom{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RoomId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.SumGold1 = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - + data.SumGold2 = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - + data.SumGold3 = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - + data.SumGold4 = row.Cells[6].String() - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - - - + data.SumGold5 = row.Cells[7].String() - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.BossCDTime = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.LittleBossCDTime = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - - - + data.EnableBoss = row.Cells[10].String() - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - - - + data.EnableLittleBoss = row.Cells[11].String() - - - - - - break } @@ -3617,26 +2599,26 @@ func AgcConvertDB_FishRoom(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FishSkill(fi,fo string) { + +func AgcConvertDB_FishSkill(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3650,19 +2632,19 @@ func AgcConvertDB_FishSkill(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FishSkillArray{ - Arr:make([]*server.DB_FishSkill, 0, len(sheet.Rows)), + arr := &server.DB_FishSkillArray{ + Arr: make([]*server.DB_FishSkill, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -3670,74 +2652,43 @@ func AgcConvertDB_FishSkill(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FishSkill{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Vip = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Consume = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -3748,18 +2699,11 @@ func AgcConvertDB_FishSkill(fi,fo string) { } } data.Item = arrInt - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -3770,190 +2714,94 @@ func AgcConvertDB_FishSkill(fi,fo string) { } } data.OtherConsumer = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Multiple = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Duration = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.SkillGroups = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.GCD = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Cooldown = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - - - + data.Hidden = row.Cells[11].String() - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - - - + data.Describe = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - + data.Boss = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.Limit = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.Mutex = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ + + if len(row.Cells) < 17+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 32) data.MutexTime = int32(temp) - - - - - - - - - if len(row.Cells)<18+1{ + + if len(row.Cells) < 18+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 32) data.Fury = int32(temp) - - - - - - - - break } @@ -3961,26 +2809,26 @@ func AgcConvertDB_FishSkill(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_Odds(fi,fo string) { + +func AgcConvertDB_FortuneGod_Odds(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -3994,19 +2842,19 @@ func AgcConvertDB_FortuneGod_Odds(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_OddsArray{ - Arr:make([]*server.DB_FortuneGod_Odds, 0, len(sheet.Rows)), + arr := &server.DB_FortuneGod_OddsArray{ + Arr: make([]*server.DB_FortuneGod_Odds, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4014,81 +2862,45 @@ func AgcConvertDB_FortuneGod_Odds(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_Odds{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Rateodds3 = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Rateodds4 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Rateodds5 = int32(temp) - - - - - - - - break } @@ -4096,26 +2908,26 @@ func AgcConvertDB_FortuneGod_Odds(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { + +func AgcConvertDB_FortuneGod_TurnRate(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4129,19 +2941,19 @@ func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_TurnRateArray{ - Arr:make([]*server.DB_FortuneGod_TurnRate, 0, len(sheet.Rows)), + arr := &server.DB_FortuneGod_TurnRateArray{ + Arr: make([]*server.DB_FortuneGod_TurnRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4149,61 +2961,37 @@ func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_TurnRate{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ReturnRateMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ReturnRateMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -4214,11 +3002,6 @@ func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { } } data.Chance = arrInt - - - - - break } @@ -4226,26 +3009,26 @@ func AgcConvertDB_FortuneGod_TurnRate(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_Weight(fi,fo string) { + +func AgcConvertDB_FortuneGod_Weight(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4259,19 +3042,19 @@ func AgcConvertDB_FortuneGod_Weight(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_WeightArray{ - Arr:make([]*server.DB_FortuneGod_Weight, 0, len(sheet.Rows)), + arr := &server.DB_FortuneGod_WeightArray{ + Arr: make([]*server.DB_FortuneGod_Weight, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4279,46 +3062,29 @@ func AgcConvertDB_FortuneGod_Weight(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_Weight{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -4329,11 +3095,6 @@ func AgcConvertDB_FortuneGod_Weight(fi,fo string) { } } data.Weight = arrInt - - - - - break } @@ -4341,26 +3102,26 @@ func AgcConvertDB_FortuneGod_Weight(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { + +func AgcConvertDB_FortuneGod_WeightCondition(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4374,19 +3135,19 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_FortuneGod_WeightConditionArray{ - Arr:make([]*server.DB_FortuneGod_WeightCondition, 0, len(sheet.Rows)), + arr := &server.DB_FortuneGod_WeightConditionArray{ + Arr: make([]*server.DB_FortuneGod_WeightCondition, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4394,47 +3155,30 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_FortuneGod_WeightCondition{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.IsNew = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -4445,18 +3189,11 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { } } data.BetScope = arrInt - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -4467,25 +3204,13 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { } } data.TrueCalcRate = arrInt - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.WeightId = int32(temp) - - - - - - - - break } @@ -4493,26 +3218,26 @@ func AgcConvertDB_FortuneGod_WeightCondition(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GamMatchLV(fi,fo string) { + +func AgcConvertDB_GamMatchLV(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4526,19 +3251,19 @@ func AgcConvertDB_GamMatchLV(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GamMatchLVArray{ - Arr:make([]*server.DB_GamMatchLV, 0, len(sheet.Rows)), + arr := &server.DB_GamMatchLVArray{ + Arr: make([]*server.DB_GamMatchLV, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4546,33 +3271,23 @@ func AgcConvertDB_GamMatchLV(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GamMatchLV{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - - + arrStr = strings.Split(row.Cells[1].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[1].String() != "" { @@ -4583,164 +3298,82 @@ func AgcConvertDB_GamMatchLV(fi,fo string) { } } data.Star = arrInt - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Star2 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.AwardType1 = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.AwardId1 = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Number1 = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AwardType2 = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.AwardId2 = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Number2 = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.AwardType3 = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.AwardId3 = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.Number3 = int32(temp) - - - - - - - - break } @@ -4748,26 +3381,26 @@ func AgcConvertDB_GamMatchLV(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameCoinPool(fi,fo string) { + +func AgcConvertDB_GameCoinPool(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4781,19 +3414,19 @@ func AgcConvertDB_GameCoinPool(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameCoinPoolArray{ - Arr:make([]*server.DB_GameCoinPool, 0, len(sheet.Rows)), + arr := &server.DB_GameCoinPoolArray{ + Arr: make([]*server.DB_GameCoinPool, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -4801,152 +3434,81 @@ func AgcConvertDB_GameCoinPool(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameCoinPool{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) data.InitValue = int64(temp) - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) data.LowerLimit = int64(temp) - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) data.UpperLimit = int64(temp) - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) data.QuDu = int64(temp) - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.UpperOdds = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.UpperOddsMax = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.LowerOdds = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.LowerOddsMax = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.ProfitRate = int32(temp) - - - - - - - - break } @@ -4954,26 +3516,26 @@ func AgcConvertDB_GameCoinPool(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameFree(fi,fo string) { + +func AgcConvertDB_GameFree(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -4987,19 +3549,19 @@ func AgcConvertDB_GameFree(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameFreeArray{ - Arr:make([]*server.DB_GameFree, 0, len(sheet.Rows)), + arr := &server.DB_GameFreeArray{ + Arr: make([]*server.DB_GameFree, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -5007,365 +3569,187 @@ func AgcConvertDB_GameFree(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameFree{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Title = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.GameMode = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.FreeMode = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.GameRule = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.GameType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.SceneType = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.RankType = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.SceneAdd = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - - - + data.Desc = row.Cells[11].String() - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.ShowType = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) data.SubShowType = int32(temp) - - - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Flag = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[15].String(), 10, 32) data.TestTakeCoin = int32(temp) - - - - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.ShowId = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ + + if len(row.Cells) < 17+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[17].String(), 10, 64) data.LimitCoin = int64(temp) - - - - - - - - if len(row.Cells)<18+1{ + + if len(row.Cells) < 18+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[18].String(), 10, 64) data.MaxCoinLimit = int64(temp) - - - - - - - - if len(row.Cells)<19+1{ + + if len(row.Cells) < 19+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[19].String(), 10, 32) data.ServiceFee = int32(temp) - - - - - - - - - if len(row.Cells)<20+1{ + + if len(row.Cells) < 20+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[20].String(), 10, 64) data.LowerThanKick = int64(temp) - - - - - - - - if len(row.Cells)<21+1{ + + if len(row.Cells) < 21+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[21].String(), 10, 32) data.BaseScore = int32(temp) - - - - - - - - - if len(row.Cells)<22+1{ + + if len(row.Cells) < 22+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[22].String(), 10, 32) data.Turn = int32(temp) - - - - - - - - - if len(row.Cells)<23+1{ + + if len(row.Cells) < 23+1 { break } - - - + data.BetDec = row.Cells[23].String() - - - - - - - if len(row.Cells)<24+1{ + + if len(row.Cells) < 24+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[24].String(), 10, 32) data.Bot = int32(temp) - - - - - - - - - if len(row.Cells)<25+1{ + + if len(row.Cells) < 25+1 { break } - - - - + arrStr = strings.Split(row.Cells[25].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[25].String() != "" { @@ -5376,48 +3760,25 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.Ai = arrInt - - - - - - if len(row.Cells)<26+1{ + + if len(row.Cells) < 26+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[26].String(), 10, 32) data.Banker = int32(temp) - - - - - - - - - if len(row.Cells)<27+1{ + + if len(row.Cells) < 27+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[27].String(), 10, 32) data.MaxChip = int32(temp) - - - - - - - - - if len(row.Cells)<28+1{ + + if len(row.Cells) < 28+1 { break } - - - - - - + arrStr = strings.Split(row.Cells[28].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[28].String() != "" { @@ -5428,18 +3789,11 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.OtherIntParams = arrInt64 - - - - if len(row.Cells)<29+1{ + + if len(row.Cells) < 29+1 { break } - - - - - - + arrStr = strings.Split(row.Cells[29].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[29].String() != "" { @@ -5450,18 +3804,11 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.ChessScoreParams = arrInt64 - - - - if len(row.Cells)<30+1{ + + if len(row.Cells) < 30+1 { break } - - - - - - + arrStr = strings.Split(row.Cells[30].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[30].String() != "" { @@ -5472,16 +3819,11 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.RankScoreParams = arrInt64 - - - - if len(row.Cells)<31+1{ + + if len(row.Cells) < 31+1 { break } - - - - + arrStr = strings.Split(row.Cells[31].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[31].String() != "" { @@ -5492,18 +3834,11 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.Jackpot = arrInt - - - - - - if len(row.Cells)<32+1{ + + if len(row.Cells) < 32+1 { break } - - - - + arrStr = strings.Split(row.Cells[32].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[32].String() != "" { @@ -5514,20 +3849,11 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.RobotNumRng = arrInt - - - - - - if len(row.Cells)<33+1{ + + if len(row.Cells) < 33+1 { break } - - - - - - + arrStr = strings.Split(row.Cells[33].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[33].String() != "" { @@ -5538,18 +3864,11 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.RobotTakeCoin = arrInt64 - - - - if len(row.Cells)<34+1{ + + if len(row.Cells) < 34+1 { break } - - - - - - + arrStr = strings.Split(row.Cells[34].String(), "|") arrInt64 = nil if len(arrStr) > 0 && row.Cells[34].String() != "" { @@ -5560,112 +3879,58 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.RobotLimitCoin = arrInt64 - - - - if len(row.Cells)<35+1{ + + if len(row.Cells) < 35+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[35].String(), 10, 32) data.BetLimit = int32(temp) - - - - - - - - - if len(row.Cells)<36+1{ + + if len(row.Cells) < 36+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[36].String(), 10, 32) data.TaxRate = int32(temp) - - - - - - - - - if len(row.Cells)<37+1{ + + if len(row.Cells) < 37+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[37].String(), 10, 32) data.SameIpLimit = int32(temp) - - - - - - - - - if len(row.Cells)<38+1{ + + if len(row.Cells) < 38+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[38].String(), 10, 32) data.SamePlaceLimit = int32(temp) - - - - - - - - - if len(row.Cells)<39+1{ + + if len(row.Cells) < 39+1 { break } - - - + data.GameDif = row.Cells[39].String() - - - - - - - if len(row.Cells)<40+1{ + + if len(row.Cells) < 40+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[40].String(), 10, 32) data.GameClass = int32(temp) - - - - - - - - - if len(row.Cells)<41+1{ + + if len(row.Cells) < 41+1 { break } - - - + data.PlatformName = row.Cells[41].String() - - - - - - - if len(row.Cells)<42+1{ + + if len(row.Cells) < 42+1 { break } - - - - + arrStr = strings.Split(row.Cells[42].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[42].String() != "" { @@ -5676,143 +3941,73 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.MaxBetCoin = arrInt - - - - - - if len(row.Cells)<43+1{ + + if len(row.Cells) < 43+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[43].String(), 10, 32) data.PlayNumLimit = int32(temp) - - - - - - - - - if len(row.Cells)<44+1{ + + if len(row.Cells) < 44+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[44].String(), 10, 32) data.CreateRoomNum = int32(temp) - - - - - - - - - if len(row.Cells)<45+1{ + + if len(row.Cells) < 45+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[45].String(), 10, 32) data.MatchTrueMan = int32(temp) - - - - - - - - - if len(row.Cells)<46+1{ + + if len(row.Cells) < 46+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[46].String(), 10, 32) data.PlayerWaterRate = int32(temp) - - - - - - - - - if len(row.Cells)<47+1{ + + if len(row.Cells) < 47+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[47].String(), 10, 32) data.MatchMode = int32(temp) - - - - - - - - - if len(row.Cells)<48+1{ + + if len(row.Cells) < 48+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[48].String(), 10, 32) data.KillingRate = int32(temp) - - - - - - - - - if len(row.Cells)<49+1{ + + if len(row.Cells) < 49+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[49].String(), 10, 32) data.BetWaterRate = int32(temp) - - - - - - - - - if len(row.Cells)<50+1{ + + if len(row.Cells) < 50+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[50].String(), 10, 32) data.Lottery = int32(temp) - - - - - - - - - if len(row.Cells)<51+1{ + + if len(row.Cells) < 51+1 { break } - - - + data.LotteryConfig = row.Cells[51].String() - - - - - - - if len(row.Cells)<52+1{ + + if len(row.Cells) < 52+1 { break } - - - - + arrStr = strings.Split(row.Cells[52].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[52].String() != "" { @@ -5823,46 +4018,25 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.BalanceLine = arrInt - - - - - - if len(row.Cells)<53+1{ + + if len(row.Cells) < 53+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[53].String(), 10, 32) data.JackpotRatio = int32(temp) - - - - - - - - - if len(row.Cells)<54+1{ + + if len(row.Cells) < 54+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[54].String(), 10, 32) data.JackpotMin = int32(temp) - - - - - - - - - if len(row.Cells)<55+1{ + + if len(row.Cells) < 55+1 { break } - - - - + arrStr = strings.Split(row.Cells[55].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[55].String() != "" { @@ -5873,220 +4047,110 @@ func AgcConvertDB_GameFree(fi,fo string) { } } data.ChessGradeLimit = arrInt - - - - - - if len(row.Cells)<56+1{ + + if len(row.Cells) < 56+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[56].String(), 10, 32) data.LeaveDeduct = int32(temp) - - - - - - - - - if len(row.Cells)<57+1{ + + if len(row.Cells) < 57+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[57].String(), 10, 32) data.LeaveCombat = int32(temp) - - - - - - - - - if len(row.Cells)<58+1{ + + if len(row.Cells) < 58+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[58].String(), 10, 32) data.IntuseCannonMin = int32(temp) - - - - - - - - - if len(row.Cells)<59+1{ + + if len(row.Cells) < 59+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[59].String(), 10, 32) data.IntuseCannonMax = int32(temp) - - - - - - - - - if len(row.Cells)<60+1{ + + if len(row.Cells) < 60+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[60].String(), 10, 32) data.BossDrainageBet = int32(temp) - - - - - - - - - if len(row.Cells)<61+1{ + + if len(row.Cells) < 61+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[61].String(), 10, 32) data.Draw = int32(temp) - - - - - - - - - if len(row.Cells)<62+1{ + + if len(row.Cells) < 62+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[62].String(), 10, 64) data.Fluctuate = int64(temp) - - - - - - - - if len(row.Cells)<63+1{ + + if len(row.Cells) < 63+1 { break } - - - + data.FluctuateMax = row.Cells[63].String() - - - - - - - if len(row.Cells)<64+1{ + + if len(row.Cells) < 64+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[64].String(), 10, 32) data.Ratio = int32(temp) - - - - - - - - - if len(row.Cells)<65+1{ + + if len(row.Cells) < 65+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[65].String(), 10, 64) data.MinValue = int64(temp) - - - - - - - - if len(row.Cells)<66+1{ + + if len(row.Cells) < 66+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[66].String(), 10, 64) data.MaxValue = int64(temp) - - - - - - - - if len(row.Cells)<67+1{ + + if len(row.Cells) < 67+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[67].String(), 10, 32) data.DrainageBet = int32(temp) - - - - - - - - - if len(row.Cells)<68+1{ + + if len(row.Cells) < 68+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[68].String(), 10, 32) data.DiamondDrop = int32(temp) - - - - - - - - - if len(row.Cells)<69+1{ + + if len(row.Cells) < 69+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[69].String(), 10, 32) data.NegativeMax = int32(temp) - - - - - - - - - if len(row.Cells)<70+1{ + + if len(row.Cells) < 70+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[70].String(), 10, 32) data.RatioMax = int32(temp) - - - - - - - - break } @@ -6094,26 +4158,26 @@ func AgcConvertDB_GameFree(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameItem(fi,fo string) { + +func AgcConvertDB_GameItem(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6127,19 +4191,19 @@ func AgcConvertDB_GameItem(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameItemArray{ - Arr:make([]*server.DB_GameItem, 0, len(sheet.Rows)), + arr := &server.DB_GameItemArray{ + Arr: make([]*server.DB_GameItem, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6147,46 +4211,29 @@ func AgcConvertDB_GameItem(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameItem{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -6197,18 +4244,11 @@ func AgcConvertDB_GameItem(fi,fo string) { } } data.ShowLocation = arrInt - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -6219,32 +4259,18 @@ func AgcConvertDB_GameItem(fi,fo string) { } } data.Classify = arrInt - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -6255,18 +4281,11 @@ func AgcConvertDB_GameItem(fi,fo string) { } } data.Effect0 = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - - + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -6277,134 +4296,66 @@ func AgcConvertDB_GameItem(fi,fo string) { } } data.Effect = arrInt - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.SaleType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.SaleGold = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Composition = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.CompositionMax = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Time = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - - - + data.Location = row.Cells[12].String() - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - + data.Describe = row.Cells[13].String() - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 64) data.Num = int64(temp) - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - - - + data.Value = row.Cells[15].String() - - - - - - break } @@ -6412,26 +4363,26 @@ func AgcConvertDB_GameItem(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameMatchLevel(fi,fo string) { + +func AgcConvertDB_GameMatchLevel(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6445,19 +4396,19 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameMatchLevelArray{ - Arr:make([]*server.DB_GameMatchLevel, 0, len(sheet.Rows)), + arr := &server.DB_GameMatchLevelArray{ + Arr: make([]*server.DB_GameMatchLevel, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6465,75 +4416,44 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameMatchLevel{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameFreeId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.MatchLevel = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.RobotUpRatio = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -6544,18 +4464,11 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { } } data.UpGrade = arrInt - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -6566,18 +4479,11 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { } } data.UpGradeOdds = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - - + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -6588,18 +4494,11 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { } } data.DownGrade = arrInt - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - - - - + arrStr = strings.Split(row.Cells[7].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[7].String() != "" { @@ -6610,11 +4509,6 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { } } data.DownGradeOdds = arrInt - - - - - break } @@ -6622,26 +4516,26 @@ func AgcConvertDB_GameMatchLevel(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameRule(fi,fo string) { + +func AgcConvertDB_GameRule(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6655,19 +4549,19 @@ func AgcConvertDB_GameRule(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameRuleArray{ - Arr:make([]*server.DB_GameRule, 0, len(sheet.Rows)), + arr := &server.DB_GameRuleArray{ + Arr: make([]*server.DB_GameRule, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6675,74 +4569,43 @@ func AgcConvertDB_GameRule(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameRule{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.GameMode = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -6753,37 +4616,18 @@ func AgcConvertDB_GameRule(fi,fo string) { } } data.Params = arrInt - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - + data.RuleDesc = row.Cells[5].String() - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - + data.GameDif = row.Cells[6].String() - - - - - - break } @@ -6791,26 +4635,26 @@ func AgcConvertDB_GameRule(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GameSubsidy(fi,fo string) { + +func AgcConvertDB_GameSubsidy(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6824,19 +4668,19 @@ func AgcConvertDB_GameSubsidy(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GameSubsidyArray{ - Arr:make([]*server.DB_GameSubsidy, 0, len(sheet.Rows)), + arr := &server.DB_GameSubsidyArray{ + Arr: make([]*server.DB_GameSubsidy, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6844,68 +4688,39 @@ func AgcConvertDB_GameSubsidy(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GameSubsidy{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.LimitNum = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Get = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Times = int32(temp) - - - - - - - - break } @@ -6913,26 +4728,26 @@ func AgcConvertDB_GameSubsidy(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Drop(fi,fo string) { + +func AgcConvertDB_Game_Drop(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -6946,19 +4761,19 @@ func AgcConvertDB_Game_Drop(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_DropArray{ - Arr:make([]*server.DB_Game_Drop, 0, len(sheet.Rows)), + arr := &server.DB_Game_DropArray{ + Arr: make([]*server.DB_Game_Drop, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -6966,103 +4781,58 @@ func AgcConvertDB_Game_Drop(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Drop{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Bet = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.ItemName1 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.ItemId1 = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Rate1 = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - - + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -7073,11 +4843,6 @@ func AgcConvertDB_Game_Drop(fi,fo string) { } } data.Amount1 = arrInt - - - - - break } @@ -7085,26 +4850,26 @@ func AgcConvertDB_Game_Drop(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Introduction(fi,fo string) { + +func AgcConvertDB_Game_Introduction(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7118,19 +4883,19 @@ func AgcConvertDB_Game_Introduction(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_IntroductionArray{ - Arr:make([]*server.DB_Game_Introduction, 0, len(sheet.Rows)), + arr := &server.DB_Game_IntroductionArray{ + Arr: make([]*server.DB_Game_Introduction, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7138,93 +4903,50 @@ func AgcConvertDB_Game_Introduction(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Introduction{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.Story = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - + data.AwardTitle = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.LevelMax = int32(temp) - - - - - - - - break } @@ -7232,26 +4954,26 @@ func AgcConvertDB_Game_Introduction(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Pet(fi,fo string) { + +func AgcConvertDB_Game_Pet(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7265,19 +4987,19 @@ func AgcConvertDB_Game_Pet(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_PetArray{ - Arr:make([]*server.DB_Game_Pet, 0, len(sheet.Rows)), + arr := &server.DB_Game_PetArray{ + Arr: make([]*server.DB_Game_Pet, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7285,151 +5007,80 @@ func AgcConvertDB_Game_Pet(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Pet{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.PetId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Grade = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Fragment = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Amount = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AwardType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Award = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.AwardRate = int32(temp) - - - - - - - - break } @@ -7437,26 +5088,26 @@ func AgcConvertDB_Game_Pet(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Game_Role(fi,fo string) { + +func AgcConvertDB_Game_Role(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7470,19 +5121,19 @@ func AgcConvertDB_Game_Role(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Game_RoleArray{ - Arr:make([]*server.DB_Game_Role, 0, len(sheet.Rows)), + arr := &server.DB_Game_RoleArray{ + Arr: make([]*server.DB_Game_Role, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7490,151 +5141,80 @@ func AgcConvertDB_Game_Role(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Game_Role{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RoleId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Grade = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Fragment = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Amount = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AwardType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Award = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.AwardRate = int32(temp) - - - - - - - - break } @@ -7642,26 +5222,26 @@ func AgcConvertDB_Game_Role(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_GiftBox(fi,fo string) { + +func AgcConvertDB_GiftBox(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7675,19 +5255,19 @@ func AgcConvertDB_GiftBox(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_GiftBoxArray{ - Arr:make([]*server.DB_GiftBox, 0, len(sheet.Rows)), + arr := &server.DB_GiftBoxArray{ + Arr: make([]*server.DB_GiftBox, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7695,73 +5275,51 @@ func AgcConvertDB_GiftBox(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_GiftBox{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Rate = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - - - - - if row.Cells[2].String() != ""{ - pairs := strings.Split(row.Cells[2].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) - continue - } - resultMap[key] = value + + if row.Cells[2].String() != "" { + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue } - data.ItemID = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value } - - + data.ItemID = resultMap + } break } @@ -7769,26 +5327,26 @@ func AgcConvertDB_GiftBox(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_IceAgeElementRate(fi,fo string) { + +func AgcConvertDB_IceAgeElementRate(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7802,19 +5360,19 @@ func AgcConvertDB_IceAgeElementRate(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_IceAgeElementRateArray{ - Arr:make([]*server.DB_IceAgeElementRate, 0, len(sheet.Rows)), + arr := &server.DB_IceAgeElementRateArray{ + Arr: make([]*server.DB_IceAgeElementRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7822,60 +5380,36 @@ func AgcConvertDB_IceAgeElementRate(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_IceAgeElementRate{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.ModeName = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ModeType = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -7886,11 +5420,6 @@ func AgcConvertDB_IceAgeElementRate(fi,fo string) { } } data.Params = arrInt - - - - - break } @@ -7898,26 +5427,26 @@ func AgcConvertDB_IceAgeElementRate(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_Odds(fi,fo string) { + +func AgcConvertDB_Legend_Odds(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -7931,19 +5460,19 @@ func AgcConvertDB_Legend_Odds(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_OddsArray{ - Arr:make([]*server.DB_Legend_Odds, 0, len(sheet.Rows)), + arr := &server.DB_Legend_OddsArray{ + Arr: make([]*server.DB_Legend_Odds, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -7951,81 +5480,45 @@ func AgcConvertDB_Legend_Odds(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_Odds{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Rateodds3 = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Rateodds4 = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Rateodds5 = int32(temp) - - - - - - - - break } @@ -8033,26 +5526,26 @@ func AgcConvertDB_Legend_Odds(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_TurnRate(fi,fo string) { + +func AgcConvertDB_Legend_TurnRate(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8066,19 +5559,19 @@ func AgcConvertDB_Legend_TurnRate(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_TurnRateArray{ - Arr:make([]*server.DB_Legend_TurnRate, 0, len(sheet.Rows)), + arr := &server.DB_Legend_TurnRateArray{ + Arr: make([]*server.DB_Legend_TurnRate, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8086,61 +5579,37 @@ func AgcConvertDB_Legend_TurnRate(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_TurnRate{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.ReturnRateMin = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ReturnRateMax = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -8151,11 +5620,6 @@ func AgcConvertDB_Legend_TurnRate(fi,fo string) { } } data.Chance = arrInt - - - - - break } @@ -8163,26 +5627,26 @@ func AgcConvertDB_Legend_TurnRate(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_Weight(fi,fo string) { + +func AgcConvertDB_Legend_Weight(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8196,19 +5660,19 @@ func AgcConvertDB_Legend_Weight(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_WeightArray{ - Arr:make([]*server.DB_Legend_Weight, 0, len(sheet.Rows)), + arr := &server.DB_Legend_WeightArray{ + Arr: make([]*server.DB_Legend_Weight, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8216,46 +5680,29 @@ func AgcConvertDB_Legend_Weight(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_Weight{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -8266,11 +5713,6 @@ func AgcConvertDB_Legend_Weight(fi,fo string) { } } data.Weight = arrInt - - - - - break } @@ -8278,26 +5720,26 @@ func AgcConvertDB_Legend_Weight(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Legend_WeightCondition(fi,fo string) { + +func AgcConvertDB_Legend_WeightCondition(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8311,19 +5753,19 @@ func AgcConvertDB_Legend_WeightCondition(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Legend_WeightConditionArray{ - Arr:make([]*server.DB_Legend_WeightCondition, 0, len(sheet.Rows)), + arr := &server.DB_Legend_WeightConditionArray{ + Arr: make([]*server.DB_Legend_WeightCondition, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8331,47 +5773,30 @@ func AgcConvertDB_Legend_WeightCondition(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Legend_WeightCondition{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.IsNew = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - - + arrStr = strings.Split(row.Cells[2].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[2].String() != "" { @@ -8382,18 +5807,11 @@ func AgcConvertDB_Legend_WeightCondition(fi,fo string) { } } data.BetScope = arrInt - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -8404,25 +5822,13 @@ func AgcConvertDB_Legend_WeightCondition(fi,fo string) { } } data.TrueCalcRate = arrInt - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.WeightId = int32(temp) - - - - - - - - break } @@ -8430,26 +5836,26 @@ func AgcConvertDB_Legend_WeightCondition(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_MatchRank(fi,fo string) { + +func AgcConvertDB_MatchRank(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8463,19 +5869,19 @@ func AgcConvertDB_MatchRank(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_MatchRankArray{ - Arr:make([]*server.DB_MatchRank, 0, len(sheet.Rows)), + arr := &server.DB_MatchRankArray{ + Arr: make([]*server.DB_MatchRank, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8483,33 +5889,23 @@ func AgcConvertDB_MatchRank(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_MatchRank{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - - + arrStr = strings.Split(row.Cells[1].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[1].String() != "" { @@ -8520,11 +5916,6 @@ func AgcConvertDB_MatchRank(fi,fo string) { } } data.RankStar = arrInt - - - - - break } @@ -8532,26 +5923,26 @@ func AgcConvertDB_MatchRank(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Name(fi,fo string) { + +func AgcConvertDB_Name(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8565,19 +5956,19 @@ func AgcConvertDB_Name(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NameArray{ - Arr:make([]*server.DB_Name, 0, len(sheet.Rows)), + arr := &server.DB_NameArray{ + Arr: make([]*server.DB_Name, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8585,39 +5976,24 @@ func AgcConvertDB_Name(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Name{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - break } @@ -8625,26 +6001,26 @@ func AgcConvertDB_Name(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_NameBoy(fi,fo string) { + +func AgcConvertDB_NameBoy(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8658,19 +6034,19 @@ func AgcConvertDB_NameBoy(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NameBoyArray{ - Arr:make([]*server.DB_NameBoy, 0, len(sheet.Rows)), + arr := &server.DB_NameBoyArray{ + Arr: make([]*server.DB_NameBoy, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8678,39 +6054,24 @@ func AgcConvertDB_NameBoy(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_NameBoy{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - break } @@ -8718,26 +6079,26 @@ func AgcConvertDB_NameBoy(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_NameGirl(fi,fo string) { + +func AgcConvertDB_NameGirl(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8751,19 +6112,19 @@ func AgcConvertDB_NameGirl(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NameGirlArray{ - Arr:make([]*server.DB_NameGirl, 0, len(sheet.Rows)), + arr := &server.DB_NameGirlArray{ + Arr: make([]*server.DB_NameGirl, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8771,39 +6132,24 @@ func AgcConvertDB_NameGirl(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_NameGirl{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - break } @@ -8811,26 +6157,26 @@ func AgcConvertDB_NameGirl(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_NewPlayer(fi,fo string) { + +func AgcConvertDB_NewPlayer(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -8844,19 +6190,19 @@ func AgcConvertDB_NewPlayer(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_NewPlayerArray{ - Arr:make([]*server.DB_NewPlayer, 0, len(sheet.Rows)), + arr := &server.DB_NewPlayerArray{ + Arr: make([]*server.DB_NewPlayer, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -8864,152 +6210,81 @@ func AgcConvertDB_NewPlayer(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_NewPlayer{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Condition1 = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 64) data.ConditionValue1 = int64(temp) - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Condition2 = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) data.ConditionValue2 = int64(temp) - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Bond = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.AddType = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 64) data.AddMax = int64(temp) - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 64) data.AddMin = int64(temp) - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.TianHuRate = int32(temp) - - - - - - - - break } @@ -9017,26 +6292,26 @@ func AgcConvertDB_NewPlayer(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PhoneLottery(fi,fo string) { + +func AgcConvertDB_PhoneLottery(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -9050,19 +6325,19 @@ func AgcConvertDB_PhoneLottery(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PhoneLotteryArray{ - Arr:make([]*server.DB_PhoneLottery, 0, len(sheet.Rows)), + arr := &server.DB_PhoneLotteryArray{ + Arr: make([]*server.DB_PhoneLottery, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -9070,180 +6345,95 @@ func AgcConvertDB_PhoneLottery(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PhoneLottery{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Type = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Name = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Item_Id = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Grade = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Odd = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Oddrate1 = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Odd2 = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Oddrate2 = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Odd3 = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Oddrate3 = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.Oddrate4 = int32(temp) - - - - - - - - break } @@ -9251,26 +6441,26 @@ func AgcConvertDB_PhoneLottery(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PlayerExp(fi,fo string) { + +func AgcConvertDB_PlayerExp(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -9284,19 +6474,19 @@ func AgcConvertDB_PlayerExp(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PlayerExpArray{ - Arr:make([]*server.DB_PlayerExp, 0, len(sheet.Rows)), + arr := &server.DB_PlayerExpArray{ + Arr: make([]*server.DB_PlayerExp, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -9304,40 +6494,25 @@ func AgcConvertDB_PlayerExp(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PlayerExp{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Exp = int32(temp) - - - - - - - - break } @@ -9345,26 +6520,26 @@ func AgcConvertDB_PlayerExp(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PlayerInfo(fi,fo string) { + +func AgcConvertDB_PlayerInfo(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -9378,19 +6553,19 @@ func AgcConvertDB_PlayerInfo(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PlayerInfoArray{ - Arr:make([]*server.DB_PlayerInfo, 0, len(sheet.Rows)), + arr := &server.DB_PlayerInfoArray{ + Arr: make([]*server.DB_PlayerInfo, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -9398,80 +6573,44 @@ func AgcConvertDB_PlayerInfo(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PlayerInfo{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - - - + data.City = row.Cells[0].String() - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.Head = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Name = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Sex = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Id = int32(temp) - - - - - - - - break } @@ -9479,26 +6618,26 @@ func AgcConvertDB_PlayerInfo(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PlayerType(fi,fo string) { + +func AgcConvertDB_PlayerType(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -9512,19 +6651,19 @@ func AgcConvertDB_PlayerType(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PlayerTypeArray{ - Arr:make([]*server.DB_PlayerType, 0, len(sheet.Rows)), + arr := &server.DB_PlayerTypeArray{ + Arr: make([]*server.DB_PlayerType, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -9532,200 +6671,106 @@ func AgcConvertDB_PlayerType(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PlayerType{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.GameFreeId = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.PayLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.PayUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.GameTimeLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.GameTimeUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.TotalInLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.TotalInUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.OddsLowerLimit = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.OddsUpperLimit = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[11].String(), 10, 32) data.LuckyRate = int32(temp) - - - - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.ChangeCardRate = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - - + arrStr = strings.Split(row.Cells[13].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[13].String() != "" { @@ -9736,18 +6781,11 @@ func AgcConvertDB_PlayerType(fi,fo string) { } } data.CardValueRange = arrInt - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - - - - + arrStr = strings.Split(row.Cells[14].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[14].String() != "" { @@ -9758,18 +6796,11 @@ func AgcConvertDB_PlayerType(fi,fo string) { } } data.MatchPriority = arrInt - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - - - - + arrStr = strings.Split(row.Cells[15].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[15].String() != "" { @@ -9780,32 +6811,18 @@ func AgcConvertDB_PlayerType(fi,fo string) { } } data.ExcludeMatch = arrInt - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[16].String(), 10, 32) data.CardLibRate = int32(temp) - - - - - - - - - if len(row.Cells)<17+1{ + + if len(row.Cells) < 17+1 { break } - - - - + arrStr = strings.Split(row.Cells[17].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[17].String() != "" { @@ -9816,11 +6833,6 @@ func AgcConvertDB_PlayerType(fi,fo string) { } } data.CardLibArr = arrInt - - - - - break } @@ -9828,26 +6840,26 @@ func AgcConvertDB_PlayerType(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_PotOdd(fi,fo string) { + +func AgcConvertDB_PotOdd(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -9861,19 +6873,19 @@ func AgcConvertDB_PotOdd(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_PotOddArray{ - Arr:make([]*server.DB_PotOdd, 0, len(sheet.Rows)), + arr := &server.DB_PotOddArray{ + Arr: make([]*server.DB_PotOdd, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -9881,59 +6893,35 @@ func AgcConvertDB_PotOdd(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_PotOdd{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Title = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -9944,11 +6932,6 @@ func AgcConvertDB_PotOdd(fi,fo string) { } } data.VipOdd = arrInt - - - - - break } @@ -9956,26 +6939,26 @@ func AgcConvertDB_PotOdd(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_RankCycle(fi,fo string) { + +func AgcConvertDB_PropExchange(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -9989,19 +6972,19 @@ func AgcConvertDB_RankCycle(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_RankCycleArray{ - Arr:make([]*server.DB_RankCycle, 0, len(sheet.Rows)), + arr := &server.DB_PropExchangeArray{ + Arr: make([]*server.DB_PropExchange, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -10009,52 +6992,161 @@ func AgcConvertDB_RankCycle(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data := &server.DB_PropExchange{} + + for { + + if len(row.Cells) < 0+1 { + break + } + + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) + data.Id = int32(temp) + + if len(row.Cells) < 1+1 { + break + } + + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) + data.Group = int32(temp) + + if len(row.Cells) < 2+1 { + break + } + + if row.Cells[2].String() != "" { + pairs := strings.Split(row.Cells[2].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Cost = resultMap + } + + if len(row.Cells) < 3+1 { + break + } + + if row.Cells[3].String() != "" { + pairs := strings.Split(row.Cells[3].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue + } + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value + } + data.Gain = resultMap + } + + break + } + arr.Arr = append(arr.Arr, data) + } + + byteData, err := proto.Marshal(arr) + if err == nil { + err := os.WriteFile(fo, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + + byteData, err = json.MarshalIndent(arr, "", "\t") + if err == nil { + foJson := strings.Replace(fo, ".dat", ".json", -1) + err := os.WriteFile(foJson, byteData, os.ModePerm) + if err != nil { + fmt.Println(err) + } + } + break //only fetch first sheet + } +} + +func AgcConvertDB_RankCycle(fi, fo string) { + xlsxFile, err := xlsx.OpenFile(fi) + if err != nil { + fmt.Println("excel file open error:", err, "filename:", fi) + return + } + + if err := recover(); err != nil { + fmt.Println(" panic,error=", err) + var buf [4096]byte + lens := runtime.Stack(buf[:], false) + fmt.Println("stack--->", string(buf[:lens])) + } + for _, sheet := range xlsxFile.Sheets { + arr := &server.DB_RankCycleArray{ + Arr: make([]*server.DB_RankCycle, 0, len(sheet.Rows)), + } + + for i, row := range sheet.Rows { + if i <= 1 { + continue + } + + if len(row.Cells) == 0 { + break + } + + temp := int64(0) + var arrInt []int32 + var arrInt64 []int64 + var arrStr []string + var _ = arrInt + var _ = arrStr + var _ = arrInt64 + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_RankCycle{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Start = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.End = row.Cells[2].String() - - - - - - break } @@ -10062,26 +7154,26 @@ func AgcConvertDB_RankCycle(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_RankLevel(fi,fo string) { + +func AgcConvertDB_RankLevel(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -10095,19 +7187,19 @@ func AgcConvertDB_RankLevel(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_RankLevelArray{ - Arr:make([]*server.DB_RankLevel, 0, len(sheet.Rows)), + arr := &server.DB_RankLevelArray{ + Arr: make([]*server.DB_RankLevel, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -10115,81 +7207,45 @@ func AgcConvertDB_RankLevel(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_RankLevel{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RankType = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.Name = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 64) data.Score = int64(temp) - - - - - - - break } @@ -10197,26 +7253,26 @@ func AgcConvertDB_RankLevel(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_RankReward(fi,fo string) { + +func AgcConvertDB_RankReward(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -10230,19 +7286,19 @@ func AgcConvertDB_RankReward(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_RankRewardArray{ - Arr:make([]*server.DB_RankReward, 0, len(sheet.Rows)), + arr := &server.DB_RankRewardArray{ + Arr: make([]*server.DB_RankReward, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -10250,138 +7306,74 @@ func AgcConvertDB_RankReward(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_RankReward{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.RankType = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Level = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Award1Id = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Award1Num = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.Award2Id = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.Award2Num = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[7].String(), 10, 32) data.Award3Id = int32(temp) - - - - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Award3Num = int32(temp) - - - - - - - - break } @@ -10389,26 +7381,26 @@ func AgcConvertDB_RankReward(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Sensitive_Words(fi,fo string) { + +func AgcConvertDB_Sensitive_Words(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -10422,19 +7414,19 @@ func AgcConvertDB_Sensitive_Words(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_Sensitive_WordsArray{ - Arr:make([]*server.DB_Sensitive_Words, 0, len(sheet.Rows)), + arr := &server.DB_Sensitive_WordsArray{ + Arr: make([]*server.DB_Sensitive_Words, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -10442,39 +7434,24 @@ func AgcConvertDB_Sensitive_Words(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Sensitive_Words{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Sensitive_Words = row.Cells[1].String() - - - - - - break } @@ -10482,26 +7459,26 @@ func AgcConvertDB_Sensitive_Words(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_SlotRateWeight(fi,fo string) { + +func AgcConvertDB_SlotRateWeight(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -10515,19 +7492,19 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_SlotRateWeightArray{ - Arr:make([]*server.DB_SlotRateWeight, 0, len(sheet.Rows)), + arr := &server.DB_SlotRateWeightArray{ + Arr: make([]*server.DB_SlotRateWeight, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -10535,61 +7512,37 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_SlotRateWeight{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.GameFreeId = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Pos = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - - + arrStr = strings.Split(row.Cells[3].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[3].String() != "" { @@ -10600,18 +7553,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.NormCol1 = arrInt - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -10622,18 +7568,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.NormCol2 = arrInt - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -10644,18 +7583,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.NormCol3 = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - - - + arrStr = strings.Split(row.Cells[6].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[6].String() != "" { @@ -10666,18 +7598,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.NormCol4 = arrInt - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - - - - + arrStr = strings.Split(row.Cells[7].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[7].String() != "" { @@ -10688,18 +7613,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.NormCol5 = arrInt - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - - - - + arrStr = strings.Split(row.Cells[8].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[8].String() != "" { @@ -10710,18 +7628,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.FreeCol1 = arrInt - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - - - - + arrStr = strings.Split(row.Cells[9].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[9].String() != "" { @@ -10732,18 +7643,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.FreeCol2 = arrInt - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - - - - + arrStr = strings.Split(row.Cells[10].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[10].String() != "" { @@ -10754,18 +7658,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.FreeCol3 = arrInt - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - - - - + arrStr = strings.Split(row.Cells[11].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[11].String() != "" { @@ -10776,18 +7673,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.FreeCol4 = arrInt - - - - - - if len(row.Cells)<12+1{ + + if len(row.Cells) < 12+1 { break } - - - - + arrStr = strings.Split(row.Cells[12].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[12].String() != "" { @@ -10798,18 +7688,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.FreeCol5 = arrInt - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - - - - + arrStr = strings.Split(row.Cells[13].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[13].String() != "" { @@ -10820,18 +7703,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.MaryOut = arrInt - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - - - - + arrStr = strings.Split(row.Cells[14].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[14].String() != "" { @@ -10842,18 +7718,11 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.MaryMid = arrInt - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - - - - + arrStr = strings.Split(row.Cells[15].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[15].String() != "" { @@ -10864,11 +7733,6 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } } data.JackPot = arrInt - - - - - break } @@ -10876,26 +7740,26 @@ func AgcConvertDB_SlotRateWeight(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_SystemChance(fi,fo string) { + +func AgcConvertDB_SystemChance(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -10909,19 +7773,19 @@ func AgcConvertDB_SystemChance(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_SystemChanceArray{ - Arr:make([]*server.DB_SystemChance, 0, len(sheet.Rows)), + arr := &server.DB_SystemChanceArray{ + Arr: make([]*server.DB_SystemChance, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -10929,81 +7793,45 @@ func AgcConvertDB_SystemChance(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_SystemChance{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Desc = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.ChanceType = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.Coin = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.Rate = int32(temp) - - - - - - - - break } @@ -11011,26 +7839,26 @@ func AgcConvertDB_SystemChance(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Task(fi,fo string) { + +func AgcConvertDB_Task(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -11044,19 +7872,19 @@ func AgcConvertDB_Task(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_TaskArray{ - Arr:make([]*server.DB_Task, 0, len(sheet.Rows)), + arr := &server.DB_TaskArray{ + Arr: make([]*server.DB_Task, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -11064,136 +7892,84 @@ func AgcConvertDB_Task(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Task{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.ActivityType = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[4].String(), 10, 32) data.TaskType = int32(temp) - - - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 64) data.TargetTimes = int64(temp) - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 64) data.FinishTimes = int64(temp) - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - - - - - - - - if row.Cells[7].String() != ""{ - pairs := strings.Split(row.Cells[7].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) - continue - } - resultMap[key] = value + + if row.Cells[7].String() != "" { + pairs := strings.Split(row.Cells[7].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue } - data.Award = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<8+1{ + data.Award = resultMap + } + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.GameType = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - - - - + arrStr = strings.Split(row.Cells[9].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[9].String() != "" { @@ -11204,11 +7980,6 @@ func AgcConvertDB_Task(fi,fo string) { } } data.Position = arrInt - - - - - break } @@ -11216,26 +7987,26 @@ func AgcConvertDB_Task(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { + +func AgcConvertDB_ThirdPlatformGameMapping(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -11249,19 +8020,19 @@ func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_ThirdPlatformGameMappingArray{ - Arr:make([]*server.DB_ThirdPlatformGameMapping, 0, len(sheet.Rows)), + arr := &server.DB_ThirdPlatformGameMappingArray{ + Arr: make([]*server.DB_ThirdPlatformGameMapping, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -11269,107 +8040,57 @@ func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_ThirdPlatformGameMapping{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[1].String(), 10, 32) data.SystemGameID = int32(temp) - - - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.ThirdPlatformName = row.Cells[2].String() - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - - - + data.ThirdGameID = row.Cells[3].String() - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - + data.Desc = row.Cells[4].String() - - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[5].String(), 10, 32) data.ScreenOrientationType = int32(temp) - - - - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.ThirdID = int32(temp) - - - - - - - - break } @@ -11377,26 +8098,26 @@ func AgcConvertDB_ThirdPlatformGameMapping(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_Tips(fi,fo string) { + +func AgcConvertDB_Tips(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -11410,19 +8131,19 @@ func AgcConvertDB_Tips(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_TipsArray{ - Arr:make([]*server.DB_Tips, 0, len(sheet.Rows)), + arr := &server.DB_TipsArray{ + Arr: make([]*server.DB_Tips, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -11430,33 +8151,23 @@ func AgcConvertDB_Tips(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_Tips{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - - + arrStr = strings.Split(row.Cells[1].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[1].String() != "" { @@ -11467,24 +8178,12 @@ func AgcConvertDB_Tips(fi,fo string) { } } data.GameId = arrInt - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - - - + data.Des = row.Cells[2].String() - - - - - - break } @@ -11492,26 +8191,26 @@ func AgcConvertDB_Tips(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func AgcConvertDB_VIP(fi,fo string) { + +func AgcConvertDB_VIP(fi, fo string) { xlsxFile, err := xlsx.OpenFile(fi) if err != nil { fmt.Println("excel file open error:", err, "filename:", fi) @@ -11525,19 +8224,19 @@ func AgcConvertDB_VIP(fi,fo string) { fmt.Println("stack--->", string(buf[:lens])) } for _, sheet := range xlsxFile.Sheets { - arr:=&server.DB_VIPArray{ - Arr:make([]*server.DB_VIP, 0, len(sheet.Rows)), + arr := &server.DB_VIPArray{ + Arr: make([]*server.DB_VIP, 0, len(sheet.Rows)), } for i, row := range sheet.Rows { if i <= 1 { continue } - + if len(row.Cells) == 0 { break } - + temp := int64(0) var arrInt []int32 var arrInt64 []int64 @@ -11545,74 +8244,43 @@ func AgcConvertDB_VIP(fi,fo string) { var _ = arrInt var _ = arrStr var _ = arrInt64 - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data := &server.DB_VIP{} for { - - if len(row.Cells)<0+1{ + + if len(row.Cells) < 0+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[0].String(), 10, 32) data.Id = int32(temp) - - - - - - - - - if len(row.Cells)<1+1{ + + if len(row.Cells) < 1+1 { break } - - - + data.Name = row.Cells[1].String() - - - - - - - if len(row.Cells)<2+1{ + + if len(row.Cells) < 2+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[2].String(), 10, 32) data.Count = int32(temp) - - - - - - - - - if len(row.Cells)<3+1{ + + if len(row.Cells) < 3+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[3].String(), 10, 32) data.VipExp = int32(temp) - - - - - - - - - if len(row.Cells)<4+1{ + + if len(row.Cells) < 4+1 { break } - - - - + arrStr = strings.Split(row.Cells[4].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[4].String() != "" { @@ -11623,18 +8291,11 @@ func AgcConvertDB_VIP(fi,fo string) { } } data.Privilege1 = arrInt - - - - - - if len(row.Cells)<5+1{ + + if len(row.Cells) < 5+1 { break } - - - - + arrStr = strings.Split(row.Cells[5].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[5].String() != "" { @@ -11645,32 +8306,18 @@ func AgcConvertDB_VIP(fi,fo string) { } } data.Privilege2 = arrInt - - - - - - if len(row.Cells)<6+1{ + + if len(row.Cells) < 6+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[6].String(), 10, 32) data.ShopId2 = int32(temp) - - - - - - - - - if len(row.Cells)<7+1{ + + if len(row.Cells) < 7+1 { break } - - - - + arrStr = strings.Split(row.Cells[7].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[7].String() != "" { @@ -11681,135 +8328,79 @@ func AgcConvertDB_VIP(fi,fo string) { } } data.Privilege3 = arrInt - - - - - - if len(row.Cells)<8+1{ + + if len(row.Cells) < 8+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[8].String(), 10, 32) data.Privilege4 = int32(temp) - - - - - - - - - if len(row.Cells)<9+1{ + + if len(row.Cells) < 9+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[9].String(), 10, 32) data.Privilege5 = int32(temp) - - - - - - - - - if len(row.Cells)<10+1{ + + if len(row.Cells) < 10+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[10].String(), 10, 32) data.Privilege6 = int32(temp) - - - - - - - - - if len(row.Cells)<11+1{ + + if len(row.Cells) < 11+1 { break } - - - - - - - - if row.Cells[11].String() != ""{ - pairs := strings.Split(row.Cells[11].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) - continue - } - resultMap[key] = value + + if row.Cells[11].String() != "" { + pairs := strings.Split(row.Cells[11].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue } - data.Privilege7 = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<12+1{ + data.Privilege7 = resultMap + } + + if len(row.Cells) < 12+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[12].String(), 10, 32) data.Privilege7Price = int32(temp) - - - - - - - - - if len(row.Cells)<13+1{ + + if len(row.Cells) < 13+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[13].String(), 10, 32) data.ShopId7 = int32(temp) - - - - - - - - - if len(row.Cells)<14+1{ + + if len(row.Cells) < 14+1 { break } - + temp, _ = strconv.ParseInt(row.Cells[14].String(), 10, 32) data.Privilege8 = int32(temp) - - - - - - - - - if len(row.Cells)<15+1{ + + if len(row.Cells) < 15+1 { break } - - - - + arrStr = strings.Split(row.Cells[15].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[15].String() != "" { @@ -11820,18 +8411,11 @@ func AgcConvertDB_VIP(fi,fo string) { } } data.Param = arrInt - - - - - - if len(row.Cells)<16+1{ + + if len(row.Cells) < 16+1 { break } - - - - + arrStr = strings.Split(row.Cells[16].String(), "|") arrInt = nil if len(arrStr) > 0 && row.Cells[16].String() != "" { @@ -11842,60 +8426,41 @@ func AgcConvertDB_VIP(fi,fo string) { } } data.RewardOutlineID = arrInt - - - - - - if len(row.Cells)<17+1{ + + if len(row.Cells) < 17+1 { break } - - - - - - - - if row.Cells[17].String() != ""{ - pairs := strings.Split(row.Cells[17].String(), ";") - resultMap := make(map[int64]int64) - for _, pair := range pairs { - kv := strings.Split(pair, ",") - key, err := strconv.ParseInt(kv[0], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) - continue - } - value, err := strconv.ParseInt(kv[1], 10, 64) - if err != nil { - // é”™è¯¯å¤„ç† - fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) - continue - } - resultMap[key] = value + + if row.Cells[17].String() != "" { + pairs := strings.Split(row.Cells[17].String(), ";") + resultMap := make(map[int64]int64) + for _, pair := range pairs { + kv := strings.Split(pair, ",") + key, err := strconv.ParseInt(kv[0], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[0]) + continue } - data.Award = resultMap + value, err := strconv.ParseInt(kv[1], 10, 64) + if err != nil { + // é”™è¯¯å¤„ç† + fmt.Println("无法转æ¢ä¸ºint64:", kv[1]) + continue + } + resultMap[key] = value } - - - if len(row.Cells)<18+1{ + data.Award = resultMap + } + + if len(row.Cells) < 18+1 { break } - - - - - + if row.Cells[18].String() != "" { arrStr = strings.Split(row.Cells[18].String(), "|") data.ParamName = arrStr } - - - - break } @@ -11903,146 +8468,151 @@ func AgcConvertDB_VIP(fi,fo string) { } byteData, err := proto.Marshal(arr) - if err == nil{ + if err == nil { err := os.WriteFile(fo, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } + fmt.Println(err) + } } - + byteData, err = json.MarshalIndent(arr, "", "\t") if err == nil { foJson := strings.Replace(fo, ".dat", ".json", -1) err := os.WriteFile(foJson, byteData, os.ModePerm) if err != nil { - fmt.Println(err) - } - } + fmt.Println(err) + } + } break //only fetch first sheet } } - -func main(){ +func main() { - AgcConvertDB_ActSign(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ActSign.xlsx`,`..\..\data\DB_ActSign.dat`) + AgcConvertDB_ActSign(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ActSign.xlsx`, `..\..\data\DB_ActSign.dat`) - AgcConvertDB_Activity1(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Activity1.xlsx`,`..\..\data\DB_Activity1.dat`) + AgcConvertDB_Activity1(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Activity1.xlsx`, `..\..\data\DB_Activity1.dat`) - AgcConvertDB_AnimalColor(`D:\trunk\src\mongo.games.com\game\xlsx\DB_AnimalColor.xlsx`,`..\..\data\DB_AnimalColor.dat`) + AgcConvertDB_AnimalColor(`D:\trunk\src\mongo.games.com\game\xlsx\DB_AnimalColor.xlsx`, `..\..\data\DB_AnimalColor.dat`) - AgcConvertDB_ArtilleryRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ArtilleryRate.xlsx`,`..\..\data\DB_ArtilleryRate.dat`) + AgcConvertDB_ArtilleryRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ArtilleryRate.xlsx`, `..\..\data\DB_ArtilleryRate.dat`) - AgcConvertDB_ArtillerySkin(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ArtillerySkin.xlsx`,`..\..\data\DB_ArtillerySkin.dat`) + AgcConvertDB_ArtillerySkin(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ArtillerySkin.xlsx`, `..\..\data\DB_ArtillerySkin.dat`) - AgcConvertDB_BlackWhite(`D:\trunk\src\mongo.games.com\game\xlsx\DB_BlackWhite.xlsx`,`..\..\data\DB_BlackWhite.dat`) + AgcConvertDB_BlackWhite(`D:\trunk\src\mongo.games.com\game\xlsx\DB_BlackWhite.xlsx`, `..\..\data\DB_BlackWhite.dat`) - AgcConvertDB_CardsJD(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CardsJD.xlsx`,`..\..\data\DB_CardsJD.dat`) + AgcConvertDB_CardsJD(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CardsJD.xlsx`, `..\..\data\DB_CardsJD.dat`) - AgcConvertDB_CardsYuLe(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CardsYuLe.xlsx`,`..\..\data\DB_CardsYuLe.dat`) + AgcConvertDB_CardsYuLe(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CardsYuLe.xlsx`, `..\..\data\DB_CardsYuLe.dat`) - AgcConvertDB_ChessBilledRules(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ChessBilledRules.xlsx`,`..\..\data\DB_ChessBilledRules.dat`) + AgcConvertDB_ChessBilledRules(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ChessBilledRules.xlsx`, `..\..\data\DB_ChessBilledRules.dat`) - AgcConvertDB_ChessMatchRules(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ChessMatchRules.xlsx`,`..\..\data\DB_ChessMatchRules.dat`) + AgcConvertDB_ChessMatchRules(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ChessMatchRules.xlsx`, `..\..\data\DB_ChessMatchRules.dat`) - AgcConvertDB_ChessRank(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ChessRank.xlsx`,`..\..\data\DB_ChessRank.dat`) + AgcConvertDB_ChessRank(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ChessRank.xlsx`, `..\..\data\DB_ChessRank.dat`) - AgcConvertDB_ClientVer(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ClientVer.xlsx`,`..\..\data\DB_ClientVer.dat`) + AgcConvertDB_ClientVer(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ClientVer.xlsx`, `..\..\data\DB_ClientVer.dat`) - AgcConvertDB_CrashSearch(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CrashSearch.xlsx`,`..\..\data\DB_CrashSearch.dat`) + AgcConvertDB_CollectBox(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CollectBox.xlsx`, `..\..\data\DB_CollectBox.dat`) - AgcConvertDB_Createroom(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Createroom.xlsx`,`..\..\data\DB_Createroom.dat`) + AgcConvertDB_CollectBoxGain(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CollectBoxGain.xlsx`, `..\..\data\DB_CollectBoxGain.dat`) - AgcConvertDB_Fish(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Fish.xlsx`,`..\..\data\DB_Fish.dat`) + AgcConvertDB_CrashSearch(`D:\trunk\src\mongo.games.com\game\xlsx\DB_CrashSearch.xlsx`, `..\..\data\DB_CrashSearch.dat`) - AgcConvertDB_FishOut(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishOut.xlsx`,`..\..\data\DB_FishOut.dat`) + AgcConvertDB_Createroom(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Createroom.xlsx`, `..\..\data\DB_Createroom.dat`) - AgcConvertDB_FishPath(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishPath.xlsx`,`..\..\data\DB_FishPath.dat`) + AgcConvertDB_Fish(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Fish.xlsx`, `..\..\data\DB_Fish.dat`) - AgcConvertDB_FishRoom(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishRoom.xlsx`,`..\..\data\DB_FishRoom.dat`) + AgcConvertDB_FishOut(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishOut.xlsx`, `..\..\data\DB_FishOut.dat`) - AgcConvertDB_FishSkill(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishSkill.xlsx`,`..\..\data\DB_FishSkill.dat`) + AgcConvertDB_FishPath(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishPath.xlsx`, `..\..\data\DB_FishPath.dat`) - AgcConvertDB_FortuneGod_Odds(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Odds.xlsx`,`..\..\data\DB_FortuneGod_Odds.dat`) + AgcConvertDB_FishRoom(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishRoom.xlsx`, `..\..\data\DB_FishRoom.dat`) - AgcConvertDB_FortuneGod_TurnRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_TurnRate.xlsx`,`..\..\data\DB_FortuneGod_TurnRate.dat`) + AgcConvertDB_FishSkill(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FishSkill.xlsx`, `..\..\data\DB_FishSkill.dat`) - AgcConvertDB_FortuneGod_Weight(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Weight.xlsx`,`..\..\data\DB_FortuneGod_Weight.dat`) + AgcConvertDB_FortuneGod_Odds(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Odds.xlsx`, `..\..\data\DB_FortuneGod_Odds.dat`) - AgcConvertDB_FortuneGod_WeightCondition(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_WeightCondition.xlsx`,`..\..\data\DB_FortuneGod_WeightCondition.dat`) + AgcConvertDB_FortuneGod_TurnRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_TurnRate.xlsx`, `..\..\data\DB_FortuneGod_TurnRate.dat`) - AgcConvertDB_GamMatchLV(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GamMatchLV.xlsx`,`..\..\data\DB_GamMatchLV.dat`) + AgcConvertDB_FortuneGod_Weight(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_Weight.xlsx`, `..\..\data\DB_FortuneGod_Weight.dat`) - AgcConvertDB_GameCoinPool(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameCoinPool.xlsx`,`..\..\data\DB_GameCoinPool.dat`) + AgcConvertDB_FortuneGod_WeightCondition(`D:\trunk\src\mongo.games.com\game\xlsx\DB_FortuneGod_WeightCondition.xlsx`, `..\..\data\DB_FortuneGod_WeightCondition.dat`) - AgcConvertDB_GameFree(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameFree.xlsx`,`..\..\data\DB_GameFree.dat`) + AgcConvertDB_GamMatchLV(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GamMatchLV.xlsx`, `..\..\data\DB_GamMatchLV.dat`) - AgcConvertDB_GameItem(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameItem.xlsx`,`..\..\data\DB_GameItem.dat`) + AgcConvertDB_GameCoinPool(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameCoinPool.xlsx`, `..\..\data\DB_GameCoinPool.dat`) - AgcConvertDB_GameMatchLevel(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameMatchLevel.xlsx`,`..\..\data\DB_GameMatchLevel.dat`) + AgcConvertDB_GameFree(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameFree.xlsx`, `..\..\data\DB_GameFree.dat`) - AgcConvertDB_GameRule(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameRule.xlsx`,`..\..\data\DB_GameRule.dat`) + AgcConvertDB_GameItem(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameItem.xlsx`, `..\..\data\DB_GameItem.dat`) - AgcConvertDB_GameSubsidy(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameSubsidy.xlsx`,`..\..\data\DB_GameSubsidy.dat`) + AgcConvertDB_GameMatchLevel(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameMatchLevel.xlsx`, `..\..\data\DB_GameMatchLevel.dat`) - AgcConvertDB_Game_Drop(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Drop.xlsx`,`..\..\data\DB_Game_Drop.dat`) + AgcConvertDB_GameRule(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameRule.xlsx`, `..\..\data\DB_GameRule.dat`) - AgcConvertDB_Game_Introduction(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Introduction.xlsx`,`..\..\data\DB_Game_Introduction.dat`) + AgcConvertDB_GameSubsidy(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GameSubsidy.xlsx`, `..\..\data\DB_GameSubsidy.dat`) - AgcConvertDB_Game_Pet(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Pet.xlsx`,`..\..\data\DB_Game_Pet.dat`) + AgcConvertDB_Game_Drop(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Drop.xlsx`, `..\..\data\DB_Game_Drop.dat`) - AgcConvertDB_Game_Role(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Role.xlsx`,`..\..\data\DB_Game_Role.dat`) + AgcConvertDB_Game_Introduction(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Introduction.xlsx`, `..\..\data\DB_Game_Introduction.dat`) - AgcConvertDB_GiftBox(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GiftBox.xlsx`,`..\..\data\DB_GiftBox.dat`) + AgcConvertDB_Game_Pet(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Pet.xlsx`, `..\..\data\DB_Game_Pet.dat`) - AgcConvertDB_IceAgeElementRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_IceAgeElementRate.xlsx`,`..\..\data\DB_IceAgeElementRate.dat`) + AgcConvertDB_Game_Role(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Game_Role.xlsx`, `..\..\data\DB_Game_Role.dat`) - AgcConvertDB_Legend_Odds(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Odds.xlsx`,`..\..\data\DB_Legend_Odds.dat`) + AgcConvertDB_GiftBox(`D:\trunk\src\mongo.games.com\game\xlsx\DB_GiftBox.xlsx`, `..\..\data\DB_GiftBox.dat`) - AgcConvertDB_Legend_TurnRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_TurnRate.xlsx`,`..\..\data\DB_Legend_TurnRate.dat`) + AgcConvertDB_IceAgeElementRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_IceAgeElementRate.xlsx`, `..\..\data\DB_IceAgeElementRate.dat`) - AgcConvertDB_Legend_Weight(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Weight.xlsx`,`..\..\data\DB_Legend_Weight.dat`) + AgcConvertDB_Legend_Odds(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Odds.xlsx`, `..\..\data\DB_Legend_Odds.dat`) - AgcConvertDB_Legend_WeightCondition(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_WeightCondition.xlsx`,`..\..\data\DB_Legend_WeightCondition.dat`) + AgcConvertDB_Legend_TurnRate(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_TurnRate.xlsx`, `..\..\data\DB_Legend_TurnRate.dat`) - AgcConvertDB_MatchRank(`D:\trunk\src\mongo.games.com\game\xlsx\DB_MatchRank.xlsx`,`..\..\data\DB_MatchRank.dat`) + AgcConvertDB_Legend_Weight(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_Weight.xlsx`, `..\..\data\DB_Legend_Weight.dat`) - AgcConvertDB_Name(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Name.xlsx`,`..\..\data\DB_Name.dat`) + AgcConvertDB_Legend_WeightCondition(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Legend_WeightCondition.xlsx`, `..\..\data\DB_Legend_WeightCondition.dat`) - AgcConvertDB_NameBoy(`D:\trunk\src\mongo.games.com\game\xlsx\DB_NameBoy.xlsx`,`..\..\data\DB_NameBoy.dat`) + AgcConvertDB_MatchRank(`D:\trunk\src\mongo.games.com\game\xlsx\DB_MatchRank.xlsx`, `..\..\data\DB_MatchRank.dat`) - AgcConvertDB_NameGirl(`D:\trunk\src\mongo.games.com\game\xlsx\DB_NameGirl.xlsx`,`..\..\data\DB_NameGirl.dat`) + AgcConvertDB_Name(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Name.xlsx`, `..\..\data\DB_Name.dat`) - AgcConvertDB_NewPlayer(`D:\trunk\src\mongo.games.com\game\xlsx\DB_NewPlayer.xlsx`,`..\..\data\DB_NewPlayer.dat`) + AgcConvertDB_NameBoy(`D:\trunk\src\mongo.games.com\game\xlsx\DB_NameBoy.xlsx`, `..\..\data\DB_NameBoy.dat`) - AgcConvertDB_PhoneLottery(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PhoneLottery.xlsx`,`..\..\data\DB_PhoneLottery.dat`) + AgcConvertDB_NameGirl(`D:\trunk\src\mongo.games.com\game\xlsx\DB_NameGirl.xlsx`, `..\..\data\DB_NameGirl.dat`) - AgcConvertDB_PlayerExp(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PlayerExp.xlsx`,`..\..\data\DB_PlayerExp.dat`) + AgcConvertDB_NewPlayer(`D:\trunk\src\mongo.games.com\game\xlsx\DB_NewPlayer.xlsx`, `..\..\data\DB_NewPlayer.dat`) - AgcConvertDB_PlayerInfo(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PlayerInfo.xlsx`,`..\..\data\DB_PlayerInfo.dat`) + AgcConvertDB_PhoneLottery(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PhoneLottery.xlsx`, `..\..\data\DB_PhoneLottery.dat`) - AgcConvertDB_PlayerType(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PlayerType.xlsx`,`..\..\data\DB_PlayerType.dat`) + AgcConvertDB_PlayerExp(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PlayerExp.xlsx`, `..\..\data\DB_PlayerExp.dat`) - AgcConvertDB_PotOdd(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PotOdd.xlsx`,`..\..\data\DB_PotOdd.dat`) + AgcConvertDB_PlayerInfo(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PlayerInfo.xlsx`, `..\..\data\DB_PlayerInfo.dat`) - AgcConvertDB_RankCycle(`D:\trunk\src\mongo.games.com\game\xlsx\DB_RankCycle.xlsx`,`..\..\data\DB_RankCycle.dat`) + AgcConvertDB_PlayerType(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PlayerType.xlsx`, `..\..\data\DB_PlayerType.dat`) - AgcConvertDB_RankLevel(`D:\trunk\src\mongo.games.com\game\xlsx\DB_RankLevel.xlsx`,`..\..\data\DB_RankLevel.dat`) + AgcConvertDB_PotOdd(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PotOdd.xlsx`, `..\..\data\DB_PotOdd.dat`) - AgcConvertDB_RankReward(`D:\trunk\src\mongo.games.com\game\xlsx\DB_RankReward.xlsx`,`..\..\data\DB_RankReward.dat`) + AgcConvertDB_PropExchange(`D:\trunk\src\mongo.games.com\game\xlsx\DB_PropExchange.xlsx`, `..\..\data\DB_PropExchange.dat`) - AgcConvertDB_Sensitive_Words(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Sensitive_Words.xlsx`,`..\..\data\DB_Sensitive_Words.dat`) + AgcConvertDB_RankCycle(`D:\trunk\src\mongo.games.com\game\xlsx\DB_RankCycle.xlsx`, `..\..\data\DB_RankCycle.dat`) - AgcConvertDB_SlotRateWeight(`D:\trunk\src\mongo.games.com\game\xlsx\DB_SlotRateWeight.xlsx`,`..\..\data\DB_SlotRateWeight.dat`) + AgcConvertDB_RankLevel(`D:\trunk\src\mongo.games.com\game\xlsx\DB_RankLevel.xlsx`, `..\..\data\DB_RankLevel.dat`) - AgcConvertDB_SystemChance(`D:\trunk\src\mongo.games.com\game\xlsx\DB_SystemChance.xlsx`,`..\..\data\DB_SystemChance.dat`) + AgcConvertDB_RankReward(`D:\trunk\src\mongo.games.com\game\xlsx\DB_RankReward.xlsx`, `..\..\data\DB_RankReward.dat`) - AgcConvertDB_Task(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Task.xlsx`,`..\..\data\DB_Task.dat`) + AgcConvertDB_Sensitive_Words(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Sensitive_Words.xlsx`, `..\..\data\DB_Sensitive_Words.dat`) - AgcConvertDB_ThirdPlatformGameMapping(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ThirdPlatformGameMapping.xlsx`,`..\..\data\DB_ThirdPlatformGameMapping.dat`) + AgcConvertDB_SlotRateWeight(`D:\trunk\src\mongo.games.com\game\xlsx\DB_SlotRateWeight.xlsx`, `..\..\data\DB_SlotRateWeight.dat`) - AgcConvertDB_Tips(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Tips.xlsx`,`..\..\data\DB_Tips.dat`) + AgcConvertDB_SystemChance(`D:\trunk\src\mongo.games.com\game\xlsx\DB_SystemChance.xlsx`, `..\..\data\DB_SystemChance.dat`) - AgcConvertDB_VIP(`D:\trunk\src\mongo.games.com\game\xlsx\DB_VIP.xlsx`,`..\..\data\DB_VIP.dat`) + AgcConvertDB_Task(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Task.xlsx`, `..\..\data\DB_Task.dat`) + + AgcConvertDB_ThirdPlatformGameMapping(`D:\trunk\src\mongo.games.com\game\xlsx\DB_ThirdPlatformGameMapping.xlsx`, `..\..\data\DB_ThirdPlatformGameMapping.dat`) + + AgcConvertDB_Tips(`D:\trunk\src\mongo.games.com\game\xlsx\DB_Tips.xlsx`, `..\..\data\DB_Tips.dat`) + + AgcConvertDB_VIP(`D:\trunk\src\mongo.games.com\game\xlsx\DB_VIP.xlsx`, `..\..\data\DB_VIP.dat`) } diff --git a/update_public.bat b/update_public.bat index 176fe34..e0691e2 100644 --- a/update_public.bat +++ b/update_public.bat @@ -6,5 +6,5 @@ xcopy .\xlsx .\public\xlsx /s /e /y cd .\public git add . git commit -m "update" -git push +git push origin main pause \ No newline at end of file diff --git a/xlsx/DB_CollectBox.xlsx b/xlsx/DB_CollectBox.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ed964e7460c16d0bf53cbf5ecae9c5e7a136610e GIT binary patch literal 10883 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 delta 11767 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

c zTNxM0A~ZI&Wy3{r=BiUOG?ib6rX*8&qcplHKD%ZaHl z|8y{e9Fj(%ydyx|$=p!+5g>+F+!cF||CEP!q&M*)V z`0t7Ip8*L${{9@q1_3EjP*MD#;S_GDI)2bg3Jvjl;{9KF_rKYV*+9anw8Z~itAl_* z{b%)k{0EPT8U&>BL&=hWzNKaf5P<|XPs2{`t1s(NH(h#aD zKtf^vo7(@=9Q;3;ftk{Ti2v(u2=V`_4S@#=Ph%kdw-)_wmp1JGWf&y{O{6ivwZ{CT G+W!L%Jp}Cl diff --git a/xlsx/DB_PropExchange.xlsx b/xlsx/DB_PropExchange.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fbf6d3a13a7980a5d7c36ddfc7f41e5c786fd5db GIT binary patch literal 10067 zcma)iWmFx@)-CSt?(XjH?he5rxNKa4dvGVgJvc#wySr=9ARz>Idyw4k-bwU&}BC>RXTOAA%l6ngpnzXtt$V`^`r1h98-VpMt-LwoLk`XzR66-3Mn z3g! zxOw;S9YXSL3Sr(7f1?!=h->B@WaC2gha-BAj-lE{bZSDZ#F(wN5K|we@KfXyRkRU< zUM4QQq{3RFp>!lf;5%ShkdMN1XCFnrazxYK+FR~8kA`a2B*k>FaG$p^=_s$LWMbpv zHKi|{sEEdeRivc{l%!rHws%@kn>jm)( zdD8~JfBWs?;IYEmR`~u_<32s`9^#)stDixu@jnC2`wTSl-+?x<2bjGe{Vq;ep_>Uw z{7Pzt_*9@egTt?kED6X(oSZBmVnO?|HYyB%m?NJb9&ZbfQ`0PXF0?SR#pIAqCG5G@=oT#+_juj5d})pluY-j~X4bbZrb(T~hH~HoYX@Z_ z%l;thi9WAxCRbz7h-NY_XC%#X^_9?~HzwV^um+$C&|f-W_)=D!S|Iz($#Q|Id&Af& z>-T|G3@wEGFA=7LHtj1ROINbMTLGJDb!%x%(@0l|^u5A(tGb#oeH91sc2oUOH`G2l zEBxnqeRW@tWPoU{?kpS6-d7E&!=HL;`uMc$USGK}h!aLa!>$BIiqN`3xvC{6d|bAQ z9!ktlNHt}arYi}WCep1LA?fSao{!Q|#w-~V9VGb*>z%2N;nfw0#>KTJCYA{r@}g!o+=tax%M}=U zvu8y4osmd{^EDh+LR**!`tHMdH?*IXFBTP!>We177oJewgDrJB%Y&>nra1jXMyw_o zLMCSujl%^G3ks@={AO0m@Rb;Ad=w5u8{YNet{?Kf?aq>^(>y0Hv-bHU-Q9`!M{2Vk zlQ5S4uM;_s0T9fO2qxYx*F{lYbzg?v1pAtEa50?mx5-a11t^gjWqwx53Jw4;z|Ye@ zuLT|7=%g4F623tDpJ@g38CrLnUxf0X1rUAQ5tXTmzdDrWz{|*-Lygj!+;}~#E02VQK%mXWXc0TH4?aL;4QBX+-yZZ zVD;RJ#2+|~^Iu)}896?wV0;A*GHr>F+CvP3R3Bp1uq8b`>%ZNJc2}9C$pfz>BB>-A zd^p_-74Pn?SplX(#HPWH%TT%CgEDOjjF-upSK5#n6PHF8h_EHH24-WGHbaJk43t(< z(Lf$%!aUko_ZU-=a&KbHQArjP5=Q@?!mBZix-5Ii&?Ywl;l;ndFD3UwW*9Si{5**c zUGG%yhMEzS_ONAGo9W;}yYQ_T<_OIv_pkGuQhFv%xEf3sR!jWQAQyepY*A}7Q;MZ| z5z)dMY(VHo1)F9f=;Xt}i~f?xbePzpm=|+iAg5t`L1&7n0gi#!z1eXYUW${WsA#b? z0}g6oMUsZyH#HDGofAS%xPIpOpNt{Ha;Qk+_o#18tk&raFe@J~9Pr^QBi zh;=7_$2{Ms0Ui2?R-qLt*>~qJTvK>( zaIZEu{D#wg4#9vKz)66>nH%{h`%nV#ym!yN6 z16=~1*lmy=M>AVu{QV3e#oKMcDN2bZ-cye6dl7NNNk7li_58S2tYP=1j=;*Cy$F`K z3JP_vC3=(9r)Y`#x$&=6H=(^2K6v$7ql&|F=xwBYJFo3V<8k^k*MpPWV z1G6&lVlNlwt8RB!*z_L*?^gVB6CjztBLY2?=tE7vxKy=gFL9S*a)bC!CR~|J(?NM= zL2|LUSwax6W?mYTgj_T;U@ zJ%{fT!{OvlJ@|EOWSx|gC9fK!E_8ObDRGPJ0-50YxJ;2|^f9g2Z^tTmy>!u);-u=s zl3iVG!T#z6Fj_{F>=U=h#=^3S56wE*oRgVDoF_80UQ;|5PE(s!Wq9s`p*4><>RQfP zH^m(ik>wes>F;l7Gvpm1Zez5gYMaOOkQQPaqo#%g5dlRZ9faKP)+AdUl_%Sr9gUR$ zq#caByVcs#j2@W?sP0uHin8JiA(O1I>U~G?y$_M9J_{$R!bb{obdlbHjj+MvW_?>7 zAn@W$S<;?AjG%Sirc;eP5TueS;e~m4>M5RII7kuD(dNWwT*}V0tL+~|j^8BSg*;Fy zEiX+|w?_VXc5=MGZRD`u@p08R4i-o!$6obENvp+;S_W$|7C zSJTEwv<94YjQK!3HSRgvE_KO%6EOArJlQcCF+p%snRS7HBRJM6zjtcBd#(wq7U*xv zHU!L8vM)4f2=(xc4*W%OxbA^Y+y6W5znmtYY2Vqx%+~DHX)@^c4(=Kp2&nCu&0jve ze~JAP{>9~o+M_YJ>}c(zCxVeXUw@K~_Pfs7)ZKg+aa&eTsQ*4GogRrh?rzH4JPKbY zNk%3ntQXtpC?r&%v8nR-A((_pI;jj#iV9jE$>T z4=I_WYpRzD&Vk32G+qH`EWs(n;&}%43a1-f`10e zgu13R1D`p_h>YPgT+y-Zh*z*c6kLGKket=6Tmc@E8Jk z?R)u_4f)p$Tz}@_jeP9+U8EQ(%?9 z2+zeId^cc7fsHIQJ-=|F=LtYLiOESRlgI|I$fiH+fWr36k^q=d4?xv z-$lA@l!_>mN#hK7g!EfL)!GuvK%|37nxe?ELoRg>+}eeN7~4w8V}=n^rr87$nnS@D zeY%)EJJRR(#cA<;+`iwaISUoc6!dg{Jci60M&=XS@4@iC87=blzED2Co31nvcwC9W zpfrK8`vkNXqzy8Qc zimk6edYVq!$Un!Y!hHb(HI5BPJQt&@BA*hL#^?eoq`hf$nO#Tta;TCl0#xZhFQVj` zFWuc@kSHtqO$X8pO|Vx;g;A01rEX2vku0g5rBDWjSKbokFNKeuWMmH(j~{RdxWp+T zg?UCEnS2jA!TBJac&&D+EOO{aNQ`|K`D65EqR%BLNKTQ-O!#e3@bTcv_IhQ~`N4$1 zy`^B`S&ukCx={N`#ska31{#tgbzJ5kCm%=8B7%@SUpX3T8|6Ha6AW!BNXf_t*=W|$QFY+7>xrTUt+ zmDZV#e1%9*jod-BU7+8>J|O)>lspDd`|>HffA*z7tnV<@>$sgn}l2bk*XQ=(taW<&sS6^WR=1qo12^z%O$z}&GJ4*Zyst`!)r z17nNBbD*zm9RiO#-+w4Fgxh!(FEMGBWIl}y9^Y?c8Y1htI%Hjus>{1GQng1%`-y%( z6@7Tan0d9!b+|-4%;=(_oFyG>slz=|g6m3{-C+xq?nIW5WVXCTpwYTzvLuPY6~r}B z6Qn+Ugjrs@1uEZc2{6NMyFuj8314ZwRDaknLuLhAN9%ZZU<^@V`G4 zPR<@SW==1Mky$<6nB_inAI6C%p$QAZ2rF`x8C%l93#$|%zkDb|NU8}82+iDDF=~|@ zDicm|V9w}fTNp^Fl{s6SY)g>&cg38xI&2asyuN+$1x1g+nQ6q_tTRfvwr{8y4Nq8h zA4j>n(})jJ6z}StyU#zI<^{1WGwQ+7krkQQ#nQ>3kxDy#U z+aJnrCj@IoODPNYWjngCIkr*P2!HIJbzg=ra)x;Q>~LOJn7_CUK`hc|6vT5coWv%{ zZOhPv4Fz9NpUtv0K4 zM&jEw&Z|LSTJxV6v@Sm>zQoFe8|#G&eb*;8Cv5F-Z1?u4j?+nhO8>mzMSS(8**_!v z3X>`UF?YGl?M*0zwmQ+!o=lB^w{DZs!h}2;T28%nbLKYa67kS=gvq)5l(F~8a#76D zrUqpQXOMyj)O(z!kY=fg&-TEElf8U#$O&pf4Onf8423a*A0KWmf0QD|H#$X1NTmze zR=Taky0ij4IrCG9mhsM+e%X-)(-1afx0{iL)-%MfwojVFulZTF2~|Z!RTy88FYezf zW5R?9R+*dEu12B?5yM(pYj?(Fx!|IgqEpSvZ5hcLh|pqe39F<%^WL){GJW{`AmuxV zbRjsGFv$CZZs@IHp=_T5fR>gerGary^i%m%0qkZ2_d#Z9eg2P4Sh&EG)Xz&*^hg@k z!sJ?(j9OG>dOGc9!i^d*-f_yM!Qcc8a7JM!i>_>+gJHxg*bbP6F6GB3H|o*w40v%n zV*C9eL1w<4h5;-OGT)|C(^OFJLxoh>y2N6%V(1#Hlbv!knseiy%>)U%VaJr7Mpjr} zM7)Pq#WGFQuvY!7Q?6qx`dJPCk%RO=2KvEPLZj3>zag4~6gF0QF}*A=aH+`=iwtcg zbZ()JggM?mr+>Fgzd)l@Jqb{!Q*J44c6KUD)UHuBH$+pcti`Fed&n4YE%Ql@o|;`< zbuI%0@xD-Zc)hV|5dW#n2LBQrDRO(kflg-R7m z5XSp~0`palW&yq$PmLq6hufb({GCm0h{Fn_p8YJI6($P~sfg5F24c{q_Ei&eu@9(P zRIr%%0iiRX=npv{v6Awj*woZj0$Le~VA<})ZZa^&+W_27pg1=X>UT9JQMYj?lT05P z;cgslNpkISb12cvbJ1yZr0G$!ir5)zMbSifLbEu6;KZAdSiq=72b9XXBzT_E=OjW% zGNRywWpJ@0cI&FQq7D7IyS7&7ng@mo*v?!T$dR?05-G~dWt;M~qAR*j3G@;C)GkRL zR2EblAKO;UD{e^G1Ds(8n{Aga)f3HqXQEgdLsYIUQ?&g;%aJV{G0IQ!L{rb<5Tu(Z zC`X%&boq4pUKx0VpOoS%}SwQ49leDN5;wSbM8*ru6 zAeglG6lz@B*{7a4P|E~)Qlfxdna;t>MB^deq8SbTUNr})h#6If&-{wyNkUQqu!&Qg zsXr3)KR{|T(bBMpBj8DjHgl!nl|Ai8V*j9$djmRerY2ojD;zRb94~h$B+dO%r$p|H zkhUjeZBT87JiQUFgxWW>pGFj_{OPmtxWuN?vIr@9E@NfMdSAxklkpg8bUn26%Kvn1{L+=Om&{?tH>l1T! zUAXV}T$D8!?Z02djs;ZuX+?46yR#46<5vndWk55M+M+TT7UpeX)9iq>j6sc_;2G~B z0bG&fMuOeuk=PexPVe_NH03l)@qg+~WTa*=-nXR`pGohbe+%LBIk&i7e{=moV!}Uv zE6%JNL1ik#uyO*gGecLAa1HzER z_=lpR(7<+$6qJl!B1HRllp<`_riaGkX(b$-0Tr41OR@C$;{J(jBl3by-IHC5M=vke ztHJGuyBs{WfjqWtT#${&yopreUq-Yr z36Vq~3TE(=4+8hg*MV0QzFb+}=P|JeQSw+krytzprU(0XYZM=`RMw$YLd5nS_X8D$ zzYLB-wy^QpN?Xc`cq2KY5QP&dZxH7~jTE3rxtK5Lctc!yY0Mvdx4@Va8fQ# zD90R(HqvkT!8Yz?9ZYYK+-ts_sb-@cfjL;5(}WViYy+d(!(%+e104v zX{Q{vB37xy!3SU`27qgYvslOV(|J3|`YrzIH8=9j^OMijq{1cmQkAFKK`}{-jOzf3 zYbBqG53cW@8tWM-z~AR5k7~>@Nt*~Cqb(oyTk*x*iz`20t-PQCba!wf40mv?YPg_O z`RDOPfZk|(D%2cn>28nK-Cfg*tsc_bWu$`n^Mm!|Xoy^lK|kY? z(0QPSy%wh)VU5MW`8E4F2`aW#TG6AmsQVF=PeI&U_U$Y}d^M|3$)*pb7zicY)MYI$Sh_qSntC`iLR{?u*PsdiL_Dtm?$|1=f;Lb&=0Xe z+&#OIAJ)@hn5yRH;fV7KTjWwZl2}&!l@=J_!z@l?SqkvZsEAbf^N`Vu#KKASWX#sP zF+}jOkYa#GcbF4s8W3w!Jt&#+F~l&nLXPP~bs!bGO#t0~Q!IuO<$Did{YK?1+aeqw zC>r!MpEacP3kRL`6{IM(&M!(veE1YGFcF7`@3xyZwN}Owt_W*6L@Z?co3ZUM7Z|Ek z4K@3}ah3HU&p8Pdmzif>z&QB^W1$zzxooxX#k$>hH>~l_CEth6l%d`gfDTb7kHJRS(hfl-F<=nIV_3z8~T?dfw8^4^{;58>Z;u| z6IQF_CO+L-gTj=#ZEm4z4Ttd*kNlhcb(pjs%Q9|PQ{H^26BxZSjFn@#u>KB(rE&|X zZ{N?{yuI5D#u*UFL9@ct)Q+K=L?J=CRO6J}V%C>!SyDx^*>K|GtN<5 zG!vK*L|fBQKJ5#BF(&Qd4M4kLx;lo|{Y?V)1=jri)c7taaEC8(iGeKcjkn4KODHdO zg5~7Cnvzf!FS~dVx1b4WAV;g6lHJg$L|+zxl00AUSDG-dW(Y^F;FcSE`;vpPb^f$G z(Q#JVZMC=z7n@l0$UyJBg?6M1aR>AJ-oPHaH?v=$~V1sN4m6r zJq5xD^6b$Yq3P+}uFkkg-P&O(o*?qvgC{bU{+{h*4*_-qDZnXxsoQ_Y@?YWF{{$x_ zQd`NzGmMhY42bjm`^h^qejYehg*0!l@%n{OrhBP&My*2O1D9 zp@BLmCwPB_&sTCho>zEiVw^Y9*o) zL%hS@u~Wq&;7!|+W8Sa3UZ&sDb`5g6CA)Aow}!h(hBF|}93Va&ab$?Ik>$C;k-Hpc z+8x~My<+qM`e(?Z^NJMC?wPZap5xmuv29&Zdpl<{J7)tm4+k@+H!r+Zo;YmR^^(F* zxVfJ0I@D=IlV7qY% zIX`NLkUv&X)q+iFVMP!HHkpCbT#!K%TU}px$J4*@yF7j);o@Sw36jTpm<9EHqywTBJJmj!RRx#WeM7)S^9 zX=Zu?*nP!zP30)a#LhVczc+s$>zZZN`05Md!EE*}rst z?V$hV>}8AoZZFPW+TW^m{^{>^z0Qm9Z-113SNm7>&TEKX7oq&oj(uL)e>wfXl9bo# zuj?xQsNX*m@*nlTsx1E3OFwhYzuL=7Yd)U@p6Ta*Df|)$b5e7mm}w2VbA~ncUO2`v(Kvkmx24| z3VEG_`{U8&?`nTCa<7N{`f&EgKnC6~zki4Ae+~Mj{Ns0fnPK