diff --git a/pkg/protocol/error.go b/pkg/protocol/error.go index 672da85..c46820e 100644 --- a/pkg/protocol/error.go +++ b/pkg/protocol/error.go @@ -51,6 +51,7 @@ var ( ErrProtocolNotSupported = errors.New("vehicle does not support protocol -- use REST API") ErrRequiresBLE = errors.New("command can only be sent over BLE") ErrRequiresEncryption = errors.New("command should not be sent in plaintext or encrypted with an unauthenticated public key") + ErrCommandNotSupported = NewError("vehicle does not support this command", false, false) ) type CommandError struct { diff --git a/pkg/protocol/protobuf/vcsec.proto b/pkg/protocol/protobuf/vcsec.proto index 19097e0..a17bb27 100644 --- a/pkg/protocol/protobuf/vcsec.proto +++ b/pkg/protocol/protobuf/vcsec.proto @@ -19,7 +19,10 @@ message SignedMessage { } message ToVCSECMessage { - SignedMessage signedMessage = 1; + oneof sub_message { + SignedMessage signedMessage = 1; + UnsignedMessage unsignedMessage = 2; + } } message KeyIdentifier { @@ -76,6 +79,10 @@ message InformationRequest { enum RKEAction_E { RKE_ACTION_UNLOCK = 0; RKE_ACTION_LOCK = 1; + RKE_ACTION_OPEN_TRUNK = 2; + RKE_ACTION_OPEN_FRUNK = 3; + RKE_ACTION_OPEN_CHARGE_PORT = 4; + RKE_ACTION_CLOSE_CHARGE_PORT = 5; RKE_ACTION_REMOTE_DRIVE = 20; RKE_ACTION_AUTO_SECURE_VEHICLE = 29; RKE_ACTION_WAKE_VEHICLE = 30; diff --git a/pkg/protocol/protobuf/vcsec/vcsec.pb.go b/pkg/protocol/protobuf/vcsec/vcsec.pb.go index c00fa9c..35f6493 100644 --- a/pkg/protocol/protobuf/vcsec/vcsec.pb.go +++ b/pkg/protocol/protobuf/vcsec/vcsec.pb.go @@ -177,6 +177,10 @@ type RKEAction_E int32 const ( RKEAction_E_RKE_ACTION_UNLOCK RKEAction_E = 0 RKEAction_E_RKE_ACTION_LOCK RKEAction_E = 1 + RKEAction_E_RKE_ACTION_OPEN_TRUNK RKEAction_E = 2 + RKEAction_E_RKE_ACTION_OPEN_FRUNK RKEAction_E = 3 + RKEAction_E_RKE_ACTION_OPEN_CHARGE_PORT RKEAction_E = 4 + RKEAction_E_RKE_ACTION_CLOSE_CHARGE_PORT RKEAction_E = 5 RKEAction_E_RKE_ACTION_REMOTE_DRIVE RKEAction_E = 20 RKEAction_E_RKE_ACTION_AUTO_SECURE_VEHICLE RKEAction_E = 29 RKEAction_E_RKE_ACTION_WAKE_VEHICLE RKEAction_E = 30 @@ -187,6 +191,10 @@ var ( RKEAction_E_name = map[int32]string{ 0: "RKE_ACTION_UNLOCK", 1: "RKE_ACTION_LOCK", + 2: "RKE_ACTION_OPEN_TRUNK", + 3: "RKE_ACTION_OPEN_FRUNK", + 4: "RKE_ACTION_OPEN_CHARGE_PORT", + 5: "RKE_ACTION_CLOSE_CHARGE_PORT", 20: "RKE_ACTION_REMOTE_DRIVE", 29: "RKE_ACTION_AUTO_SECURE_VEHICLE", 30: "RKE_ACTION_WAKE_VEHICLE", @@ -194,6 +202,10 @@ var ( RKEAction_E_value = map[string]int32{ "RKE_ACTION_UNLOCK": 0, "RKE_ACTION_LOCK": 1, + "RKE_ACTION_OPEN_TRUNK": 2, + "RKE_ACTION_OPEN_FRUNK": 3, + "RKE_ACTION_OPEN_CHARGE_PORT": 4, + "RKE_ACTION_CLOSE_CHARGE_PORT": 5, "RKE_ACTION_REMOTE_DRIVE": 20, "RKE_ACTION_AUTO_SECURE_VEHICLE": 29, "RKE_ACTION_WAKE_VEHICLE": 30, @@ -600,7 +612,10 @@ type ToVCSECMessage struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SignedMessage *SignedMessage `protobuf:"bytes,1,opt,name=signedMessage,proto3" json:"signedMessage,omitempty"` + // Types that are assignable to SubMessage: + // *ToVCSECMessage_SignedMessage + // *ToVCSECMessage_UnsignedMessage + SubMessage isToVCSECMessage_SubMessage `protobuf_oneof:"sub_message"` } func (x *ToVCSECMessage) Reset() { @@ -635,13 +650,43 @@ func (*ToVCSECMessage) Descriptor() ([]byte, []int) { return file_vcsec_proto_rawDescGZIP(), []int{1} } +func (m *ToVCSECMessage) GetSubMessage() isToVCSECMessage_SubMessage { + if m != nil { + return m.SubMessage + } + return nil +} + func (x *ToVCSECMessage) GetSignedMessage() *SignedMessage { - if x != nil { + if x, ok := x.GetSubMessage().(*ToVCSECMessage_SignedMessage); ok { return x.SignedMessage } return nil } +func (x *ToVCSECMessage) GetUnsignedMessage() *UnsignedMessage { + if x, ok := x.GetSubMessage().(*ToVCSECMessage_UnsignedMessage); ok { + return x.UnsignedMessage + } + return nil +} + +type isToVCSECMessage_SubMessage interface { + isToVCSECMessage_SubMessage() +} + +type ToVCSECMessage_SignedMessage struct { + SignedMessage *SignedMessage `protobuf:"bytes,1,opt,name=signedMessage,proto3,oneof"` +} + +type ToVCSECMessage_UnsignedMessage struct { + UnsignedMessage *UnsignedMessage `protobuf:"bytes,2,opt,name=unsignedMessage,proto3,oneof"` +} + +func (*ToVCSECMessage_SignedMessage) isToVCSECMessage_SubMessage() {} + +func (*ToVCSECMessage_UnsignedMessage) isToVCSECMessage_SubMessage() {} + type KeyIdentifier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1925,489 +1970,502 @@ var file_vcsec_proto_rawDesc = []byte{ 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x54, 0x6f, 0x56, 0x43, 0x53, 0x45, 0x43, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x35, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, - 0x53, 0x48, 0x41, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x48, 0x41, 0x31, 0x22, 0x49, 0x0a, 0x0b, 0x4b, 0x65, 0x79, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x46, - 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x6b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x61, - 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x52, 0x61, 0x77, 0x22, 0x97, 0x01, 0x0a, 0x0d, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x4f, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x12, 0x40, 0x0a, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, + 0x54, 0x79, 0x70, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x0e, 0x54, 0x6f, 0x56, 0x43, 0x53, 0x45, 0x43, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x35, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x48, 0x41, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x48, 0x41, 0x31, 0x22, + 0x49, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, + 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, + 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x6b, 0x65, 0x79, + 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x09, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4b, 0x65, 0x79, 0x52, 0x61, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x61, 0x77, 0x22, 0x97, 0x01, 0x0a, 0x0d, + 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, + 0x0f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6c, 0x6f, + 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x6c, 0x6f, + 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xe6, 0x01, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x05, + 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, + 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, + 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, + 0x72, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, + 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xd6, + 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x16, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x49, 0x6e, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x16, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, + 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x22, - 0xe6, 0x01, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, - 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x6b, 0x65, 0x79, - 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, - 0x72, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53, - 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x55, 0x0a, 0x16, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1d, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x16, - 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, - 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6b, - 0x65, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0xd8, 0x03, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6e, - 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, - 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0f, 0x66, 0x72, 0x6f, - 0x6e, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x12, - 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, - 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x5f, 0x45, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, - 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x72, 0x44, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x72, 0x48, 0x00, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xd8, 0x03, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x73, + 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, + 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, + 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, + 0x45, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, + 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x12, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, + 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, - 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x72, 0x44, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x61, 0x72, - 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, - 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x11, 0x72, - 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, - 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, - 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x09, 0x72, - 0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6e, - 0x74, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, + 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x50, + 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x0e, + 0x72, 0x65, 0x61, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, + 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0e, + 0x72, 0x65, 0x61, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x46, + 0x0a, 0x11, 0x72, 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, + 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, + 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x5f, 0x45, 0x52, 0x11, 0x72, 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, + 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x72, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, + 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x5f, 0x45, 0x52, 0x09, 0x72, 0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x38, + 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, + 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0a, 0x66, 0x72, + 0x6f, 0x6e, 0x74, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, - 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, - 0x52, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x8a, 0x01, 0x0a, - 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x54, 0x6f, 0x42, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x54, 0x6f, 0x42, 0x65, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x0a, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x01, + 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0d, - 0x73, 0x6c, 0x6f, 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6c, 0x6f, 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x54, 0x6f, 0x41, - 0x64, 0x64, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x65, - 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x6b, 0x65, - 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x22, 0xa8, 0x07, 0x0a, 0x12, 0x57, - 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x4c, 0x0a, 0x17, 0x61, 0x64, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x17, 0x61, 0x64, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, - 0x56, 0x0a, 0x1c, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x1c, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x19, 0x61, 0x64, 0x64, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, - 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x19, 0x61, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, - 0x12, 0x61, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x48, 0x00, 0x52, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x12, 0x69, 0x0a, 0x22, 0x61, 0x64, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, - 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x22, 0x61, 0x64, 0x64, 0x4b, - 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x64, - 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, - 0x0a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, - 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x54, 0x6f, 0x42, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x54, + 0x6f, 0x42, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, + 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, + 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x22, + 0xfe, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x42, + 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, + 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x12, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0d, 0x73, 0x6c, 0x6f, 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6c, 0x6f, + 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6b, 0x65, + 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, + 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x08, + 0x6b, 0x65, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, + 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, + 0x42, 0x0e, 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x22, 0xa8, 0x07, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x17, 0x61, 0x64, 0x64, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, + 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x17, 0x61, 0x64, + 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x1c, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, + 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, + 0x1c, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x57, 0x0a, + 0x19, 0x61, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x54, + 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x19, 0x61, 0x64, 0x64, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x61, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x11, 0x61, 0x64, 0x64, 0x49, 0x6d, - 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x69, 0x0a, 0x22, - 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, - 0x79, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x48, 0x00, 0x52, 0x22, 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, - 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, - 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, - 0x65, 0x79, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, - 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x4b, 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x56, 0x43, 0x53, 0x45, - 0x43, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, - 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x0e, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x92, 0x02, 0x0a, 0x19, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x6d, 0x0a, 0x1d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x56, 0x43, 0x53, - 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x45, 0x52, 0x1d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4f, 0x66, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x52, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4f, 0x66, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x14, 0x53, + 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x6d, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x69, 0x0a, 0x22, 0x61, 0x64, 0x64, + 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6e, + 0x64, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, + 0x52, 0x22, 0x61, 0x64, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x41, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x41, 0x6e, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, + 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x64, 0x64, + 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, + 0x11, 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, + 0x65, 0x79, 0x12, 0x69, 0x0a, 0x22, 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, + 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x22, 0x61, 0x64, 0x64, 0x49, 0x6d, + 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, + 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, + 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x70, 0x65, + 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x72, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, + 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, + 0x12, 0x3a, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, + 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, + 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, + 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x92, 0x02, 0x0a, 0x19, + 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6d, 0x0a, 0x1d, 0x77, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x52, 0x1d, 0x77, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x11, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x4f, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x72, 0x4f, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x52, + 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x90, 0x01, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x52, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x5e, 0x0a, - 0x18, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x45, 0x52, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x02, - 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x42, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x5f, 0x45, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, - 0x13, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x18, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, + 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x18, 0x77, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x56, + 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, + 0x52, 0x18, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, + 0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd9, 0x02, 0x0a, 0x0f, 0x55, 0x6e, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, + 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, + 0x43, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x52, 0x4b, + 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x45, 0x48, 0x00, 0x52, 0x09, 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, + 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, + 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, + 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x18, 0x77, 0x68, 0x69, 0x74, - 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0xd9, 0x02, 0x0a, 0x0f, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x49, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, - 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x48, 0x00, 0x52, 0x09, 0x52, - 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x73, - 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, - 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, - 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, + 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, - 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x22, - 0xac, 0x02, 0x0a, 0x10, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x43, 0x53, 0x45, 0x43, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, - 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, - 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x48, - 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x4b, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, - 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, - 0x0c, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x2e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x4e, 0x6f, 0x6d, - 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x6f, 0x6d, - 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x0b, 0x2a, 0x48, - 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x17, 0x0a, 0x13, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x49, 0x47, 0x4e, - 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, - 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x02, 0x2a, 0xad, 0x01, 0x0a, 0x0d, 0x4b, 0x65, 0x79, - 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, - 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x45, 0x59, 0x5f, 0x46, - 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x46, 0x43, 0x5f, 0x43, - 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, - 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4f, 0x53, 0x5f, 0x44, 0x45, 0x56, - 0x49, 0x43, 0x45, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, - 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, - 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x4b, 0x45, 0x59, - 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x4f, - 0x55, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x09, 0x2a, 0xa9, 0x01, 0x0a, 0x16, 0x49, 0x6e, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, + 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, + 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x22, 0xac, 0x02, 0x0a, 0x10, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x43, + 0x53, 0x45, 0x43, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x77, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, + 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0c, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x2e, 0x4e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, + 0x00, 0x52, 0x0c, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, + 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4a, 0x04, + 0x08, 0x06, 0x10, 0x0b, 0x2a, 0x48, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e, + 0x0a, 0x1a, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x02, 0x2a, 0xad, + 0x01, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, + 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, + 0x18, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, + 0x5f, 0x4e, 0x46, 0x43, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, + 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x49, + 0x4f, 0x53, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x4b, + 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, + 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x07, 0x12, + 0x1d, 0x0a, 0x19, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, + 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x09, 0x2a, 0xa9, + 0x01, 0x0a, 0x16, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, + 0x45, 0x54, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x47, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, - 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, - 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x57, 0x48, 0x49, - 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x05, 0x12, 0x35, 0x0a, - 0x31, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, - 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x57, 0x48, - 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0x06, 0x2a, 0x97, 0x01, 0x0a, 0x0b, 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, - 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, - 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, - 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x10, 0x14, 0x12, 0x22, 0x0a, - 0x1e, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x55, 0x54, 0x4f, - 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x10, - 0x1d, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x57, 0x41, 0x4b, 0x45, 0x5f, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x10, 0x1e, 0x2a, 0xa0, - 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x5f, 0x45, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, - 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, - 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, - 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, - 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, - 0x45, 0x4e, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, - 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, - 0x04, 0x2a, 0x60, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x18, - 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x02, 0x2a, 0xf3, 0x08, 0x0a, 0x1b, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x45, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, - 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x49, 0x47, 0x4e, 0x45, - 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, - 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x57, - 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x49, - 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x56, - 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x45, 0x58, - 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x49, 0x47, 0x4e, - 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, - 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x04, 0x12, 0x3d, 0x0a, 0x39, 0x53, - 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, - 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, - 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, - 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x05, 0x12, 0x34, 0x0a, 0x30, 0x53, 0x49, - 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x41, 0x45, - 0x53, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x10, 0x06, - 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, - 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, - 0x07, 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, - 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, - 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, - 0x54, 0x55, 0x52, 0x45, 0x10, 0x08, 0x12, 0x36, 0x0a, 0x32, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, + 0x47, 0x45, 0x54, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x06, 0x2a, 0x90, 0x02, 0x0a, 0x0b, 0x52, + 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x4b, + 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x54, 0x52, 0x55, 0x4e, 0x4b, 0x10, + 0x02, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x46, 0x52, 0x55, 0x4e, 0x4b, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, + 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x5f, + 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x20, 0x0a, + 0x1c, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x4f, 0x53, + 0x45, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, + 0x1b, 0x0a, 0x17, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x10, 0x14, 0x12, 0x22, 0x0a, 0x1e, + 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, + 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x10, 0x1d, + 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, + 0x41, 0x4b, 0x45, 0x5f, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x10, 0x1e, 0x2a, 0xa0, 0x01, + 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x5f, 0x45, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, + 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, + 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, + 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, + 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x45, + 0x4e, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, + 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x04, + 0x2a, 0x60, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x5f, 0x45, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x18, 0x0a, + 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x02, 0x2a, 0xf3, 0x08, 0x0a, 0x1b, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x45, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x09, 0x12, 0x37, - 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, - 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, - 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x52, - 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x0a, 0x12, 0x3a, 0x0a, 0x36, 0x53, 0x49, 0x47, 0x4e, 0x45, - 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4c, 0x44, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x45, 0x5f, 0x4b, 0x45, - 0x59, 0x10, 0x0b, 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, - 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, - 0x0c, 0x12, 0x37, 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, - 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, - 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, - 0x4f, 0x4f, 0x5f, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x10, 0x0d, 0x12, 0x3d, 0x0a, 0x39, 0x53, 0x49, + 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x57, 0x48, + 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x49, 0x47, + 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x56, 0x5f, + 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x45, 0x58, 0x50, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x49, 0x47, 0x4e, 0x45, + 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, + 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x04, 0x12, 0x3d, 0x0a, 0x39, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x4f, - 0x4b, 0x45, 0x4e, 0x5f, 0x49, 0x53, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, - 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x0e, 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x49, 0x47, + 0x4b, 0x45, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x05, 0x12, 0x34, 0x0a, 0x30, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, - 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x43, - 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, 0x0f, 0x12, 0x37, - 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, - 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, - 0x54, 0x5f, 0x49, 0x56, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4c, - 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x10, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x49, 0x47, 0x4e, 0x45, - 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, - 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x11, 0x12, 0x41, 0x0a, 0x3d, 0x53, 0x49, 0x47, + 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x41, 0x45, 0x53, + 0x5f, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x10, 0x06, 0x12, + 0x2f, 0x0a, 0x2b, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x07, + 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, + 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, + 0x55, 0x52, 0x45, 0x10, 0x08, 0x12, 0x36, 0x0a, 0x32, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, + 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x09, 0x12, 0x37, 0x0a, + 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, + 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x10, 0x0a, 0x12, 0x3a, 0x0a, 0x36, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4c, 0x44, 0x5f, + 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x45, 0x5f, 0x4b, 0x45, 0x59, + 0x10, 0x0b, 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x0c, + 0x12, 0x37, 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, + 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x4f, + 0x4f, 0x5f, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x10, 0x0d, 0x12, 0x3d, 0x0a, 0x39, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, - 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4e, 0x4f, 0x54, - 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x57, 0x49, 0x54, - 0x48, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x10, 0x12, 0x12, 0x3b, 0x0a, 0x37, - 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, - 0x43, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4d, - 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x13, 0x2a, 0xc3, 0x0c, 0x0a, 0x20, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x27, - 0x0a, 0x23, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x57, 0x48, 0x49, 0x54, 0x45, - 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x4f, 0x43, 0x55, - 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x42, - 0x0a, 0x3e, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, - 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x46, 0x4f, 0x42, 0x5f, 0x53, 0x4c, 0x4f, 0x54, - 0x53, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x57, 0x48, 0x49, 0x54, - 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, - 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, - 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x04, 0x12, 0x37, 0x0a, 0x33, 0x57, - 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x41, - 0x44, 0x44, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, - 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, - 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, - 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x06, 0x12, 0x3a, 0x0a, 0x36, 0x57, - 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x52, - 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x07, 0x12, 0x46, 0x0a, 0x42, 0x57, 0x48, 0x49, 0x54, 0x45, - 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x08, 0x12, - 0x4c, 0x0a, 0x48, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, - 0x45, 0x4c, 0x45, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x42, - 0x4f, 0x56, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x09, 0x12, 0x4b, 0x0a, - 0x47, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, + 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x4f, 0x4b, + 0x45, 0x4e, 0x5f, 0x49, 0x53, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, + 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x0e, 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x49, 0x47, 0x4e, + 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4f, + 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, 0x0f, 0x12, 0x37, 0x0a, + 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, + 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x5f, 0x49, 0x56, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x45, + 0x4e, 0x47, 0x54, 0x48, 0x10, 0x10, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x45, + 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x11, 0x12, 0x41, 0x0a, 0x3d, 0x53, 0x49, 0x47, 0x4e, + 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, + 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x10, 0x12, 0x12, 0x3b, 0x0a, 0x37, 0x53, + 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, + 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x13, 0x2a, 0xc3, 0x0c, 0x0a, 0x20, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x27, 0x0a, + 0x23, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, + 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x44, 0x4f, 0x43, 0x55, 0x4d, + 0x45, 0x4e, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x42, 0x0a, + 0x3e, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x45, - 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x52, 0x5f, 0x54, 0x4f, - 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x0a, 0x12, 0x47, 0x0a, 0x43, 0x57, 0x48, + 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, + 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, + 0x02, 0x12, 0x34, 0x0a, 0x30, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x46, 0x4f, 0x42, 0x5f, 0x53, 0x4c, 0x4f, 0x54, 0x53, + 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x57, 0x48, 0x49, 0x54, 0x45, + 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, + 0x49, 0x53, 0x54, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x04, 0x12, 0x37, 0x0a, 0x33, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, - 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x53, 0x10, 0x0b, 0x12, 0x3e, 0x0a, 0x3a, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, + 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, + 0x44, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, - 0x54, 0x10, 0x0c, 0x12, 0x59, 0x0a, 0x55, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, - 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, - 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x48, 0x41, 0x54, - 0x5f, 0x49, 0x53, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, - 0x48, 0x45, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0d, 0x12, 0x46, - 0x0a, 0x42, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, - 0x41, 0x44, 0x44, 0x5f, 0x55, 0x4e, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x52, 0x45, - 0x41, 0x44, 0x45, 0x52, 0x10, 0x0e, 0x12, 0x41, 0x0a, 0x3d, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, - 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, - 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x49, - 0x46, 0x59, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x55, 0x54, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4f, 0x46, - 0x5f, 0x46, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x45, 0x0a, 0x41, 0x57, 0x48, 0x49, - 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x41, - 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x10, - 0x12, 0x48, 0x0a, 0x44, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, - 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, - 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x11, 0x12, 0x39, 0x0a, 0x35, 0x57, 0x48, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x55, + 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x06, 0x12, 0x3a, 0x0a, 0x36, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, - 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x53, 0x5f, 0x46, - 0x55, 0x4c, 0x4c, 0x10, 0x12, 0x12, 0x45, 0x0a, 0x41, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, - 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, - 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x57, 0x49, - 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x13, 0x12, 0x4a, 0x0a, 0x46, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, + 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x07, 0x12, 0x46, 0x0a, 0x42, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, + 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, + 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x08, 0x12, 0x4c, + 0x0a, 0x48, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x45, + 0x4c, 0x45, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x42, 0x4f, + 0x56, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x09, 0x12, 0x4b, 0x0a, 0x47, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, - 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, - 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x14, 0x12, 0x51, 0x0a, 0x4d, 0x57, 0x48, 0x49, 0x54, + 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x45, 0x4d, + 0x4f, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, + 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x0a, 0x12, 0x47, 0x0a, 0x43, 0x57, 0x48, 0x49, + 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, + 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, + 0x5f, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, + 0x10, 0x0b, 0x12, 0x3e, 0x0a, 0x3a, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, + 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, + 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0x0c, 0x12, 0x59, 0x0a, 0x55, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, + 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x48, 0x41, 0x54, 0x5f, + 0x49, 0x53, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, 0x48, + 0x45, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0d, 0x12, 0x46, 0x0a, + 0x42, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x41, + 0x44, 0x44, 0x5f, 0x55, 0x4e, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, + 0x44, 0x45, 0x52, 0x10, 0x0e, 0x12, 0x41, 0x0a, 0x3d, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, + 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, + 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, + 0x59, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x55, 0x54, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4f, 0x46, 0x5f, + 0x46, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x45, 0x0a, 0x41, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, - 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, - 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x53, 0x45, 0x52, - 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x10, 0x15, 0x12, 0x62, 0x0a, 0x5e, 0x57, + 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x41, 0x54, + 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, + 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x10, 0x12, + 0x48, 0x0a, 0x44, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, + 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x11, 0x12, 0x39, 0x0a, 0x35, 0x57, 0x48, 0x49, + 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x43, + 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x53, 0x5f, 0x46, 0x55, + 0x4c, 0x4c, 0x10, 0x12, 0x12, 0x45, 0x0a, 0x41, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, + 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, + 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x57, 0x49, 0x54, + 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x13, 0x12, 0x4a, 0x0a, 0x46, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, + 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, + 0x4b, 0x45, 0x59, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, + 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x14, 0x12, 0x51, 0x0a, 0x4d, 0x57, 0x48, 0x49, 0x54, 0x45, + 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x53, 0x49, 0x44, 0x45, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x16, 0x42, - 0x5f, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x6c, 0x61, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x63, 0x73, 0x65, 0x63, 0x5a, 0x42, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x73, 0x6c, 0x61, 0x6d, 0x6f, - 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x2d, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x63, 0x73, 0x65, 0x63, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x10, 0x15, 0x12, 0x62, 0x0a, 0x5e, 0x57, 0x48, + 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, + 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x53, 0x49, 0x44, 0x45, 0x5f, + 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x16, 0x42, 0x5f, + 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x6c, 0x61, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x63, 0x73, 0x65, 0x63, 0x5a, 0x42, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x73, 0x6c, 0x61, 0x6d, 0x6f, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x63, 0x73, 0x65, 0x63, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2456,56 +2514,57 @@ var file_vcsec_proto_goTypes = []interface{}{ var file_vcsec_proto_depIdxs = []int32{ 0, // 0: VCSEC.SignedMessage.signatureType:type_name -> VCSEC.SignatureType 8, // 1: VCSEC.ToVCSECMessage.signedMessage:type_name -> VCSEC.SignedMessage - 1, // 2: VCSEC.KeyMetadata.keyFormFactor:type_name -> VCSEC.KeyFormFactor - 10, // 3: VCSEC.WhitelistInfo.whitelistEntries:type_name -> VCSEC.KeyIdentifier - 10, // 4: VCSEC.WhitelistEntryInfo.keyId:type_name -> VCSEC.KeyIdentifier - 12, // 5: VCSEC.WhitelistEntryInfo.publicKey:type_name -> VCSEC.PublicKey - 11, // 6: VCSEC.WhitelistEntryInfo.metadataForKey:type_name -> VCSEC.KeyMetadata - 25, // 7: VCSEC.WhitelistEntryInfo.keyRole:type_name -> Keys.Role - 2, // 8: VCSEC.InformationRequest.informationRequestType:type_name -> VCSEC.InformationRequestType - 10, // 9: VCSEC.InformationRequest.keyId:type_name -> VCSEC.KeyIdentifier - 4, // 10: VCSEC.ClosureMoveRequest.frontDriverDoor:type_name -> VCSEC.ClosureMoveType_E - 4, // 11: VCSEC.ClosureMoveRequest.frontPassengerDoor:type_name -> VCSEC.ClosureMoveType_E - 4, // 12: VCSEC.ClosureMoveRequest.rearDriverDoor:type_name -> VCSEC.ClosureMoveType_E - 4, // 13: VCSEC.ClosureMoveRequest.rearPassengerDoor:type_name -> VCSEC.ClosureMoveType_E - 4, // 14: VCSEC.ClosureMoveRequest.rearTrunk:type_name -> VCSEC.ClosureMoveType_E - 4, // 15: VCSEC.ClosureMoveRequest.frontTrunk:type_name -> VCSEC.ClosureMoveType_E - 4, // 16: VCSEC.ClosureMoveRequest.chargePort:type_name -> VCSEC.ClosureMoveType_E - 12, // 17: VCSEC.PermissionChange.key:type_name -> VCSEC.PublicKey - 25, // 18: VCSEC.PermissionChange.keyRole:type_name -> Keys.Role - 12, // 19: VCSEC.ReplaceKey.publicKeyToReplace:type_name -> VCSEC.PublicKey - 12, // 20: VCSEC.ReplaceKey.keyToAdd:type_name -> VCSEC.PublicKey - 25, // 21: VCSEC.ReplaceKey.keyRole:type_name -> Keys.Role - 12, // 22: VCSEC.WhitelistOperation.addPublicKeyToWhitelist:type_name -> VCSEC.PublicKey - 12, // 23: VCSEC.WhitelistOperation.removePublicKeyFromWhitelist:type_name -> VCSEC.PublicKey - 17, // 24: VCSEC.WhitelistOperation.addPermissionsToPublicKey:type_name -> VCSEC.PermissionChange - 17, // 25: VCSEC.WhitelistOperation.removePermissionsFromPublicKey:type_name -> VCSEC.PermissionChange - 17, // 26: VCSEC.WhitelistOperation.addKeyToWhitelistAndAddPermissions:type_name -> VCSEC.PermissionChange - 17, // 27: VCSEC.WhitelistOperation.updateKeyAndPermissions:type_name -> VCSEC.PermissionChange - 17, // 28: VCSEC.WhitelistOperation.addImpermanentKey:type_name -> VCSEC.PermissionChange - 17, // 29: VCSEC.WhitelistOperation.addImpermanentKeyAndRemoveExisting:type_name -> VCSEC.PermissionChange - 18, // 30: VCSEC.WhitelistOperation.replaceKey:type_name -> VCSEC.ReplaceKey - 11, // 31: VCSEC.WhitelistOperation.metadataForKey:type_name -> VCSEC.KeyMetadata - 7, // 32: VCSEC.WhitelistOperation_status.whitelistOperationInformation:type_name -> VCSEC.WhitelistOperation_information_E - 10, // 33: VCSEC.WhitelistOperation_status.signerOfOperation:type_name -> VCSEC.KeyIdentifier - 5, // 34: VCSEC.WhitelistOperation_status.operationStatus:type_name -> VCSEC.OperationStatus_E - 6, // 35: VCSEC.SignedMessage_status.signedMessageInformation:type_name -> VCSEC.SignedMessage_information_E - 5, // 36: VCSEC.CommandStatus.operationStatus:type_name -> VCSEC.OperationStatus_E - 21, // 37: VCSEC.CommandStatus.signedMessageStatus:type_name -> VCSEC.SignedMessage_status - 20, // 38: VCSEC.CommandStatus.whitelistOperationStatus:type_name -> VCSEC.WhitelistOperation_status - 15, // 39: VCSEC.UnsignedMessage.InformationRequest:type_name -> VCSEC.InformationRequest - 3, // 40: VCSEC.UnsignedMessage.RKEAction:type_name -> VCSEC.RKEAction_E - 16, // 41: VCSEC.UnsignedMessage.closureMoveRequest:type_name -> VCSEC.ClosureMoveRequest - 19, // 42: VCSEC.UnsignedMessage.WhitelistOperation:type_name -> VCSEC.WhitelistOperation - 22, // 43: VCSEC.FromVCSECMessage.commandStatus:type_name -> VCSEC.CommandStatus - 13, // 44: VCSEC.FromVCSECMessage.whitelistInfo:type_name -> VCSEC.WhitelistInfo - 14, // 45: VCSEC.FromVCSECMessage.whitelistEntryInfo:type_name -> VCSEC.WhitelistEntryInfo - 26, // 46: VCSEC.FromVCSECMessage.nominalError:type_name -> Errors.NominalError - 47, // [47:47] is the sub-list for method output_type - 47, // [47:47] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 23, // 2: VCSEC.ToVCSECMessage.unsignedMessage:type_name -> VCSEC.UnsignedMessage + 1, // 3: VCSEC.KeyMetadata.keyFormFactor:type_name -> VCSEC.KeyFormFactor + 10, // 4: VCSEC.WhitelistInfo.whitelistEntries:type_name -> VCSEC.KeyIdentifier + 10, // 5: VCSEC.WhitelistEntryInfo.keyId:type_name -> VCSEC.KeyIdentifier + 12, // 6: VCSEC.WhitelistEntryInfo.publicKey:type_name -> VCSEC.PublicKey + 11, // 7: VCSEC.WhitelistEntryInfo.metadataForKey:type_name -> VCSEC.KeyMetadata + 25, // 8: VCSEC.WhitelistEntryInfo.keyRole:type_name -> Keys.Role + 2, // 9: VCSEC.InformationRequest.informationRequestType:type_name -> VCSEC.InformationRequestType + 10, // 10: VCSEC.InformationRequest.keyId:type_name -> VCSEC.KeyIdentifier + 4, // 11: VCSEC.ClosureMoveRequest.frontDriverDoor:type_name -> VCSEC.ClosureMoveType_E + 4, // 12: VCSEC.ClosureMoveRequest.frontPassengerDoor:type_name -> VCSEC.ClosureMoveType_E + 4, // 13: VCSEC.ClosureMoveRequest.rearDriverDoor:type_name -> VCSEC.ClosureMoveType_E + 4, // 14: VCSEC.ClosureMoveRequest.rearPassengerDoor:type_name -> VCSEC.ClosureMoveType_E + 4, // 15: VCSEC.ClosureMoveRequest.rearTrunk:type_name -> VCSEC.ClosureMoveType_E + 4, // 16: VCSEC.ClosureMoveRequest.frontTrunk:type_name -> VCSEC.ClosureMoveType_E + 4, // 17: VCSEC.ClosureMoveRequest.chargePort:type_name -> VCSEC.ClosureMoveType_E + 12, // 18: VCSEC.PermissionChange.key:type_name -> VCSEC.PublicKey + 25, // 19: VCSEC.PermissionChange.keyRole:type_name -> Keys.Role + 12, // 20: VCSEC.ReplaceKey.publicKeyToReplace:type_name -> VCSEC.PublicKey + 12, // 21: VCSEC.ReplaceKey.keyToAdd:type_name -> VCSEC.PublicKey + 25, // 22: VCSEC.ReplaceKey.keyRole:type_name -> Keys.Role + 12, // 23: VCSEC.WhitelistOperation.addPublicKeyToWhitelist:type_name -> VCSEC.PublicKey + 12, // 24: VCSEC.WhitelistOperation.removePublicKeyFromWhitelist:type_name -> VCSEC.PublicKey + 17, // 25: VCSEC.WhitelistOperation.addPermissionsToPublicKey:type_name -> VCSEC.PermissionChange + 17, // 26: VCSEC.WhitelistOperation.removePermissionsFromPublicKey:type_name -> VCSEC.PermissionChange + 17, // 27: VCSEC.WhitelistOperation.addKeyToWhitelistAndAddPermissions:type_name -> VCSEC.PermissionChange + 17, // 28: VCSEC.WhitelistOperation.updateKeyAndPermissions:type_name -> VCSEC.PermissionChange + 17, // 29: VCSEC.WhitelistOperation.addImpermanentKey:type_name -> VCSEC.PermissionChange + 17, // 30: VCSEC.WhitelistOperation.addImpermanentKeyAndRemoveExisting:type_name -> VCSEC.PermissionChange + 18, // 31: VCSEC.WhitelistOperation.replaceKey:type_name -> VCSEC.ReplaceKey + 11, // 32: VCSEC.WhitelistOperation.metadataForKey:type_name -> VCSEC.KeyMetadata + 7, // 33: VCSEC.WhitelistOperation_status.whitelistOperationInformation:type_name -> VCSEC.WhitelistOperation_information_E + 10, // 34: VCSEC.WhitelistOperation_status.signerOfOperation:type_name -> VCSEC.KeyIdentifier + 5, // 35: VCSEC.WhitelistOperation_status.operationStatus:type_name -> VCSEC.OperationStatus_E + 6, // 36: VCSEC.SignedMessage_status.signedMessageInformation:type_name -> VCSEC.SignedMessage_information_E + 5, // 37: VCSEC.CommandStatus.operationStatus:type_name -> VCSEC.OperationStatus_E + 21, // 38: VCSEC.CommandStatus.signedMessageStatus:type_name -> VCSEC.SignedMessage_status + 20, // 39: VCSEC.CommandStatus.whitelistOperationStatus:type_name -> VCSEC.WhitelistOperation_status + 15, // 40: VCSEC.UnsignedMessage.InformationRequest:type_name -> VCSEC.InformationRequest + 3, // 41: VCSEC.UnsignedMessage.RKEAction:type_name -> VCSEC.RKEAction_E + 16, // 42: VCSEC.UnsignedMessage.closureMoveRequest:type_name -> VCSEC.ClosureMoveRequest + 19, // 43: VCSEC.UnsignedMessage.WhitelistOperation:type_name -> VCSEC.WhitelistOperation + 22, // 44: VCSEC.FromVCSECMessage.commandStatus:type_name -> VCSEC.CommandStatus + 13, // 45: VCSEC.FromVCSECMessage.whitelistInfo:type_name -> VCSEC.WhitelistInfo + 14, // 46: VCSEC.FromVCSECMessage.whitelistEntryInfo:type_name -> VCSEC.WhitelistEntryInfo + 26, // 47: VCSEC.FromVCSECMessage.nominalError:type_name -> Errors.NominalError + 48, // [48:48] is the sub-list for method output_type + 48, // [48:48] is the sub-list for method input_type + 48, // [48:48] is the sub-list for extension type_name + 48, // [48:48] is the sub-list for extension extendee + 0, // [0:48] is the sub-list for field type_name } func init() { file_vcsec_proto_init() } @@ -2719,6 +2778,10 @@ func file_vcsec_proto_init() { } } } + file_vcsec_proto_msgTypes[1].OneofWrappers = []interface{}{ + (*ToVCSECMessage_SignedMessage)(nil), + (*ToVCSECMessage_UnsignedMessage)(nil), + } file_vcsec_proto_msgTypes[7].OneofWrappers = []interface{}{ (*InformationRequest_KeyId)(nil), (*InformationRequest_PublicKey)(nil), diff --git a/pkg/proxy/command.go b/pkg/proxy/command.go index 9c24e49..fb86c03 100644 --- a/pkg/proxy/command.go +++ b/pkg/proxy/command.go @@ -151,17 +151,15 @@ func ExtractCommandAction(ctx context.Context, command string, params RequestPar }, nil // vehicle.Vehicle actuation commands case "actuate_trunk": - if which, err := params.getString("which_trunk", false); err == nil { - switch which { - case "front": - return func(v *vehicle.Vehicle) error { return v.OpenFrunk(ctx) }, nil - case "rear": - return func(v *vehicle.Vehicle) error { return v.OpenTrunk(ctx) }, nil - default: - return nil, &protocol.NominalError{Details: protocol.NewError("invalid_value", false, false)} - } - } - return func(v *vehicle.Vehicle) error { return v.OpenTrunk(ctx) }, nil + which, _ := params.getString("which_trunk", false) + switch which { + case "front": + return func(v *vehicle.Vehicle) error { return v.OpenFrunk(ctx) }, nil + case "rear": + return func(v *vehicle.Vehicle) error { return v.ActuateTrunk(ctx) }, nil + default: + return nil, &protocol.NominalError{Details: protocol.NewError("invalid_value", false, false)} + } case "charge_port_door_open": return func(v *vehicle.Vehicle) error { return v.ChargePortOpen(ctx) }, nil case "charge_port_door_close": diff --git a/pkg/vehicle/actions.go b/pkg/vehicle/actions.go index d6e098f..3f5335e 100644 --- a/pkg/vehicle/actions.go +++ b/pkg/vehicle/actions.go @@ -9,24 +9,37 @@ import ( "github.com/teslamotors/vehicle-command/pkg/protocol/protobuf/vcsec" ) -func (v *Vehicle) ActuateTrunk(ctx context.Context) error { - return v.executeClosureAction(ctx, vcsec.ClosureMoveType_E_CLOSURE_MOVE_TYPE_MOVE, ClosureTrunk) +// OpenTrunk opens the trunk. This method requires either a powered trunk or firmware version +// 2024.14+. The command silently fails on other vehicles, but ActuateTrunk may be used instead. +// +// Note the CloseTrunk method requires a powered trunk. Check for "can_actuate_trunks" under +// "vehicle_config" in the response from the [Vehicle Data Fleet API endpoint] to determine the +// vehicle's capabilities. +// +// [Vehicle Data Fleet API endpoint]: https://developer.tesla.com/docs/tesla-fleet-api#vehicle_data +func (v *Vehicle) OpenTrunk(ctx context.Context) error { + return v.executeClosureAction(ctx, vcsec.ClosureMoveType_E_CLOSURE_MOVE_TYPE_OPEN, ClosureTrunk) } -// OpenTrunk opens the trunk, but note that CloseTrunk is not available on all vehicle types. -func (v *Vehicle) OpenTrunk(ctx context.Context) error { +// ActuateTrunk toggles the trunk between open and closed. Only vehicles with a powered trunk will +// close. +func (v *Vehicle) ActuateTrunk(ctx context.Context) error { return v.executeClosureAction(ctx, vcsec.ClosureMoveType_E_CLOSURE_MOVE_TYPE_MOVE, ClosureTrunk) } -// CloseTrunk is not available on all vehicle types. -func (v *Vehicle) CloseTrunk(ctx context.Context) error { +// CloseTrunk closes the trunk. +// +// This method requires a powered trunk. Check for "can_actuate_trunks" under "vehicle_config" in +// the response from the [Vehicle Data Fleet API endpoint] to determine the vehicle's capabilities. +/func (v *Vehicle) CloseTrunk(ctx context.Context) error { return v.executeClosureAction(ctx, vcsec.ClosureMoveType_E_CLOSURE_MOVE_TYPE_CLOSE, ClosureTrunk) } -// OpenTrunk opens the frunk. There is no remote way to close the frunk! +// OpenFrunk opens the frunk. There is no remote way to close the frunk! func (v *Vehicle) OpenFrunk(ctx context.Context) error { - return v.executeClosureAction(ctx, vcsec.ClosureMoveType_E_CLOSURE_MOVE_TYPE_MOVE, ClosureFrunk) + return v.executeRKEAction(ctx, vcsec.RKEAction_E_RKE_ACTION_OPEN_FRUNK) } + func (v *Vehicle) HonkHorn(ctx context.Context) error { return v.executeCarServerAction(ctx, &carserver.Action_VehicleAction{ diff --git a/pkg/vehicle/security.go b/pkg/vehicle/security.go index e27d53e..0813737 100644 --- a/pkg/vehicle/security.go +++ b/pkg/vehicle/security.go @@ -287,9 +287,11 @@ func (v *Vehicle) SendAddKeyRequest(ctx context.Context, publicKey *ecdh.PublicK return err } envelope := &vcsec.ToVCSECMessage{ - SignedMessage: &vcsec.SignedMessage{ - ProtobufMessageAsBytes: encodedPayload, - SignatureType: vcsec.SignatureType_SIGNATURE_TYPE_PRESENT_KEY, + SubMessage: &vcsec.ToVCSECMessage_SignedMessage{ + SignedMessage: &vcsec.SignedMessage{ + ProtobufMessageAsBytes: encodedPayload, + SignatureType: vcsec.SignatureType_SIGNATURE_TYPE_PRESENT_KEY, + }, }, } encodedEnvelope, err := proto.Marshal(envelope)