diff --git a/api/proto/sysml.pb.go b/api/proto/sysml.pb.go index bcb9d3fe35..4dc7fd683d 100644 --- a/api/proto/sysml.pb.go +++ b/api/proto/sysml.pb.go @@ -4070,6 +4070,7 @@ type EditOperation struct { // *EditOperation_AddMember // *EditOperation_Delete // *EditOperation_Move + // *EditOperation_AddConnection Operation isEditOperation_Operation `protobuf_oneof:"operation"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -4157,6 +4158,15 @@ func (x *EditOperation) GetMove() *MoveEdit { return nil } +func (x *EditOperation) GetAddConnection() *AddConnectionEdit { + if x != nil { + if x, ok := x.Operation.(*EditOperation_AddConnection); ok { + return x.AddConnection + } + } + return nil +} + type isEditOperation_Operation interface { isEditOperation_Operation() } @@ -4181,6 +4191,10 @@ type EditOperation_Move struct { Move *MoveEdit `protobuf:"bytes,5,opt,name=move,proto3,oneof"` } +type EditOperation_AddConnection struct { + AddConnection *AddConnectionEdit `protobuf:"bytes,6,opt,name=add_connection,json=addConnection,proto3,oneof"` +} + func (*EditOperation_SetValue) isEditOperation_Operation() {} func (*EditOperation_Rename) isEditOperation_Operation() {} @@ -4191,6 +4205,8 @@ func (*EditOperation_Delete) isEditOperation_Operation() {} func (*EditOperation_Move) isEditOperation_Operation() {} +func (*EditOperation_AddConnection) isEditOperation_Operation() {} + // AddMemberEdit inserts a declaration into a namespace or the document root. type AddMemberEdit struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4291,6 +4307,98 @@ func (x *AddMemberEdit) GetSpecializes() []string { return nil } +// AddConnectionEdit inserts a usage whose ends connect two features. +type AddConnectionEdit struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Namespace FQN receiving the usage; empty means the document root. + Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` + // Usage kind: SysML connection, interface, allocation, binding, flow, + // succession or transition; KerML connector, binding, flow or succession. + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` + // First feature reference resolved from the owner. + FromEnd string `protobuf:"bytes,3,opt,name=from_end,json=fromEnd,proto3" json:"from_end,omitempty"` + // Second feature reference resolved from the owner. + ToEnd string `protobuf:"bytes,4,opt,name=to_end,json=toEnd,proto3" json:"to_end,omitempty"` + // Optional declared name. + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + // Optional typing target, legal only for typed connection kinds. + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AddConnectionEdit) Reset() { + *x = AddConnectionEdit{} + mi := &file_sysml_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AddConnectionEdit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddConnectionEdit) ProtoMessage() {} + +func (x *AddConnectionEdit) ProtoReflect() protoreflect.Message { + mi := &file_sysml_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddConnectionEdit.ProtoReflect.Descriptor instead. +func (*AddConnectionEdit) Descriptor() ([]byte, []int) { + return file_sysml_proto_rawDescGZIP(), []int{46} +} + +func (x *AddConnectionEdit) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *AddConnectionEdit) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (x *AddConnectionEdit) GetFromEnd() string { + if x != nil { + return x.FromEnd + } + return "" +} + +func (x *AddConnectionEdit) GetToEnd() string { + if x != nil { + return x.ToEnd + } + return "" +} + +func (x *AddConnectionEdit) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AddConnectionEdit) GetType() string { + if x != nil { + return x.Type + } + return "" +} + // DeleteEdit removes a declaration and its owned trivia. type DeleteEdit struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4304,7 +4412,7 @@ type DeleteEdit struct { func (x *DeleteEdit) Reset() { *x = DeleteEdit{} - mi := &file_sysml_proto_msgTypes[46] + mi := &file_sysml_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4316,7 +4424,7 @@ func (x *DeleteEdit) String() string { func (*DeleteEdit) ProtoMessage() {} func (x *DeleteEdit) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[46] + mi := &file_sysml_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4329,7 +4437,7 @@ func (x *DeleteEdit) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteEdit.ProtoReflect.Descriptor instead. func (*DeleteEdit) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{46} + return file_sysml_proto_rawDescGZIP(), []int{47} } func (x *DeleteEdit) GetTarget() string { @@ -4362,7 +4470,7 @@ type MoveEdit struct { func (x *MoveEdit) Reset() { *x = MoveEdit{} - mi := &file_sysml_proto_msgTypes[47] + mi := &file_sysml_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4374,7 +4482,7 @@ func (x *MoveEdit) String() string { func (*MoveEdit) ProtoMessage() {} func (x *MoveEdit) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[47] + mi := &file_sysml_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4387,7 +4495,7 @@ func (x *MoveEdit) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveEdit.ProtoReflect.Descriptor instead. func (*MoveEdit) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{47} + return file_sysml_proto_rawDescGZIP(), []int{48} } func (x *MoveEdit) GetTarget() string { @@ -4419,7 +4527,7 @@ type SetValueEdit struct { func (x *SetValueEdit) Reset() { *x = SetValueEdit{} - mi := &file_sysml_proto_msgTypes[48] + mi := &file_sysml_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4431,7 +4539,7 @@ func (x *SetValueEdit) String() string { func (*SetValueEdit) ProtoMessage() {} func (x *SetValueEdit) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[48] + mi := &file_sysml_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4444,7 +4552,7 @@ func (x *SetValueEdit) ProtoReflect() protoreflect.Message { // Deprecated: Use SetValueEdit.ProtoReflect.Descriptor instead. func (*SetValueEdit) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{48} + return file_sysml_proto_rawDescGZIP(), []int{49} } func (x *SetValueEdit) GetTarget() string { @@ -4475,7 +4583,7 @@ type RenameEdit struct { func (x *RenameEdit) Reset() { *x = RenameEdit{} - mi := &file_sysml_proto_msgTypes[49] + mi := &file_sysml_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4487,7 +4595,7 @@ func (x *RenameEdit) String() string { func (*RenameEdit) ProtoMessage() {} func (x *RenameEdit) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[49] + mi := &file_sysml_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4500,7 +4608,7 @@ func (x *RenameEdit) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameEdit.ProtoReflect.Descriptor instead. func (*RenameEdit) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{49} + return file_sysml_proto_rawDescGZIP(), []int{50} } func (x *RenameEdit) GetTarget() string { @@ -4562,7 +4670,7 @@ type ApplyEditsResponse struct { func (x *ApplyEditsResponse) Reset() { *x = ApplyEditsResponse{} - mi := &file_sysml_proto_msgTypes[50] + mi := &file_sysml_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4574,7 +4682,7 @@ func (x *ApplyEditsResponse) String() string { func (*ApplyEditsResponse) ProtoMessage() {} func (x *ApplyEditsResponse) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[50] + mi := &file_sysml_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4587,7 +4695,7 @@ func (x *ApplyEditsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyEditsResponse.ProtoReflect.Descriptor instead. func (*ApplyEditsResponse) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{50} + return file_sysml_proto_rawDescGZIP(), []int{51} } func (x *ApplyEditsResponse) GetContent() string { @@ -4661,7 +4769,7 @@ type EditedDocument struct { func (x *EditedDocument) Reset() { *x = EditedDocument{} - mi := &file_sysml_proto_msgTypes[51] + mi := &file_sysml_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4673,7 +4781,7 @@ func (x *EditedDocument) String() string { func (*EditedDocument) ProtoMessage() {} func (x *EditedDocument) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[51] + mi := &file_sysml_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4686,7 +4794,7 @@ func (x *EditedDocument) ProtoReflect() protoreflect.Message { // Deprecated: Use EditedDocument.ProtoReflect.Descriptor instead. func (*EditedDocument) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{51} + return file_sysml_proto_rawDescGZIP(), []int{52} } func (x *EditedDocument) GetName() string { @@ -4717,7 +4825,7 @@ type Referrer struct { func (x *Referrer) Reset() { *x = Referrer{} - mi := &file_sysml_proto_msgTypes[52] + mi := &file_sysml_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4729,7 +4837,7 @@ func (x *Referrer) String() string { func (*Referrer) ProtoMessage() {} func (x *Referrer) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[52] + mi := &file_sysml_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4742,7 +4850,7 @@ func (x *Referrer) ProtoReflect() protoreflect.Message { // Deprecated: Use Referrer.ProtoReflect.Descriptor instead. func (*Referrer) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{52} + return file_sysml_proto_rawDescGZIP(), []int{53} } func (x *Referrer) GetName() string { @@ -4781,7 +4889,7 @@ type AppliedEdit struct { func (x *AppliedEdit) Reset() { *x = AppliedEdit{} - mi := &file_sysml_proto_msgTypes[53] + mi := &file_sysml_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4793,7 +4901,7 @@ func (x *AppliedEdit) String() string { func (*AppliedEdit) ProtoMessage() {} func (x *AppliedEdit) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[53] + mi := &file_sysml_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4806,7 +4914,7 @@ func (x *AppliedEdit) ProtoReflect() protoreflect.Message { // Deprecated: Use AppliedEdit.ProtoReflect.Descriptor instead. func (*AppliedEdit) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{53} + return file_sysml_proto_rawDescGZIP(), []int{54} } func (x *AppliedEdit) GetOperationIndex() int32 { @@ -4883,7 +4991,7 @@ type SymbolInfo struct { func (x *SymbolInfo) Reset() { *x = SymbolInfo{} - mi := &file_sysml_proto_msgTypes[54] + mi := &file_sysml_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4895,7 +5003,7 @@ func (x *SymbolInfo) String() string { func (*SymbolInfo) ProtoMessage() {} func (x *SymbolInfo) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[54] + mi := &file_sysml_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4908,7 +5016,7 @@ func (x *SymbolInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SymbolInfo.ProtoReflect.Descriptor instead. func (*SymbolInfo) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{54} + return file_sysml_proto_rawDescGZIP(), []int{55} } func (x *SymbolInfo) GetId() string { @@ -4998,7 +5106,7 @@ type Specialization struct { func (x *Specialization) Reset() { *x = Specialization{} - mi := &file_sysml_proto_msgTypes[55] + mi := &file_sysml_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5010,7 +5118,7 @@ func (x *Specialization) String() string { func (*Specialization) ProtoMessage() {} func (x *Specialization) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[55] + mi := &file_sysml_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5023,7 +5131,7 @@ func (x *Specialization) ProtoReflect() protoreflect.Message { // Deprecated: Use Specialization.ProtoReflect.Descriptor instead. func (*Specialization) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{55} + return file_sysml_proto_rawDescGZIP(), []int{56} } func (x *Specialization) GetKind() string { @@ -5080,7 +5188,7 @@ type TypeInfo struct { func (x *TypeInfo) Reset() { *x = TypeInfo{} - mi := &file_sysml_proto_msgTypes[56] + mi := &file_sysml_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5092,7 +5200,7 @@ func (x *TypeInfo) String() string { func (*TypeInfo) ProtoMessage() {} func (x *TypeInfo) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[56] + mi := &file_sysml_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5105,7 +5213,7 @@ func (x *TypeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeInfo.ProtoReflect.Descriptor instead. func (*TypeInfo) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{56} + return file_sysml_proto_rawDescGZIP(), []int{57} } func (x *TypeInfo) GetDeclared() string { @@ -5169,7 +5277,7 @@ type MultiplicityInfo struct { func (x *MultiplicityInfo) Reset() { *x = MultiplicityInfo{} - mi := &file_sysml_proto_msgTypes[57] + mi := &file_sysml_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5181,7 +5289,7 @@ func (x *MultiplicityInfo) String() string { func (*MultiplicityInfo) ProtoMessage() {} func (x *MultiplicityInfo) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[57] + mi := &file_sysml_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5194,7 +5302,7 @@ func (x *MultiplicityInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use MultiplicityInfo.ProtoReflect.Descriptor instead. func (*MultiplicityInfo) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{57} + return file_sysml_proto_rawDescGZIP(), []int{58} } func (x *MultiplicityInfo) GetLower() string { @@ -5224,7 +5332,7 @@ type AttributeInfo struct { func (x *AttributeInfo) Reset() { *x = AttributeInfo{} - mi := &file_sysml_proto_msgTypes[58] + mi := &file_sysml_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5236,7 +5344,7 @@ func (x *AttributeInfo) String() string { func (*AttributeInfo) ProtoMessage() {} func (x *AttributeInfo) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[58] + mi := &file_sysml_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5249,7 +5357,7 @@ func (x *AttributeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use AttributeInfo.ProtoReflect.Descriptor instead. func (*AttributeInfo) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{58} + return file_sysml_proto_rawDescGZIP(), []int{59} } func (x *AttributeInfo) GetName() string { @@ -5313,7 +5421,7 @@ type Value struct { func (x *Value) Reset() { *x = Value{} - mi := &file_sysml_proto_msgTypes[59] + mi := &file_sysml_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5325,7 +5433,7 @@ func (x *Value) String() string { func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[59] + mi := &file_sysml_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5338,7 +5446,7 @@ func (x *Value) ProtoReflect() protoreflect.Message { // Deprecated: Use Value.ProtoReflect.Descriptor instead. func (*Value) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{59} + return file_sysml_proto_rawDescGZIP(), []int{60} } func (x *Value) GetKind() isValue_Kind { @@ -5696,7 +5804,7 @@ type Metaobject struct { func (x *Metaobject) Reset() { *x = Metaobject{} - mi := &file_sysml_proto_msgTypes[60] + mi := &file_sysml_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5708,7 +5816,7 @@ func (x *Metaobject) String() string { func (*Metaobject) ProtoMessage() {} func (x *Metaobject) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[60] + mi := &file_sysml_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5721,7 +5829,7 @@ func (x *Metaobject) ProtoReflect() protoreflect.Message { // Deprecated: Use Metaobject.ProtoReflect.Descriptor instead. func (*Metaobject) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{60} + return file_sysml_proto_rawDescGZIP(), []int{61} } func (x *Metaobject) GetElementId() string { @@ -5758,7 +5866,7 @@ type Undetermined struct { func (x *Undetermined) Reset() { *x = Undetermined{} - mi := &file_sysml_proto_msgTypes[61] + mi := &file_sysml_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5770,7 +5878,7 @@ func (x *Undetermined) String() string { func (*Undetermined) ProtoMessage() {} func (x *Undetermined) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[61] + mi := &file_sysml_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5783,7 +5891,7 @@ func (x *Undetermined) ProtoReflect() protoreflect.Message { // Deprecated: Use Undetermined.ProtoReflect.Descriptor instead. func (*Undetermined) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{61} + return file_sysml_proto_rawDescGZIP(), []int{62} } func (x *Undetermined) GetReason() string { @@ -5822,7 +5930,7 @@ type Function struct { func (x *Function) Reset() { *x = Function{} - mi := &file_sysml_proto_msgTypes[62] + mi := &file_sysml_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5834,7 +5942,7 @@ func (x *Function) String() string { func (*Function) ProtoMessage() {} func (x *Function) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[62] + mi := &file_sysml_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5847,7 +5955,7 @@ func (x *Function) ProtoReflect() protoreflect.Message { // Deprecated: Use Function.ProtoReflect.Descriptor instead. func (*Function) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{62} + return file_sysml_proto_rawDescGZIP(), []int{63} } func (x *Function) GetCalcId() string { @@ -5881,7 +5989,7 @@ type ValueSet struct { func (x *ValueSet) Reset() { *x = ValueSet{} - mi := &file_sysml_proto_msgTypes[63] + mi := &file_sysml_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5893,7 +6001,7 @@ func (x *ValueSet) String() string { func (*ValueSet) ProtoMessage() {} func (x *ValueSet) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[63] + mi := &file_sysml_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5906,7 +6014,7 @@ func (x *ValueSet) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueSet.ProtoReflect.Descriptor instead. func (*ValueSet) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{63} + return file_sysml_proto_rawDescGZIP(), []int{64} } func (x *ValueSet) GetElements() []*Value { @@ -5933,7 +6041,7 @@ type TensorQuantity struct { func (x *TensorQuantity) Reset() { *x = TensorQuantity{} - mi := &file_sysml_proto_msgTypes[64] + mi := &file_sysml_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5945,7 +6053,7 @@ func (x *TensorQuantity) String() string { func (*TensorQuantity) ProtoMessage() {} func (x *TensorQuantity) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[64] + mi := &file_sysml_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5958,7 +6066,7 @@ func (x *TensorQuantity) ProtoReflect() protoreflect.Message { // Deprecated: Use TensorQuantity.ProtoReflect.Descriptor instead. func (*TensorQuantity) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{64} + return file_sysml_proto_rawDescGZIP(), []int{65} } func (x *TensorQuantity) GetDimensions() []int64 { @@ -5990,7 +6098,7 @@ type Array struct { func (x *Array) Reset() { *x = Array{} - mi := &file_sysml_proto_msgTypes[65] + mi := &file_sysml_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6002,7 +6110,7 @@ func (x *Array) String() string { func (*Array) ProtoMessage() {} func (x *Array) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[65] + mi := &file_sysml_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6015,7 +6123,7 @@ func (x *Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Array.ProtoReflect.Descriptor instead. func (*Array) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{65} + return file_sysml_proto_rawDescGZIP(), []int{66} } func (x *Array) GetDimensions() []int64 { @@ -6045,7 +6153,7 @@ type Vector struct { func (x *Vector) Reset() { *x = Vector{} - mi := &file_sysml_proto_msgTypes[66] + mi := &file_sysml_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6057,7 +6165,7 @@ func (x *Vector) String() string { func (*Vector) ProtoMessage() {} func (x *Vector) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[66] + mi := &file_sysml_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6070,7 +6178,7 @@ func (x *Vector) ProtoReflect() protoreflect.Message { // Deprecated: Use Vector.ProtoReflect.Descriptor instead. func (*Vector) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{66} + return file_sysml_proto_rawDescGZIP(), []int{67} } func (x *Vector) GetComponents() []*Value { @@ -6093,7 +6201,7 @@ type VectorQuantity struct { func (x *VectorQuantity) Reset() { *x = VectorQuantity{} - mi := &file_sysml_proto_msgTypes[67] + mi := &file_sysml_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6105,7 +6213,7 @@ func (x *VectorQuantity) String() string { func (*VectorQuantity) ProtoMessage() {} func (x *VectorQuantity) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[67] + mi := &file_sysml_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6118,7 +6226,7 @@ func (x *VectorQuantity) ProtoReflect() protoreflect.Message { // Deprecated: Use VectorQuantity.ProtoReflect.Descriptor instead. func (*VectorQuantity) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{67} + return file_sysml_proto_rawDescGZIP(), []int{68} } func (x *VectorQuantity) GetComponents() []*Quantity { @@ -6140,7 +6248,7 @@ type Complex struct { func (x *Complex) Reset() { *x = Complex{} - mi := &file_sysml_proto_msgTypes[68] + mi := &file_sysml_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6152,7 +6260,7 @@ func (x *Complex) String() string { func (*Complex) ProtoMessage() {} func (x *Complex) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[68] + mi := &file_sysml_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6165,7 +6273,7 @@ func (x *Complex) ProtoReflect() protoreflect.Message { // Deprecated: Use Complex.ProtoReflect.Descriptor instead. func (*Complex) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{68} + return file_sysml_proto_rawDescGZIP(), []int{69} } func (x *Complex) GetReal() float64 { @@ -6202,7 +6310,7 @@ type EnumLiteral struct { func (x *EnumLiteral) Reset() { *x = EnumLiteral{} - mi := &file_sysml_proto_msgTypes[69] + mi := &file_sysml_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6214,7 +6322,7 @@ func (x *EnumLiteral) String() string { func (*EnumLiteral) ProtoMessage() {} func (x *EnumLiteral) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[69] + mi := &file_sysml_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6227,7 +6335,7 @@ func (x *EnumLiteral) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumLiteral.ProtoReflect.Descriptor instead. func (*EnumLiteral) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{69} + return file_sysml_proto_rawDescGZIP(), []int{70} } func (x *EnumLiteral) GetLiteralId() string { @@ -6267,7 +6375,7 @@ type ValueSequence struct { func (x *ValueSequence) Reset() { *x = ValueSequence{} - mi := &file_sysml_proto_msgTypes[70] + mi := &file_sysml_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6279,7 +6387,7 @@ func (x *ValueSequence) String() string { func (*ValueSequence) ProtoMessage() {} func (x *ValueSequence) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[70] + mi := &file_sysml_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6292,7 +6400,7 @@ func (x *ValueSequence) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueSequence.ProtoReflect.Descriptor instead. func (*ValueSequence) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{70} + return file_sysml_proto_rawDescGZIP(), []int{71} } func (x *ValueSequence) GetElements() []*Value { @@ -6326,7 +6434,7 @@ type Quantity struct { func (x *Quantity) Reset() { *x = Quantity{} - mi := &file_sysml_proto_msgTypes[71] + mi := &file_sysml_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6338,7 +6446,7 @@ func (x *Quantity) String() string { func (*Quantity) ProtoMessage() {} func (x *Quantity) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[71] + mi := &file_sysml_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6351,7 +6459,7 @@ func (x *Quantity) ProtoReflect() protoreflect.Message { // Deprecated: Use Quantity.ProtoReflect.Descriptor instead. func (*Quantity) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{71} + return file_sysml_proto_rawDescGZIP(), []int{72} } func (x *Quantity) GetMagnitude() isQuantity_Magnitude { @@ -6437,7 +6545,7 @@ type MeasurementRef struct { func (x *MeasurementRef) Reset() { *x = MeasurementRef{} - mi := &file_sysml_proto_msgTypes[72] + mi := &file_sysml_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6449,7 +6557,7 @@ func (x *MeasurementRef) String() string { func (*MeasurementRef) ProtoMessage() {} func (x *MeasurementRef) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[72] + mi := &file_sysml_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6462,7 +6570,7 @@ func (x *MeasurementRef) ProtoReflect() protoreflect.Message { // Deprecated: Use MeasurementRef.ProtoReflect.Descriptor instead. func (*MeasurementRef) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{72} + return file_sysml_proto_rawDescGZIP(), []int{73} } func (x *MeasurementRef) GetUnit() string { @@ -6501,7 +6609,7 @@ type UnitTerm struct { func (x *UnitTerm) Reset() { *x = UnitTerm{} - mi := &file_sysml_proto_msgTypes[73] + mi := &file_sysml_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6513,7 +6621,7 @@ func (x *UnitTerm) String() string { func (*UnitTerm) ProtoMessage() {} func (x *UnitTerm) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[73] + mi := &file_sysml_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6526,7 +6634,7 @@ func (x *UnitTerm) ProtoReflect() protoreflect.Message { // Deprecated: Use UnitTerm.ProtoReflect.Descriptor instead. func (*UnitTerm) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{73} + return file_sysml_proto_rawDescGZIP(), []int{74} } func (x *UnitTerm) GetScaleNum() float64 { @@ -6562,7 +6670,7 @@ type UnitFactor struct { func (x *UnitFactor) Reset() { *x = UnitFactor{} - mi := &file_sysml_proto_msgTypes[74] + mi := &file_sysml_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6574,7 +6682,7 @@ func (x *UnitFactor) String() string { func (*UnitFactor) ProtoMessage() {} func (x *UnitFactor) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[74] + mi := &file_sysml_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6587,7 +6695,7 @@ func (x *UnitFactor) ProtoReflect() protoreflect.Message { // Deprecated: Use UnitFactor.ProtoReflect.Descriptor instead. func (*UnitFactor) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{74} + return file_sysml_proto_rawDescGZIP(), []int{75} } func (x *UnitFactor) GetUnitId() string { @@ -6619,7 +6727,7 @@ type Diagnostic struct { func (x *Diagnostic) Reset() { *x = Diagnostic{} - mi := &file_sysml_proto_msgTypes[75] + mi := &file_sysml_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6631,7 +6739,7 @@ func (x *Diagnostic) String() string { func (*Diagnostic) ProtoMessage() {} func (x *Diagnostic) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[75] + mi := &file_sysml_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6644,7 +6752,7 @@ func (x *Diagnostic) ProtoReflect() protoreflect.Message { // Deprecated: Use Diagnostic.ProtoReflect.Descriptor instead. func (*Diagnostic) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{75} + return file_sysml_proto_rawDescGZIP(), []int{76} } func (x *Diagnostic) GetSeverity() string { @@ -6689,7 +6797,7 @@ type Span struct { func (x *Span) Reset() { *x = Span{} - mi := &file_sysml_proto_msgTypes[76] + mi := &file_sysml_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6701,7 +6809,7 @@ func (x *Span) String() string { func (*Span) ProtoMessage() {} func (x *Span) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[76] + mi := &file_sysml_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6714,7 +6822,7 @@ func (x *Span) ProtoReflect() protoreflect.Message { // Deprecated: Use Span.ProtoReflect.Descriptor instead. func (*Span) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{76} + return file_sysml_proto_rawDescGZIP(), []int{77} } func (x *Span) GetFile() string { @@ -6762,7 +6870,7 @@ type ServerInfoRequest struct { func (x *ServerInfoRequest) Reset() { *x = ServerInfoRequest{} - mi := &file_sysml_proto_msgTypes[77] + mi := &file_sysml_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6774,7 +6882,7 @@ func (x *ServerInfoRequest) String() string { func (*ServerInfoRequest) ProtoMessage() {} func (x *ServerInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[77] + mi := &file_sysml_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6787,7 +6895,7 @@ func (x *ServerInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfoRequest.ProtoReflect.Descriptor instead. func (*ServerInfoRequest) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{77} + return file_sysml_proto_rawDescGZIP(), []int{78} } // ServerInfoResponse describes the running service. @@ -6918,7 +7026,7 @@ type ServerInfoResponse struct { func (x *ServerInfoResponse) Reset() { *x = ServerInfoResponse{} - mi := &file_sysml_proto_msgTypes[78] + mi := &file_sysml_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6930,7 +7038,7 @@ func (x *ServerInfoResponse) String() string { func (*ServerInfoResponse) ProtoMessage() {} func (x *ServerInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[78] + mi := &file_sysml_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6943,7 +7051,7 @@ func (x *ServerInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfoResponse.ProtoReflect.Descriptor instead. func (*ServerInfoResponse) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{78} + return file_sysml_proto_rawDescGZIP(), []int{79} } func (x *ServerInfoResponse) GetVersion() string { @@ -6973,7 +7081,7 @@ type QueryRequest struct { func (x *QueryRequest) Reset() { *x = QueryRequest{} - mi := &file_sysml_proto_msgTypes[79] + mi := &file_sysml_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6985,7 +7093,7 @@ func (x *QueryRequest) String() string { func (*QueryRequest) ProtoMessage() {} func (x *QueryRequest) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[79] + mi := &file_sysml_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6998,7 +7106,7 @@ func (x *QueryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryRequest.ProtoReflect.Descriptor instead. func (*QueryRequest) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{79} + return file_sysml_proto_rawDescGZIP(), []int{80} } func (x *QueryRequest) GetModelHash() string { @@ -7035,7 +7143,7 @@ type QueryResponse struct { func (x *QueryResponse) Reset() { *x = QueryResponse{} - mi := &file_sysml_proto_msgTypes[80] + mi := &file_sysml_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7047,7 +7155,7 @@ func (x *QueryResponse) String() string { func (*QueryResponse) ProtoMessage() {} func (x *QueryResponse) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[80] + mi := &file_sysml_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7060,7 +7168,7 @@ func (x *QueryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryResponse.ProtoReflect.Descriptor instead. func (*QueryResponse) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{80} + return file_sysml_proto_rawDescGZIP(), []int{81} } func (x *QueryResponse) GetElements() []*QueryResultElement { @@ -7090,7 +7198,7 @@ type Query struct { func (x *Query) Reset() { *x = Query{} - mi := &file_sysml_proto_msgTypes[81] + mi := &file_sysml_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7102,7 +7210,7 @@ func (x *Query) String() string { func (*Query) ProtoMessage() {} func (x *Query) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[81] + mi := &file_sysml_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7115,7 +7223,7 @@ func (x *Query) ProtoReflect() protoreflect.Message { // Deprecated: Use Query.ProtoReflect.Descriptor instead. func (*Query) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{81} + return file_sysml_proto_rawDescGZIP(), []int{82} } func (x *Query) GetScope() []string { @@ -7154,7 +7262,7 @@ type Constraint struct { func (x *Constraint) Reset() { *x = Constraint{} - mi := &file_sysml_proto_msgTypes[82] + mi := &file_sysml_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7166,7 +7274,7 @@ func (x *Constraint) String() string { func (*Constraint) ProtoMessage() {} func (x *Constraint) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[82] + mi := &file_sysml_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7179,7 +7287,7 @@ func (x *Constraint) ProtoReflect() protoreflect.Message { // Deprecated: Use Constraint.ProtoReflect.Descriptor instead. func (*Constraint) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{82} + return file_sysml_proto_rawDescGZIP(), []int{83} } func (x *Constraint) GetConstraint() isConstraint_Constraint { @@ -7242,7 +7350,7 @@ type PrimitiveConstraint struct { func (x *PrimitiveConstraint) Reset() { *x = PrimitiveConstraint{} - mi := &file_sysml_proto_msgTypes[83] + mi := &file_sysml_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7254,7 +7362,7 @@ func (x *PrimitiveConstraint) String() string { func (*PrimitiveConstraint) ProtoMessage() {} func (x *PrimitiveConstraint) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[83] + mi := &file_sysml_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7267,7 +7375,7 @@ func (x *PrimitiveConstraint) ProtoReflect() protoreflect.Message { // Deprecated: Use PrimitiveConstraint.ProtoReflect.Descriptor instead. func (*PrimitiveConstraint) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{83} + return file_sysml_proto_rawDescGZIP(), []int{84} } func (x *PrimitiveConstraint) GetInverse() bool { @@ -7310,7 +7418,7 @@ type CompositeConstraint struct { func (x *CompositeConstraint) Reset() { *x = CompositeConstraint{} - mi := &file_sysml_proto_msgTypes[84] + mi := &file_sysml_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7322,7 +7430,7 @@ func (x *CompositeConstraint) String() string { func (*CompositeConstraint) ProtoMessage() {} func (x *CompositeConstraint) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[84] + mi := &file_sysml_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7335,7 +7443,7 @@ func (x *CompositeConstraint) ProtoReflect() protoreflect.Message { // Deprecated: Use CompositeConstraint.ProtoReflect.Descriptor instead. func (*CompositeConstraint) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{84} + return file_sysml_proto_rawDescGZIP(), []int{85} } func (x *CompositeConstraint) GetOperator() CompositeOperator { @@ -7367,7 +7475,7 @@ type QueryResultElement struct { func (x *QueryResultElement) Reset() { *x = QueryResultElement{} - mi := &file_sysml_proto_msgTypes[85] + mi := &file_sysml_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7379,7 +7487,7 @@ func (x *QueryResultElement) String() string { func (*QueryResultElement) ProtoMessage() {} func (x *QueryResultElement) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[85] + mi := &file_sysml_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7392,7 +7500,7 @@ func (x *QueryResultElement) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryResultElement.ProtoReflect.Descriptor instead. func (*QueryResultElement) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{85} + return file_sysml_proto_rawDescGZIP(), []int{86} } func (x *QueryResultElement) GetId() string { @@ -7437,7 +7545,7 @@ type SweepRange struct { func (x *SweepRange) Reset() { *x = SweepRange{} - mi := &file_sysml_proto_msgTypes[86] + mi := &file_sysml_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7449,7 +7557,7 @@ func (x *SweepRange) String() string { func (*SweepRange) ProtoMessage() {} func (x *SweepRange) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[86] + mi := &file_sysml_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7462,7 +7570,7 @@ func (x *SweepRange) ProtoReflect() protoreflect.Message { // Deprecated: Use SweepRange.ProtoReflect.Descriptor instead. func (*SweepRange) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{86} + return file_sysml_proto_rawDescGZIP(), []int{87} } func (x *SweepRange) GetParameter() string { @@ -7527,7 +7635,7 @@ type RunSweepRequest struct { func (x *RunSweepRequest) Reset() { *x = RunSweepRequest{} - mi := &file_sysml_proto_msgTypes[87] + mi := &file_sysml_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7539,7 +7647,7 @@ func (x *RunSweepRequest) String() string { func (*RunSweepRequest) ProtoMessage() {} func (x *RunSweepRequest) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[87] + mi := &file_sysml_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7552,7 +7660,7 @@ func (x *RunSweepRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RunSweepRequest.ProtoReflect.Descriptor instead. func (*RunSweepRequest) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{87} + return file_sysml_proto_rawDescGZIP(), []int{88} } func (x *RunSweepRequest) GetModelHash() string { @@ -7646,7 +7754,7 @@ type SweepRow struct { func (x *SweepRow) Reset() { *x = SweepRow{} - mi := &file_sysml_proto_msgTypes[88] + mi := &file_sysml_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7658,7 +7766,7 @@ func (x *SweepRow) String() string { func (*SweepRow) ProtoMessage() {} func (x *SweepRow) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[88] + mi := &file_sysml_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7671,7 +7779,7 @@ func (x *SweepRow) ProtoReflect() protoreflect.Message { // Deprecated: Use SweepRow.ProtoReflect.Descriptor instead. func (*SweepRow) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{88} + return file_sysml_proto_rawDescGZIP(), []int{89} } func (x *SweepRow) GetInputs() []*CalcOutput { @@ -7757,7 +7865,7 @@ type RunSweepResponse struct { func (x *RunSweepResponse) Reset() { *x = RunSweepResponse{} - mi := &file_sysml_proto_msgTypes[89] + mi := &file_sysml_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7769,7 +7877,7 @@ func (x *RunSweepResponse) String() string { func (*RunSweepResponse) ProtoMessage() {} func (x *RunSweepResponse) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[89] + mi := &file_sysml_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7782,7 +7890,7 @@ func (x *RunSweepResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RunSweepResponse.ProtoReflect.Descriptor instead. func (*RunSweepResponse) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{89} + return file_sysml_proto_rawDescGZIP(), []int{90} } func (x *RunSweepResponse) GetRows() []*SweepRow { @@ -7883,7 +7991,7 @@ type RunDocumentQueryRequest struct { func (x *RunDocumentQueryRequest) Reset() { *x = RunDocumentQueryRequest{} - mi := &file_sysml_proto_msgTypes[90] + mi := &file_sysml_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7895,7 +8003,7 @@ func (x *RunDocumentQueryRequest) String() string { func (*RunDocumentQueryRequest) ProtoMessage() {} func (x *RunDocumentQueryRequest) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[90] + mi := &file_sysml_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7908,7 +8016,7 @@ func (x *RunDocumentQueryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RunDocumentQueryRequest.ProtoReflect.Descriptor instead. func (*RunDocumentQueryRequest) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{90} + return file_sysml_proto_rawDescGZIP(), []int{91} } func (x *RunDocumentQueryRequest) GetModelHash() string { @@ -7943,7 +8051,7 @@ type DocumentQueryBinding struct { func (x *DocumentQueryBinding) Reset() { *x = DocumentQueryBinding{} - mi := &file_sysml_proto_msgTypes[91] + mi := &file_sysml_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7955,7 +8063,7 @@ func (x *DocumentQueryBinding) String() string { func (*DocumentQueryBinding) ProtoMessage() {} func (x *DocumentQueryBinding) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[91] + mi := &file_sysml_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7968,7 +8076,7 @@ func (x *DocumentQueryBinding) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentQueryBinding.ProtoReflect.Descriptor instead. func (*DocumentQueryBinding) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{91} + return file_sysml_proto_rawDescGZIP(), []int{92} } func (x *DocumentQueryBinding) GetParameter() string { @@ -8013,7 +8121,7 @@ type DocumentValue struct { func (x *DocumentValue) Reset() { *x = DocumentValue{} - mi := &file_sysml_proto_msgTypes[92] + mi := &file_sysml_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8025,7 +8133,7 @@ func (x *DocumentValue) String() string { func (*DocumentValue) ProtoMessage() {} func (x *DocumentValue) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[92] + mi := &file_sysml_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8038,7 +8146,7 @@ func (x *DocumentValue) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentValue.ProtoReflect.Descriptor instead. func (*DocumentValue) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{92} + return file_sysml_proto_rawDescGZIP(), []int{93} } func (x *DocumentValue) GetKind() isDocumentValue_Kind { @@ -8251,7 +8359,7 @@ type DocumentObject struct { func (x *DocumentObject) Reset() { *x = DocumentObject{} - mi := &file_sysml_proto_msgTypes[93] + mi := &file_sysml_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8263,7 +8371,7 @@ func (x *DocumentObject) String() string { func (*DocumentObject) ProtoMessage() {} func (x *DocumentObject) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[93] + mi := &file_sysml_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8276,7 +8384,7 @@ func (x *DocumentObject) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentObject.ProtoReflect.Descriptor instead. func (*DocumentObject) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{93} + return file_sysml_proto_rawDescGZIP(), []int{94} } func (x *DocumentObject) GetInstanceId() int64 { @@ -8331,7 +8439,7 @@ type DocumentVerdict struct { func (x *DocumentVerdict) Reset() { *x = DocumentVerdict{} - mi := &file_sysml_proto_msgTypes[94] + mi := &file_sysml_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8343,7 +8451,7 @@ func (x *DocumentVerdict) String() string { func (*DocumentVerdict) ProtoMessage() {} func (x *DocumentVerdict) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[94] + mi := &file_sysml_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8356,7 +8464,7 @@ func (x *DocumentVerdict) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentVerdict.ProtoReflect.Descriptor instead. func (*DocumentVerdict) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{94} + return file_sysml_proto_rawDescGZIP(), []int{95} } func (x *DocumentVerdict) GetAssertion() *DocumentValue { @@ -8442,7 +8550,7 @@ type DocumentState struct { func (x *DocumentState) Reset() { *x = DocumentState{} - mi := &file_sysml_proto_msgTypes[95] + mi := &file_sysml_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8454,7 +8562,7 @@ func (x *DocumentState) String() string { func (*DocumentState) ProtoMessage() {} func (x *DocumentState) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[95] + mi := &file_sysml_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8467,7 +8575,7 @@ func (x *DocumentState) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentState.ProtoReflect.Descriptor instead. func (*DocumentState) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{95} + return file_sysml_proto_rawDescGZIP(), []int{96} } func (x *DocumentState) GetObject() *DocumentObject { @@ -8557,7 +8665,7 @@ type DocumentEvent struct { func (x *DocumentEvent) Reset() { *x = DocumentEvent{} - mi := &file_sysml_proto_msgTypes[96] + mi := &file_sysml_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8569,7 +8677,7 @@ func (x *DocumentEvent) String() string { func (*DocumentEvent) ProtoMessage() {} func (x *DocumentEvent) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[96] + mi := &file_sysml_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8582,7 +8690,7 @@ func (x *DocumentEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentEvent.ProtoReflect.Descriptor instead. func (*DocumentEvent) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{96} + return file_sysml_proto_rawDescGZIP(), []int{97} } func (x *DocumentEvent) GetKind() string { @@ -8686,7 +8794,7 @@ type DocumentQueryColumn struct { func (x *DocumentQueryColumn) Reset() { *x = DocumentQueryColumn{} - mi := &file_sysml_proto_msgTypes[97] + mi := &file_sysml_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8698,7 +8806,7 @@ func (x *DocumentQueryColumn) String() string { func (*DocumentQueryColumn) ProtoMessage() {} func (x *DocumentQueryColumn) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[97] + mi := &file_sysml_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8711,7 +8819,7 @@ func (x *DocumentQueryColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentQueryColumn.ProtoReflect.Descriptor instead. func (*DocumentQueryColumn) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{97} + return file_sysml_proto_rawDescGZIP(), []int{98} } func (x *DocumentQueryColumn) GetName() string { @@ -8731,7 +8839,7 @@ type DocumentQueryCell struct { func (x *DocumentQueryCell) Reset() { *x = DocumentQueryCell{} - mi := &file_sysml_proto_msgTypes[98] + mi := &file_sysml_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8743,7 +8851,7 @@ func (x *DocumentQueryCell) String() string { func (*DocumentQueryCell) ProtoMessage() {} func (x *DocumentQueryCell) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[98] + mi := &file_sysml_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8756,7 +8864,7 @@ func (x *DocumentQueryCell) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentQueryCell.ProtoReflect.Descriptor instead. func (*DocumentQueryCell) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{98} + return file_sysml_proto_rawDescGZIP(), []int{99} } func (x *DocumentQueryCell) GetValues() []*DocumentValue { @@ -8782,7 +8890,7 @@ type DocumentQueryRow struct { func (x *DocumentQueryRow) Reset() { *x = DocumentQueryRow{} - mi := &file_sysml_proto_msgTypes[99] + mi := &file_sysml_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8794,7 +8902,7 @@ func (x *DocumentQueryRow) String() string { func (*DocumentQueryRow) ProtoMessage() {} func (x *DocumentQueryRow) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[99] + mi := &file_sysml_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8807,7 +8915,7 @@ func (x *DocumentQueryRow) ProtoReflect() protoreflect.Message { // Deprecated: Use DocumentQueryRow.ProtoReflect.Descriptor instead. func (*DocumentQueryRow) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{99} + return file_sysml_proto_rawDescGZIP(), []int{100} } func (x *DocumentQueryRow) GetElement() *DocumentValue { @@ -8838,7 +8946,7 @@ type RunDocumentQueryResponse struct { func (x *RunDocumentQueryResponse) Reset() { *x = RunDocumentQueryResponse{} - mi := &file_sysml_proto_msgTypes[100] + mi := &file_sysml_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8850,7 +8958,7 @@ func (x *RunDocumentQueryResponse) String() string { func (*RunDocumentQueryResponse) ProtoMessage() {} func (x *RunDocumentQueryResponse) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[100] + mi := &file_sysml_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8863,7 +8971,7 @@ func (x *RunDocumentQueryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RunDocumentQueryResponse.ProtoReflect.Descriptor instead. func (*RunDocumentQueryResponse) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{100} + return file_sysml_proto_rawDescGZIP(), []int{101} } func (x *RunDocumentQueryResponse) GetColumns() []*DocumentQueryColumn { @@ -8900,7 +9008,7 @@ type RenderDocumentRequest struct { func (x *RenderDocumentRequest) Reset() { *x = RenderDocumentRequest{} - mi := &file_sysml_proto_msgTypes[101] + mi := &file_sysml_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8912,7 +9020,7 @@ func (x *RenderDocumentRequest) String() string { func (*RenderDocumentRequest) ProtoMessage() {} func (x *RenderDocumentRequest) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[101] + mi := &file_sysml_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8925,7 +9033,7 @@ func (x *RenderDocumentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RenderDocumentRequest.ProtoReflect.Descriptor instead. func (*RenderDocumentRequest) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{101} + return file_sysml_proto_rawDescGZIP(), []int{102} } func (x *RenderDocumentRequest) GetModelHash() string { @@ -8962,7 +9070,7 @@ type RenderDocumentResponse struct { func (x *RenderDocumentResponse) Reset() { *x = RenderDocumentResponse{} - mi := &file_sysml_proto_msgTypes[102] + mi := &file_sysml_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8974,7 +9082,7 @@ func (x *RenderDocumentResponse) String() string { func (*RenderDocumentResponse) ProtoMessage() {} func (x *RenderDocumentResponse) ProtoReflect() protoreflect.Message { - mi := &file_sysml_proto_msgTypes[102] + mi := &file_sysml_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8987,7 +9095,7 @@ func (x *RenderDocumentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RenderDocumentResponse.ProtoReflect.Descriptor instead. func (*RenderDocumentResponse) Descriptor() ([]byte, []int) { - return file_sysml_proto_rawDescGZIP(), []int{102} + return file_sysml_proto_rawDescGZIP(), []int{103} } func (x *RenderDocumentResponse) GetMarkdown() string { @@ -9323,14 +9431,15 @@ const file_sysml_proto_rawDesc = "" + "operations\x18\x02 \x03(\v2\x14.sysml.EditOperationR\n" + "operations\x12\x1a\n" + "\bdocument\x18\x03 \x01(\tR\bdocument\x12)\n" + - "\x10accept_documents\x18\x04 \x01(\bR\x0facceptDocuments\"\x88\x02\n" + + "\x10accept_documents\x18\x04 \x01(\bR\x0facceptDocuments\"\xcb\x02\n" + "\rEditOperation\x122\n" + "\tset_value\x18\x01 \x01(\v2\x13.sysml.SetValueEditH\x00R\bsetValue\x12+\n" + "\x06rename\x18\x02 \x01(\v2\x11.sysml.RenameEditH\x00R\x06rename\x125\n" + "\n" + "add_member\x18\x03 \x01(\v2\x14.sysml.AddMemberEditH\x00R\taddMember\x12+\n" + "\x06delete\x18\x04 \x01(\v2\x11.sysml.DeleteEditH\x00R\x06delete\x12%\n" + - "\x04move\x18\x05 \x01(\v2\x0f.sysml.MoveEditH\x00R\x04moveB\v\n" + + "\x04move\x18\x05 \x01(\v2\x0f.sysml.MoveEditH\x00R\x04move\x12A\n" + + "\x0eadd_connection\x18\x06 \x01(\v2\x18.sysml.AddConnectionEditH\x00R\raddConnectionB\v\n" + "\toperation\"\xbd\x01\n" + "\rAddMemberEdit\x12\x14\n" + "\x05owner\x18\x01 \x01(\tR\x05owner\x12\x12\n" + @@ -9339,7 +9448,14 @@ const file_sysml_proto_rawDesc = "" + "\x04type\x18\x04 \x01(\tR\x04type\x12\"\n" + "\fmultiplicity\x18\x05 \x01(\tR\fmultiplicity\x12\x14\n" + "\x05value\x18\x06 \x01(\tR\x05value\x12 \n" + - "\vspecializes\x18\a \x03(\tR\vspecializes\">\n" + + "\vspecializes\x18\a \x03(\tR\vspecializes\"\x97\x01\n" + + "\x11AddConnectionEdit\x12\x14\n" + + "\x05owner\x18\x01 \x01(\tR\x05owner\x12\x12\n" + + "\x04kind\x18\x02 \x01(\tR\x04kind\x12\x19\n" + + "\bfrom_end\x18\x03 \x01(\tR\afromEnd\x12\x15\n" + + "\x06to_end\x18\x04 \x01(\tR\x05toEnd\x12\x12\n" + + "\x04name\x18\x05 \x01(\tR\x04name\x12\x12\n" + + "\x04type\x18\x06 \x01(\tR\x04type\">\n" + "\n" + "DeleteEdit\x12\x16\n" + "\x06target\x18\x01 \x01(\tR\x06target\x12\x18\n" + @@ -9763,7 +9879,7 @@ func file_sysml_proto_rawDescGZIP() []byte { } var file_sysml_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_sysml_proto_msgTypes = make([]protoimpl.MessageInfo, 112) +var file_sysml_proto_msgTypes = make([]protoimpl.MessageInfo, 113) var file_sysml_proto_goTypes = []any{ (FailureReason)(0), // 0: sysml.FailureReason (EditFailure)(0), // 1: sysml.EditFailure @@ -9815,285 +9931,287 @@ var file_sysml_proto_goTypes = []any{ (*ApplyEditsRequest)(nil), // 47: sysml.ApplyEditsRequest (*EditOperation)(nil), // 48: sysml.EditOperation (*AddMemberEdit)(nil), // 49: sysml.AddMemberEdit - (*DeleteEdit)(nil), // 50: sysml.DeleteEdit - (*MoveEdit)(nil), // 51: sysml.MoveEdit - (*SetValueEdit)(nil), // 52: sysml.SetValueEdit - (*RenameEdit)(nil), // 53: sysml.RenameEdit - (*ApplyEditsResponse)(nil), // 54: sysml.ApplyEditsResponse - (*EditedDocument)(nil), // 55: sysml.EditedDocument - (*Referrer)(nil), // 56: sysml.Referrer - (*AppliedEdit)(nil), // 57: sysml.AppliedEdit - (*SymbolInfo)(nil), // 58: sysml.SymbolInfo - (*Specialization)(nil), // 59: sysml.Specialization - (*TypeInfo)(nil), // 60: sysml.TypeInfo - (*MultiplicityInfo)(nil), // 61: sysml.MultiplicityInfo - (*AttributeInfo)(nil), // 62: sysml.AttributeInfo - (*Value)(nil), // 63: sysml.Value - (*Metaobject)(nil), // 64: sysml.Metaobject - (*Undetermined)(nil), // 65: sysml.Undetermined - (*Function)(nil), // 66: sysml.Function - (*ValueSet)(nil), // 67: sysml.ValueSet - (*TensorQuantity)(nil), // 68: sysml.TensorQuantity - (*Array)(nil), // 69: sysml.Array - (*Vector)(nil), // 70: sysml.Vector - (*VectorQuantity)(nil), // 71: sysml.VectorQuantity - (*Complex)(nil), // 72: sysml.Complex - (*EnumLiteral)(nil), // 73: sysml.EnumLiteral - (*ValueSequence)(nil), // 74: sysml.ValueSequence - (*Quantity)(nil), // 75: sysml.Quantity - (*MeasurementRef)(nil), // 76: sysml.MeasurementRef - (*UnitTerm)(nil), // 77: sysml.UnitTerm - (*UnitFactor)(nil), // 78: sysml.UnitFactor - (*Diagnostic)(nil), // 79: sysml.Diagnostic - (*Span)(nil), // 80: sysml.Span - (*ServerInfoRequest)(nil), // 81: sysml.ServerInfoRequest - (*ServerInfoResponse)(nil), // 82: sysml.ServerInfoResponse - (*QueryRequest)(nil), // 83: sysml.QueryRequest - (*QueryResponse)(nil), // 84: sysml.QueryResponse - (*Query)(nil), // 85: sysml.Query - (*Constraint)(nil), // 86: sysml.Constraint - (*PrimitiveConstraint)(nil), // 87: sysml.PrimitiveConstraint - (*CompositeConstraint)(nil), // 88: sysml.CompositeConstraint - (*QueryResultElement)(nil), // 89: sysml.QueryResultElement - (*SweepRange)(nil), // 90: sysml.SweepRange - (*RunSweepRequest)(nil), // 91: sysml.RunSweepRequest - (*SweepRow)(nil), // 92: sysml.SweepRow - (*RunSweepResponse)(nil), // 93: sysml.RunSweepResponse - (*RunDocumentQueryRequest)(nil), // 94: sysml.RunDocumentQueryRequest - (*DocumentQueryBinding)(nil), // 95: sysml.DocumentQueryBinding - (*DocumentValue)(nil), // 96: sysml.DocumentValue - (*DocumentObject)(nil), // 97: sysml.DocumentObject - (*DocumentVerdict)(nil), // 98: sysml.DocumentVerdict - (*DocumentState)(nil), // 99: sysml.DocumentState - (*DocumentEvent)(nil), // 100: sysml.DocumentEvent - (*DocumentQueryColumn)(nil), // 101: sysml.DocumentQueryColumn - (*DocumentQueryCell)(nil), // 102: sysml.DocumentQueryCell - (*DocumentQueryRow)(nil), // 103: sysml.DocumentQueryRow - (*RunDocumentQueryResponse)(nil), // 104: sysml.RunDocumentQueryResponse - (*RenderDocumentRequest)(nil), // 105: sysml.RenderDocumentRequest - (*RenderDocumentResponse)(nil), // 106: sysml.RenderDocumentResponse - nil, // 107: sysml.RunAnalysisRequest.NamedArgumentsEntry - nil, // 108: sysml.Outcome.OutputsEntry - nil, // 109: sysml.Instance.FeatureValuesEntry - nil, // 110: sysml.ExecuteActionRequest.InputsEntry - nil, // 111: sysml.ExecuteActionResponse.OutputsEntry - nil, // 112: sysml.ExecuteStateResponse.FinalContextEntry - nil, // 113: sysml.SymbolInfo.MetadataEntry - nil, // 114: sysml.QueryResultElement.PropertiesEntry - nil, // 115: sysml.RunSweepRequest.NamedArgumentsEntry + (*AddConnectionEdit)(nil), // 50: sysml.AddConnectionEdit + (*DeleteEdit)(nil), // 51: sysml.DeleteEdit + (*MoveEdit)(nil), // 52: sysml.MoveEdit + (*SetValueEdit)(nil), // 53: sysml.SetValueEdit + (*RenameEdit)(nil), // 54: sysml.RenameEdit + (*ApplyEditsResponse)(nil), // 55: sysml.ApplyEditsResponse + (*EditedDocument)(nil), // 56: sysml.EditedDocument + (*Referrer)(nil), // 57: sysml.Referrer + (*AppliedEdit)(nil), // 58: sysml.AppliedEdit + (*SymbolInfo)(nil), // 59: sysml.SymbolInfo + (*Specialization)(nil), // 60: sysml.Specialization + (*TypeInfo)(nil), // 61: sysml.TypeInfo + (*MultiplicityInfo)(nil), // 62: sysml.MultiplicityInfo + (*AttributeInfo)(nil), // 63: sysml.AttributeInfo + (*Value)(nil), // 64: sysml.Value + (*Metaobject)(nil), // 65: sysml.Metaobject + (*Undetermined)(nil), // 66: sysml.Undetermined + (*Function)(nil), // 67: sysml.Function + (*ValueSet)(nil), // 68: sysml.ValueSet + (*TensorQuantity)(nil), // 69: sysml.TensorQuantity + (*Array)(nil), // 70: sysml.Array + (*Vector)(nil), // 71: sysml.Vector + (*VectorQuantity)(nil), // 72: sysml.VectorQuantity + (*Complex)(nil), // 73: sysml.Complex + (*EnumLiteral)(nil), // 74: sysml.EnumLiteral + (*ValueSequence)(nil), // 75: sysml.ValueSequence + (*Quantity)(nil), // 76: sysml.Quantity + (*MeasurementRef)(nil), // 77: sysml.MeasurementRef + (*UnitTerm)(nil), // 78: sysml.UnitTerm + (*UnitFactor)(nil), // 79: sysml.UnitFactor + (*Diagnostic)(nil), // 80: sysml.Diagnostic + (*Span)(nil), // 81: sysml.Span + (*ServerInfoRequest)(nil), // 82: sysml.ServerInfoRequest + (*ServerInfoResponse)(nil), // 83: sysml.ServerInfoResponse + (*QueryRequest)(nil), // 84: sysml.QueryRequest + (*QueryResponse)(nil), // 85: sysml.QueryResponse + (*Query)(nil), // 86: sysml.Query + (*Constraint)(nil), // 87: sysml.Constraint + (*PrimitiveConstraint)(nil), // 88: sysml.PrimitiveConstraint + (*CompositeConstraint)(nil), // 89: sysml.CompositeConstraint + (*QueryResultElement)(nil), // 90: sysml.QueryResultElement + (*SweepRange)(nil), // 91: sysml.SweepRange + (*RunSweepRequest)(nil), // 92: sysml.RunSweepRequest + (*SweepRow)(nil), // 93: sysml.SweepRow + (*RunSweepResponse)(nil), // 94: sysml.RunSweepResponse + (*RunDocumentQueryRequest)(nil), // 95: sysml.RunDocumentQueryRequest + (*DocumentQueryBinding)(nil), // 96: sysml.DocumentQueryBinding + (*DocumentValue)(nil), // 97: sysml.DocumentValue + (*DocumentObject)(nil), // 98: sysml.DocumentObject + (*DocumentVerdict)(nil), // 99: sysml.DocumentVerdict + (*DocumentState)(nil), // 100: sysml.DocumentState + (*DocumentEvent)(nil), // 101: sysml.DocumentEvent + (*DocumentQueryColumn)(nil), // 102: sysml.DocumentQueryColumn + (*DocumentQueryCell)(nil), // 103: sysml.DocumentQueryCell + (*DocumentQueryRow)(nil), // 104: sysml.DocumentQueryRow + (*RunDocumentQueryResponse)(nil), // 105: sysml.RunDocumentQueryResponse + (*RenderDocumentRequest)(nil), // 106: sysml.RenderDocumentRequest + (*RenderDocumentResponse)(nil), // 107: sysml.RenderDocumentResponse + nil, // 108: sysml.RunAnalysisRequest.NamedArgumentsEntry + nil, // 109: sysml.Outcome.OutputsEntry + nil, // 110: sysml.Instance.FeatureValuesEntry + nil, // 111: sysml.ExecuteActionRequest.InputsEntry + nil, // 112: sysml.ExecuteActionResponse.OutputsEntry + nil, // 113: sysml.ExecuteStateResponse.FinalContextEntry + nil, // 114: sysml.SymbolInfo.MetadataEntry + nil, // 115: sysml.QueryResultElement.PropertiesEntry + nil, // 116: sysml.RunSweepRequest.NamedArgumentsEntry } var file_sysml_proto_depIdxs = []int32{ 0, // 0: sysml.Verdict.failure_reason:type_name -> sysml.FailureReason 5, // 1: sysml.Verdict.bounds:type_name -> sysml.Bound 4, // 2: sysml.VerifyConstraintResponse.verdict:type_name -> sysml.Verdict 37, // 3: sysml.VerifyConstraintResponse.instances:type_name -> sysml.Instance - 79, // 4: sysml.VerifyConstraintResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 4: sysml.VerifyConstraintResponse.diagnostics:type_name -> sysml.Diagnostic 4, // 5: sysml.VerifyRequirementResponse.verdict:type_name -> sysml.Verdict 37, // 6: sysml.VerifyRequirementResponse.instances:type_name -> sysml.Instance - 79, // 7: sysml.VerifyRequirementResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 7: sysml.VerifyRequirementResponse.diagnostics:type_name -> sysml.Diagnostic 9, // 8: sysml.VerifyRequirementResponse.verification_verdicts:type_name -> sysml.VerificationVerdict 4, // 9: sysml.VerifySatisfactionResponse.verdicts:type_name -> sysml.Verdict 37, // 10: sysml.VerifySatisfactionResponse.instances:type_name -> sysml.Instance - 79, // 11: sysml.VerifySatisfactionResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 11: sysml.VerifySatisfactionResponse.diagnostics:type_name -> sysml.Diagnostic 0, // 12: sysml.VerifySatisfactionResponse.failure_reason:type_name -> sysml.FailureReason 9, // 13: sysml.VerifySatisfactionResponse.verification_verdicts:type_name -> sysml.VerificationVerdict 4, // 14: sysml.ValidateInstanceResponse.verdicts:type_name -> sysml.Verdict 4, // 15: sysml.ValidateInstanceResponse.summary:type_name -> sysml.Verdict 37, // 16: sysml.ValidateInstanceResponse.instances:type_name -> sysml.Instance - 79, // 17: sysml.ValidateInstanceResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 17: sysml.ValidateInstanceResponse.diagnostics:type_name -> sysml.Diagnostic 0, // 18: sysml.ValidateInstanceResponse.failure_reason:type_name -> sysml.FailureReason 9, // 19: sysml.ValidateInstanceResponse.verification_verdicts:type_name -> sysml.VerificationVerdict - 63, // 20: sysml.EvaluateCalcRequest.arguments:type_name -> sysml.Value - 63, // 21: sysml.EvaluateCalcResponse.result:type_name -> sysml.Value + 64, // 20: sysml.EvaluateCalcRequest.arguments:type_name -> sysml.Value + 64, // 21: sysml.EvaluateCalcResponse.result:type_name -> sysml.Value 17, // 22: sysml.EvaluateCalcResponse.outputs:type_name -> sysml.CalcOutput - 79, // 23: sysml.EvaluateCalcResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 23: sysml.EvaluateCalcResponse.diagnostics:type_name -> sysml.Diagnostic 0, // 24: sysml.EvaluateCalcResponse.failure_reason:type_name -> sysml.FailureReason 5, // 25: sysml.EvaluateCalcResponse.bounds:type_name -> sysml.Bound - 63, // 26: sysml.CalcOutput.value:type_name -> sysml.Value - 63, // 27: sysml.CaseEvaluation.arguments:type_name -> sysml.Value - 63, // 28: sysml.CaseEvaluation.result:type_name -> sysml.Value - 63, // 29: sysml.RunAnalysisRequest.arguments:type_name -> sysml.Value - 107, // 30: sysml.RunAnalysisRequest.named_arguments:type_name -> sysml.RunAnalysisRequest.NamedArgumentsEntry + 64, // 26: sysml.CalcOutput.value:type_name -> sysml.Value + 64, // 27: sysml.CaseEvaluation.arguments:type_name -> sysml.Value + 64, // 28: sysml.CaseEvaluation.result:type_name -> sysml.Value + 64, // 29: sysml.RunAnalysisRequest.arguments:type_name -> sysml.Value + 108, // 30: sysml.RunAnalysisRequest.named_arguments:type_name -> sysml.RunAnalysisRequest.NamedArgumentsEntry 17, // 31: sysml.RunAnalysisResponse.outputs:type_name -> sysml.CalcOutput 4, // 32: sysml.RunAnalysisResponse.verdicts:type_name -> sysml.Verdict 37, // 33: sysml.RunAnalysisResponse.instances:type_name -> sysml.Instance - 79, // 34: sysml.RunAnalysisResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 34: sysml.RunAnalysisResponse.diagnostics:type_name -> sysml.Diagnostic 0, // 35: sysml.RunAnalysisResponse.failure_reason:type_name -> sysml.FailureReason 9, // 36: sysml.RunAnalysisResponse.verification_verdicts:type_name -> sysml.VerificationVerdict 21, // 37: sysml.RunAnalysisResponse.outcomes:type_name -> sysml.Outcome 22, // 38: sysml.RunAnalysisResponse.exploration:type_name -> sysml.ExplorationStatus 18, // 39: sysml.RunAnalysisResponse.evaluations:type_name -> sysml.CaseEvaluation 5, // 40: sysml.RunAnalysisResponse.bounds:type_name -> sysml.Bound - 108, // 41: sysml.Outcome.outputs:type_name -> sysml.Outcome.OutputsEntry - 79, // 42: sysml.Outcome.diagnostics:type_name -> sysml.Diagnostic + 109, // 41: sysml.Outcome.outputs:type_name -> sysml.Outcome.OutputsEntry + 80, // 42: sysml.Outcome.diagnostics:type_name -> sysml.Diagnostic 24, // 43: sysml.ListEnginesResponse.engines:type_name -> sysml.EngineInfo 27, // 44: sysml.ParseSourcesRequest.documents:type_name -> sysml.SourceDocument - 58, // 45: sysml.ParseSourcesResponse.roots:type_name -> sysml.SymbolInfo - 79, // 46: sysml.ParseSourcesResponse.diagnostics:type_name -> sysml.Diagnostic - 58, // 47: sysml.ParseFileResponse.root:type_name -> sysml.SymbolInfo - 79, // 48: sysml.ParseFileResponse.diagnostics:type_name -> sysml.Diagnostic - 58, // 49: sysml.SymbolResponse.symbol:type_name -> sysml.SymbolInfo - 79, // 50: sysml.DiagnosticsResponse.diagnostics:type_name -> sysml.Diagnostic - 63, // 51: sysml.EvaluateResponse.result:type_name -> sysml.Value - 79, // 52: sysml.EvaluateResponse.diagnostics:type_name -> sysml.Diagnostic - 109, // 53: sysml.Instance.feature_values:type_name -> sysml.Instance.FeatureValuesEntry - 63, // 54: sysml.FeatureValue.value:type_name -> sysml.Value - 63, // 55: sysml.FeatureValue.values:type_name -> sysml.Value + 59, // 45: sysml.ParseSourcesResponse.roots:type_name -> sysml.SymbolInfo + 80, // 46: sysml.ParseSourcesResponse.diagnostics:type_name -> sysml.Diagnostic + 59, // 47: sysml.ParseFileResponse.root:type_name -> sysml.SymbolInfo + 80, // 48: sysml.ParseFileResponse.diagnostics:type_name -> sysml.Diagnostic + 59, // 49: sysml.SymbolResponse.symbol:type_name -> sysml.SymbolInfo + 80, // 50: sysml.DiagnosticsResponse.diagnostics:type_name -> sysml.Diagnostic + 64, // 51: sysml.EvaluateResponse.result:type_name -> sysml.Value + 80, // 52: sysml.EvaluateResponse.diagnostics:type_name -> sysml.Diagnostic + 110, // 53: sysml.Instance.feature_values:type_name -> sysml.Instance.FeatureValuesEntry + 64, // 54: sysml.FeatureValue.value:type_name -> sysml.Value + 64, // 55: sysml.FeatureValue.values:type_name -> sysml.Value 37, // 56: sysml.InstantiateResponse.instance:type_name -> sysml.Instance - 79, // 57: sysml.InstantiateResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 57: sysml.InstantiateResponse.diagnostics:type_name -> sysml.Diagnostic 37, // 58: sysml.InstantiateResponse.instances:type_name -> sysml.Instance - 110, // 59: sysml.ExecuteActionRequest.inputs:type_name -> sysml.ExecuteActionRequest.InputsEntry - 111, // 60: sysml.ExecuteActionResponse.outputs:type_name -> sysml.ExecuteActionResponse.OutputsEntry - 79, // 61: sysml.ExecuteActionResponse.diagnostics:type_name -> sysml.Diagnostic + 111, // 59: sysml.ExecuteActionRequest.inputs:type_name -> sysml.ExecuteActionRequest.InputsEntry + 112, // 60: sysml.ExecuteActionResponse.outputs:type_name -> sysml.ExecuteActionResponse.OutputsEntry + 80, // 61: sysml.ExecuteActionResponse.diagnostics:type_name -> sysml.Diagnostic 21, // 62: sysml.ExecuteActionResponse.outcomes:type_name -> sysml.Outcome 22, // 63: sysml.ExecuteActionResponse.exploration:type_name -> sysml.ExplorationStatus - 112, // 64: sysml.ExecuteStateResponse.final_context:type_name -> sysml.ExecuteStateResponse.FinalContextEntry - 79, // 65: sysml.ExecuteStateResponse.diagnostics:type_name -> sysml.Diagnostic + 113, // 64: sysml.ExecuteStateResponse.final_context:type_name -> sysml.ExecuteStateResponse.FinalContextEntry + 80, // 65: sysml.ExecuteStateResponse.diagnostics:type_name -> sysml.Diagnostic 21, // 66: sysml.ExecuteStateResponse.outcomes:type_name -> sysml.Outcome 22, // 67: sysml.ExecuteStateResponse.exploration:type_name -> sysml.ExplorationStatus - 79, // 68: sysml.ConvertResponse.diagnostics:type_name -> sysml.Diagnostic + 80, // 68: sysml.ConvertResponse.diagnostics:type_name -> sysml.Diagnostic 48, // 69: sysml.ApplyEditsRequest.operations:type_name -> sysml.EditOperation - 52, // 70: sysml.EditOperation.set_value:type_name -> sysml.SetValueEdit - 53, // 71: sysml.EditOperation.rename:type_name -> sysml.RenameEdit + 53, // 70: sysml.EditOperation.set_value:type_name -> sysml.SetValueEdit + 54, // 71: sysml.EditOperation.rename:type_name -> sysml.RenameEdit 49, // 72: sysml.EditOperation.add_member:type_name -> sysml.AddMemberEdit - 50, // 73: sysml.EditOperation.delete:type_name -> sysml.DeleteEdit - 51, // 74: sysml.EditOperation.move:type_name -> sysml.MoveEdit - 57, // 75: sysml.ApplyEditsResponse.applied:type_name -> sysml.AppliedEdit - 1, // 76: sysml.ApplyEditsResponse.failure:type_name -> sysml.EditFailure - 79, // 77: sysml.ApplyEditsResponse.diagnostics:type_name -> sysml.Diagnostic - 55, // 78: sysml.ApplyEditsResponse.documents:type_name -> sysml.EditedDocument - 56, // 79: sysml.ApplyEditsResponse.referrers:type_name -> sysml.Referrer - 113, // 80: sysml.SymbolInfo.metadata:type_name -> sysml.SymbolInfo.MetadataEntry - 62, // 81: sysml.SymbolInfo.attributes:type_name -> sysml.AttributeInfo - 60, // 82: sysml.SymbolInfo.type_info:type_name -> sysml.TypeInfo - 61, // 83: sysml.SymbolInfo.multiplicity:type_name -> sysml.MultiplicityInfo - 59, // 84: sysml.SymbolInfo.specializations:type_name -> sysml.Specialization - 63, // 85: sysml.AttributeInfo.value:type_name -> sysml.Value - 74, // 86: sysml.Value.sequence:type_name -> sysml.ValueSequence - 75, // 87: sysml.Value.quantity:type_name -> sysml.Quantity - 73, // 88: sysml.Value.enum_literal:type_name -> sysml.EnumLiteral - 72, // 89: sysml.Value.complex:type_name -> sysml.Complex - 69, // 90: sysml.Value.array:type_name -> sysml.Array - 70, // 91: sysml.Value.vector:type_name -> sysml.Vector - 71, // 92: sysml.Value.vector_quantity:type_name -> sysml.VectorQuantity - 76, // 93: sysml.Value.measurement_ref:type_name -> sysml.MeasurementRef - 66, // 94: sysml.Value.function:type_name -> sysml.Function - 67, // 95: sysml.Value.set:type_name -> sysml.ValueSet - 68, // 96: sysml.Value.tensor_quantity:type_name -> sysml.TensorQuantity - 64, // 97: sysml.Value.metaobject:type_name -> sysml.Metaobject - 65, // 98: sysml.Value.undetermined:type_name -> sysml.Undetermined - 61, // 99: sysml.Undetermined.count:type_name -> sysml.MultiplicityInfo - 63, // 100: sysml.ValueSet.elements:type_name -> sysml.Value - 75, // 101: sysml.TensorQuantity.components:type_name -> sysml.Quantity - 63, // 102: sysml.Array.elements:type_name -> sysml.Value - 63, // 103: sysml.Vector.components:type_name -> sysml.Value - 75, // 104: sysml.VectorQuantity.components:type_name -> sysml.Quantity - 63, // 105: sysml.EnumLiteral.value:type_name -> sysml.Value - 63, // 106: sysml.ValueSequence.elements:type_name -> sysml.Value - 77, // 107: sysml.Quantity.unit_term:type_name -> sysml.UnitTerm - 77, // 108: sysml.MeasurementRef.unit_term:type_name -> sysml.UnitTerm - 78, // 109: sysml.UnitTerm.factors:type_name -> sysml.UnitFactor - 80, // 110: sysml.Diagnostic.span:type_name -> sysml.Span - 85, // 111: sysml.QueryRequest.query:type_name -> sysml.Query - 89, // 112: sysml.QueryResponse.elements:type_name -> sysml.QueryResultElement - 86, // 113: sysml.Query.where:type_name -> sysml.Constraint - 87, // 114: sysml.Constraint.primitive:type_name -> sysml.PrimitiveConstraint - 88, // 115: sysml.Constraint.composite:type_name -> sysml.CompositeConstraint - 2, // 116: sysml.PrimitiveConstraint.operator:type_name -> sysml.PrimitiveOperator - 3, // 117: sysml.CompositeConstraint.operator:type_name -> sysml.CompositeOperator - 86, // 118: sysml.CompositeConstraint.constraint:type_name -> sysml.Constraint - 114, // 119: sysml.QueryResultElement.properties:type_name -> sysml.QueryResultElement.PropertiesEntry - 63, // 120: sysml.SweepRange.start:type_name -> sysml.Value - 63, // 121: sysml.SweepRange.end:type_name -> sysml.Value - 63, // 122: sysml.SweepRange.step:type_name -> sysml.Value - 63, // 123: sysml.RunSweepRequest.arguments:type_name -> sysml.Value - 115, // 124: sysml.RunSweepRequest.named_arguments:type_name -> sysml.RunSweepRequest.NamedArgumentsEntry - 90, // 125: sysml.RunSweepRequest.ranges:type_name -> sysml.SweepRange - 17, // 126: sysml.SweepRow.inputs:type_name -> sysml.CalcOutput - 17, // 127: sysml.SweepRow.outputs:type_name -> sysml.CalcOutput - 4, // 128: sysml.SweepRow.verdicts:type_name -> sysml.Verdict - 0, // 129: sysml.SweepRow.failure_reason:type_name -> sysml.FailureReason - 18, // 130: sysml.SweepRow.evaluations:type_name -> sysml.CaseEvaluation - 92, // 131: sysml.RunSweepResponse.rows:type_name -> sysml.SweepRow - 79, // 132: sysml.RunSweepResponse.diagnostics:type_name -> sysml.Diagnostic - 0, // 133: sysml.RunSweepResponse.failure_reason:type_name -> sysml.FailureReason - 37, // 134: sysml.RunSweepResponse.instances:type_name -> sysml.Instance - 5, // 135: sysml.RunSweepResponse.bounds:type_name -> sysml.Bound - 95, // 136: sysml.RunDocumentQueryRequest.bindings:type_name -> sysml.DocumentQueryBinding - 96, // 137: sysml.DocumentQueryBinding.values:type_name -> sysml.DocumentValue - 75, // 138: sysml.DocumentValue.quantity:type_name -> sysml.Quantity - 98, // 139: sysml.DocumentValue.verdict:type_name -> sysml.DocumentVerdict - 97, // 140: sysml.DocumentValue.object:type_name -> sysml.DocumentObject - 99, // 141: sysml.DocumentValue.state:type_name -> sysml.DocumentState - 100, // 142: sysml.DocumentValue.event:type_name -> sysml.DocumentEvent - 96, // 143: sysml.DocumentObject.element:type_name -> sysml.DocumentValue - 96, // 144: sysml.DocumentVerdict.assertion:type_name -> sysml.DocumentValue - 97, // 145: sysml.DocumentState.object:type_name -> sysml.DocumentObject - 96, // 146: sysml.DocumentState.state:type_name -> sysml.DocumentValue - 96, // 147: sysml.DocumentEvent.time:type_name -> sysml.DocumentValue - 97, // 148: sysml.DocumentEvent.object:type_name -> sysml.DocumentObject - 97, // 149: sysml.DocumentEvent.target:type_name -> sysml.DocumentObject - 96, // 150: sysml.DocumentQueryCell.values:type_name -> sysml.DocumentValue - 96, // 151: sysml.DocumentQueryRow.element:type_name -> sysml.DocumentValue - 102, // 152: sysml.DocumentQueryRow.cells:type_name -> sysml.DocumentQueryCell - 101, // 153: sysml.RunDocumentQueryResponse.columns:type_name -> sysml.DocumentQueryColumn - 103, // 154: sysml.RunDocumentQueryResponse.rows:type_name -> sysml.DocumentQueryRow - 63, // 155: sysml.RunAnalysisRequest.NamedArgumentsEntry.value:type_name -> sysml.Value - 63, // 156: sysml.Outcome.OutputsEntry.value:type_name -> sysml.Value - 38, // 157: sysml.Instance.FeatureValuesEntry.value:type_name -> sysml.FeatureValue - 63, // 158: sysml.ExecuteActionRequest.InputsEntry.value:type_name -> sysml.Value - 63, // 159: sysml.ExecuteActionResponse.OutputsEntry.value:type_name -> sysml.Value - 63, // 160: sysml.ExecuteStateResponse.FinalContextEntry.value:type_name -> sysml.Value - 63, // 161: sysml.RunSweepRequest.NamedArgumentsEntry.value:type_name -> sysml.Value - 81, // 162: sysml.SysMLService.GetServerInfo:input_type -> sysml.ServerInfoRequest - 26, // 163: sysml.SysMLService.ParseFile:input_type -> sysml.ParseFileRequest - 28, // 164: sysml.SysMLService.ParseSources:input_type -> sysml.ParseSourcesRequest - 31, // 165: sysml.SysMLService.GetSymbol:input_type -> sysml.GetSymbolRequest - 33, // 166: sysml.SysMLService.GetDiagnostics:input_type -> sysml.DiagnosticsRequest - 35, // 167: sysml.SysMLService.Evaluate:input_type -> sysml.EvaluateRequest - 39, // 168: sysml.SysMLService.Instantiate:input_type -> sysml.InstantiateRequest - 41, // 169: sysml.SysMLService.ExecuteAction:input_type -> sysml.ExecuteActionRequest - 43, // 170: sysml.SysMLService.ExecuteState:input_type -> sysml.ExecuteStateRequest - 45, // 171: sysml.SysMLService.Convert:input_type -> sysml.ConvertRequest - 47, // 172: sysml.SysMLService.ApplyEdits:input_type -> sysml.ApplyEditsRequest - 6, // 173: sysml.SysMLService.VerifyConstraint:input_type -> sysml.VerifyConstraintRequest - 8, // 174: sysml.SysMLService.VerifyRequirement:input_type -> sysml.VerifyRequirementRequest - 11, // 175: sysml.SysMLService.VerifySatisfaction:input_type -> sysml.VerifySatisfactionRequest - 13, // 176: sysml.SysMLService.ValidateInstance:input_type -> sysml.ValidateInstanceRequest - 15, // 177: sysml.SysMLService.EvaluateCalc:input_type -> sysml.EvaluateCalcRequest - 19, // 178: sysml.SysMLService.RunAnalysis:input_type -> sysml.RunAnalysisRequest - 91, // 179: sysml.SysMLService.RunSweep:input_type -> sysml.RunSweepRequest - 23, // 180: sysml.SysMLService.ListEngines:input_type -> sysml.ListEnginesRequest - 83, // 181: sysml.SysMLService.Query:input_type -> sysml.QueryRequest - 94, // 182: sysml.SysMLService.RunDocumentQuery:input_type -> sysml.RunDocumentQueryRequest - 105, // 183: sysml.SysMLService.RenderDocument:input_type -> sysml.RenderDocumentRequest - 82, // 184: sysml.SysMLService.GetServerInfo:output_type -> sysml.ServerInfoResponse - 30, // 185: sysml.SysMLService.ParseFile:output_type -> sysml.ParseFileResponse - 29, // 186: sysml.SysMLService.ParseSources:output_type -> sysml.ParseSourcesResponse - 32, // 187: sysml.SysMLService.GetSymbol:output_type -> sysml.SymbolResponse - 34, // 188: sysml.SysMLService.GetDiagnostics:output_type -> sysml.DiagnosticsResponse - 36, // 189: sysml.SysMLService.Evaluate:output_type -> sysml.EvaluateResponse - 40, // 190: sysml.SysMLService.Instantiate:output_type -> sysml.InstantiateResponse - 42, // 191: sysml.SysMLService.ExecuteAction:output_type -> sysml.ExecuteActionResponse - 44, // 192: sysml.SysMLService.ExecuteState:output_type -> sysml.ExecuteStateResponse - 46, // 193: sysml.SysMLService.Convert:output_type -> sysml.ConvertResponse - 54, // 194: sysml.SysMLService.ApplyEdits:output_type -> sysml.ApplyEditsResponse - 7, // 195: sysml.SysMLService.VerifyConstraint:output_type -> sysml.VerifyConstraintResponse - 10, // 196: sysml.SysMLService.VerifyRequirement:output_type -> sysml.VerifyRequirementResponse - 12, // 197: sysml.SysMLService.VerifySatisfaction:output_type -> sysml.VerifySatisfactionResponse - 14, // 198: sysml.SysMLService.ValidateInstance:output_type -> sysml.ValidateInstanceResponse - 16, // 199: sysml.SysMLService.EvaluateCalc:output_type -> sysml.EvaluateCalcResponse - 20, // 200: sysml.SysMLService.RunAnalysis:output_type -> sysml.RunAnalysisResponse - 93, // 201: sysml.SysMLService.RunSweep:output_type -> sysml.RunSweepResponse - 25, // 202: sysml.SysMLService.ListEngines:output_type -> sysml.ListEnginesResponse - 84, // 203: sysml.SysMLService.Query:output_type -> sysml.QueryResponse - 104, // 204: sysml.SysMLService.RunDocumentQuery:output_type -> sysml.RunDocumentQueryResponse - 106, // 205: sysml.SysMLService.RenderDocument:output_type -> sysml.RenderDocumentResponse - 184, // [184:206] is the sub-list for method output_type - 162, // [162:184] is the sub-list for method input_type - 162, // [162:162] is the sub-list for extension type_name - 162, // [162:162] is the sub-list for extension extendee - 0, // [0:162] is the sub-list for field type_name + 51, // 73: sysml.EditOperation.delete:type_name -> sysml.DeleteEdit + 52, // 74: sysml.EditOperation.move:type_name -> sysml.MoveEdit + 50, // 75: sysml.EditOperation.add_connection:type_name -> sysml.AddConnectionEdit + 58, // 76: sysml.ApplyEditsResponse.applied:type_name -> sysml.AppliedEdit + 1, // 77: sysml.ApplyEditsResponse.failure:type_name -> sysml.EditFailure + 80, // 78: sysml.ApplyEditsResponse.diagnostics:type_name -> sysml.Diagnostic + 56, // 79: sysml.ApplyEditsResponse.documents:type_name -> sysml.EditedDocument + 57, // 80: sysml.ApplyEditsResponse.referrers:type_name -> sysml.Referrer + 114, // 81: sysml.SymbolInfo.metadata:type_name -> sysml.SymbolInfo.MetadataEntry + 63, // 82: sysml.SymbolInfo.attributes:type_name -> sysml.AttributeInfo + 61, // 83: sysml.SymbolInfo.type_info:type_name -> sysml.TypeInfo + 62, // 84: sysml.SymbolInfo.multiplicity:type_name -> sysml.MultiplicityInfo + 60, // 85: sysml.SymbolInfo.specializations:type_name -> sysml.Specialization + 64, // 86: sysml.AttributeInfo.value:type_name -> sysml.Value + 75, // 87: sysml.Value.sequence:type_name -> sysml.ValueSequence + 76, // 88: sysml.Value.quantity:type_name -> sysml.Quantity + 74, // 89: sysml.Value.enum_literal:type_name -> sysml.EnumLiteral + 73, // 90: sysml.Value.complex:type_name -> sysml.Complex + 70, // 91: sysml.Value.array:type_name -> sysml.Array + 71, // 92: sysml.Value.vector:type_name -> sysml.Vector + 72, // 93: sysml.Value.vector_quantity:type_name -> sysml.VectorQuantity + 77, // 94: sysml.Value.measurement_ref:type_name -> sysml.MeasurementRef + 67, // 95: sysml.Value.function:type_name -> sysml.Function + 68, // 96: sysml.Value.set:type_name -> sysml.ValueSet + 69, // 97: sysml.Value.tensor_quantity:type_name -> sysml.TensorQuantity + 65, // 98: sysml.Value.metaobject:type_name -> sysml.Metaobject + 66, // 99: sysml.Value.undetermined:type_name -> sysml.Undetermined + 62, // 100: sysml.Undetermined.count:type_name -> sysml.MultiplicityInfo + 64, // 101: sysml.ValueSet.elements:type_name -> sysml.Value + 76, // 102: sysml.TensorQuantity.components:type_name -> sysml.Quantity + 64, // 103: sysml.Array.elements:type_name -> sysml.Value + 64, // 104: sysml.Vector.components:type_name -> sysml.Value + 76, // 105: sysml.VectorQuantity.components:type_name -> sysml.Quantity + 64, // 106: sysml.EnumLiteral.value:type_name -> sysml.Value + 64, // 107: sysml.ValueSequence.elements:type_name -> sysml.Value + 78, // 108: sysml.Quantity.unit_term:type_name -> sysml.UnitTerm + 78, // 109: sysml.MeasurementRef.unit_term:type_name -> sysml.UnitTerm + 79, // 110: sysml.UnitTerm.factors:type_name -> sysml.UnitFactor + 81, // 111: sysml.Diagnostic.span:type_name -> sysml.Span + 86, // 112: sysml.QueryRequest.query:type_name -> sysml.Query + 90, // 113: sysml.QueryResponse.elements:type_name -> sysml.QueryResultElement + 87, // 114: sysml.Query.where:type_name -> sysml.Constraint + 88, // 115: sysml.Constraint.primitive:type_name -> sysml.PrimitiveConstraint + 89, // 116: sysml.Constraint.composite:type_name -> sysml.CompositeConstraint + 2, // 117: sysml.PrimitiveConstraint.operator:type_name -> sysml.PrimitiveOperator + 3, // 118: sysml.CompositeConstraint.operator:type_name -> sysml.CompositeOperator + 87, // 119: sysml.CompositeConstraint.constraint:type_name -> sysml.Constraint + 115, // 120: sysml.QueryResultElement.properties:type_name -> sysml.QueryResultElement.PropertiesEntry + 64, // 121: sysml.SweepRange.start:type_name -> sysml.Value + 64, // 122: sysml.SweepRange.end:type_name -> sysml.Value + 64, // 123: sysml.SweepRange.step:type_name -> sysml.Value + 64, // 124: sysml.RunSweepRequest.arguments:type_name -> sysml.Value + 116, // 125: sysml.RunSweepRequest.named_arguments:type_name -> sysml.RunSweepRequest.NamedArgumentsEntry + 91, // 126: sysml.RunSweepRequest.ranges:type_name -> sysml.SweepRange + 17, // 127: sysml.SweepRow.inputs:type_name -> sysml.CalcOutput + 17, // 128: sysml.SweepRow.outputs:type_name -> sysml.CalcOutput + 4, // 129: sysml.SweepRow.verdicts:type_name -> sysml.Verdict + 0, // 130: sysml.SweepRow.failure_reason:type_name -> sysml.FailureReason + 18, // 131: sysml.SweepRow.evaluations:type_name -> sysml.CaseEvaluation + 93, // 132: sysml.RunSweepResponse.rows:type_name -> sysml.SweepRow + 80, // 133: sysml.RunSweepResponse.diagnostics:type_name -> sysml.Diagnostic + 0, // 134: sysml.RunSweepResponse.failure_reason:type_name -> sysml.FailureReason + 37, // 135: sysml.RunSweepResponse.instances:type_name -> sysml.Instance + 5, // 136: sysml.RunSweepResponse.bounds:type_name -> sysml.Bound + 96, // 137: sysml.RunDocumentQueryRequest.bindings:type_name -> sysml.DocumentQueryBinding + 97, // 138: sysml.DocumentQueryBinding.values:type_name -> sysml.DocumentValue + 76, // 139: sysml.DocumentValue.quantity:type_name -> sysml.Quantity + 99, // 140: sysml.DocumentValue.verdict:type_name -> sysml.DocumentVerdict + 98, // 141: sysml.DocumentValue.object:type_name -> sysml.DocumentObject + 100, // 142: sysml.DocumentValue.state:type_name -> sysml.DocumentState + 101, // 143: sysml.DocumentValue.event:type_name -> sysml.DocumentEvent + 97, // 144: sysml.DocumentObject.element:type_name -> sysml.DocumentValue + 97, // 145: sysml.DocumentVerdict.assertion:type_name -> sysml.DocumentValue + 98, // 146: sysml.DocumentState.object:type_name -> sysml.DocumentObject + 97, // 147: sysml.DocumentState.state:type_name -> sysml.DocumentValue + 97, // 148: sysml.DocumentEvent.time:type_name -> sysml.DocumentValue + 98, // 149: sysml.DocumentEvent.object:type_name -> sysml.DocumentObject + 98, // 150: sysml.DocumentEvent.target:type_name -> sysml.DocumentObject + 97, // 151: sysml.DocumentQueryCell.values:type_name -> sysml.DocumentValue + 97, // 152: sysml.DocumentQueryRow.element:type_name -> sysml.DocumentValue + 103, // 153: sysml.DocumentQueryRow.cells:type_name -> sysml.DocumentQueryCell + 102, // 154: sysml.RunDocumentQueryResponse.columns:type_name -> sysml.DocumentQueryColumn + 104, // 155: sysml.RunDocumentQueryResponse.rows:type_name -> sysml.DocumentQueryRow + 64, // 156: sysml.RunAnalysisRequest.NamedArgumentsEntry.value:type_name -> sysml.Value + 64, // 157: sysml.Outcome.OutputsEntry.value:type_name -> sysml.Value + 38, // 158: sysml.Instance.FeatureValuesEntry.value:type_name -> sysml.FeatureValue + 64, // 159: sysml.ExecuteActionRequest.InputsEntry.value:type_name -> sysml.Value + 64, // 160: sysml.ExecuteActionResponse.OutputsEntry.value:type_name -> sysml.Value + 64, // 161: sysml.ExecuteStateResponse.FinalContextEntry.value:type_name -> sysml.Value + 64, // 162: sysml.RunSweepRequest.NamedArgumentsEntry.value:type_name -> sysml.Value + 82, // 163: sysml.SysMLService.GetServerInfo:input_type -> sysml.ServerInfoRequest + 26, // 164: sysml.SysMLService.ParseFile:input_type -> sysml.ParseFileRequest + 28, // 165: sysml.SysMLService.ParseSources:input_type -> sysml.ParseSourcesRequest + 31, // 166: sysml.SysMLService.GetSymbol:input_type -> sysml.GetSymbolRequest + 33, // 167: sysml.SysMLService.GetDiagnostics:input_type -> sysml.DiagnosticsRequest + 35, // 168: sysml.SysMLService.Evaluate:input_type -> sysml.EvaluateRequest + 39, // 169: sysml.SysMLService.Instantiate:input_type -> sysml.InstantiateRequest + 41, // 170: sysml.SysMLService.ExecuteAction:input_type -> sysml.ExecuteActionRequest + 43, // 171: sysml.SysMLService.ExecuteState:input_type -> sysml.ExecuteStateRequest + 45, // 172: sysml.SysMLService.Convert:input_type -> sysml.ConvertRequest + 47, // 173: sysml.SysMLService.ApplyEdits:input_type -> sysml.ApplyEditsRequest + 6, // 174: sysml.SysMLService.VerifyConstraint:input_type -> sysml.VerifyConstraintRequest + 8, // 175: sysml.SysMLService.VerifyRequirement:input_type -> sysml.VerifyRequirementRequest + 11, // 176: sysml.SysMLService.VerifySatisfaction:input_type -> sysml.VerifySatisfactionRequest + 13, // 177: sysml.SysMLService.ValidateInstance:input_type -> sysml.ValidateInstanceRequest + 15, // 178: sysml.SysMLService.EvaluateCalc:input_type -> sysml.EvaluateCalcRequest + 19, // 179: sysml.SysMLService.RunAnalysis:input_type -> sysml.RunAnalysisRequest + 92, // 180: sysml.SysMLService.RunSweep:input_type -> sysml.RunSweepRequest + 23, // 181: sysml.SysMLService.ListEngines:input_type -> sysml.ListEnginesRequest + 84, // 182: sysml.SysMLService.Query:input_type -> sysml.QueryRequest + 95, // 183: sysml.SysMLService.RunDocumentQuery:input_type -> sysml.RunDocumentQueryRequest + 106, // 184: sysml.SysMLService.RenderDocument:input_type -> sysml.RenderDocumentRequest + 83, // 185: sysml.SysMLService.GetServerInfo:output_type -> sysml.ServerInfoResponse + 30, // 186: sysml.SysMLService.ParseFile:output_type -> sysml.ParseFileResponse + 29, // 187: sysml.SysMLService.ParseSources:output_type -> sysml.ParseSourcesResponse + 32, // 188: sysml.SysMLService.GetSymbol:output_type -> sysml.SymbolResponse + 34, // 189: sysml.SysMLService.GetDiagnostics:output_type -> sysml.DiagnosticsResponse + 36, // 190: sysml.SysMLService.Evaluate:output_type -> sysml.EvaluateResponse + 40, // 191: sysml.SysMLService.Instantiate:output_type -> sysml.InstantiateResponse + 42, // 192: sysml.SysMLService.ExecuteAction:output_type -> sysml.ExecuteActionResponse + 44, // 193: sysml.SysMLService.ExecuteState:output_type -> sysml.ExecuteStateResponse + 46, // 194: sysml.SysMLService.Convert:output_type -> sysml.ConvertResponse + 55, // 195: sysml.SysMLService.ApplyEdits:output_type -> sysml.ApplyEditsResponse + 7, // 196: sysml.SysMLService.VerifyConstraint:output_type -> sysml.VerifyConstraintResponse + 10, // 197: sysml.SysMLService.VerifyRequirement:output_type -> sysml.VerifyRequirementResponse + 12, // 198: sysml.SysMLService.VerifySatisfaction:output_type -> sysml.VerifySatisfactionResponse + 14, // 199: sysml.SysMLService.ValidateInstance:output_type -> sysml.ValidateInstanceResponse + 16, // 200: sysml.SysMLService.EvaluateCalc:output_type -> sysml.EvaluateCalcResponse + 20, // 201: sysml.SysMLService.RunAnalysis:output_type -> sysml.RunAnalysisResponse + 94, // 202: sysml.SysMLService.RunSweep:output_type -> sysml.RunSweepResponse + 25, // 203: sysml.SysMLService.ListEngines:output_type -> sysml.ListEnginesResponse + 85, // 204: sysml.SysMLService.Query:output_type -> sysml.QueryResponse + 105, // 205: sysml.SysMLService.RunDocumentQuery:output_type -> sysml.RunDocumentQueryResponse + 107, // 206: sysml.SysMLService.RenderDocument:output_type -> sysml.RenderDocumentResponse + 185, // [185:207] is the sub-list for method output_type + 163, // [163:185] is the sub-list for method input_type + 163, // [163:163] is the sub-list for extension type_name + 163, // [163:163] is the sub-list for extension extendee + 0, // [0:163] is the sub-list for field type_name } func init() { file_sysml_proto_init() } @@ -10120,8 +10238,9 @@ func file_sysml_proto_init() { (*EditOperation_AddMember)(nil), (*EditOperation_Delete)(nil), (*EditOperation_Move)(nil), + (*EditOperation_AddConnection)(nil), } - file_sysml_proto_msgTypes[59].OneofWrappers = []any{ + file_sysml_proto_msgTypes[60].OneofWrappers = []any{ (*Value_IntValue)(nil), (*Value_RealValue)(nil), (*Value_BoolValue)(nil), @@ -10144,15 +10263,15 @@ func file_sysml_proto_init() { (*Value_Metaobject)(nil), (*Value_Undetermined)(nil), } - file_sysml_proto_msgTypes[71].OneofWrappers = []any{ + file_sysml_proto_msgTypes[72].OneofWrappers = []any{ (*Quantity_IntMagnitude)(nil), (*Quantity_RealMagnitude)(nil), } - file_sysml_proto_msgTypes[82].OneofWrappers = []any{ + file_sysml_proto_msgTypes[83].OneofWrappers = []any{ (*Constraint_Primitive)(nil), (*Constraint_Composite)(nil), } - file_sysml_proto_msgTypes[92].OneofWrappers = []any{ + file_sysml_proto_msgTypes[93].OneofWrappers = []any{ (*DocumentValue_ElementId)(nil), (*DocumentValue_StringValue)(nil), (*DocumentValue_IntValue)(nil), @@ -10171,7 +10290,7 @@ func file_sysml_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_sysml_proto_rawDesc), len(file_sysml_proto_rawDesc)), NumEnums: 4, - NumMessages: 112, + NumMessages: 113, NumExtensions: 0, NumServices: 1, }, diff --git a/api/proto/sysml.proto b/api/proto/sysml.proto index bf978a6060..6e40b32725 100644 --- a/api/proto/sysml.proto +++ b/api/proto/sysml.proto @@ -838,6 +838,7 @@ message EditOperation { AddMemberEdit add_member = 3; DeleteEdit delete = 4; MoveEdit move = 5; + AddConnectionEdit add_connection = 6; } } @@ -859,6 +860,23 @@ message AddMemberEdit { repeated string specializes = 7; } +// AddConnectionEdit inserts a usage whose ends connect two features. +message AddConnectionEdit { + // Namespace FQN receiving the usage; empty means the document root. + string owner = 1; + // Usage kind: SysML connection, interface, allocation, binding, flow, + // succession or transition; KerML connector, binding, flow or succession. + string kind = 2; + // First feature reference resolved from the owner. + string from_end = 3; + // Second feature reference resolved from the owner. + string to_end = 4; + // Optional declared name. + string name = 5; + // Optional typing target, legal only for typed connection kinds. + string type = 6; +} + // DeleteEdit removes a declaration and its owned trivia. message DeleteEdit { // Fully qualified name of the declaration to remove. diff --git a/changes/unreleased/apply-edits-add-connection.added.md b/changes/unreleased/apply-edits-add-connection.added.md new file mode 100644 index 0000000000..33de4fd614 --- /dev/null +++ b/changes/unreleased/apply-edits-add-connection.added.md @@ -0,0 +1 @@ +- **Add connection-like usages through `ApplyEdits`.** Python exposes `Editor.add_connection`, `add_allocation` and `add_flow`; Go and Java expose `AddConnection`. The operation requires both the `authoring` and `connection_authoring` capabilities. diff --git a/client/java/README.md b/client/java/README.md index 7100fda89e..fd3aad0d5a 100644 --- a/client/java/README.md +++ b/client/java/README.md @@ -57,7 +57,7 @@ verification (`Verification`, `Satisfaction`, `Validation`, each over `Verdict`s documents (`DocumentValue`, `DocumentRow`, `DocumentQueryResult`, `RenderedDocument`) and `EngineInfo`. `SourceDocument` names a document a `parseSources` call reads; `Edit` is sealed over `SetValue`, `Rename`, -`AddMember`, `Delete` and `Move`. Every RPC the service offers is a method. +`AddMember`, `AddConnection`, `Delete` and `Move`. Every RPC the service offers is a method. No generated protobuf message or builder appears in the public API. A `Diagnostic` is `(severity, message, code, span)`; `code()` is the identifier to branch on (`"syntax"`, a validation code such as `"unresolved"`, `"choice-point"`, diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Capabilities.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Capabilities.java index e17acb65ce..6980b2762e 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Capabilities.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Capabilities.java @@ -80,6 +80,9 @@ public final class Capabilities { /** {@code ApplyEdits} can add members and delete declarations. */ public static final String AUTHORING = "authoring"; + /** {@code ApplyEdits} can add connection-like usages. */ + public static final String CONNECTION_AUTHORING = "connection_authoring"; + /** {@code ApplyEdits} edits a model of several documents as one batch, answering each edited document by name. */ public static final String EDIT_DOCUMENTS = "edit_documents"; diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java index e42d668375..0885be2f05 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Edit.java @@ -159,6 +159,79 @@ public AddMember withSpecializes(List specializes) { } } + /** + * Inserts a connection-like usage between two feature references. + * + * @param owner FQN of the namespace to receive the usage; empty for the document root + * @param kind the written connection kind, such as {@code "allocation"} or {@code "flow"} + * @param from the first feature reference, written as notation + * @param to the second feature reference, written as notation + * @param name the declared identifier, when named + * @param type a typing target, when written + */ + record AddConnection( + String owner, + String kind, + String from, + String to, + Optional name, + Optional type) + implements Edit { + + /** + * Creates the edit. + * + * @param owner receiving namespace, never {@code null} + * @param kind connection kind, never {@code null} + * @param from first feature reference, never {@code null} + * @param to second feature reference, never {@code null} + * @param name optional declared identifier + * @param type optional typing target + */ + public AddConnection { + Objects.requireNonNull(owner, "owner"); + Objects.requireNonNull(kind, "kind"); + Objects.requireNonNull(from, "from"); + Objects.requireNonNull(to, "to"); + Objects.requireNonNull(name, "name"); + Objects.requireNonNull(type, "type"); + } + + /** + * Creates an unnamed, untyped connection. + * + * @param owner receiving namespace, empty for the document root + * @param kind connection kind + * @param from first feature reference + * @param to second feature reference + * @return the edit + */ + public static AddConnection of(String owner, String kind, String from, String to) { + return new AddConnection( + owner, kind, from, to, Optional.empty(), Optional.empty()); + } + + /** + * The same connection with a declared name. + * + * @param name the identifier + * @return the edit carrying it + */ + public AddConnection withName(String name) { + return new AddConnection(owner, kind, from, to, Optional.of(name), type); + } + + /** + * The same connection with a typing target. + * + * @param type the type target, as notation + * @return the edit carrying it + */ + public AddConnection withType(String type) { + return new AddConnection(owner, kind, from, to, name, Optional.of(type)); + } + } + /** * Removes a declaration and its owned trivia. * diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java index defdf86388..c58e1b5e12 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/Model.java @@ -843,8 +843,9 @@ public Conversion convert(String toFormat, ConversionOptions options) { * says why and its {@link EditException#referrers()} name what references the target * @throws ServiceException if the request itself was rejected * @throws CapabilityException if the service does not advertise {@code apply_edits}, or an edit - * is an {@link Edit.AddMember}, {@link Edit.Delete} or {@link Edit.Move} and it does not - * advertise {@code authoring} + * is an {@link Edit.AddMember}, {@link Edit.AddConnection}, {@link Edit.Delete} or + * {@link Edit.Move} and it does not advertise {@code authoring}; {@link Edit.AddConnection} + * also requires {@code connection_authoring} */ public EditResult applyEdits(List edits) { return applyEdits(edits, EditOptions.defaults()); @@ -863,17 +864,31 @@ public EditResult applyEdits(List edits) { * document of the model has * @throws CapabilityException if the service does not advertise {@code apply_edits}, an edit * writes a declaration and it does not advertise {@code authoring}, or a document is named - * and it does not advertise {@code edit_documents} + * and it does not advertise {@code edit_documents}; {@link Edit.AddConnection} also requires + * {@code connection_authoring} */ public EditResult applyEdits(List edits, EditOptions options) { Objects.requireNonNull(edits, "edits"); Objects.requireNonNull(options, NAME_OPTIONS); connection.capabilities().require(Capabilities.APPLY_EDITS); + boolean requestsAuthoring = false; + boolean requestsConnectionAuthoring = false; for (Edit edit : edits) { - if (edit instanceof Edit.AddMember || edit instanceof Edit.Delete || edit instanceof Edit.Move) { - connection.capabilities().require(Capabilities.AUTHORING); - break; + if (edit instanceof Edit.AddMember + || edit instanceof Edit.AddConnection + || edit instanceof Edit.Delete + || edit instanceof Edit.Move) { + requestsAuthoring = true; } + if (edit instanceof Edit.AddConnection) { + requestsConnectionAuthoring = true; + } + } + if (requestsAuthoring) { + connection.capabilities().require(Capabilities.AUTHORING); + } + if (requestsConnectionAuthoring) { + connection.capabilities().require(Capabilities.CONNECTION_AUTHORING); } options.document().ifPresent(document -> connection.capabilities().require(Capabilities.EDIT_DOCUMENTS)); ApplyEditsRequest.Builder request = diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/internal/Protos.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/internal/Protos.java index c68e6c632a..84d44cb944 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/internal/Protos.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/internal/Protos.java @@ -1025,6 +1025,16 @@ public static org.openmbee.opensysml.proto.EditOperation proto(Edit edit) { addMember.value().ifPresent(add::setValue); add.addAllSpecializes(addMember.specializes()); builder.setAddMember(add); + } else if (edit instanceof Edit.AddConnection addConnection) { + org.openmbee.opensysml.proto.AddConnectionEdit.Builder add = + org.openmbee.opensysml.proto.AddConnectionEdit.newBuilder() + .setOwner(addConnection.owner()) + .setKind(addConnection.kind()) + .setFromEnd(addConnection.from()) + .setToEnd(addConnection.to()); + addConnection.name().ifPresent(add::setName); + addConnection.type().ifPresent(add::setType); + builder.setAddConnection(add); } else if (edit instanceof Edit.Delete delete) { builder.setDelete( org.openmbee.opensysml.proto.DeleteEdit.newBuilder() diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/AddConnectionEdit.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/AddConnectionEdit.java new file mode 100644 index 0000000000..75a09f5e44 --- /dev/null +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/AddConnectionEdit.java @@ -0,0 +1,1365 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: sysml.proto +// Protobuf Java Version: 4.33.1 + +package org.openmbee.opensysml.proto; + +/** + *
+ * AddConnectionEdit inserts a usage whose ends connect two features.
+ * 
+ * + * Protobuf type {@code sysml.AddConnectionEdit} + */ +@com.google.protobuf.Generated +public final class AddConnectionEdit extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:sysml.AddConnectionEdit) + AddConnectionEditOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "AddConnectionEdit"); + } + // Use AddConnectionEdit.newBuilder() to construct. + private AddConnectionEdit(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private AddConnectionEdit() { + owner_ = ""; + kind_ = ""; + fromEnd_ = ""; + toEnd_ = ""; + name_ = ""; + type_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.openmbee.opensysml.proto.Sysml.internal_static_sysml_AddConnectionEdit_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.openmbee.opensysml.proto.Sysml.internal_static_sysml_AddConnectionEdit_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.openmbee.opensysml.proto.AddConnectionEdit.class, org.openmbee.opensysml.proto.AddConnectionEdit.Builder.class); + } + + public static final int OWNER_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object owner_ = ""; + /** + *
+   * Namespace FQN receiving the usage; empty means the document root.
+   * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return The owner. + */ + @java.lang.Override + public java.lang.String getOwner() { + java.lang.Object ref = owner_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + owner_ = s; + return s; + } + } + /** + *
+   * Namespace FQN receiving the usage; empty means the document root.
+   * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return The bytes for owner. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getOwnerBytes() { + java.lang.Object ref = owner_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + owner_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int KIND_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object kind_ = ""; + /** + *
+   * Usage kind: SysML connection, interface, allocation, binding, flow,
+   * succession or transition; KerML connector, binding, flow or succession.
+   * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return The kind. + */ + @java.lang.Override + public java.lang.String getKind() { + java.lang.Object ref = kind_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + kind_ = s; + return s; + } + } + /** + *
+   * Usage kind: SysML connection, interface, allocation, binding, flow,
+   * succession or transition; KerML connector, binding, flow or succession.
+   * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return The bytes for kind. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getKindBytes() { + java.lang.Object ref = kind_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + kind_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int FROM_END_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private volatile java.lang.Object fromEnd_ = ""; + /** + *
+   * First feature reference resolved from the owner.
+   * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return The fromEnd. + */ + @java.lang.Override + public java.lang.String getFromEnd() { + java.lang.Object ref = fromEnd_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + fromEnd_ = s; + return s; + } + } + /** + *
+   * First feature reference resolved from the owner.
+   * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return The bytes for fromEnd. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFromEndBytes() { + java.lang.Object ref = fromEnd_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fromEnd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TO_END_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object toEnd_ = ""; + /** + *
+   * Second feature reference resolved from the owner.
+   * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return The toEnd. + */ + @java.lang.Override + public java.lang.String getToEnd() { + java.lang.Object ref = toEnd_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + toEnd_ = s; + return s; + } + } + /** + *
+   * Second feature reference resolved from the owner.
+   * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return The bytes for toEnd. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getToEndBytes() { + java.lang.Object ref = toEnd_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + toEnd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NAME_FIELD_NUMBER = 5; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + /** + *
+   * Optional declared name.
+   * 
+ * + * string name = 5 [json_name = "name"]; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + *
+   * Optional declared name.
+   * 
+ * + * string name = 5 [json_name = "name"]; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private volatile java.lang.Object type_ = ""; + /** + *
+   * Optional typing target, legal only for typed connection kinds.
+   * 
+ * + * string type = 6 [json_name = "type"]; + * @return The type. + */ + @java.lang.Override + public java.lang.String getType() { + java.lang.Object ref = type_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + type_ = s; + return s; + } + } + /** + *
+   * Optional typing target, legal only for typed connection kinds.
+   * 
+ * + * string type = 6 [json_name = "type"]; + * @return The bytes for type. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTypeBytes() { + java.lang.Object ref = type_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + type_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(owner_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, owner_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(kind_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, kind_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(fromEnd_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, fromEnd_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(toEnd_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, toEnd_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 5, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(type_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 6, type_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(owner_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, owner_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(kind_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, kind_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(fromEnd_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(3, fromEnd_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(toEnd_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, toEnd_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(5, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(type_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(6, type_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.openmbee.opensysml.proto.AddConnectionEdit)) { + return super.equals(obj); + } + org.openmbee.opensysml.proto.AddConnectionEdit other = (org.openmbee.opensysml.proto.AddConnectionEdit) obj; + + if (!getOwner() + .equals(other.getOwner())) return false; + if (!getKind() + .equals(other.getKind())) return false; + if (!getFromEnd() + .equals(other.getFromEnd())) return false; + if (!getToEnd() + .equals(other.getToEnd())) return false; + if (!getName() + .equals(other.getName())) return false; + if (!getType() + .equals(other.getType())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + OWNER_FIELD_NUMBER; + hash = (53 * hash) + getOwner().hashCode(); + hash = (37 * hash) + KIND_FIELD_NUMBER; + hash = (53 * hash) + getKind().hashCode(); + hash = (37 * hash) + FROM_END_FIELD_NUMBER; + hash = (53 * hash) + getFromEnd().hashCode(); + hash = (37 * hash) + TO_END_FIELD_NUMBER; + hash = (53 * hash) + getToEnd().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + getType().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.openmbee.opensysml.proto.AddConnectionEdit parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.openmbee.opensysml.proto.AddConnectionEdit parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.openmbee.opensysml.proto.AddConnectionEdit parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.openmbee.opensysml.proto.AddConnectionEdit prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * AddConnectionEdit inserts a usage whose ends connect two features.
+   * 
+ * + * Protobuf type {@code sysml.AddConnectionEdit} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:sysml.AddConnectionEdit) + org.openmbee.opensysml.proto.AddConnectionEditOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.openmbee.opensysml.proto.Sysml.internal_static_sysml_AddConnectionEdit_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.openmbee.opensysml.proto.Sysml.internal_static_sysml_AddConnectionEdit_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.openmbee.opensysml.proto.AddConnectionEdit.class, org.openmbee.opensysml.proto.AddConnectionEdit.Builder.class); + } + + // Construct using org.openmbee.opensysml.proto.AddConnectionEdit.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + owner_ = ""; + kind_ = ""; + fromEnd_ = ""; + toEnd_ = ""; + name_ = ""; + type_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.openmbee.opensysml.proto.Sysml.internal_static_sysml_AddConnectionEdit_descriptor; + } + + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEdit getDefaultInstanceForType() { + return org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } + + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEdit build() { + org.openmbee.opensysml.proto.AddConnectionEdit result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEdit buildPartial() { + org.openmbee.opensysml.proto.AddConnectionEdit result = new org.openmbee.opensysml.proto.AddConnectionEdit(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.openmbee.opensysml.proto.AddConnectionEdit result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.owner_ = owner_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.kind_ = kind_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.fromEnd_ = fromEnd_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.toEnd_ = toEnd_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.type_ = type_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.openmbee.opensysml.proto.AddConnectionEdit) { + return mergeFrom((org.openmbee.opensysml.proto.AddConnectionEdit)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.openmbee.opensysml.proto.AddConnectionEdit other) { + if (other == org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance()) return this; + if (!other.getOwner().isEmpty()) { + owner_ = other.owner_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getKind().isEmpty()) { + kind_ = other.kind_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getFromEnd().isEmpty()) { + fromEnd_ = other.fromEnd_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (!other.getToEnd().isEmpty()) { + toEnd_ = other.toEnd_; + bitField0_ |= 0x00000008; + onChanged(); + } + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000010; + onChanged(); + } + if (!other.getType().isEmpty()) { + type_ = other.type_; + bitField0_ |= 0x00000020; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + owner_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + kind_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + fromEnd_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 34: { + toEnd_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 34 + case 42: { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } // case 42 + case 50: { + type_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000020; + break; + } // case 50 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object owner_ = ""; + /** + *
+     * Namespace FQN receiving the usage; empty means the document root.
+     * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return The owner. + */ + public java.lang.String getOwner() { + java.lang.Object ref = owner_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + owner_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Namespace FQN receiving the usage; empty means the document root.
+     * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return The bytes for owner. + */ + public com.google.protobuf.ByteString + getOwnerBytes() { + java.lang.Object ref = owner_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + owner_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Namespace FQN receiving the usage; empty means the document root.
+     * 
+ * + * string owner = 1 [json_name = "owner"]; + * @param value The owner to set. + * @return This builder for chaining. + */ + public Builder setOwner( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + owner_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Namespace FQN receiving the usage; empty means the document root.
+     * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return This builder for chaining. + */ + public Builder clearOwner() { + owner_ = getDefaultInstance().getOwner(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+     * Namespace FQN receiving the usage; empty means the document root.
+     * 
+ * + * string owner = 1 [json_name = "owner"]; + * @param value The bytes for owner to set. + * @return This builder for chaining. + */ + public Builder setOwnerBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + owner_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object kind_ = ""; + /** + *
+     * Usage kind: SysML connection, interface, allocation, binding, flow,
+     * succession or transition; KerML connector, binding, flow or succession.
+     * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return The kind. + */ + public java.lang.String getKind() { + java.lang.Object ref = kind_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + kind_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Usage kind: SysML connection, interface, allocation, binding, flow,
+     * succession or transition; KerML connector, binding, flow or succession.
+     * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return The bytes for kind. + */ + public com.google.protobuf.ByteString + getKindBytes() { + java.lang.Object ref = kind_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + kind_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Usage kind: SysML connection, interface, allocation, binding, flow,
+     * succession or transition; KerML connector, binding, flow or succession.
+     * 
+ * + * string kind = 2 [json_name = "kind"]; + * @param value The kind to set. + * @return This builder for chaining. + */ + public Builder setKind( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + kind_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * Usage kind: SysML connection, interface, allocation, binding, flow,
+     * succession or transition; KerML connector, binding, flow or succession.
+     * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return This builder for chaining. + */ + public Builder clearKind() { + kind_ = getDefaultInstance().getKind(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+     * Usage kind: SysML connection, interface, allocation, binding, flow,
+     * succession or transition; KerML connector, binding, flow or succession.
+     * 
+ * + * string kind = 2 [json_name = "kind"]; + * @param value The bytes for kind to set. + * @return This builder for chaining. + */ + public Builder setKindBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + kind_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object fromEnd_ = ""; + /** + *
+     * First feature reference resolved from the owner.
+     * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return The fromEnd. + */ + public java.lang.String getFromEnd() { + java.lang.Object ref = fromEnd_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + fromEnd_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * First feature reference resolved from the owner.
+     * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return The bytes for fromEnd. + */ + public com.google.protobuf.ByteString + getFromEndBytes() { + java.lang.Object ref = fromEnd_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + fromEnd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * First feature reference resolved from the owner.
+     * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @param value The fromEnd to set. + * @return This builder for chaining. + */ + public Builder setFromEnd( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + fromEnd_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * First feature reference resolved from the owner.
+     * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return This builder for chaining. + */ + public Builder clearFromEnd() { + fromEnd_ = getDefaultInstance().getFromEnd(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + *
+     * First feature reference resolved from the owner.
+     * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @param value The bytes for fromEnd to set. + * @return This builder for chaining. + */ + public Builder setFromEndBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + fromEnd_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private java.lang.Object toEnd_ = ""; + /** + *
+     * Second feature reference resolved from the owner.
+     * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return The toEnd. + */ + public java.lang.String getToEnd() { + java.lang.Object ref = toEnd_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + toEnd_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Second feature reference resolved from the owner.
+     * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return The bytes for toEnd. + */ + public com.google.protobuf.ByteString + getToEndBytes() { + java.lang.Object ref = toEnd_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + toEnd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Second feature reference resolved from the owner.
+     * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @param value The toEnd to set. + * @return This builder for chaining. + */ + public Builder setToEnd( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + toEnd_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * Second feature reference resolved from the owner.
+     * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return This builder for chaining. + */ + public Builder clearToEnd() { + toEnd_ = getDefaultInstance().getToEnd(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + /** + *
+     * Second feature reference resolved from the owner.
+     * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @param value The bytes for toEnd to set. + * @return This builder for chaining. + */ + public Builder setToEndBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + toEnd_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + private java.lang.Object name_ = ""; + /** + *
+     * Optional declared name.
+     * 
+ * + * string name = 5 [json_name = "name"]; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Optional declared name.
+     * 
+ * + * string name = 5 [json_name = "name"]; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Optional declared name.
+     * 
+ * + * string name = 5 [json_name = "name"]; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + name_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+     * Optional declared name.
+     * 
+ * + * string name = 5 [json_name = "name"]; + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + /** + *
+     * Optional declared name.
+     * 
+ * + * string name = 5 [json_name = "name"]; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + private java.lang.Object type_ = ""; + /** + *
+     * Optional typing target, legal only for typed connection kinds.
+     * 
+ * + * string type = 6 [json_name = "type"]; + * @return The type. + */ + public java.lang.String getType() { + java.lang.Object ref = type_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + type_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Optional typing target, legal only for typed connection kinds.
+     * 
+ * + * string type = 6 [json_name = "type"]; + * @return The bytes for type. + */ + public com.google.protobuf.ByteString + getTypeBytes() { + java.lang.Object ref = type_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + type_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Optional typing target, legal only for typed connection kinds.
+     * 
+ * + * string type = 6 [json_name = "type"]; + * @param value The type to set. + * @return This builder for chaining. + */ + public Builder setType( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + type_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + *
+     * Optional typing target, legal only for typed connection kinds.
+     * 
+ * + * string type = 6 [json_name = "type"]; + * @return This builder for chaining. + */ + public Builder clearType() { + type_ = getDefaultInstance().getType(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + return this; + } + /** + *
+     * Optional typing target, legal only for typed connection kinds.
+     * 
+ * + * string type = 6 [json_name = "type"]; + * @param value The bytes for type to set. + * @return This builder for chaining. + */ + public Builder setTypeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + type_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:sysml.AddConnectionEdit) + } + + // @@protoc_insertion_point(class_scope:sysml.AddConnectionEdit) + private static final org.openmbee.opensysml.proto.AddConnectionEdit DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.openmbee.opensysml.proto.AddConnectionEdit(); + } + + public static org.openmbee.opensysml.proto.AddConnectionEdit getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AddConnectionEdit parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEdit getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/AddConnectionEditOrBuilder.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/AddConnectionEditOrBuilder.java new file mode 100644 index 0000000000..22ac103c73 --- /dev/null +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/AddConnectionEditOrBuilder.java @@ -0,0 +1,134 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: sysml.proto +// Protobuf Java Version: 4.33.1 + +package org.openmbee.opensysml.proto; + +@com.google.protobuf.Generated +public interface AddConnectionEditOrBuilder extends + // @@protoc_insertion_point(interface_extends:sysml.AddConnectionEdit) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Namespace FQN receiving the usage; empty means the document root.
+   * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return The owner. + */ + java.lang.String getOwner(); + /** + *
+   * Namespace FQN receiving the usage; empty means the document root.
+   * 
+ * + * string owner = 1 [json_name = "owner"]; + * @return The bytes for owner. + */ + com.google.protobuf.ByteString + getOwnerBytes(); + + /** + *
+   * Usage kind: SysML connection, interface, allocation, binding, flow,
+   * succession or transition; KerML connector, binding, flow or succession.
+   * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return The kind. + */ + java.lang.String getKind(); + /** + *
+   * Usage kind: SysML connection, interface, allocation, binding, flow,
+   * succession or transition; KerML connector, binding, flow or succession.
+   * 
+ * + * string kind = 2 [json_name = "kind"]; + * @return The bytes for kind. + */ + com.google.protobuf.ByteString + getKindBytes(); + + /** + *
+   * First feature reference resolved from the owner.
+   * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return The fromEnd. + */ + java.lang.String getFromEnd(); + /** + *
+   * First feature reference resolved from the owner.
+   * 
+ * + * string from_end = 3 [json_name = "fromEnd"]; + * @return The bytes for fromEnd. + */ + com.google.protobuf.ByteString + getFromEndBytes(); + + /** + *
+   * Second feature reference resolved from the owner.
+   * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return The toEnd. + */ + java.lang.String getToEnd(); + /** + *
+   * Second feature reference resolved from the owner.
+   * 
+ * + * string to_end = 4 [json_name = "toEnd"]; + * @return The bytes for toEnd. + */ + com.google.protobuf.ByteString + getToEndBytes(); + + /** + *
+   * Optional declared name.
+   * 
+ * + * string name = 5 [json_name = "name"]; + * @return The name. + */ + java.lang.String getName(); + /** + *
+   * Optional declared name.
+   * 
+ * + * string name = 5 [json_name = "name"]; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + *
+   * Optional typing target, legal only for typed connection kinds.
+   * 
+ * + * string type = 6 [json_name = "type"]; + * @return The type. + */ + java.lang.String getType(); + /** + *
+   * Optional typing target, legal only for typed connection kinds.
+   * 
+ * + * string type = 6 [json_name = "type"]; + * @return The bytes for type. + */ + com.google.protobuf.ByteString + getTypeBytes(); +} diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperation.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperation.java index 2afecb2739..adcff212fe 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperation.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperation.java @@ -58,6 +58,7 @@ public enum OperationCase ADD_MEMBER(3), DELETE(4), MOVE(5), + ADD_CONNECTION(6), OPERATION_NOT_SET(0); private final int value; private OperationCase(int value) { @@ -80,6 +81,7 @@ public static OperationCase forNumber(int value) { case 3: return ADD_MEMBER; case 4: return DELETE; case 5: return MOVE; + case 6: return ADD_CONNECTION; case 0: return OPERATION_NOT_SET; default: return null; } @@ -250,6 +252,37 @@ public org.openmbee.opensysml.proto.MoveEditOrBuilder getMoveOrBuilder() { return org.openmbee.opensysml.proto.MoveEdit.getDefaultInstance(); } + public static final int ADD_CONNECTION_FIELD_NUMBER = 6; + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + * @return Whether the addConnection field is set. + */ + @java.lang.Override + public boolean hasAddConnection() { + return operationCase_ == 6; + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + * @return The addConnection. + */ + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEdit getAddConnection() { + if (operationCase_ == 6) { + return (org.openmbee.opensysml.proto.AddConnectionEdit) operation_; + } + return org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEditOrBuilder getAddConnectionOrBuilder() { + if (operationCase_ == 6) { + return (org.openmbee.opensysml.proto.AddConnectionEdit) operation_; + } + return org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -279,6 +312,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (operationCase_ == 5) { output.writeMessage(5, (org.openmbee.opensysml.proto.MoveEdit) operation_); } + if (operationCase_ == 6) { + output.writeMessage(6, (org.openmbee.opensysml.proto.AddConnectionEdit) operation_); + } getUnknownFields().writeTo(output); } @@ -308,6 +344,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(5, (org.openmbee.opensysml.proto.MoveEdit) operation_); } + if (operationCase_ == 6) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, (org.openmbee.opensysml.proto.AddConnectionEdit) operation_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -345,6 +385,10 @@ public boolean equals(final java.lang.Object obj) { if (!getMove() .equals(other.getMove())) return false; break; + case 6: + if (!getAddConnection() + .equals(other.getAddConnection())) return false; + break; case 0: default: } @@ -380,6 +424,10 @@ public int hashCode() { hash = (37 * hash) + MOVE_FIELD_NUMBER; hash = (53 * hash) + getMove().hashCode(); break; + case 6: + hash = (37 * hash) + ADD_CONNECTION_FIELD_NUMBER; + hash = (53 * hash) + getAddConnection().hashCode(); + break; case 0: default: } @@ -533,6 +581,9 @@ public Builder clear() { if (moveBuilder_ != null) { moveBuilder_.clear(); } + if (addConnectionBuilder_ != null) { + addConnectionBuilder_.clear(); + } operationCase_ = 0; operation_ = null; return this; @@ -594,6 +645,10 @@ private void buildPartialOneofs(org.openmbee.opensysml.proto.EditOperation resul moveBuilder_ != null) { result.operation_ = moveBuilder_.build(); } + if (operationCase_ == 6 && + addConnectionBuilder_ != null) { + result.operation_ = addConnectionBuilder_.build(); + } } @java.lang.Override @@ -629,6 +684,10 @@ public Builder mergeFrom(org.openmbee.opensysml.proto.EditOperation other) { mergeMove(other.getMove()); break; } + case ADD_CONNECTION: { + mergeAddConnection(other.getAddConnection()); + break; + } case OPERATION_NOT_SET: { break; } @@ -694,6 +753,13 @@ public Builder mergeFrom( operationCase_ = 5; break; } // case 42 + case 50: { + input.readMessage( + internalGetAddConnectionFieldBuilder().getBuilder(), + extensionRegistry); + operationCase_ = 6; + break; + } // case 50 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -1436,6 +1502,148 @@ public org.openmbee.opensysml.proto.MoveEditOrBuilder getMoveOrBuilder() { return moveBuilder_; } + private com.google.protobuf.SingleFieldBuilder< + org.openmbee.opensysml.proto.AddConnectionEdit, org.openmbee.opensysml.proto.AddConnectionEdit.Builder, org.openmbee.opensysml.proto.AddConnectionEditOrBuilder> addConnectionBuilder_; + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + * @return Whether the addConnection field is set. + */ + @java.lang.Override + public boolean hasAddConnection() { + return operationCase_ == 6; + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + * @return The addConnection. + */ + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEdit getAddConnection() { + if (addConnectionBuilder_ == null) { + if (operationCase_ == 6) { + return (org.openmbee.opensysml.proto.AddConnectionEdit) operation_; + } + return org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } else { + if (operationCase_ == 6) { + return addConnectionBuilder_.getMessage(); + } + return org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + public Builder setAddConnection(org.openmbee.opensysml.proto.AddConnectionEdit value) { + if (addConnectionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + operation_ = value; + onChanged(); + } else { + addConnectionBuilder_.setMessage(value); + } + operationCase_ = 6; + return this; + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + public Builder setAddConnection( + org.openmbee.opensysml.proto.AddConnectionEdit.Builder builderForValue) { + if (addConnectionBuilder_ == null) { + operation_ = builderForValue.build(); + onChanged(); + } else { + addConnectionBuilder_.setMessage(builderForValue.build()); + } + operationCase_ = 6; + return this; + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + public Builder mergeAddConnection(org.openmbee.opensysml.proto.AddConnectionEdit value) { + if (addConnectionBuilder_ == null) { + if (operationCase_ == 6 && + operation_ != org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance()) { + operation_ = org.openmbee.opensysml.proto.AddConnectionEdit.newBuilder((org.openmbee.opensysml.proto.AddConnectionEdit) operation_) + .mergeFrom(value).buildPartial(); + } else { + operation_ = value; + } + onChanged(); + } else { + if (operationCase_ == 6) { + addConnectionBuilder_.mergeFrom(value); + } else { + addConnectionBuilder_.setMessage(value); + } + } + operationCase_ = 6; + return this; + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + public Builder clearAddConnection() { + if (addConnectionBuilder_ == null) { + if (operationCase_ == 6) { + operationCase_ = 0; + operation_ = null; + onChanged(); + } + } else { + if (operationCase_ == 6) { + operationCase_ = 0; + operation_ = null; + } + addConnectionBuilder_.clear(); + } + return this; + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + public org.openmbee.opensysml.proto.AddConnectionEdit.Builder getAddConnectionBuilder() { + return internalGetAddConnectionFieldBuilder().getBuilder(); + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + @java.lang.Override + public org.openmbee.opensysml.proto.AddConnectionEditOrBuilder getAddConnectionOrBuilder() { + if ((operationCase_ == 6) && (addConnectionBuilder_ != null)) { + return addConnectionBuilder_.getMessageOrBuilder(); + } else { + if (operationCase_ == 6) { + return (org.openmbee.opensysml.proto.AddConnectionEdit) operation_; + } + return org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } + } + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + private com.google.protobuf.SingleFieldBuilder< + org.openmbee.opensysml.proto.AddConnectionEdit, org.openmbee.opensysml.proto.AddConnectionEdit.Builder, org.openmbee.opensysml.proto.AddConnectionEditOrBuilder> + internalGetAddConnectionFieldBuilder() { + if (addConnectionBuilder_ == null) { + if (!(operationCase_ == 6)) { + operation_ = org.openmbee.opensysml.proto.AddConnectionEdit.getDefaultInstance(); + } + addConnectionBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.openmbee.opensysml.proto.AddConnectionEdit, org.openmbee.opensysml.proto.AddConnectionEdit.Builder, org.openmbee.opensysml.proto.AddConnectionEditOrBuilder>( + (org.openmbee.opensysml.proto.AddConnectionEdit) operation_, + getParentForChildren(), + isClean()); + operation_ = null; + } + operationCase_ = 6; + onChanged(); + return addConnectionBuilder_; + } + // @@protoc_insertion_point(builder_scope:sysml.EditOperation) } diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperationOrBuilder.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperationOrBuilder.java index b3b07ec3ad..c195e26de2 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperationOrBuilder.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/EditOperationOrBuilder.java @@ -85,5 +85,20 @@ public interface EditOperationOrBuilder extends */ org.openmbee.opensysml.proto.MoveEditOrBuilder getMoveOrBuilder(); + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + * @return Whether the addConnection field is set. + */ + boolean hasAddConnection(); + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + * @return The addConnection. + */ + org.openmbee.opensysml.proto.AddConnectionEdit getAddConnection(); + /** + * .sysml.AddConnectionEdit add_connection = 6 [json_name = "addConnection"]; + */ + org.openmbee.opensysml.proto.AddConnectionEditOrBuilder getAddConnectionOrBuilder(); + org.openmbee.opensysml.proto.EditOperation.OperationCase getOperationCase(); } diff --git a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/Sysml.java b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/Sysml.java index c0f9d525b8..6b1c3cbf1c 100644 --- a/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/Sysml.java +++ b/client/java/opensysml-client/src/main/java/org/openmbee/opensysml/proto/Sysml.java @@ -286,6 +286,11 @@ public static void registerAllExtensions( static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_sysml_AddMemberEdit_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_sysml_AddConnectionEdit_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_sysml_AddConnectionEdit_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_sysml_DeleteEdit_descriptor; static final @@ -832,315 +837,320 @@ public static void registerAllExtensions( "operations\030\002 \003(\0132\024.sysml.EditOperationR\n" + "operations\022\032\n\010document\030\003 \001(\tR\010document\022)" + "\n\020accept_documents\030\004 \001(\010R\017acceptDocument" + - "s\"\210\002\n\rEditOperation\0222\n\tset_value\030\001 \001(\0132\023" + + "s\"\313\002\n\rEditOperation\0222\n\tset_value\030\001 \001(\0132\023" + ".sysml.SetValueEditH\000R\010setValue\022+\n\006renam" + "e\030\002 \001(\0132\021.sysml.RenameEditH\000R\006rename\0225\n\n" + "add_member\030\003 \001(\0132\024.sysml.AddMemberEditH\000" + "R\taddMember\022+\n\006delete\030\004 \001(\0132\021.sysml.Dele" + "teEditH\000R\006delete\022%\n\004move\030\005 \001(\0132\017.sysml.M" + - "oveEditH\000R\004moveB\013\n\toperation\"\275\001\n\rAddMemb" + - "erEdit\022\024\n\005owner\030\001 \001(\tR\005owner\022\022\n\004kind\030\002 \001" + - "(\tR\004kind\022\022\n\004name\030\003 \001(\tR\004name\022\022\n\004type\030\004 \001" + - "(\tR\004type\022\"\n\014multiplicity\030\005 \001(\tR\014multipli" + - "city\022\024\n\005value\030\006 \001(\tR\005value\022 \n\013specialize" + - "s\030\007 \003(\tR\013specializes\">\n\nDeleteEdit\022\026\n\006ta" + - "rget\030\001 \001(\tR\006target\022\030\n\007cascade\030\002 \001(\010R\007cas" + - "cade\"8\n\010MoveEdit\022\026\n\006target\030\001 \001(\tR\006target" + - "\022\024\n\005owner\030\002 \001(\tR\005owner\"<\n\014SetValueEdit\022\026" + - "\n\006target\030\001 \001(\tR\006target\022\024\n\005value\030\002 \001(\tR\005v" + - "alue\"?\n\nRenameEdit\022\026\n\006target\030\001 \001(\tR\006targ" + - "et\022\031\n\010new_name\030\002 \001(\tR\007newName\"\350\002\n\022ApplyE" + - "ditsResponse\022\030\n\007content\030\001 \001(\tR\007content\022," + - "\n\007applied\030\002 \003(\0132\022.sysml.AppliedEditR\007app" + - "lied\022\024\n\005error\030\003 \001(\tR\005error\022,\n\007failure\030\004 " + - "\001(\0162\022.sysml.EditFailureR\007failure\0223\n\013diag" + - "nostics\030\005 \003(\0132\021.sysml.DiagnosticR\013diagno" + - "stics\022-\n\022referring_elements\030\006 \003(\tR\021refer" + - "ringElements\0223\n\tdocuments\030\007 \003(\0132\025.sysml." + - "EditedDocumentR\tdocuments\022-\n\treferrers\030\010" + - " \003(\0132\017.sysml.ReferrerR\treferrers\">\n\016Edit" + - "edDocument\022\022\n\004name\030\001 \001(\tR\004name\022\030\n\007conten" + - "t\030\002 \001(\tR\007content\":\n\010Referrer\022\022\n\004name\030\001 \001" + - "(\tR\004name\022\032\n\010document\030\002 \001(\tR\010document\"\320\001\n" + - "\013AppliedEdit\022\'\n\017operation_index\030\001 \001(\005R\016o" + - "perationIndex\022\026\n\006target\030\002 \001(\tR\006target\022\026\n" + - "\006offset\030\003 \001(\005R\006offset\022\026\n\006length\030\004 \001(\005R\006l" + - "ength\022\031\n\010old_text\030\005 \001(\tR\007oldText\022\031\n\010new_" + - "text\030\006 \001(\tR\007newText\022\032\n\010document\030\007 \001(\tR\010d" + - "ocument\"\375\003\n\nSymbolInfo\022\016\n\002id\030\001 \001(\tR\002id\022\022" + - "\n\004name\030\002 \001(\tR\004name\022\022\n\004kind\030\003 \001(\tR\004kind\022;" + - "\n\010metadata\030\004 \003(\0132\037.sysml.SymbolInfo.Meta" + - "dataEntryR\010metadata\022\033\n\tchild_ids\030\005 \003(\tR\010" + - "childIds\0224\n\nattributes\030\006 \003(\0132\024.sysml.Att" + - "ributeInfoR\nattributes\022,\n\ttype_info\030\007 \001(" + - "\0132\017.sysml.TypeInfoR\010typeInfo\022;\n\014multipli" + - "city\030\010 \001(\0132\027.sysml.MultiplicityInfoR\014mul" + - "tiplicity\022?\n\017specializations\030\t \003(\0132\025.sys" + - "ml.SpecializationR\017specializations\022>\n\033wi" + - "thheld_library_attributes\030\n \001(\005R\031withhel" + - "dLibraryAttributes\032;\n\rMetadataEntry\022\020\n\003k" + - "ey\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001\"" + - "~\n\016Specialization\022\022\n\004kind\030\001 \001(\tR\004kind\022\032\n" + - "\010declared\030\002 \001(\tR\010declared\022\033\n\ttarget_id\030\003" + - " \001(\tR\010targetId\022\037\n\013target_kind\030\004 \001(\tR\ntar" + - "getKind\"\345\001\n\010TypeInfo\022\032\n\010declared\030\001 \001(\tR\010" + - "declared\022\037\n\013resolved_id\030\002 \001(\tR\nresolvedI" + - "d\022#\n\rresolved_kind\030\003 \001(\tR\014resolvedKind\022\034" + - "\n\tprimitive\030\004 \001(\tR\tprimitive\022)\n\020primitiv" + - "e_source\030\005 \001(\tR\017primitiveSource\022\032\n\010quant" + - "ity\030\006 \001(\010R\010quantity\022\022\n\004unit\030\007 \001(\tR\004unit\"" + - ">\n\020MultiplicityInfo\022\024\n\005lower\030\001 \001(\tR\005lowe" + - "r\022\024\n\005upper\030\002 \001(\tR\005upper\"o\n\rAttributeInfo" + - "\022\022\n\004name\030\001 \001(\tR\004name\022\022\n\004type\030\002 \001(\tR\004type" + - "\022\"\n\005value\030\003 \001(\0132\014.sysml.ValueR\005value\022\022\n\004" + - "unit\030\004 \001(\tR\004unit\"\245\007\n\005Value\022\035\n\tint_value\030" + - "\001 \001(\003H\000R\010intValue\022\037\n\nreal_value\030\002 \001(\001H\000R" + - "\trealValue\022\037\n\nbool_value\030\003 \001(\010H\000R\tboolVa" + - "lue\022#\n\014string_value\030\004 \001(\tH\000R\013stringValue" + - "\022!\n\013instance_id\030\005 \001(\003H\000R\ninstanceId\0222\n\010s" + - "equence\030\006 \001(\0132\024.sysml.ValueSequenceH\000R\010s" + - "equence\022\024\n\004null\030\007 \001(\tH\000R\004null\022-\n\010quantit" + - "y\030\010 \001(\0132\017.sysml.QuantityH\000R\010quantity\0227\n\014" + - "enum_literal\030\t \001(\0132\022.sysml.EnumLiteralH\000" + - "R\013enumLiteral\022\026\n\005unset\030\n \001(\010H\000R\005unset\022*\n" + - "\007complex\030\013 \001(\0132\016.sysml.ComplexH\000R\007comple" + - "x\022$\n\005array\030\014 \001(\0132\014.sysml.ArrayH\000R\005array\022" + - "\'\n\006vector\030\r \001(\0132\r.sysml.VectorH\000R\006vector" + - "\022@\n\017vector_quantity\030\016 \001(\0132\025.sysml.Vector" + - "QuantityH\000R\016vectorQuantity\022@\n\017measuremen" + - "t_ref\030\017 \001(\0132\025.sysml.MeasurementRefH\000R\016me" + - "asurementRef\022\034\n\010infinity\030\020 \001(\010H\000R\010infini" + - "ty\022-\n\010function\030\021 \001(\0132\017.sysml.FunctionH\000R" + - "\010function\022#\n\003set\030\022 \001(\0132\017.sysml.ValueSetH" + - "\000R\003set\022@\n\017tensor_quantity\030\023 \001(\0132\025.sysml." + - "TensorQuantityH\000R\016tensorQuantity\0223\n\nmeta" + - "object\030\024 \001(\0132\021.sysml.MetaobjectH\000R\nmetao" + - "bject\0229\n\014undetermined\030\025 \001(\0132\023.sysml.Unde" + - "terminedH\000R\014undeterminedB\006\n\004kind\"N\n\nMeta" + - "object\022\035\n\nelement_id\030\001 \001(\tR\telementId\022!\n" + - "\014metaclass_id\030\002 \001(\tR\013metaclassId\"U\n\014Unde" + - "termined\022\026\n\006reason\030\001 \001(\tR\006reason\022-\n\005coun" + - "t\030\002 \001(\0132\027.sysml.MultiplicityInfoR\005count\"" + - "<\n\010Function\022\027\n\007calc_id\030\001 \001(\tR\006calcId\022\027\n\007" + - "self_id\030\002 \001(\003R\006selfId\"4\n\010ValueSet\022(\n\010ele" + - "ments\030\001 \003(\0132\014.sysml.ValueR\010elements\"a\n\016T" + - "ensorQuantity\022\036\n\ndimensions\030\001 \003(\003R\ndimen" + - "sions\022/\n\ncomponents\030\002 \003(\0132\017.sysml.Quanti" + - "tyR\ncomponents\"Q\n\005Array\022\036\n\ndimensions\030\001 " + - "\003(\003R\ndimensions\022(\n\010elements\030\002 \003(\0132\014.sysm" + - "l.ValueR\010elements\"6\n\006Vector\022,\n\ncomponent" + - "s\030\001 \003(\0132\014.sysml.ValueR\ncomponents\"A\n\016Vec" + - "torQuantity\022/\n\ncomponents\030\001 \003(\0132\017.sysml." + - "QuantityR\ncomponents\";\n\007Complex\022\022\n\004real\030" + - "\001 \001(\001R\004real\022\034\n\timaginary\030\002 \001(\001R\timaginar" + - "y\"\213\001\n\013EnumLiteral\022\035\n\nliteral_id\030\001 \001(\tR\tl" + - "iteralId\022%\n\016enumeration_id\030\002 \001(\tR\renumer" + - "ationId\022\022\n\004name\030\003 \001(\tR\004name\022\"\n\005value\030\004 \001" + - "(\0132\014.sysml.ValueR\005value\"9\n\rValueSequence" + - "\022(\n\010elements\030\001 \003(\0132\014.sysml.ValueR\010elemen" + - "ts\"\251\001\n\010Quantity\022%\n\rint_magnitude\030\001 \001(\003H\000" + - "R\014intMagnitude\022\'\n\016real_magnitude\030\002 \001(\001H\000" + - "R\rrealMagnitude\022\022\n\004unit\030\003 \001(\tR\004unit\022,\n\tu" + - "nit_term\030\004 \001(\0132\017.sysml.UnitTermR\010unitTer" + - "mB\013\n\tmagnitude\"k\n\016MeasurementRef\022\022\n\004unit" + - "\030\001 \001(\tR\004unit\022,\n\tunit_term\030\002 \001(\0132\017.sysml." + - "UnitTermR\010unitTerm\022\027\n\007unit_id\030\003 \001(\tR\006uni" + - "tId\"q\n\010UnitTerm\022\033\n\tscale_num\030\001 \001(\001R\010scal" + - "eNum\022\033\n\tscale_den\030\002 \001(\001R\010scaleDen\022+\n\007fac" + - "tors\030\003 \003(\0132\021.sysml.UnitFactorR\007factors\"A" + - "\n\nUnitFactor\022\027\n\007unit_id\030\001 \001(\tR\006unitId\022\032\n" + - "\010exponent\030\002 \001(\001R\010exponent\"w\n\nDiagnostic\022" + - "\032\n\010severity\030\001 \001(\tR\010severity\022\030\n\007message\030\002" + - " \001(\tR\007message\022\037\n\004span\030\003 \001(\0132\013.sysml.Span" + - "R\004span\022\022\n\004code\030\004 \001(\tR\004code\"\212\001\n\004Span\022\022\n\004f" + - "ile\030\001 \001(\tR\004file\022\035\n\nstart_line\030\002 \001(\005R\tsta" + - "rtLine\022\033\n\tstart_col\030\003 \001(\005R\010startCol\022\031\n\010e" + - "nd_line\030\004 \001(\005R\007endLine\022\027\n\007end_col\030\005 \001(\005R" + - "\006endCol\"\023\n\021ServerInfoRequest\"R\n\022ServerIn" + - "foResponse\022\030\n\007version\030\001 \001(\tR\007version\022\"\n\014" + - "capabilities\030\002 \003(\tR\014capabilities\"p\n\014Quer" + - "yRequest\022\035\n\nmodel_hash\030\001 \001(\tR\tmodelHash\022" + - "\"\n\005query\030\002 \001(\0132\014.sysml.QueryR\005query\022\035\n\no" + - "slc_query\030\003 \001(\tR\toslcQuery\"F\n\rQueryRespo" + - "nse\0225\n\010elements\030\001 \003(\0132\031.sysml.QueryResul" + - "tElementR\010elements\"^\n\005Query\022\024\n\005scope\030\001 \003" + - "(\tR\005scope\022\026\n\006select\030\002 \003(\tR\006select\022\'\n\005whe" + - "re\030\003 \001(\0132\021.sysml.ConstraintR\005where\"\222\001\n\nC" + - "onstraint\022:\n\tprimitive\030\001 \001(\0132\032.sysml.Pri" + - "mitiveConstraintH\000R\tprimitive\022:\n\tcomposi" + - "te\030\002 \001(\0132\032.sysml.CompositeConstraintH\000R\t" + - "compositeB\014\n\nconstraint\"\227\001\n\023PrimitiveCon" + - "straint\022\030\n\007inverse\030\001 \001(\010R\007inverse\022\032\n\010pro" + - "perty\030\002 \001(\tR\010property\0224\n\010operator\030\003 \001(\0162" + - "\030.sysml.PrimitiveOperatorR\010operator\022\024\n\005v" + - "alue\030\004 \003(\tR\005value\"~\n\023CompositeConstraint" + - "\0224\n\010operator\030\001 \001(\0162\030.sysml.CompositeOper" + - "atorR\010operator\0221\n\nconstraint\030\002 \003(\0132\021.sys" + - "ml.ConstraintR\nconstraint\"\302\001\n\022QueryResul" + - "tElement\022\016\n\002id\030\001 \001(\tR\002id\022\022\n\004type\030\002 \001(\tR\004" + - "type\022I\n\nproperties\030\003 \003(\0132).sysml.QueryRe" + - "sultElement.PropertiesEntryR\nproperties\032" + - "=\n\017PropertiesEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005" + - "value\030\002 \001(\tR\005value:\0028\001\"\220\001\n\nSweepRange\022\034\n" + - "\tparameter\030\001 \001(\tR\tparameter\022\"\n\005start\030\002 \001" + - "(\0132\014.sysml.ValueR\005start\022\036\n\003end\030\003 \001(\0132\014.s" + - "ysml.ValueR\003end\022 \n\004step\030\004 \001(\0132\014.sysml.Va" + - "lueR\004step\"\274\003\n\017RunSweepRequest\022\035\n\nmodel_h" + - "ash\030\001 \001(\tR\tmodelHash\022\033\n\tsymbol_id\030\002 \001(\tR" + - "\010symbolId\022*\n\021subject_symbol_id\030\003 \001(\tR\017su" + - "bjectSymbolId\022*\n\targuments\030\004 \003(\0132\014.sysml" + - ".ValueR\targuments\022S\n\017named_arguments\030\005 \003" + - "(\0132*.sysml.RunSweepRequest.NamedArgument" + - "sEntryR\016namedArguments\022)\n\006ranges\030\006 \003(\0132\021" + - ".sysml.SweepRangeR\006ranges\022\030\n\007samples\030\007 \001" + - "(\003R\007samples\022\022\n\004seed\030\010 \001(\004R\004seed\022\026\n\006engin" + - "e\030\t \001(\tR\006engine\032O\n\023NamedArgumentsEntry\022\020", - "\n\003key\030\001 \001(\tR\003key\022\"\n\005value\030\002 \001(\0132\014.sysml." + - "ValueR\005value:\0028\001\"\301\002\n\010SweepRow\022)\n\006inputs\030" + - "\001 \003(\0132\021.sysml.CalcOutputR\006inputs\022+\n\007outp" + - "uts\030\002 \003(\0132\021.sysml.CalcOutputR\007outputs\022*\n" + - "\010verdicts\030\003 \003(\0132\016.sysml.VerdictR\010verdict" + - "s\022%\n\016elapsed_micros\030\004 \001(\003R\relapsedMicros" + - "\022\024\n\005error\030\005 \001(\tR\005error\022;\n\016failure_reason" + - "\030\006 \001(\0162\024.sysml.FailureReasonR\rfailureRea" + - "son\0227\n\013evaluations\030\007 \003(\0132\025.sysml.CaseEva" + - "luationR\013evaluations\"\226\003\n\020RunSweepRespons" + - "e\022#\n\004rows\030\001 \003(\0132\017.sysml.SweepRowR\004rows\022\036" + - "\n\nparameters\030\002 \003(\tR\nparameters\022\030\n\007sample" + - "d\030\003 \001(\010R\007sampled\022\022\n\004seed\030\004 \001(\004R\004seed\022\024\n\005" + - "error\030\005 \001(\tR\005error\0223\n\013diagnostics\030\006 \003(\0132" + - "\021.sysml.DiagnosticR\013diagnostics\022;\n\016failu" + - "re_reason\030\007 \001(\0162\024.sysml.FailureReasonR\rf" + - "ailureReason\022-\n\tinstances\030\010 \003(\0132\017.sysml." + - "InstanceR\tinstances\022\026\n\006engine\030\t \001(\tR\006eng" + - "ine\022\032\n\010strength\030\n \001(\tR\010strength\022$\n\006bound" + - "s\030\013 \003(\0132\014.sysml.BoundR\006bounds\"\214\001\n\027RunDoc" + - "umentQueryRequest\022\035\n\nmodel_hash\030\001 \001(\tR\tm" + - "odelHash\022\031\n\010query_id\030\002 \001(\tR\007queryId\0227\n\010b" + - "indings\030\003 \003(\0132\033.sysml.DocumentQueryBindi" + - "ngR\010bindings\"b\n\024DocumentQueryBinding\022\034\n\t" + - "parameter\030\001 \001(\tR\tparameter\022,\n\006values\030\002 \003" + - "(\0132\024.sysml.DocumentValueR\006values\"\357\003\n\rDoc" + - "umentValue\022\037\n\nelement_id\030\001 \001(\tH\000R\telemen" + - "tId\022#\n\014string_value\030\002 \001(\tH\000R\013stringValue" + - "\022\035\n\tint_value\030\003 \001(\003H\000R\010intValue\022\037\n\nreal_" + - "value\030\004 \001(\001H\000R\trealValue\022\037\n\nbool_value\030\005" + - " \001(\010H\000R\tboolValue\022\034\n\010infinity\030\006 \001(\010H\000R\010i" + - "nfinity\022-\n\010quantity\030\010 \001(\0132\017.sysml.Quanti" + - "tyH\000R\010quantity\0222\n\007verdict\030\t \001(\0132\026.sysml." + - "DocumentVerdictH\000R\007verdict\022/\n\006object\030\n \001" + - "(\0132\025.sysml.DocumentObjectH\000R\006object\022,\n\005s" + - "tate\030\013 \001(\0132\024.sysml.DocumentStateH\000R\005stat" + - "e\022,\n\005event\030\014 \001(\0132\024.sysml.DocumentEventH\000" + - "R\005event\022!\n\014element_type\030\007 \001(\tR\013elementTy" + - "peB\006\n\004kind\"u\n\016DocumentObject\022\037\n\013instance" + - "_id\030\001 \001(\003R\ninstanceId\022\022\n\004path\030\002 \001(\tR\004pat" + - "h\022.\n\007element\030\003 \001(\0132\024.sysml.DocumentValue" + - "R\007element\"\365\001\n\017DocumentVerdict\0222\n\tasserti" + - "on\030\001 \001(\0132\024.sysml.DocumentValueR\tassertio" + - "n\022\022\n\004kind\030\002 \001(\tR\004kind\022\022\n\004text\030\003 \001(\tR\004tex" + - "t\022\022\n\004path\030\004 \001(\tR\004path\022\030\n\007verdict\030\005 \001(\tR\007" + - "verdict\022\034\n\tcondition\030\006 \001(\tR\tcondition\022\026\n" + - "\006reason\030\007 \001(\tR\006reason\022\"\n\014verification\030\010 " + - "\003(\tR\014verification\"\355\001\n\rDocumentState\022-\n\006o" + - "bject\030\001 \001(\0132\025.sysml.DocumentObjectR\006obje" + - "ct\022\030\n\007machine\030\002 \001(\tR\007machine\022\022\n\004name\030\003 \001" + - "(\tR\004name\022\035\n\nstate_path\030\004 \001(\tR\tstatePath\022" + - "*\n\005state\030\005 \001(\0132\024.sysml.DocumentValueR\005st" + - "ate\022\026\n\006region\030\006 \001(\tR\006region\022\034\n\tenclosing" + - "\030\007 \003(\tR\tenclosing\"\375\002\n\rDocumentEvent\022\022\n\004k" + - "ind\030\001 \001(\tR\004kind\022(\n\004time\030\002 \001(\0132\024.sysml.Do" + - "cumentValueR\004time\022-\n\006object\030\003 \001(\0132\025.sysm" + - "l.DocumentObjectR\006object\022\030\n\007machine\030\004 \001(" + - "\tR\007machine\022\024\n\005state\030\005 \001(\tR\005state\022\022\n\004from" + - "\030\006 \001(\tR\004from\022\016\n\002to\030\007 \001(\tR\002to\022-\n\006target\030\010" + - " \001(\0132\025.sysml.DocumentObjectR\006target\022\024\n\005e" + - "vent\030\t \001(\tR\005event\022\030\n\007payload\030\n \003(\tR\007payl" + - "oad\022\"\n\014alternatives\030\013 \003(\tR\014alternatives\022" + - "\024\n\005taken\030\014 \001(\tR\005taken\022\022\n\004text\030\r \001(\tR\004tex" + - "t\")\n\023DocumentQueryColumn\022\022\n\004name\030\001 \001(\tR\004" + - "name\"A\n\021DocumentQueryCell\022,\n\006values\030\001 \003(" + - "\0132\024.sysml.DocumentValueR\006values\"r\n\020Docum" + - "entQueryRow\022.\n\007element\030\001 \001(\0132\024.sysml.Doc" + - "umentValueR\007element\022.\n\005cells\030\002 \003(\0132\030.sys" + - "ml.DocumentQueryCellR\005cells\"}\n\030RunDocume" + - "ntQueryResponse\0224\n\007columns\030\001 \003(\0132\032.sysml" + - ".DocumentQueryColumnR\007columns\022+\n\004rows\030\002 " + - "\003(\0132\027.sysml.DocumentQueryRowR\004rows\"k\n\025Re" + - "nderDocumentRequest\022\035\n\nmodel_hash\030\001 \001(\tR" + - "\tmodelHash\022\037\n\013document_id\030\002 \001(\tR\ndocumen" + - "tId\022\022\n\004form\030\003 \001(\tR\004form\"H\n\026RenderDocumen" + - "tResponse\022\032\n\010markdown\030\001 \001(\tR\010markdown\022\022\n" + - "\004html\030\002 \001(\tR\004html*\223\001\n\rFailureReason\022\036\n\032F" + - "AILURE_REASON_UNSPECIFIED\020\000\022\035\n\031FAILURE_R" + - "EASON_EVALUATION\020\001\022\035\n\031FAILURE_REASON_WRO" + - "NG_KIND\020\002\022$\n FAILURE_REASON_AMBIGUOUS_SU" + - "BJECT\020\003*\214\005\n\013EditFailure\022\034\n\030EDIT_FAILURE_" + - "UNSPECIFIED\020\000\022\036\n\032EDIT_FAILURE_NO_OPERATI" + - "ONS\020\001\022\037\n\033EDIT_FAILURE_UNKNOWN_TARGET\020\002\022!" + - "\n\035EDIT_FAILURE_AMBIGUOUS_TARGET\020\003\022\033\n\027EDI" + - "T_FAILURE_NOT_VALUED\020\004\022\036\n\032EDIT_FAILURE_I" + - "NVALID_VALUE\020\005\022\035\n\031EDIT_FAILURE_INVALID_N" + - "AME\020\006\022\032\n\026EDIT_FAILURE_NOT_NAMED\020\007\022\"\n\036EDI" + - "T_FAILURE_RENAME_REFERENCED\020\010\022\"\n\036EDIT_FA" + - "ILURE_OVERLAPPING_EDITS\020\t\022\037\n\033EDIT_FAILUR" + - "E_RESULT_INVALID\020\n\022\036\n\032EDIT_FAILURE_OWNER" + - "_UNKNOWN\020\013\022$\n EDIT_FAILURE_OWNER_NOT_NAM" + - "ESPACE\020\014\022\035\n\031EDIT_FAILURE_ILLEGAL_KIND\020\r\022" + - "\"\n\036EDIT_FAILURE_MEMBER_NAME_TAKEN\020\016\022\"\n\036E" + - "DIT_FAILURE_DELETE_REFERENCED\020\017\022$\n EDIT_" + - "FAILURE_OWNER_INSIDE_TARGET\020\020\022 \n\034EDIT_FA" + - "ILURE_MOVE_REFERENCED\020\021\022%\n!EDIT_FAILURE_" + - "REFERENCED_ELSEWHERE\020\022*\222\001\n\021PrimitiveOper" + - "ator\022\"\n\036PRIMITIVE_OPERATOR_UNSPECIFIED\020\000" + - "\022\034\n\030PRIMITIVE_OPERATOR_EQUAL\020\001\022\036\n\032PRIMIT" + - "IVE_OPERATOR_GREATER\020\002\022\033\n\027PRIMITIVE_OPER" + - "ATOR_LESS\020\003*n\n\021CompositeOperator\022\"\n\036COMP" + - "OSITE_OPERATOR_UNSPECIFIED\020\000\022\032\n\026COMPOSIT" + - "E_OPERATOR_AND\020\001\022\031\n\025COMPOSITE_OPERATOR_O" + - "R\020\0022\277\014\n\014SysMLService\022D\n\rGetServerInfo\022\030." + - "sysml.ServerInfoRequest\032\031.sysml.ServerIn" + - "foResponse\022>\n\tParseFile\022\027.sysml.ParseFil" + - "eRequest\032\030.sysml.ParseFileResponse\022G\n\014Pa" + - "rseSources\022\032.sysml.ParseSourcesRequest\032\033" + - ".sysml.ParseSourcesResponse\022;\n\tGetSymbol" + - "\022\027.sysml.GetSymbolRequest\032\025.sysml.Symbol" + - "Response\022G\n\016GetDiagnostics\022\031.sysml.Diagn" + - "osticsRequest\032\032.sysml.DiagnosticsRespons" + - "e\022;\n\010Evaluate\022\026.sysml.EvaluateRequest\032\027." + - "sysml.EvaluateResponse\022D\n\013Instantiate\022\031." + - "sysml.InstantiateRequest\032\032.sysml.Instant" + - "iateResponse\022J\n\rExecuteAction\022\033.sysml.Ex" + - "ecuteActionRequest\032\034.sysml.ExecuteAction" + - "Response\022G\n\014ExecuteState\022\032.sysml.Execute" + - "StateRequest\032\033.sysml.ExecuteStateRespons" + - "e\0228\n\007Convert\022\025.sysml.ConvertRequest\032\026.sy" + - "sml.ConvertResponse\022A\n\nApplyEdits\022\030.sysm" + - "l.ApplyEditsRequest\032\031.sysml.ApplyEditsRe" + - "sponse\022S\n\020VerifyConstraint\022\036.sysml.Verif" + - "yConstraintRequest\032\037.sysml.VerifyConstra" + - "intResponse\022V\n\021VerifyRequirement\022\037.sysml" + - ".VerifyRequirementRequest\032 .sysml.Verify" + - "RequirementResponse\022Y\n\022VerifySatisfactio" + - "n\022 .sysml.VerifySatisfactionRequest\032!.sy" + - "sml.VerifySatisfactionResponse\022S\n\020Valida" + - "teInstance\022\036.sysml.ValidateInstanceReque" + - "st\032\037.sysml.ValidateInstanceResponse\022G\n\014E" + - "valuateCalc\022\032.sysml.EvaluateCalcRequest\032" + - "\033.sysml.EvaluateCalcResponse\022D\n\013RunAnaly" + - "sis\022\031.sysml.RunAnalysisRequest\032\032.sysml.R" + - "unAnalysisResponse\022;\n\010RunSweep\022\026.sysml.R" + - "unSweepRequest\032\027.sysml.RunSweepResponse\022" + - "D\n\013ListEngines\022\031.sysml.ListEnginesReques" + - "t\032\032.sysml.ListEnginesResponse\0222\n\005Query\022\023" + - ".sysml.QueryRequest\032\024.sysml.QueryRespons" + - "e\022S\n\020RunDocumentQuery\022\036.sysml.RunDocumen" + - "tQueryRequest\032\037.sysml.RunDocumentQueryRe" + - "sponse\022M\n\016RenderDocument\022\034.sysml.RenderD" + - "ocumentRequest\032\035.sysml.RenderDocumentRes" + - "ponseBJ\n\034org.openmbee.opensysml.protoP\001Z" + - "(github.com/Open-MBEE/OpenSysML/api/prot" + - "ob\006proto3" + "oveEditH\000R\004move\022A\n\016add_connection\030\006 \001(\0132" + + "\030.sysml.AddConnectionEditH\000R\raddConnecti" + + "onB\013\n\toperation\"\275\001\n\rAddMemberEdit\022\024\n\005own" + + "er\030\001 \001(\tR\005owner\022\022\n\004kind\030\002 \001(\tR\004kind\022\022\n\004n" + + "ame\030\003 \001(\tR\004name\022\022\n\004type\030\004 \001(\tR\004type\022\"\n\014m" + + "ultiplicity\030\005 \001(\tR\014multiplicity\022\024\n\005value" + + "\030\006 \001(\tR\005value\022 \n\013specializes\030\007 \003(\tR\013spec" + + "ializes\"\227\001\n\021AddConnectionEdit\022\024\n\005owner\030\001" + + " \001(\tR\005owner\022\022\n\004kind\030\002 \001(\tR\004kind\022\031\n\010from_" + + "end\030\003 \001(\tR\007fromEnd\022\025\n\006to_end\030\004 \001(\tR\005toEn" + + "d\022\022\n\004name\030\005 \001(\tR\004name\022\022\n\004type\030\006 \001(\tR\004typ" + + "e\">\n\nDeleteEdit\022\026\n\006target\030\001 \001(\tR\006target\022" + + "\030\n\007cascade\030\002 \001(\010R\007cascade\"8\n\010MoveEdit\022\026\n" + + "\006target\030\001 \001(\tR\006target\022\024\n\005owner\030\002 \001(\tR\005ow" + + "ner\"<\n\014SetValueEdit\022\026\n\006target\030\001 \001(\tR\006tar" + + "get\022\024\n\005value\030\002 \001(\tR\005value\"?\n\nRenameEdit\022" + + "\026\n\006target\030\001 \001(\tR\006target\022\031\n\010new_name\030\002 \001(" + + "\tR\007newName\"\350\002\n\022ApplyEditsResponse\022\030\n\007con" + + "tent\030\001 \001(\tR\007content\022,\n\007applied\030\002 \003(\0132\022.s" + + "ysml.AppliedEditR\007applied\022\024\n\005error\030\003 \001(\t" + + "R\005error\022,\n\007failure\030\004 \001(\0162\022.sysml.EditFai" + + "lureR\007failure\0223\n\013diagnostics\030\005 \003(\0132\021.sys" + + "ml.DiagnosticR\013diagnostics\022-\n\022referring_" + + "elements\030\006 \003(\tR\021referringElements\0223\n\tdoc" + + "uments\030\007 \003(\0132\025.sysml.EditedDocumentR\tdoc" + + "uments\022-\n\treferrers\030\010 \003(\0132\017.sysml.Referr" + + "erR\treferrers\">\n\016EditedDocument\022\022\n\004name\030" + + "\001 \001(\tR\004name\022\030\n\007content\030\002 \001(\tR\007content\":\n" + + "\010Referrer\022\022\n\004name\030\001 \001(\tR\004name\022\032\n\010documen" + + "t\030\002 \001(\tR\010document\"\320\001\n\013AppliedEdit\022\'\n\017ope" + + "ration_index\030\001 \001(\005R\016operationIndex\022\026\n\006ta" + + "rget\030\002 \001(\tR\006target\022\026\n\006offset\030\003 \001(\005R\006offs" + + "et\022\026\n\006length\030\004 \001(\005R\006length\022\031\n\010old_text\030\005" + + " \001(\tR\007oldText\022\031\n\010new_text\030\006 \001(\tR\007newText" + + "\022\032\n\010document\030\007 \001(\tR\010document\"\375\003\n\nSymbolI" + + "nfo\022\016\n\002id\030\001 \001(\tR\002id\022\022\n\004name\030\002 \001(\tR\004name\022" + + "\022\n\004kind\030\003 \001(\tR\004kind\022;\n\010metadata\030\004 \003(\0132\037." + + "sysml.SymbolInfo.MetadataEntryR\010metadata" + + "\022\033\n\tchild_ids\030\005 \003(\tR\010childIds\0224\n\nattribu" + + "tes\030\006 \003(\0132\024.sysml.AttributeInfoR\nattribu" + + "tes\022,\n\ttype_info\030\007 \001(\0132\017.sysml.TypeInfoR" + + "\010typeInfo\022;\n\014multiplicity\030\010 \001(\0132\027.sysml." + + "MultiplicityInfoR\014multiplicity\022?\n\017specia" + + "lizations\030\t \003(\0132\025.sysml.SpecializationR\017" + + "specializations\022>\n\033withheld_library_attr" + + "ibutes\030\n \001(\005R\031withheldLibraryAttributes\032" + + ";\n\rMetadataEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005va" + + "lue\030\002 \001(\tR\005value:\0028\001\"~\n\016Specialization\022\022" + + "\n\004kind\030\001 \001(\tR\004kind\022\032\n\010declared\030\002 \001(\tR\010de" + + "clared\022\033\n\ttarget_id\030\003 \001(\tR\010targetId\022\037\n\013t" + + "arget_kind\030\004 \001(\tR\ntargetKind\"\345\001\n\010TypeInf" + + "o\022\032\n\010declared\030\001 \001(\tR\010declared\022\037\n\013resolve" + + "d_id\030\002 \001(\tR\nresolvedId\022#\n\rresolved_kind\030" + + "\003 \001(\tR\014resolvedKind\022\034\n\tprimitive\030\004 \001(\tR\t" + + "primitive\022)\n\020primitive_source\030\005 \001(\tR\017pri" + + "mitiveSource\022\032\n\010quantity\030\006 \001(\010R\010quantity" + + "\022\022\n\004unit\030\007 \001(\tR\004unit\">\n\020MultiplicityInfo" + + "\022\024\n\005lower\030\001 \001(\tR\005lower\022\024\n\005upper\030\002 \001(\tR\005u" + + "pper\"o\n\rAttributeInfo\022\022\n\004name\030\001 \001(\tR\004nam" + + "e\022\022\n\004type\030\002 \001(\tR\004type\022\"\n\005value\030\003 \001(\0132\014.s" + + "ysml.ValueR\005value\022\022\n\004unit\030\004 \001(\tR\004unit\"\245\007" + + "\n\005Value\022\035\n\tint_value\030\001 \001(\003H\000R\010intValue\022\037" + + "\n\nreal_value\030\002 \001(\001H\000R\trealValue\022\037\n\nbool_" + + "value\030\003 \001(\010H\000R\tboolValue\022#\n\014string_value" + + "\030\004 \001(\tH\000R\013stringValue\022!\n\013instance_id\030\005 \001" + + "(\003H\000R\ninstanceId\0222\n\010sequence\030\006 \001(\0132\024.sys" + + "ml.ValueSequenceH\000R\010sequence\022\024\n\004null\030\007 \001" + + "(\tH\000R\004null\022-\n\010quantity\030\010 \001(\0132\017.sysml.Qua" + + "ntityH\000R\010quantity\0227\n\014enum_literal\030\t \001(\0132" + + "\022.sysml.EnumLiteralH\000R\013enumLiteral\022\026\n\005un" + + "set\030\n \001(\010H\000R\005unset\022*\n\007complex\030\013 \001(\0132\016.sy" + + "sml.ComplexH\000R\007complex\022$\n\005array\030\014 \001(\0132\014." + + "sysml.ArrayH\000R\005array\022\'\n\006vector\030\r \001(\0132\r.s" + + "ysml.VectorH\000R\006vector\022@\n\017vector_quantity" + + "\030\016 \001(\0132\025.sysml.VectorQuantityH\000R\016vectorQ" + + "uantity\022@\n\017measurement_ref\030\017 \001(\0132\025.sysml" + + ".MeasurementRefH\000R\016measurementRef\022\034\n\010inf" + + "inity\030\020 \001(\010H\000R\010infinity\022-\n\010function\030\021 \001(" + + "\0132\017.sysml.FunctionH\000R\010function\022#\n\003set\030\022 " + + "\001(\0132\017.sysml.ValueSetH\000R\003set\022@\n\017tensor_qu" + + "antity\030\023 \001(\0132\025.sysml.TensorQuantityH\000R\016t" + + "ensorQuantity\0223\n\nmetaobject\030\024 \001(\0132\021.sysm" + + "l.MetaobjectH\000R\nmetaobject\0229\n\014undetermin" + + "ed\030\025 \001(\0132\023.sysml.UndeterminedH\000R\014undeter" + + "minedB\006\n\004kind\"N\n\nMetaobject\022\035\n\nelement_i" + + "d\030\001 \001(\tR\telementId\022!\n\014metaclass_id\030\002 \001(\t" + + "R\013metaclassId\"U\n\014Undetermined\022\026\n\006reason\030" + + "\001 \001(\tR\006reason\022-\n\005count\030\002 \001(\0132\027.sysml.Mul" + + "tiplicityInfoR\005count\"<\n\010Function\022\027\n\007calc" + + "_id\030\001 \001(\tR\006calcId\022\027\n\007self_id\030\002 \001(\003R\006self" + + "Id\"4\n\010ValueSet\022(\n\010elements\030\001 \003(\0132\014.sysml" + + ".ValueR\010elements\"a\n\016TensorQuantity\022\036\n\ndi" + + "mensions\030\001 \003(\003R\ndimensions\022/\n\ncomponents" + + "\030\002 \003(\0132\017.sysml.QuantityR\ncomponents\"Q\n\005A" + + "rray\022\036\n\ndimensions\030\001 \003(\003R\ndimensions\022(\n\010" + + "elements\030\002 \003(\0132\014.sysml.ValueR\010elements\"6" + + "\n\006Vector\022,\n\ncomponents\030\001 \003(\0132\014.sysml.Val" + + "ueR\ncomponents\"A\n\016VectorQuantity\022/\n\ncomp" + + "onents\030\001 \003(\0132\017.sysml.QuantityR\ncomponent" + + "s\";\n\007Complex\022\022\n\004real\030\001 \001(\001R\004real\022\034\n\timag" + + "inary\030\002 \001(\001R\timaginary\"\213\001\n\013EnumLiteral\022\035" + + "\n\nliteral_id\030\001 \001(\tR\tliteralId\022%\n\016enumera" + + "tion_id\030\002 \001(\tR\renumerationId\022\022\n\004name\030\003 \001" + + "(\tR\004name\022\"\n\005value\030\004 \001(\0132\014.sysml.ValueR\005v" + + "alue\"9\n\rValueSequence\022(\n\010elements\030\001 \003(\0132" + + "\014.sysml.ValueR\010elements\"\251\001\n\010Quantity\022%\n\r" + + "int_magnitude\030\001 \001(\003H\000R\014intMagnitude\022\'\n\016r" + + "eal_magnitude\030\002 \001(\001H\000R\rrealMagnitude\022\022\n\004" + + "unit\030\003 \001(\tR\004unit\022,\n\tunit_term\030\004 \001(\0132\017.sy" + + "sml.UnitTermR\010unitTermB\013\n\tmagnitude\"k\n\016M" + + "easurementRef\022\022\n\004unit\030\001 \001(\tR\004unit\022,\n\tuni" + + "t_term\030\002 \001(\0132\017.sysml.UnitTermR\010unitTerm\022" + + "\027\n\007unit_id\030\003 \001(\tR\006unitId\"q\n\010UnitTerm\022\033\n\t" + + "scale_num\030\001 \001(\001R\010scaleNum\022\033\n\tscale_den\030\002" + + " \001(\001R\010scaleDen\022+\n\007factors\030\003 \003(\0132\021.sysml." + + "UnitFactorR\007factors\"A\n\nUnitFactor\022\027\n\007uni" + + "t_id\030\001 \001(\tR\006unitId\022\032\n\010exponent\030\002 \001(\001R\010ex" + + "ponent\"w\n\nDiagnostic\022\032\n\010severity\030\001 \001(\tR\010" + + "severity\022\030\n\007message\030\002 \001(\tR\007message\022\037\n\004sp" + + "an\030\003 \001(\0132\013.sysml.SpanR\004span\022\022\n\004code\030\004 \001(" + + "\tR\004code\"\212\001\n\004Span\022\022\n\004file\030\001 \001(\tR\004file\022\035\n\n" + + "start_line\030\002 \001(\005R\tstartLine\022\033\n\tstart_col" + + "\030\003 \001(\005R\010startCol\022\031\n\010end_line\030\004 \001(\005R\007endL" + + "ine\022\027\n\007end_col\030\005 \001(\005R\006endCol\"\023\n\021ServerIn" + + "foRequest\"R\n\022ServerInfoResponse\022\030\n\007versi" + + "on\030\001 \001(\tR\007version\022\"\n\014capabilities\030\002 \003(\tR" + + "\014capabilities\"p\n\014QueryRequest\022\035\n\nmodel_h" + + "ash\030\001 \001(\tR\tmodelHash\022\"\n\005query\030\002 \001(\0132\014.sy" + + "sml.QueryR\005query\022\035\n\noslc_query\030\003 \001(\tR\tos" + + "lcQuery\"F\n\rQueryResponse\0225\n\010elements\030\001 \003" + + "(\0132\031.sysml.QueryResultElementR\010elements\"" + + "^\n\005Query\022\024\n\005scope\030\001 \003(\tR\005scope\022\026\n\006select" + + "\030\002 \003(\tR\006select\022\'\n\005where\030\003 \001(\0132\021.sysml.Co" + + "nstraintR\005where\"\222\001\n\nConstraint\022:\n\tprimit" + + "ive\030\001 \001(\0132\032.sysml.PrimitiveConstraintH\000R" + + "\tprimitive\022:\n\tcomposite\030\002 \001(\0132\032.sysml.Co" + + "mpositeConstraintH\000R\tcompositeB\014\n\nconstr" + + "aint\"\227\001\n\023PrimitiveConstraint\022\030\n\007inverse\030" + + "\001 \001(\010R\007inverse\022\032\n\010property\030\002 \001(\tR\010proper" + + "ty\0224\n\010operator\030\003 \001(\0162\030.sysml.PrimitiveOp" + + "eratorR\010operator\022\024\n\005value\030\004 \003(\tR\005value\"~" + + "\n\023CompositeConstraint\0224\n\010operator\030\001 \001(\0162" + + "\030.sysml.CompositeOperatorR\010operator\0221\n\nc" + + "onstraint\030\002 \003(\0132\021.sysml.ConstraintR\ncons" + + "traint\"\302\001\n\022QueryResultElement\022\016\n\002id\030\001 \001(" + + "\tR\002id\022\022\n\004type\030\002 \001(\tR\004type\022I\n\nproperties\030" + + "\003 \003(\0132).sysml.QueryResultElement.Propert" + + "iesEntryR\nproperties\032=\n\017PropertiesEntry\022" + + "\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005value:" + + "\0028\001\"\220\001\n\nSweepRange\022\034\n\tparameter\030\001 \001(\tR\tp" + + "arameter\022\"\n\005start\030\002 \001(\0132\014.sysml.ValueR\005s" + + "tart\022\036\n\003end\030\003 \001(\0132\014.sysml.ValueR\003end\022 \n\004" + + "step\030\004 \001(\0132\014.sysml.ValueR\004step\"\274\003\n\017RunSw" + + "eepRequest\022\035\n\nmodel_hash\030\001 \001(\tR\tmodelHas" + + "h\022\033\n\tsymbol_id\030\002 \001(\tR\010symbolId\022*\n\021subjec" + + "t_symbol_id\030\003 \001(\tR\017subjectSymbolId\022*\n\tar" + + "guments\030\004 \003(\0132\014.sysml.ValueR\targuments\022S", + "\n\017named_arguments\030\005 \003(\0132*.sysml.RunSweep" + + "Request.NamedArgumentsEntryR\016namedArgume" + + "nts\022)\n\006ranges\030\006 \003(\0132\021.sysml.SweepRangeR\006" + + "ranges\022\030\n\007samples\030\007 \001(\003R\007samples\022\022\n\004seed" + + "\030\010 \001(\004R\004seed\022\026\n\006engine\030\t \001(\tR\006engine\032O\n\023" + + "NamedArgumentsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\"\n" + + "\005value\030\002 \001(\0132\014.sysml.ValueR\005value:\0028\001\"\301\002" + + "\n\010SweepRow\022)\n\006inputs\030\001 \003(\0132\021.sysml.CalcO" + + "utputR\006inputs\022+\n\007outputs\030\002 \003(\0132\021.sysml.C" + + "alcOutputR\007outputs\022*\n\010verdicts\030\003 \003(\0132\016.s" + + "ysml.VerdictR\010verdicts\022%\n\016elapsed_micros" + + "\030\004 \001(\003R\relapsedMicros\022\024\n\005error\030\005 \001(\tR\005er" + + "ror\022;\n\016failure_reason\030\006 \001(\0162\024.sysml.Fail" + + "ureReasonR\rfailureReason\0227\n\013evaluations\030" + + "\007 \003(\0132\025.sysml.CaseEvaluationR\013evaluation" + + "s\"\226\003\n\020RunSweepResponse\022#\n\004rows\030\001 \003(\0132\017.s" + + "ysml.SweepRowR\004rows\022\036\n\nparameters\030\002 \003(\tR" + + "\nparameters\022\030\n\007sampled\030\003 \001(\010R\007sampled\022\022\n" + + "\004seed\030\004 \001(\004R\004seed\022\024\n\005error\030\005 \001(\tR\005error\022" + + "3\n\013diagnostics\030\006 \003(\0132\021.sysml.DiagnosticR" + + "\013diagnostics\022;\n\016failure_reason\030\007 \001(\0162\024.s" + + "ysml.FailureReasonR\rfailureReason\022-\n\tins" + + "tances\030\010 \003(\0132\017.sysml.InstanceR\tinstances" + + "\022\026\n\006engine\030\t \001(\tR\006engine\022\032\n\010strength\030\n \001" + + "(\tR\010strength\022$\n\006bounds\030\013 \003(\0132\014.sysml.Bou" + + "ndR\006bounds\"\214\001\n\027RunDocumentQueryRequest\022\035" + + "\n\nmodel_hash\030\001 \001(\tR\tmodelHash\022\031\n\010query_i" + + "d\030\002 \001(\tR\007queryId\0227\n\010bindings\030\003 \003(\0132\033.sys" + + "ml.DocumentQueryBindingR\010bindings\"b\n\024Doc" + + "umentQueryBinding\022\034\n\tparameter\030\001 \001(\tR\tpa" + + "rameter\022,\n\006values\030\002 \003(\0132\024.sysml.Document" + + "ValueR\006values\"\357\003\n\rDocumentValue\022\037\n\neleme" + + "nt_id\030\001 \001(\tH\000R\telementId\022#\n\014string_value" + + "\030\002 \001(\tH\000R\013stringValue\022\035\n\tint_value\030\003 \001(\003" + + "H\000R\010intValue\022\037\n\nreal_value\030\004 \001(\001H\000R\treal" + + "Value\022\037\n\nbool_value\030\005 \001(\010H\000R\tboolValue\022\034" + + "\n\010infinity\030\006 \001(\010H\000R\010infinity\022-\n\010quantity" + + "\030\010 \001(\0132\017.sysml.QuantityH\000R\010quantity\0222\n\007v" + + "erdict\030\t \001(\0132\026.sysml.DocumentVerdictH\000R\007" + + "verdict\022/\n\006object\030\n \001(\0132\025.sysml.Document" + + "ObjectH\000R\006object\022,\n\005state\030\013 \001(\0132\024.sysml." + + "DocumentStateH\000R\005state\022,\n\005event\030\014 \001(\0132\024." + + "sysml.DocumentEventH\000R\005event\022!\n\014element_" + + "type\030\007 \001(\tR\013elementTypeB\006\n\004kind\"u\n\016Docum" + + "entObject\022\037\n\013instance_id\030\001 \001(\003R\ninstance" + + "Id\022\022\n\004path\030\002 \001(\tR\004path\022.\n\007element\030\003 \001(\0132" + + "\024.sysml.DocumentValueR\007element\"\365\001\n\017Docum" + + "entVerdict\0222\n\tassertion\030\001 \001(\0132\024.sysml.Do" + + "cumentValueR\tassertion\022\022\n\004kind\030\002 \001(\tR\004ki" + + "nd\022\022\n\004text\030\003 \001(\tR\004text\022\022\n\004path\030\004 \001(\tR\004pa" + + "th\022\030\n\007verdict\030\005 \001(\tR\007verdict\022\034\n\tconditio" + + "n\030\006 \001(\tR\tcondition\022\026\n\006reason\030\007 \001(\tR\006reas" + + "on\022\"\n\014verification\030\010 \003(\tR\014verification\"\355" + + "\001\n\rDocumentState\022-\n\006object\030\001 \001(\0132\025.sysml" + + ".DocumentObjectR\006object\022\030\n\007machine\030\002 \001(\t" + + "R\007machine\022\022\n\004name\030\003 \001(\tR\004name\022\035\n\nstate_p" + + "ath\030\004 \001(\tR\tstatePath\022*\n\005state\030\005 \001(\0132\024.sy" + + "sml.DocumentValueR\005state\022\026\n\006region\030\006 \001(\t" + + "R\006region\022\034\n\tenclosing\030\007 \003(\tR\tenclosing\"\375" + + "\002\n\rDocumentEvent\022\022\n\004kind\030\001 \001(\tR\004kind\022(\n\004" + + "time\030\002 \001(\0132\024.sysml.DocumentValueR\004time\022-" + + "\n\006object\030\003 \001(\0132\025.sysml.DocumentObjectR\006o" + + "bject\022\030\n\007machine\030\004 \001(\tR\007machine\022\024\n\005state" + + "\030\005 \001(\tR\005state\022\022\n\004from\030\006 \001(\tR\004from\022\016\n\002to\030" + + "\007 \001(\tR\002to\022-\n\006target\030\010 \001(\0132\025.sysml.Docume" + + "ntObjectR\006target\022\024\n\005event\030\t \001(\tR\005event\022\030" + + "\n\007payload\030\n \003(\tR\007payload\022\"\n\014alternatives" + + "\030\013 \003(\tR\014alternatives\022\024\n\005taken\030\014 \001(\tR\005tak" + + "en\022\022\n\004text\030\r \001(\tR\004text\")\n\023DocumentQueryC" + + "olumn\022\022\n\004name\030\001 \001(\tR\004name\"A\n\021DocumentQue" + + "ryCell\022,\n\006values\030\001 \003(\0132\024.sysml.DocumentV" + + "alueR\006values\"r\n\020DocumentQueryRow\022.\n\007elem" + + "ent\030\001 \001(\0132\024.sysml.DocumentValueR\007element" + + "\022.\n\005cells\030\002 \003(\0132\030.sysml.DocumentQueryCel" + + "lR\005cells\"}\n\030RunDocumentQueryResponse\0224\n\007" + + "columns\030\001 \003(\0132\032.sysml.DocumentQueryColum" + + "nR\007columns\022+\n\004rows\030\002 \003(\0132\027.sysml.Documen" + + "tQueryRowR\004rows\"k\n\025RenderDocumentRequest" + + "\022\035\n\nmodel_hash\030\001 \001(\tR\tmodelHash\022\037\n\013docum" + + "ent_id\030\002 \001(\tR\ndocumentId\022\022\n\004form\030\003 \001(\tR\004" + + "form\"H\n\026RenderDocumentResponse\022\032\n\010markdo" + + "wn\030\001 \001(\tR\010markdown\022\022\n\004html\030\002 \001(\tR\004html*\223" + + "\001\n\rFailureReason\022\036\n\032FAILURE_REASON_UNSPE" + + "CIFIED\020\000\022\035\n\031FAILURE_REASON_EVALUATION\020\001\022" + + "\035\n\031FAILURE_REASON_WRONG_KIND\020\002\022$\n FAILUR" + + "E_REASON_AMBIGUOUS_SUBJECT\020\003*\214\005\n\013EditFai" + + "lure\022\034\n\030EDIT_FAILURE_UNSPECIFIED\020\000\022\036\n\032ED" + + "IT_FAILURE_NO_OPERATIONS\020\001\022\037\n\033EDIT_FAILU" + + "RE_UNKNOWN_TARGET\020\002\022!\n\035EDIT_FAILURE_AMBI" + + "GUOUS_TARGET\020\003\022\033\n\027EDIT_FAILURE_NOT_VALUE" + + "D\020\004\022\036\n\032EDIT_FAILURE_INVALID_VALUE\020\005\022\035\n\031E" + + "DIT_FAILURE_INVALID_NAME\020\006\022\032\n\026EDIT_FAILU" + + "RE_NOT_NAMED\020\007\022\"\n\036EDIT_FAILURE_RENAME_RE" + + "FERENCED\020\010\022\"\n\036EDIT_FAILURE_OVERLAPPING_E" + + "DITS\020\t\022\037\n\033EDIT_FAILURE_RESULT_INVALID\020\n\022" + + "\036\n\032EDIT_FAILURE_OWNER_UNKNOWN\020\013\022$\n EDIT_" + + "FAILURE_OWNER_NOT_NAMESPACE\020\014\022\035\n\031EDIT_FA" + + "ILURE_ILLEGAL_KIND\020\r\022\"\n\036EDIT_FAILURE_MEM" + + "BER_NAME_TAKEN\020\016\022\"\n\036EDIT_FAILURE_DELETE_" + + "REFERENCED\020\017\022$\n EDIT_FAILURE_OWNER_INSID" + + "E_TARGET\020\020\022 \n\034EDIT_FAILURE_MOVE_REFERENC" + + "ED\020\021\022%\n!EDIT_FAILURE_REFERENCED_ELSEWHER" + + "E\020\022*\222\001\n\021PrimitiveOperator\022\"\n\036PRIMITIVE_O" + + "PERATOR_UNSPECIFIED\020\000\022\034\n\030PRIMITIVE_OPERA" + + "TOR_EQUAL\020\001\022\036\n\032PRIMITIVE_OPERATOR_GREATE" + + "R\020\002\022\033\n\027PRIMITIVE_OPERATOR_LESS\020\003*n\n\021Comp" + + "ositeOperator\022\"\n\036COMPOSITE_OPERATOR_UNSP" + + "ECIFIED\020\000\022\032\n\026COMPOSITE_OPERATOR_AND\020\001\022\031\n" + + "\025COMPOSITE_OPERATOR_OR\020\0022\277\014\n\014SysMLServic" + + "e\022D\n\rGetServerInfo\022\030.sysml.ServerInfoReq" + + "uest\032\031.sysml.ServerInfoResponse\022>\n\tParse" + + "File\022\027.sysml.ParseFileRequest\032\030.sysml.Pa" + + "rseFileResponse\022G\n\014ParseSources\022\032.sysml." + + "ParseSourcesRequest\032\033.sysml.ParseSources" + + "Response\022;\n\tGetSymbol\022\027.sysml.GetSymbolR" + + "equest\032\025.sysml.SymbolResponse\022G\n\016GetDiag" + + "nostics\022\031.sysml.DiagnosticsRequest\032\032.sys" + + "ml.DiagnosticsResponse\022;\n\010Evaluate\022\026.sys" + + "ml.EvaluateRequest\032\027.sysml.EvaluateRespo" + + "nse\022D\n\013Instantiate\022\031.sysml.InstantiateRe" + + "quest\032\032.sysml.InstantiateResponse\022J\n\rExe" + + "cuteAction\022\033.sysml.ExecuteActionRequest\032" + + "\034.sysml.ExecuteActionResponse\022G\n\014Execute" + + "State\022\032.sysml.ExecuteStateRequest\032\033.sysm" + + "l.ExecuteStateResponse\0228\n\007Convert\022\025.sysm" + + "l.ConvertRequest\032\026.sysml.ConvertResponse" + + "\022A\n\nApplyEdits\022\030.sysml.ApplyEditsRequest" + + "\032\031.sysml.ApplyEditsResponse\022S\n\020VerifyCon" + + "straint\022\036.sysml.VerifyConstraintRequest\032" + + "\037.sysml.VerifyConstraintResponse\022V\n\021Veri" + + "fyRequirement\022\037.sysml.VerifyRequirementR" + + "equest\032 .sysml.VerifyRequirementResponse" + + "\022Y\n\022VerifySatisfaction\022 .sysml.VerifySat" + + "isfactionRequest\032!.sysml.VerifySatisfact" + + "ionResponse\022S\n\020ValidateInstance\022\036.sysml." + + "ValidateInstanceRequest\032\037.sysml.Validate" + + "InstanceResponse\022G\n\014EvaluateCalc\022\032.sysml" + + ".EvaluateCalcRequest\032\033.sysml.EvaluateCal" + + "cResponse\022D\n\013RunAnalysis\022\031.sysml.RunAnal" + + "ysisRequest\032\032.sysml.RunAnalysisResponse\022" + + ";\n\010RunSweep\022\026.sysml.RunSweepRequest\032\027.sy" + + "sml.RunSweepResponse\022D\n\013ListEngines\022\031.sy" + + "sml.ListEnginesRequest\032\032.sysml.ListEngin" + + "esResponse\0222\n\005Query\022\023.sysml.QueryRequest" + + "\032\024.sysml.QueryResponse\022S\n\020RunDocumentQue" + + "ry\022\036.sysml.RunDocumentQueryRequest\032\037.sys" + + "ml.RunDocumentQueryResponse\022M\n\016RenderDoc" + + "ument\022\034.sysml.RenderDocumentRequest\032\035.sy" + + "sml.RenderDocumentResponseBJ\n\034org.openmb" + + "ee.opensysml.protoP\001Z(github.com/Open-MB" + + "EE/OpenSysML/api/protob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -1451,63 +1461,69 @@ public static void registerAllExtensions( internal_static_sysml_EditOperation_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_EditOperation_descriptor, - new java.lang.String[] { "SetValue", "Rename", "AddMember", "Delete", "Move", "Operation", }); + new java.lang.String[] { "SetValue", "Rename", "AddMember", "Delete", "Move", "AddConnection", "Operation", }); internal_static_sysml_AddMemberEdit_descriptor = getDescriptor().getMessageType(45); internal_static_sysml_AddMemberEdit_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_AddMemberEdit_descriptor, new java.lang.String[] { "Owner", "Kind", "Name", "Type", "Multiplicity", "Value", "Specializes", }); - internal_static_sysml_DeleteEdit_descriptor = + internal_static_sysml_AddConnectionEdit_descriptor = getDescriptor().getMessageType(46); + internal_static_sysml_AddConnectionEdit_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_sysml_AddConnectionEdit_descriptor, + new java.lang.String[] { "Owner", "Kind", "FromEnd", "ToEnd", "Name", "Type", }); + internal_static_sysml_DeleteEdit_descriptor = + getDescriptor().getMessageType(47); internal_static_sysml_DeleteEdit_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DeleteEdit_descriptor, new java.lang.String[] { "Target", "Cascade", }); internal_static_sysml_MoveEdit_descriptor = - getDescriptor().getMessageType(47); + getDescriptor().getMessageType(48); internal_static_sysml_MoveEdit_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_MoveEdit_descriptor, new java.lang.String[] { "Target", "Owner", }); internal_static_sysml_SetValueEdit_descriptor = - getDescriptor().getMessageType(48); + getDescriptor().getMessageType(49); internal_static_sysml_SetValueEdit_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_SetValueEdit_descriptor, new java.lang.String[] { "Target", "Value", }); internal_static_sysml_RenameEdit_descriptor = - getDescriptor().getMessageType(49); + getDescriptor().getMessageType(50); internal_static_sysml_RenameEdit_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RenameEdit_descriptor, new java.lang.String[] { "Target", "NewName", }); internal_static_sysml_ApplyEditsResponse_descriptor = - getDescriptor().getMessageType(50); + getDescriptor().getMessageType(51); internal_static_sysml_ApplyEditsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_ApplyEditsResponse_descriptor, new java.lang.String[] { "Content", "Applied", "Error", "Failure", "Diagnostics", "ReferringElements", "Documents", "Referrers", }); internal_static_sysml_EditedDocument_descriptor = - getDescriptor().getMessageType(51); + getDescriptor().getMessageType(52); internal_static_sysml_EditedDocument_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_EditedDocument_descriptor, new java.lang.String[] { "Name", "Content", }); internal_static_sysml_Referrer_descriptor = - getDescriptor().getMessageType(52); + getDescriptor().getMessageType(53); internal_static_sysml_Referrer_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Referrer_descriptor, new java.lang.String[] { "Name", "Document", }); internal_static_sysml_AppliedEdit_descriptor = - getDescriptor().getMessageType(53); + getDescriptor().getMessageType(54); internal_static_sysml_AppliedEdit_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_AppliedEdit_descriptor, new java.lang.String[] { "OperationIndex", "Target", "Offset", "Length", "OldText", "NewText", "Document", }); internal_static_sysml_SymbolInfo_descriptor = - getDescriptor().getMessageType(54); + getDescriptor().getMessageType(55); internal_static_sysml_SymbolInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_SymbolInfo_descriptor, @@ -1519,187 +1535,187 @@ public static void registerAllExtensions( internal_static_sysml_SymbolInfo_MetadataEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_sysml_Specialization_descriptor = - getDescriptor().getMessageType(55); + getDescriptor().getMessageType(56); internal_static_sysml_Specialization_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Specialization_descriptor, new java.lang.String[] { "Kind", "Declared", "TargetId", "TargetKind", }); internal_static_sysml_TypeInfo_descriptor = - getDescriptor().getMessageType(56); + getDescriptor().getMessageType(57); internal_static_sysml_TypeInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_TypeInfo_descriptor, new java.lang.String[] { "Declared", "ResolvedId", "ResolvedKind", "Primitive", "PrimitiveSource", "Quantity", "Unit", }); internal_static_sysml_MultiplicityInfo_descriptor = - getDescriptor().getMessageType(57); + getDescriptor().getMessageType(58); internal_static_sysml_MultiplicityInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_MultiplicityInfo_descriptor, new java.lang.String[] { "Lower", "Upper", }); internal_static_sysml_AttributeInfo_descriptor = - getDescriptor().getMessageType(58); + getDescriptor().getMessageType(59); internal_static_sysml_AttributeInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_AttributeInfo_descriptor, new java.lang.String[] { "Name", "Type", "Value", "Unit", }); internal_static_sysml_Value_descriptor = - getDescriptor().getMessageType(59); + getDescriptor().getMessageType(60); internal_static_sysml_Value_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Value_descriptor, new java.lang.String[] { "IntValue", "RealValue", "BoolValue", "StringValue", "InstanceId", "Sequence", "Null", "Quantity", "EnumLiteral", "Unset", "Complex", "Array", "Vector", "VectorQuantity", "MeasurementRef", "Infinity", "Function", "Set", "TensorQuantity", "Metaobject", "Undetermined", "Kind", }); internal_static_sysml_Metaobject_descriptor = - getDescriptor().getMessageType(60); + getDescriptor().getMessageType(61); internal_static_sysml_Metaobject_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Metaobject_descriptor, new java.lang.String[] { "ElementId", "MetaclassId", }); internal_static_sysml_Undetermined_descriptor = - getDescriptor().getMessageType(61); + getDescriptor().getMessageType(62); internal_static_sysml_Undetermined_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Undetermined_descriptor, new java.lang.String[] { "Reason", "Count", }); internal_static_sysml_Function_descriptor = - getDescriptor().getMessageType(62); + getDescriptor().getMessageType(63); internal_static_sysml_Function_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Function_descriptor, new java.lang.String[] { "CalcId", "SelfId", }); internal_static_sysml_ValueSet_descriptor = - getDescriptor().getMessageType(63); + getDescriptor().getMessageType(64); internal_static_sysml_ValueSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_ValueSet_descriptor, new java.lang.String[] { "Elements", }); internal_static_sysml_TensorQuantity_descriptor = - getDescriptor().getMessageType(64); + getDescriptor().getMessageType(65); internal_static_sysml_TensorQuantity_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_TensorQuantity_descriptor, new java.lang.String[] { "Dimensions", "Components", }); internal_static_sysml_Array_descriptor = - getDescriptor().getMessageType(65); + getDescriptor().getMessageType(66); internal_static_sysml_Array_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Array_descriptor, new java.lang.String[] { "Dimensions", "Elements", }); internal_static_sysml_Vector_descriptor = - getDescriptor().getMessageType(66); + getDescriptor().getMessageType(67); internal_static_sysml_Vector_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Vector_descriptor, new java.lang.String[] { "Components", }); internal_static_sysml_VectorQuantity_descriptor = - getDescriptor().getMessageType(67); + getDescriptor().getMessageType(68); internal_static_sysml_VectorQuantity_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_VectorQuantity_descriptor, new java.lang.String[] { "Components", }); internal_static_sysml_Complex_descriptor = - getDescriptor().getMessageType(68); + getDescriptor().getMessageType(69); internal_static_sysml_Complex_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Complex_descriptor, new java.lang.String[] { "Real", "Imaginary", }); internal_static_sysml_EnumLiteral_descriptor = - getDescriptor().getMessageType(69); + getDescriptor().getMessageType(70); internal_static_sysml_EnumLiteral_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_EnumLiteral_descriptor, new java.lang.String[] { "LiteralId", "EnumerationId", "Name", "Value", }); internal_static_sysml_ValueSequence_descriptor = - getDescriptor().getMessageType(70); + getDescriptor().getMessageType(71); internal_static_sysml_ValueSequence_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_ValueSequence_descriptor, new java.lang.String[] { "Elements", }); internal_static_sysml_Quantity_descriptor = - getDescriptor().getMessageType(71); + getDescriptor().getMessageType(72); internal_static_sysml_Quantity_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Quantity_descriptor, new java.lang.String[] { "IntMagnitude", "RealMagnitude", "Unit", "UnitTerm", "Magnitude", }); internal_static_sysml_MeasurementRef_descriptor = - getDescriptor().getMessageType(72); + getDescriptor().getMessageType(73); internal_static_sysml_MeasurementRef_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_MeasurementRef_descriptor, new java.lang.String[] { "Unit", "UnitTerm", "UnitId", }); internal_static_sysml_UnitTerm_descriptor = - getDescriptor().getMessageType(73); + getDescriptor().getMessageType(74); internal_static_sysml_UnitTerm_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_UnitTerm_descriptor, new java.lang.String[] { "ScaleNum", "ScaleDen", "Factors", }); internal_static_sysml_UnitFactor_descriptor = - getDescriptor().getMessageType(74); + getDescriptor().getMessageType(75); internal_static_sysml_UnitFactor_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_UnitFactor_descriptor, new java.lang.String[] { "UnitId", "Exponent", }); internal_static_sysml_Diagnostic_descriptor = - getDescriptor().getMessageType(75); + getDescriptor().getMessageType(76); internal_static_sysml_Diagnostic_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Diagnostic_descriptor, new java.lang.String[] { "Severity", "Message", "Span", "Code", }); internal_static_sysml_Span_descriptor = - getDescriptor().getMessageType(76); + getDescriptor().getMessageType(77); internal_static_sysml_Span_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Span_descriptor, new java.lang.String[] { "File", "StartLine", "StartCol", "EndLine", "EndCol", }); internal_static_sysml_ServerInfoRequest_descriptor = - getDescriptor().getMessageType(77); + getDescriptor().getMessageType(78); internal_static_sysml_ServerInfoRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_ServerInfoRequest_descriptor, new java.lang.String[] { }); internal_static_sysml_ServerInfoResponse_descriptor = - getDescriptor().getMessageType(78); + getDescriptor().getMessageType(79); internal_static_sysml_ServerInfoResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_ServerInfoResponse_descriptor, new java.lang.String[] { "Version", "Capabilities", }); internal_static_sysml_QueryRequest_descriptor = - getDescriptor().getMessageType(79); + getDescriptor().getMessageType(80); internal_static_sysml_QueryRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_QueryRequest_descriptor, new java.lang.String[] { "ModelHash", "Query", "OslcQuery", }); internal_static_sysml_QueryResponse_descriptor = - getDescriptor().getMessageType(80); + getDescriptor().getMessageType(81); internal_static_sysml_QueryResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_QueryResponse_descriptor, new java.lang.String[] { "Elements", }); internal_static_sysml_Query_descriptor = - getDescriptor().getMessageType(81); + getDescriptor().getMessageType(82); internal_static_sysml_Query_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Query_descriptor, new java.lang.String[] { "Scope", "Select", "Where", }); internal_static_sysml_Constraint_descriptor = - getDescriptor().getMessageType(82); + getDescriptor().getMessageType(83); internal_static_sysml_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_Constraint_descriptor, new java.lang.String[] { "Primitive", "Composite", "Constraint", }); internal_static_sysml_PrimitiveConstraint_descriptor = - getDescriptor().getMessageType(83); + getDescriptor().getMessageType(84); internal_static_sysml_PrimitiveConstraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_PrimitiveConstraint_descriptor, new java.lang.String[] { "Inverse", "Property", "Operator", "Value", }); internal_static_sysml_CompositeConstraint_descriptor = - getDescriptor().getMessageType(84); + getDescriptor().getMessageType(85); internal_static_sysml_CompositeConstraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_CompositeConstraint_descriptor, new java.lang.String[] { "Operator", "Constraint", }); internal_static_sysml_QueryResultElement_descriptor = - getDescriptor().getMessageType(85); + getDescriptor().getMessageType(86); internal_static_sysml_QueryResultElement_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_QueryResultElement_descriptor, @@ -1711,13 +1727,13 @@ public static void registerAllExtensions( internal_static_sysml_QueryResultElement_PropertiesEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_sysml_SweepRange_descriptor = - getDescriptor().getMessageType(86); + getDescriptor().getMessageType(87); internal_static_sysml_SweepRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_SweepRange_descriptor, new java.lang.String[] { "Parameter", "Start", "End", "Step", }); internal_static_sysml_RunSweepRequest_descriptor = - getDescriptor().getMessageType(87); + getDescriptor().getMessageType(88); internal_static_sysml_RunSweepRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RunSweepRequest_descriptor, @@ -1729,91 +1745,91 @@ public static void registerAllExtensions( internal_static_sysml_RunSweepRequest_NamedArgumentsEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_sysml_SweepRow_descriptor = - getDescriptor().getMessageType(88); + getDescriptor().getMessageType(89); internal_static_sysml_SweepRow_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_SweepRow_descriptor, new java.lang.String[] { "Inputs", "Outputs", "Verdicts", "ElapsedMicros", "Error", "FailureReason", "Evaluations", }); internal_static_sysml_RunSweepResponse_descriptor = - getDescriptor().getMessageType(89); + getDescriptor().getMessageType(90); internal_static_sysml_RunSweepResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RunSweepResponse_descriptor, new java.lang.String[] { "Rows", "Parameters", "Sampled", "Seed", "Error", "Diagnostics", "FailureReason", "Instances", "Engine", "Strength", "Bounds", }); internal_static_sysml_RunDocumentQueryRequest_descriptor = - getDescriptor().getMessageType(90); + getDescriptor().getMessageType(91); internal_static_sysml_RunDocumentQueryRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RunDocumentQueryRequest_descriptor, new java.lang.String[] { "ModelHash", "QueryId", "Bindings", }); internal_static_sysml_DocumentQueryBinding_descriptor = - getDescriptor().getMessageType(91); + getDescriptor().getMessageType(92); internal_static_sysml_DocumentQueryBinding_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentQueryBinding_descriptor, new java.lang.String[] { "Parameter", "Values", }); internal_static_sysml_DocumentValue_descriptor = - getDescriptor().getMessageType(92); + getDescriptor().getMessageType(93); internal_static_sysml_DocumentValue_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentValue_descriptor, new java.lang.String[] { "ElementId", "StringValue", "IntValue", "RealValue", "BoolValue", "Infinity", "Quantity", "Verdict", "Object", "State", "Event", "ElementType", "Kind", }); internal_static_sysml_DocumentObject_descriptor = - getDescriptor().getMessageType(93); + getDescriptor().getMessageType(94); internal_static_sysml_DocumentObject_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentObject_descriptor, new java.lang.String[] { "InstanceId", "Path", "Element", }); internal_static_sysml_DocumentVerdict_descriptor = - getDescriptor().getMessageType(94); + getDescriptor().getMessageType(95); internal_static_sysml_DocumentVerdict_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentVerdict_descriptor, new java.lang.String[] { "Assertion", "Kind", "Text", "Path", "Verdict", "Condition", "Reason", "Verification", }); internal_static_sysml_DocumentState_descriptor = - getDescriptor().getMessageType(95); + getDescriptor().getMessageType(96); internal_static_sysml_DocumentState_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentState_descriptor, new java.lang.String[] { "Object", "Machine", "Name", "StatePath", "State", "Region", "Enclosing", }); internal_static_sysml_DocumentEvent_descriptor = - getDescriptor().getMessageType(96); + getDescriptor().getMessageType(97); internal_static_sysml_DocumentEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentEvent_descriptor, new java.lang.String[] { "Kind", "Time", "Object", "Machine", "State", "From", "To", "Target", "Event", "Payload", "Alternatives", "Taken", "Text", }); internal_static_sysml_DocumentQueryColumn_descriptor = - getDescriptor().getMessageType(97); + getDescriptor().getMessageType(98); internal_static_sysml_DocumentQueryColumn_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentQueryColumn_descriptor, new java.lang.String[] { "Name", }); internal_static_sysml_DocumentQueryCell_descriptor = - getDescriptor().getMessageType(98); + getDescriptor().getMessageType(99); internal_static_sysml_DocumentQueryCell_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentQueryCell_descriptor, new java.lang.String[] { "Values", }); internal_static_sysml_DocumentQueryRow_descriptor = - getDescriptor().getMessageType(99); + getDescriptor().getMessageType(100); internal_static_sysml_DocumentQueryRow_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_DocumentQueryRow_descriptor, new java.lang.String[] { "Element", "Cells", }); internal_static_sysml_RunDocumentQueryResponse_descriptor = - getDescriptor().getMessageType(100); + getDescriptor().getMessageType(101); internal_static_sysml_RunDocumentQueryResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RunDocumentQueryResponse_descriptor, new java.lang.String[] { "Columns", "Rows", }); internal_static_sysml_RenderDocumentRequest_descriptor = - getDescriptor().getMessageType(101); + getDescriptor().getMessageType(102); internal_static_sysml_RenderDocumentRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RenderDocumentRequest_descriptor, new java.lang.String[] { "ModelHash", "DocumentId", "Form", }); internal_static_sysml_RenderDocumentResponse_descriptor = - getDescriptor().getMessageType(102); + getDescriptor().getMessageType(103); internal_static_sysml_RenderDocumentResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_sysml_RenderDocumentResponse_descriptor, diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java index 16856bf050..bb4641fc17 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/ApiIntegrationTest.java @@ -60,6 +60,7 @@ void theServiceAdvertisesTheCapabilitiesTheClientNegotiatesOn() { assertFalse(capabilities.serviceVersion().isBlank()); assertTrue(capabilities.has(Capabilities.EVALUATE_SUBJECT)); assertTrue(capabilities.has(Capabilities.TYPE_FACTS)); + assertTrue(capabilities.has(Capabilities.CONNECTION_AUTHORING)); } @Test diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/PublicTypesTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/PublicTypesTest.java index 0a474c66ee..540a887eab 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/PublicTypesTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/PublicTypesTest.java @@ -689,6 +689,30 @@ void theExploreEngineNeedsScheduleExploreBesideEngines() { } } + @Test + void addingAConnectionNeedsConnectionAuthoringBesideAuthoring() { + try (Connection limited = + new Connection( + new ConnectTransport("127.0.0.1:1", Encoding.PROTOBUF, Duration.ofSeconds(1)), + new Capabilities("dev", java.util.Set.of(Capabilities.APPLY_EDITS, Capabilities.AUTHORING)))) { + Model model = new Model(limited, "hash", List.of(), List.of()); + CapabilityException refused = + assertThrows( + CapabilityException.class, + () -> + model.applyEdits( + List.of( + new Edit.AddConnection( + "Demo::System", + "allocation", + "a", + "b", + Optional.empty(), + Optional.empty())))); + assertEquals(Capabilities.CONNECTION_AUTHORING, refused.capability()); + } + } + @Test void capabilitiesNegotiateOnNames() { Capabilities capabilities = diff --git a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java index 411efd6ad4..1c02d249d6 100644 --- a/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java +++ b/client/java/opensysml-client/src/test/java/org/openmbee/opensysml/internal/EditProtosTest.java @@ -75,6 +75,25 @@ void anAddMemberEditCarriesEveryFieldItNames() { assertEquals(List.of("Demo::A::y"), full.getAddMember().getSpecializesList()); } + @Test + void anAddConnectionEditCarriesItsEndsAndOptionalFields() { + var minimal = Protos.proto(Edit.AddConnection.of("Demo::System", "flow", "a.out", "b.in")); + assertEquals("Demo::System", minimal.getAddConnection().getOwner()); + assertEquals("flow", minimal.getAddConnection().getKind()); + assertEquals("a.out", minimal.getAddConnection().getFromEnd()); + assertEquals("b.in", minimal.getAddConnection().getToEnd()); + assertEquals("", minimal.getAddConnection().getName()); + assertEquals("", minimal.getAddConnection().getType()); + + var full = + Protos.proto( + Edit.AddConnection.of("Demo::System", "allocation", "a", "b") + .withName("alloc1") + .withType("AllocationType")); + assertEquals("alloc1", full.getAddConnection().getName()); + assertEquals("AllocationType", full.getAddConnection().getType()); + } + @Test void aDeleteEditCarriesItsCascadeAndAMoveEditItsOwner() { var delete = Protos.proto(new Edit.Delete("Demo::A", true)); diff --git a/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java b/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java index fff9efe54e..68c94b4265 100644 --- a/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java +++ b/client/java/opensysml-conformance/src/main/java/org/openmbee/opensysml/conformance/Api.java @@ -730,6 +730,19 @@ private static Edit edit(org.openmbee.opensysml.proto.EditOperation operation) { } yield member; } + case ADD_CONNECTION -> { + org.openmbee.opensysml.proto.AddConnectionEdit add = operation.getAddConnection(); + Edit.AddConnection connection = + Edit.AddConnection.of( + add.getOwner(), add.getKind(), add.getFromEnd(), add.getToEnd()); + if (!add.getName().isEmpty()) { + connection = connection.withName(add.getName()); + } + if (!add.getType().isEmpty()) { + connection = connection.withType(add.getType()); + } + yield connection; + } case DELETE -> new Edit.Delete(operation.getDelete().getTarget(), operation.getDelete().getCascade()); case MOVE -> diff --git a/client/node/src/generated/sysml_pb.ts b/client/node/src/generated/sysml_pb.ts index e9587f1efc..cdcaa8634f 100644 --- a/client/node/src/generated/sysml_pb.ts +++ b/client/node/src/generated/sysml_pb.ts @@ -10,7 +10,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file sysml.proto. */ export const file_sysml: GenFile = /*@__PURE__*/ - fileDesc("CgtzeXNtbC5wcm90bxIFc3lzbWwiuQIKB1ZlcmRpY3QSDAoEa2luZBgBIAEoCRISCgplbGVtZW50X2lkGAIgASgJEg8KB2VsZW1lbnQYAyABKAkSDQoFaG9sZHMYBCABKAgSEQoJY29uZGl0aW9uGAUgASgJEhMKC2luc3RhbmNlX2lkGAYgASgDEhgKEGluc3RhbmNlX3R5cGVfaWQYByABKAkSDQoFZXJyb3IYCCABKAkSLAoOZmFpbHVyZV9yZWFzb24YCSABKA4yFC5zeXNtbC5GYWlsdXJlUmVhc29uEhYKDnJlcXVpcmVtZW50X2lkGAogASgJEg4KBmVuZ2luZRgLIAEoCRIQCghzdHJlbmd0aBgMIAEoCRIcCgZib3VuZHMYDSADKAsyDC5zeXNtbC5Cb3VuZBIVCg1pbnN0YW5jZV9wYXRoGA4gASgJIjUKBUJvdW5kEgwKBG5hbWUYASABKAkSDQoFbGltaXQYAiABKAMSDwoHcmVhY2hlZBgDIAEoCCJrChdWZXJpZnlDb25zdHJhaW50UmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIZChFzdWJqZWN0X3N5bWJvbF9pZBgDIAEoCRIOCgZlbmdpbmUYBCABKAkilgEKGFZlcmlmeUNvbnN0cmFpbnRSZXNwb25zZRIfCgd2ZXJkaWN0GAEgASgLMg4uc3lzbWwuVmVyZGljdBIiCglpbnN0YW5jZXMYAiADKAsyDy5zeXNtbC5JbnN0YW5jZRINCgVlcnJvchgDIAEoCRImCgtkaWFnbm9zdGljcxgEIAMoCzIRLnN5c21sLkRpYWdub3N0aWMibAoYVmVyaWZ5UmVxdWlyZW1lbnRSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEQoJc3ltYm9sX2lkGAIgASgJEhkKEXN1YmplY3Rfc3ltYm9sX2lkGAMgASgJEg4KBmVuZ2luZRgEIAEoCSJtChNWZXJpZmljYXRpb25WZXJkaWN0Eg8KB2Nhc2VfaWQYASABKAkSDAoEa2luZBgCIAEoCRIOCgZkZXRhaWwYAyABKAkSDwoHc3ViY2FzZRgEIAEoCBIWCg5yZXF1aXJlbWVudF9pZBgFIAEoCSLSAQoZVmVyaWZ5UmVxdWlyZW1lbnRSZXNwb25zZRIfCgd2ZXJkaWN0GAEgASgLMg4uc3lzbWwuVmVyZGljdBIiCglpbnN0YW5jZXMYAiADKAsyDy5zeXNtbC5JbnN0YW5jZRINCgVlcnJvchgDIAEoCRImCgtkaWFnbm9zdGljcxgEIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSOQoVdmVyaWZpY2F0aW9uX3ZlcmRpY3RzGAUgAygLMhouc3lzbWwuVmVyaWZpY2F0aW9uVmVyZGljdCJSChlWZXJpZnlTYXRpc2ZhY3Rpb25SZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEQoJc3ltYm9sX2lkGAIgASgJEg4KBmVuZ2luZRgDIAEoCSKCAgoaVmVyaWZ5U2F0aXNmYWN0aW9uUmVzcG9uc2USIAoIdmVyZGljdHMYASADKAsyDi5zeXNtbC5WZXJkaWN0EiIKCWluc3RhbmNlcxgCIAMoCzIPLnN5c21sLkluc3RhbmNlEg0KBWVycm9yGAMgASgJEiYKC2RpYWdub3N0aWNzGAQgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIsCg5mYWlsdXJlX3JlYXNvbhgFIAEoDjIULnN5c21sLkZhaWx1cmVSZWFzb24SOQoVdmVyaWZpY2F0aW9uX3ZlcmRpY3RzGAYgAygLMhouc3lzbWwuVmVyaWZpY2F0aW9uVmVyZGljdCJQChdWYWxpZGF0ZUluc3RhbmNlUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIOCgZlbmdpbmUYAyABKAkisgIKGFZhbGlkYXRlSW5zdGFuY2VSZXNwb25zZRIgCgh2ZXJkaWN0cxgBIAMoCzIOLnN5c21sLlZlcmRpY3QSHwoHc3VtbWFyeRgCIAEoCzIOLnN5c21sLlZlcmRpY3QSIgoJaW5zdGFuY2VzGAMgAygLMg8uc3lzbWwuSW5zdGFuY2USDQoFZXJyb3IYBCABKAkSJgoLZGlhZ25vc3RpY3MYBSADKAsyES5zeXNtbC5EaWFnbm9zdGljEiwKDmZhaWx1cmVfcmVhc29uGAYgASgOMhQuc3lzbWwuRmFpbHVyZVJlYXNvbhI5ChV2ZXJpZmljYXRpb25fdmVyZGljdHMYByADKAsyGi5zeXNtbC5WZXJpZmljYXRpb25WZXJkaWN0Eg8KB2JvdW5kZWQYCCABKAgibQoTRXZhbHVhdGVDYWxjUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIfCglhcmd1bWVudHMYAyADKAsyDC5zeXNtbC5WYWx1ZRIOCgZlbmdpbmUYBCABKAki/QEKFEV2YWx1YXRlQ2FsY1Jlc3BvbnNlEhwKBnJlc3VsdBgBIAEoCzIMLnN5c21sLlZhbHVlEiIKB291dHB1dHMYAiADKAsyES5zeXNtbC5DYWxjT3V0cHV0Eg0KBWVycm9yGAMgASgJEiYKC2RpYWdub3N0aWNzGAQgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIsCg5mYWlsdXJlX3JlYXNvbhgFIAEoDjIULnN5c21sLkZhaWx1cmVSZWFzb24SDgoGZW5naW5lGAYgASgJEhAKCHN0cmVuZ3RoGAcgASgJEhwKBmJvdW5kcxgIIAMoCzIMLnN5c21sLkJvdW5kIjcKCkNhbGNPdXRwdXQSDAoEbmFtZRgBIAEoCRIbCgV2YWx1ZRgCIAEoCzIMLnN5c21sLlZhbHVlIpMBCg5DYXNlRXZhbHVhdGlvbhITCgtmdW5jdGlvbl9pZBgBIAEoCRIfCglhcmd1bWVudHMYAiADKAsyDC5zeXNtbC5WYWx1ZRIcCgZyZXN1bHQYAyABKAsyDC5zeXNtbC5WYWx1ZRINCgVlcnJvchgEIAEoCRIQCghzZWxlY3RlZBgFIAEoCBIMCgR0aWVkGAYgASgIIqYCChJSdW5BbmFseXNpc1JlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIRCglzeW1ib2xfaWQYAiABKAkSGQoRc3ViamVjdF9zeW1ib2xfaWQYAyABKAkSHwoJYXJndW1lbnRzGAQgAygLMgwuc3lzbWwuVmFsdWUSRgoPbmFtZWRfYXJndW1lbnRzGAUgAygLMi0uc3lzbWwuUnVuQW5hbHlzaXNSZXF1ZXN0Lk5hbWVkQXJndW1lbnRzRW50cnkSEAoIc2NoZWR1bGUYBiABKAkSDgoGZW5naW5lGAcgASgJGkMKE05hbWVkQXJndW1lbnRzRW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBItwDChNSdW5BbmFseXNpc1Jlc3BvbnNlEiIKB291dHB1dHMYASADKAsyES5zeXNtbC5DYWxjT3V0cHV0EiAKCHZlcmRpY3RzGAIgAygLMg4uc3lzbWwuVmVyZGljdBIiCglpbnN0YW5jZXMYAyADKAsyDy5zeXNtbC5JbnN0YW5jZRINCgVlcnJvchgEIAEoCRImCgtkaWFnbm9zdGljcxgFIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSLAoOZmFpbHVyZV9yZWFzb24YBiABKA4yFC5zeXNtbC5GYWlsdXJlUmVhc29uEjkKFXZlcmlmaWNhdGlvbl92ZXJkaWN0cxgHIAMoCzIaLnN5c21sLlZlcmlmaWNhdGlvblZlcmRpY3QSIAoIb3V0Y29tZXMYCCADKAsyDi5zeXNtbC5PdXRjb21lEi0KC2V4cGxvcmF0aW9uGAkgASgLMhguc3lzbWwuRXhwbG9yYXRpb25TdGF0dXMSKgoLZXZhbHVhdGlvbnMYCiADKAsyFS5zeXNtbC5DYXNlRXZhbHVhdGlvbhIOCgZlbmdpbmUYCyABKAkSEAoIc3RyZW5ndGgYDCABKAkSHAoGYm91bmRzGA0gAygLMgwuc3lzbWwuQm91bmQilwIKB091dGNvbWUSLAoHb3V0cHV0cxgBIAMoCzIbLnN5c21sLk91dGNvbWUuT3V0cHV0c0VudHJ5EhMKC2ZpbmFsX3N0YXRlGAIgASgJEhYKDnN0YXRlc192aXNpdGVkGAMgAygJEg0KBWVycm9yGAQgASgJEhYKDmxpbmVhcml6YXRpb25zGAUgASgFEg8KB3dpdG5lc3MYBiADKAkSJgoLZGlhZ25vc3RpY3MYByADKAsyES5zeXNtbC5EaWFnbm9zdGljEhMKC3Byb2JhYmlsaXR5GAggASgBGjwKDE91dHB1dHNFbnRyeRILCgNrZXkYASABKAkSGwoFdmFsdWUYAiABKAsyDC5zeXNtbC5WYWx1ZToCOAEilgEKEUV4cGxvcmF0aW9uU3RhdHVzEhAKCGNvbXBsZXRlGAEgASgIEgwKBHJ1bnMYAiABKAUSEwoLYnVkZ2V0c19oaXQYAyADKAkSEwoLcnVuc19idWRnZXQYBCABKAUSFAoMZGVwdGhfYnVkZ2V0GAUgASgFEiEKGXByb2JhYmlsaXRpZXNfbG93ZXJfYm91bmQYBiABKAgiFAoSTGlzdEVuZ2luZXNSZXF1ZXN0IvwBCgpFbmdpbmVJbmZvEgwKBG5hbWUYASABKAkSEQoJYXV0aG9yaXR5GAIgASgJEg8KB2Fuc3dlcnMYAyADKAkSDgoGYm91bmRzGAQgAygJEg8KB3Byb2Nlc3MYBSABKAkSFQoNcHJvY2Vzc19mb3VuZBgGIAEoCRINCgVyZWFkeRgHIAEoCBITCgt1bmF2YWlsYWJsZRgIIAEoCRIMCgRraW5kGAkgASgJEhAKCHByb3RvY29sGAogASgJEg4KBnNvdXJjZRgLIAEoCRIPCgdjb21tYW5kGAwgASgJEg8KB3ZlcnNpb24YDSABKAkSDgoGc2VydmVkGA4gASgIIjkKE0xpc3RFbmdpbmVzUmVzcG9uc2USIgoHZW5naW5lcxgBIAMoCzIRLnN5c21sLkVuZ2luZUluZm8ijAEKEFBhcnNlRmlsZVJlcXVlc3QSEwoJZmlsZV9wYXRoGAEgASgJSAASEQoHY29udGVudBgCIAEoCUgAEhgKDGNvbnRlbnRfaGFzaBgDIAEoCUICGAESEAoIbGFuZ3VhZ2UYBCABKAkSGgoSc3RyaWN0X2NvbmZvcm1hbmNlGAUgASgIQggKBnNvdXJjZSJiCg5Tb3VyY2VEb2N1bWVudBITCglmaWxlX3BhdGgYASABKAlIABIRCgdjb250ZW50GAIgASgJSAASEAoIbGFuZ3VhZ2UYAyABKAkSDAoEbmFtZRgEIAEoCUIICgZzb3VyY2UiWwoTUGFyc2VTb3VyY2VzUmVxdWVzdBIoCglkb2N1bWVudHMYASADKAsyFS5zeXNtbC5Tb3VyY2VEb2N1bWVudBIaChJzdHJpY3RfY29uZm9ybWFuY2UYAiABKAgigwEKFFBhcnNlU291cmNlc1Jlc3BvbnNlEhIKCm1vZGVsX2hhc2gYASABKAkSIAoFcm9vdHMYAiADKAsyES5zeXNtbC5TeW1ib2xJbmZvEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxINCgVlcnJvchgEIAEoCSJ/ChFQYXJzZUZpbGVSZXNwb25zZRISCgptb2RlbF9oYXNoGAEgASgJEh8KBHJvb3QYAiABKAsyES5zeXNtbC5TeW1ib2xJbmZvEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxINCgVlcnJvchgEIAEoCSI5ChBHZXRTeW1ib2xSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEQoJc3ltYm9sX2lkGAIgASgJIkIKDlN5bWJvbFJlc3BvbnNlEiEKBnN5bWJvbBgBIAEoCzIRLnN5c21sLlN5bWJvbEluZm8SDQoFZXJyb3IYAiABKAkiKAoSRGlhZ25vc3RpY3NSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkiTAoTRGlhZ25vc3RpY3NSZXNwb25zZRImCgtkaWFnbm9zdGljcxgBIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSDQoFZXJyb3IYAiABKAkibwoPRXZhbHVhdGVSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEgoKZXhwcmVzc2lvbhgCIAEoCRIZChFjb250ZXh0X3N5bWJvbF9pZBgDIAEoCRIZChFzdWJqZWN0X3N5bWJvbF9pZBgEIAEoCSJnChBFdmFsdWF0ZVJlc3BvbnNlEhwKBnJlc3VsdBgBIAEoCzIMLnN5c21sLlZhbHVlEg0KBWVycm9yGAIgASgJEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYyLCAQoISW5zdGFuY2USCgoCaWQYASABKAMSFgoOdHlwZV9zeW1ib2xfaWQYAiABKAkSOgoOZmVhdHVyZV92YWx1ZXMYBCADKAsyIi5zeXNtbC5JbnN0YW5jZS5GZWF0dXJlVmFsdWVzRW50cnkaSQoSRmVhdHVyZVZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnN5c21sLkZlYXR1cmVWYWx1ZToCOAFKBAgDEARSBXNsb3RzIoQBCgxGZWF0dXJlVmFsdWUSFAoMZmVhdHVyZV9uYW1lGAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWUSHAoGdmFsdWVzGAMgAygLMgwuc3lzbWwuVmFsdWUSFAoMbWF0ZXJpYWxpemVkGAQgASgIEg0KBWVycm9yGAUgASgJIjsKEkluc3RhbnRpYXRlUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCSKTAQoTSW5zdGFudGlhdGVSZXNwb25zZRIhCghpbnN0YW5jZRgBIAEoCzIPLnN5c21sLkluc3RhbmNlEg0KBWVycm9yGAIgASgJEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIiCglpbnN0YW5jZXMYBCADKAsyDy5zeXNtbC5JbnN0YW5jZSLpAQoURXhlY3V0ZUFjdGlvblJlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIYChBhY3Rpb25fc3ltYm9sX2lkGAIgASgJEjcKBmlucHV0cxgDIAMoCzInLnN5c21sLkV4ZWN1dGVBY3Rpb25SZXF1ZXN0LklucHV0c0VudHJ5EhAKCHNjaGVkdWxlGAQgASgJEhsKE3BlcmZvcm1lcl9zeW1ib2xfaWQYBSABKAkaOwoLSW5wdXRzRW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBIq0CChVFeGVjdXRlQWN0aW9uUmVzcG9uc2USOgoHb3V0cHV0cxgBIAMoCzIpLnN5c21sLkV4ZWN1dGVBY3Rpb25SZXNwb25zZS5PdXRwdXRzRW50cnkSDQoFZXJyb3IYAiABKAkSJgoLZGlhZ25vc3RpY3MYAyADKAsyES5zeXNtbC5EaWFnbm9zdGljEiAKCG91dGNvbWVzGAQgAygLMg4uc3lzbWwuT3V0Y29tZRItCgtleHBsb3JhdGlvbhgFIAEoCzIYLnN5c21sLkV4cGxvcmF0aW9uU3RhdHVzEhIKCmZpbmFsX3RpbWUYBiABKAEaPAoMT3V0cHV0c0VudHJ5EgsKA2tleRgBIAEoCRIbCgV2YWx1ZRgCIAEoCzIMLnN5c21sLlZhbHVlOgI4ASKJAQoTRXhlY3V0ZVN0YXRlUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEh8KF3N0YXRlX21hY2hpbmVfc3ltYm9sX2lkGAIgASgJEg4KBmV2ZW50cxgDIAMoCRIQCghzY2hlZHVsZRgEIAEoCRIbChNwZXJmb3JtZXJfc3ltYm9sX2lkGAUgASgJItMCChRFeGVjdXRlU3RhdGVSZXNwb25zZRIWCg5zdGF0ZXNfdmlzaXRlZBgBIAMoCRJECg1maW5hbF9jb250ZXh0GAIgAygLMi0uc3lzbWwuRXhlY3V0ZVN0YXRlUmVzcG9uc2UuRmluYWxDb250ZXh0RW50cnkSDQoFZXJyb3IYAyABKAkSJgoLZGlhZ25vc3RpY3MYBCADKAsyES5zeXNtbC5EaWFnbm9zdGljEiAKCG91dGNvbWVzGAUgAygLMg4uc3lzbWwuT3V0Y29tZRItCgtleHBsb3JhdGlvbhgGIAEoCzIYLnN5c21sLkV4cGxvcmF0aW9uU3RhdHVzEhIKCmZpbmFsX3RpbWUYByABKAEaQQoRRmluYWxDb250ZXh0RW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBIqABCg5Db252ZXJ0UmVxdWVzdBITCglmaWxlX3BhdGgYASABKAlIABIRCgdjb250ZW50GAIgASgJSAASFAoKbW9kZWxfaGFzaBgGIAEoCUgAEhMKC2Zyb21fZm9ybWF0GAMgASgJEhEKCXRvX2Zvcm1hdBgEIAEoCRIeChZ0b2xlcmF0ZV9zeW50YXhfZXJyb3JzGAUgASgIQggKBnNvdXJjZSK0AQoPQ29udmVydFJlc3BvbnNlEg8KB2NvbnRlbnQYASABKAkSEwoLZnJvbV9mb3JtYXQYAiABKAkSEQoJdG9fZm9ybWF0GAMgASgJEg0KBWVycm9yGAQgASgJEiYKC2RpYWdub3N0aWNzGAUgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIUCgxleHBlcmltZW50YWwYBiABKAgSGwoTZXhwZXJpbWVudGFsX25vdGljZRgHIAEoCSJ9ChFBcHBseUVkaXRzUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEigKCm9wZXJhdGlvbnMYAiADKAsyFC5zeXNtbC5FZGl0T3BlcmF0aW9uEhAKCGRvY3VtZW50GAMgASgJEhgKEGFjY2VwdF9kb2N1bWVudHMYBCABKAgi3QEKDUVkaXRPcGVyYXRpb24SKAoJc2V0X3ZhbHVlGAEgASgLMhMuc3lzbWwuU2V0VmFsdWVFZGl0SAASIwoGcmVuYW1lGAIgASgLMhEuc3lzbWwuUmVuYW1lRWRpdEgAEioKCmFkZF9tZW1iZXIYAyABKAsyFC5zeXNtbC5BZGRNZW1iZXJFZGl0SAASIwoGZGVsZXRlGAQgASgLMhEuc3lzbWwuRGVsZXRlRWRpdEgAEh8KBG1vdmUYBSABKAsyDy5zeXNtbC5Nb3ZlRWRpdEgAQgsKCW9wZXJhdGlvbiKCAQoNQWRkTWVtYmVyRWRpdBINCgVvd25lchgBIAEoCRIMCgRraW5kGAIgASgJEgwKBG5hbWUYAyABKAkSDAoEdHlwZRgEIAEoCRIUCgxtdWx0aXBsaWNpdHkYBSABKAkSDQoFdmFsdWUYBiABKAkSEwoLc3BlY2lhbGl6ZXMYByADKAkiLQoKRGVsZXRlRWRpdBIOCgZ0YXJnZXQYASABKAkSDwoHY2FzY2FkZRgCIAEoCCIpCghNb3ZlRWRpdBIOCgZ0YXJnZXQYASABKAkSDQoFb3duZXIYAiABKAkiLQoMU2V0VmFsdWVFZGl0Eg4KBnRhcmdldBgBIAEoCRINCgV2YWx1ZRgCIAEoCSIuCgpSZW5hbWVFZGl0Eg4KBnRhcmdldBgBIAEoCRIQCghuZXdfbmFtZRgCIAEoCSKQAgoSQXBwbHlFZGl0c1Jlc3BvbnNlEg8KB2NvbnRlbnQYASABKAkSIwoHYXBwbGllZBgCIAMoCzISLnN5c21sLkFwcGxpZWRFZGl0Eg0KBWVycm9yGAMgASgJEiMKB2ZhaWx1cmUYBCABKA4yEi5zeXNtbC5FZGl0RmFpbHVyZRImCgtkaWFnbm9zdGljcxgFIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSGgoScmVmZXJyaW5nX2VsZW1lbnRzGAYgAygJEigKCWRvY3VtZW50cxgHIAMoCzIVLnN5c21sLkVkaXRlZERvY3VtZW50EiIKCXJlZmVycmVycxgIIAMoCzIPLnN5c21sLlJlZmVycmVyIi8KDkVkaXRlZERvY3VtZW50EgwKBG5hbWUYASABKAkSDwoHY29udGVudBgCIAEoCSIqCghSZWZlcnJlchIMCgRuYW1lGAEgASgJEhAKCGRvY3VtZW50GAIgASgJIowBCgtBcHBsaWVkRWRpdBIXCg9vcGVyYXRpb25faW5kZXgYASABKAUSDgoGdGFyZ2V0GAIgASgJEg4KBm9mZnNldBgDIAEoBRIOCgZsZW5ndGgYBCABKAUSEAoIb2xkX3RleHQYBSABKAkSEAoIbmV3X3RleHQYBiABKAkSEAoIZG9jdW1lbnQYByABKAki/QIKClN5bWJvbEluZm8SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRraW5kGAMgASgJEjEKCG1ldGFkYXRhGAQgAygLMh8uc3lzbWwuU3ltYm9sSW5mby5NZXRhZGF0YUVudHJ5EhEKCWNoaWxkX2lkcxgFIAMoCRIoCgphdHRyaWJ1dGVzGAYgAygLMhQuc3lzbWwuQXR0cmlidXRlSW5mbxIiCgl0eXBlX2luZm8YByABKAsyDy5zeXNtbC5UeXBlSW5mbxItCgxtdWx0aXBsaWNpdHkYCCABKAsyFy5zeXNtbC5NdWx0aXBsaWNpdHlJbmZvEi4KD3NwZWNpYWxpemF0aW9ucxgJIAMoCzIVLnN5c21sLlNwZWNpYWxpemF0aW9uEiMKG3dpdGhoZWxkX2xpYnJhcnlfYXR0cmlidXRlcxgKIAEoBRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiWAoOU3BlY2lhbGl6YXRpb24SDAoEa2luZBgBIAEoCRIQCghkZWNsYXJlZBgCIAEoCRIRCgl0YXJnZXRfaWQYAyABKAkSEwoLdGFyZ2V0X2tpbmQYBCABKAkilQEKCFR5cGVJbmZvEhAKCGRlY2xhcmVkGAEgASgJEhMKC3Jlc29sdmVkX2lkGAIgASgJEhUKDXJlc29sdmVkX2tpbmQYAyABKAkSEQoJcHJpbWl0aXZlGAQgASgJEhgKEHByaW1pdGl2ZV9zb3VyY2UYBSABKAkSEAoIcXVhbnRpdHkYBiABKAgSDAoEdW5pdBgHIAEoCSIwChBNdWx0aXBsaWNpdHlJbmZvEg0KBWxvd2VyGAEgASgJEg0KBXVwcGVyGAIgASgJIlYKDUF0dHJpYnV0ZUluZm8SDAoEbmFtZRgBIAEoCRIMCgR0eXBlGAIgASgJEhsKBXZhbHVlGAMgASgLMgwuc3lzbWwuVmFsdWUSDAoEdW5pdBgEIAEoCSLDBQoFVmFsdWUSEwoJaW50X3ZhbHVlGAEgASgDSAASFAoKcmVhbF92YWx1ZRgCIAEoAUgAEhQKCmJvb2xfdmFsdWUYAyABKAhIABIWCgxzdHJpbmdfdmFsdWUYBCABKAlIABIVCgtpbnN0YW5jZV9pZBgFIAEoA0gAEigKCHNlcXVlbmNlGAYgASgLMhQuc3lzbWwuVmFsdWVTZXF1ZW5jZUgAEg4KBG51bGwYByABKAlIABIjCghxdWFudGl0eRgIIAEoCzIPLnN5c21sLlF1YW50aXR5SAASKgoMZW51bV9saXRlcmFsGAkgASgLMhIuc3lzbWwuRW51bUxpdGVyYWxIABIPCgV1bnNldBgKIAEoCEgAEiEKB2NvbXBsZXgYCyABKAsyDi5zeXNtbC5Db21wbGV4SAASHQoFYXJyYXkYDCABKAsyDC5zeXNtbC5BcnJheUgAEh8KBnZlY3RvchgNIAEoCzINLnN5c21sLlZlY3RvckgAEjAKD3ZlY3Rvcl9xdWFudGl0eRgOIAEoCzIVLnN5c21sLlZlY3RvclF1YW50aXR5SAASMAoPbWVhc3VyZW1lbnRfcmVmGA8gASgLMhUuc3lzbWwuTWVhc3VyZW1lbnRSZWZIABISCghpbmZpbml0eRgQIAEoCEgAEiMKCGZ1bmN0aW9uGBEgASgLMg8uc3lzbWwuRnVuY3Rpb25IABIeCgNzZXQYEiABKAsyDy5zeXNtbC5WYWx1ZVNldEgAEjAKD3RlbnNvcl9xdWFudGl0eRgTIAEoCzIVLnN5c21sLlRlbnNvclF1YW50aXR5SAASJwoKbWV0YW9iamVjdBgUIAEoCzIRLnN5c21sLk1ldGFvYmplY3RIABIrCgx1bmRldGVybWluZWQYFSABKAsyEy5zeXNtbC5VbmRldGVybWluZWRIAEIGCgRraW5kIjYKCk1ldGFvYmplY3QSEgoKZWxlbWVudF9pZBgBIAEoCRIUCgxtZXRhY2xhc3NfaWQYAiABKAkiRgoMVW5kZXRlcm1pbmVkEg4KBnJlYXNvbhgBIAEoCRImCgVjb3VudBgCIAEoCzIXLnN5c21sLk11bHRpcGxpY2l0eUluZm8iLAoIRnVuY3Rpb24SDwoHY2FsY19pZBgBIAEoCRIPCgdzZWxmX2lkGAIgASgDIioKCFZhbHVlU2V0Eh4KCGVsZW1lbnRzGAEgAygLMgwuc3lzbWwuVmFsdWUiSQoOVGVuc29yUXVhbnRpdHkSEgoKZGltZW5zaW9ucxgBIAMoAxIjCgpjb21wb25lbnRzGAIgAygLMg8uc3lzbWwuUXVhbnRpdHkiOwoFQXJyYXkSEgoKZGltZW5zaW9ucxgBIAMoAxIeCghlbGVtZW50cxgCIAMoCzIMLnN5c21sLlZhbHVlIioKBlZlY3RvchIgCgpjb21wb25lbnRzGAEgAygLMgwuc3lzbWwuVmFsdWUiNQoOVmVjdG9yUXVhbnRpdHkSIwoKY29tcG9uZW50cxgBIAMoCzIPLnN5c21sLlF1YW50aXR5IioKB0NvbXBsZXgSDAoEcmVhbBgBIAEoARIRCglpbWFnaW5hcnkYAiABKAEiZAoLRW51bUxpdGVyYWwSEgoKbGl0ZXJhbF9pZBgBIAEoCRIWCg5lbnVtZXJhdGlvbl9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhsKBXZhbHVlGAQgASgLMgwuc3lzbWwuVmFsdWUiLwoNVmFsdWVTZXF1ZW5jZRIeCghlbGVtZW50cxgBIAMoCzIMLnN5c21sLlZhbHVlInwKCFF1YW50aXR5EhcKDWludF9tYWduaXR1ZGUYASABKANIABIYCg5yZWFsX21hZ25pdHVkZRgCIAEoAUgAEgwKBHVuaXQYAyABKAkSIgoJdW5pdF90ZXJtGAQgASgLMg8uc3lzbWwuVW5pdFRlcm1CCwoJbWFnbml0dWRlIlMKDk1lYXN1cmVtZW50UmVmEgwKBHVuaXQYASABKAkSIgoJdW5pdF90ZXJtGAIgASgLMg8uc3lzbWwuVW5pdFRlcm0SDwoHdW5pdF9pZBgDIAEoCSJUCghVbml0VGVybRIRCglzY2FsZV9udW0YASABKAESEQoJc2NhbGVfZGVuGAIgASgBEiIKB2ZhY3RvcnMYAyADKAsyES5zeXNtbC5Vbml0RmFjdG9yIi8KClVuaXRGYWN0b3ISDwoHdW5pdF9pZBgBIAEoCRIQCghleHBvbmVudBgCIAEoASJYCgpEaWFnbm9zdGljEhAKCHNldmVyaXR5GAEgASgJEg8KB21lc3NhZ2UYAiABKAkSGQoEc3BhbhgDIAEoCzILLnN5c21sLlNwYW4SDAoEY29kZRgEIAEoCSJeCgRTcGFuEgwKBGZpbGUYASABKAkSEgoKc3RhcnRfbGluZRgCIAEoBRIRCglzdGFydF9jb2wYAyABKAUSEAoIZW5kX2xpbmUYBCABKAUSDwoHZW5kX2NvbBgFIAEoBSITChFTZXJ2ZXJJbmZvUmVxdWVzdCI7ChJTZXJ2ZXJJbmZvUmVzcG9uc2USDwoHdmVyc2lvbhgBIAEoCRIUCgxjYXBhYmlsaXRpZXMYAiADKAkiUwoMUXVlcnlSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSGwoFcXVlcnkYAiABKAsyDC5zeXNtbC5RdWVyeRISCgpvc2xjX3F1ZXJ5GAMgASgJIjwKDVF1ZXJ5UmVzcG9uc2USKwoIZWxlbWVudHMYASADKAsyGS5zeXNtbC5RdWVyeVJlc3VsdEVsZW1lbnQiSAoFUXVlcnkSDQoFc2NvcGUYASADKAkSDgoGc2VsZWN0GAIgAygJEiAKBXdoZXJlGAMgASgLMhEuc3lzbWwuQ29uc3RyYWludCJ8CgpDb25zdHJhaW50Ei8KCXByaW1pdGl2ZRgBIAEoCzIaLnN5c21sLlByaW1pdGl2ZUNvbnN0cmFpbnRIABIvCgljb21wb3NpdGUYAiABKAsyGi5zeXNtbC5Db21wb3NpdGVDb25zdHJhaW50SABCDAoKY29uc3RyYWludCJzChNQcmltaXRpdmVDb25zdHJhaW50Eg8KB2ludmVyc2UYASABKAgSEAoIcHJvcGVydHkYAiABKAkSKgoIb3BlcmF0b3IYAyABKA4yGC5zeXNtbC5QcmltaXRpdmVPcGVyYXRvchINCgV2YWx1ZRgEIAMoCSJoChNDb21wb3NpdGVDb25zdHJhaW50EioKCG9wZXJhdG9yGAEgASgOMhguc3lzbWwuQ29tcG9zaXRlT3BlcmF0b3ISJQoKY29uc3RyYWludBgCIAMoCzIRLnN5c21sLkNvbnN0cmFpbnQioAEKElF1ZXJ5UmVzdWx0RWxlbWVudBIKCgJpZBgBIAEoCRIMCgR0eXBlGAIgASgJEj0KCnByb3BlcnRpZXMYAyADKAsyKS5zeXNtbC5RdWVyeVJlc3VsdEVsZW1lbnQuUHJvcGVydGllc0VudHJ5GjEKD1Byb3BlcnRpZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBInMKClN3ZWVwUmFuZ2USEQoJcGFyYW1ldGVyGAEgASgJEhsKBXN0YXJ0GAIgASgLMgwuc3lzbWwuVmFsdWUSGQoDZW5kGAMgASgLMgwuc3lzbWwuVmFsdWUSGgoEc3RlcBgEIAEoCzIMLnN5c21sLlZhbHVlItACCg9SdW5Td2VlcFJlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIRCglzeW1ib2xfaWQYAiABKAkSGQoRc3ViamVjdF9zeW1ib2xfaWQYAyABKAkSHwoJYXJndW1lbnRzGAQgAygLMgwuc3lzbWwuVmFsdWUSQwoPbmFtZWRfYXJndW1lbnRzGAUgAygLMiouc3lzbWwuUnVuU3dlZXBSZXF1ZXN0Lk5hbWVkQXJndW1lbnRzRW50cnkSIQoGcmFuZ2VzGAYgAygLMhEuc3lzbWwuU3dlZXBSYW5nZRIPCgdzYW1wbGVzGAcgASgDEgwKBHNlZWQYCCABKAQSDgoGZW5naW5lGAkgASgJGkMKE05hbWVkQXJndW1lbnRzRW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBIvQBCghTd2VlcFJvdxIhCgZpbnB1dHMYASADKAsyES5zeXNtbC5DYWxjT3V0cHV0EiIKB291dHB1dHMYAiADKAsyES5zeXNtbC5DYWxjT3V0cHV0EiAKCHZlcmRpY3RzGAMgAygLMg4uc3lzbWwuVmVyZGljdBIWCg5lbGFwc2VkX21pY3JvcxgEIAEoAxINCgVlcnJvchgFIAEoCRIsCg5mYWlsdXJlX3JlYXNvbhgGIAEoDjIULnN5c21sLkZhaWx1cmVSZWFzb24SKgoLZXZhbHVhdGlvbnMYByADKAsyFS5zeXNtbC5DYXNlRXZhbHVhdGlvbiKtAgoQUnVuU3dlZXBSZXNwb25zZRIdCgRyb3dzGAEgAygLMg8uc3lzbWwuU3dlZXBSb3cSEgoKcGFyYW1ldGVycxgCIAMoCRIPCgdzYW1wbGVkGAMgASgIEgwKBHNlZWQYBCABKAQSDQoFZXJyb3IYBSABKAkSJgoLZGlhZ25vc3RpY3MYBiADKAsyES5zeXNtbC5EaWFnbm9zdGljEiwKDmZhaWx1cmVfcmVhc29uGAcgASgOMhQuc3lzbWwuRmFpbHVyZVJlYXNvbhIiCglpbnN0YW5jZXMYCCADKAsyDy5zeXNtbC5JbnN0YW5jZRIOCgZlbmdpbmUYCSABKAkSEAoIc3RyZW5ndGgYCiABKAkSHAoGYm91bmRzGAsgAygLMgwuc3lzbWwuQm91bmQibgoXUnVuRG9jdW1lbnRRdWVyeVJlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIQCghxdWVyeV9pZBgCIAEoCRItCghiaW5kaW5ncxgDIAMoCzIbLnN5c21sLkRvY3VtZW50UXVlcnlCaW5kaW5nIk8KFERvY3VtZW50UXVlcnlCaW5kaW5nEhEKCXBhcmFtZXRlchgBIAEoCRIkCgZ2YWx1ZXMYAiADKAsyFC5zeXNtbC5Eb2N1bWVudFZhbHVlIvcCCg1Eb2N1bWVudFZhbHVlEhQKCmVsZW1lbnRfaWQYASABKAlIABIWCgxzdHJpbmdfdmFsdWUYAiABKAlIABITCglpbnRfdmFsdWUYAyABKANIABIUCgpyZWFsX3ZhbHVlGAQgASgBSAASFAoKYm9vbF92YWx1ZRgFIAEoCEgAEhIKCGluZmluaXR5GAYgASgISAASIwoIcXVhbnRpdHkYCCABKAsyDy5zeXNtbC5RdWFudGl0eUgAEikKB3ZlcmRpY3QYCSABKAsyFi5zeXNtbC5Eb2N1bWVudFZlcmRpY3RIABInCgZvYmplY3QYCiABKAsyFS5zeXNtbC5Eb2N1bWVudE9iamVjdEgAEiUKBXN0YXRlGAsgASgLMhQuc3lzbWwuRG9jdW1lbnRTdGF0ZUgAEiUKBWV2ZW50GAwgASgLMhQuc3lzbWwuRG9jdW1lbnRFdmVudEgAEhQKDGVsZW1lbnRfdHlwZRgHIAEoCUIGCgRraW5kIloKDkRvY3VtZW50T2JqZWN0EhMKC2luc3RhbmNlX2lkGAEgASgDEgwKBHBhdGgYAiABKAkSJQoHZWxlbWVudBgDIAEoCzIULnN5c21sLkRvY3VtZW50VmFsdWUirgEKD0RvY3VtZW50VmVyZGljdBInCglhc3NlcnRpb24YASABKAsyFC5zeXNtbC5Eb2N1bWVudFZhbHVlEgwKBGtpbmQYAiABKAkSDAoEdGV4dBgDIAEoCRIMCgRwYXRoGAQgASgJEg8KB3ZlcmRpY3QYBSABKAkSEQoJY29uZGl0aW9uGAYgASgJEg4KBnJlYXNvbhgHIAEoCRIUCgx2ZXJpZmljYXRpb24YCCADKAkisQEKDURvY3VtZW50U3RhdGUSJQoGb2JqZWN0GAEgASgLMhUuc3lzbWwuRG9jdW1lbnRPYmplY3QSDwoHbWFjaGluZRgCIAEoCRIMCgRuYW1lGAMgASgJEhIKCnN0YXRlX3BhdGgYBCABKAkSIwoFc3RhdGUYBSABKAsyFC5zeXNtbC5Eb2N1bWVudFZhbHVlEg4KBnJlZ2lvbhgGIAEoCRIRCgllbmNsb3NpbmcYByADKAkinAIKDURvY3VtZW50RXZlbnQSDAoEa2luZBgBIAEoCRIiCgR0aW1lGAIgASgLMhQuc3lzbWwuRG9jdW1lbnRWYWx1ZRIlCgZvYmplY3QYAyABKAsyFS5zeXNtbC5Eb2N1bWVudE9iamVjdBIPCgdtYWNoaW5lGAQgASgJEg0KBXN0YXRlGAUgASgJEgwKBGZyb20YBiABKAkSCgoCdG8YByABKAkSJQoGdGFyZ2V0GAggASgLMhUuc3lzbWwuRG9jdW1lbnRPYmplY3QSDQoFZXZlbnQYCSABKAkSDwoHcGF5bG9hZBgKIAMoCRIUCgxhbHRlcm5hdGl2ZXMYCyADKAkSDQoFdGFrZW4YDCABKAkSDAoEdGV4dBgNIAEoCSIjChNEb2N1bWVudFF1ZXJ5Q29sdW1uEgwKBG5hbWUYASABKAkiOQoRRG9jdW1lbnRRdWVyeUNlbGwSJAoGdmFsdWVzGAEgAygLMhQuc3lzbWwuRG9jdW1lbnRWYWx1ZSJiChBEb2N1bWVudFF1ZXJ5Um93EiUKB2VsZW1lbnQYASABKAsyFC5zeXNtbC5Eb2N1bWVudFZhbHVlEicKBWNlbGxzGAIgAygLMhguc3lzbWwuRG9jdW1lbnRRdWVyeUNlbGwibgoYUnVuRG9jdW1lbnRRdWVyeVJlc3BvbnNlEisKB2NvbHVtbnMYASADKAsyGi5zeXNtbC5Eb2N1bWVudFF1ZXJ5Q29sdW1uEiUKBHJvd3MYAiADKAsyFy5zeXNtbC5Eb2N1bWVudFF1ZXJ5Um93Ik4KFVJlbmRlckRvY3VtZW50UmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEgwKBGZvcm0YAyABKAkiOAoWUmVuZGVyRG9jdW1lbnRSZXNwb25zZRIQCghtYXJrZG93bhgBIAEoCRIMCgRodG1sGAIgASgJKpMBCg1GYWlsdXJlUmVhc29uEh4KGkZBSUxVUkVfUkVBU09OX1VOU1BFQ0lGSUVEEAASHQoZRkFJTFVSRV9SRUFTT05fRVZBTFVBVElPThABEh0KGUZBSUxVUkVfUkVBU09OX1dST05HX0tJTkQQAhIkCiBGQUlMVVJFX1JFQVNPTl9BTUJJR1VPVVNfU1VCSkVDVBADKowFCgtFZGl0RmFpbHVyZRIcChhFRElUX0ZBSUxVUkVfVU5TUEVDSUZJRUQQABIeChpFRElUX0ZBSUxVUkVfTk9fT1BFUkFUSU9OUxABEh8KG0VESVRfRkFJTFVSRV9VTktOT1dOX1RBUkdFVBACEiEKHUVESVRfRkFJTFVSRV9BTUJJR1VPVVNfVEFSR0VUEAMSGwoXRURJVF9GQUlMVVJFX05PVF9WQUxVRUQQBBIeChpFRElUX0ZBSUxVUkVfSU5WQUxJRF9WQUxVRRAFEh0KGUVESVRfRkFJTFVSRV9JTlZBTElEX05BTUUQBhIaChZFRElUX0ZBSUxVUkVfTk9UX05BTUVEEAcSIgoeRURJVF9GQUlMVVJFX1JFTkFNRV9SRUZFUkVOQ0VEEAgSIgoeRURJVF9GQUlMVVJFX09WRVJMQVBQSU5HX0VESVRTEAkSHwobRURJVF9GQUlMVVJFX1JFU1VMVF9JTlZBTElEEAoSHgoaRURJVF9GQUlMVVJFX09XTkVSX1VOS05PV04QCxIkCiBFRElUX0ZBSUxVUkVfT1dORVJfTk9UX05BTUVTUEFDRRAMEh0KGUVESVRfRkFJTFVSRV9JTExFR0FMX0tJTkQQDRIiCh5FRElUX0ZBSUxVUkVfTUVNQkVSX05BTUVfVEFLRU4QDhIiCh5FRElUX0ZBSUxVUkVfREVMRVRFX1JFRkVSRU5DRUQQDxIkCiBFRElUX0ZBSUxVUkVfT1dORVJfSU5TSURFX1RBUkdFVBAQEiAKHEVESVRfRkFJTFVSRV9NT1ZFX1JFRkVSRU5DRUQQERIlCiFFRElUX0ZBSUxVUkVfUkVGRVJFTkNFRF9FTFNFV0hFUkUQEiqSAQoRUHJpbWl0aXZlT3BlcmF0b3ISIgoeUFJJTUlUSVZFX09QRVJBVE9SX1VOU1BFQ0lGSUVEEAASHAoYUFJJTUlUSVZFX09QRVJBVE9SX0VRVUFMEAESHgoaUFJJTUlUSVZFX09QRVJBVE9SX0dSRUFURVIQAhIbChdQUklNSVRJVkVfT1BFUkFUT1JfTEVTUxADKm4KEUNvbXBvc2l0ZU9wZXJhdG9yEiIKHkNPTVBPU0lURV9PUEVSQVRPUl9VTlNQRUNJRklFRBAAEhoKFkNPTVBPU0lURV9PUEVSQVRPUl9BTkQQARIZChVDT01QT1NJVEVfT1BFUkFUT1JfT1IQAjK/DAoMU3lzTUxTZXJ2aWNlEkQKDUdldFNlcnZlckluZm8SGC5zeXNtbC5TZXJ2ZXJJbmZvUmVxdWVzdBoZLnN5c21sLlNlcnZlckluZm9SZXNwb25zZRI+CglQYXJzZUZpbGUSFy5zeXNtbC5QYXJzZUZpbGVSZXF1ZXN0Ghguc3lzbWwuUGFyc2VGaWxlUmVzcG9uc2USRwoMUGFyc2VTb3VyY2VzEhouc3lzbWwuUGFyc2VTb3VyY2VzUmVxdWVzdBobLnN5c21sLlBhcnNlU291cmNlc1Jlc3BvbnNlEjsKCUdldFN5bWJvbBIXLnN5c21sLkdldFN5bWJvbFJlcXVlc3QaFS5zeXNtbC5TeW1ib2xSZXNwb25zZRJHCg5HZXREaWFnbm9zdGljcxIZLnN5c21sLkRpYWdub3N0aWNzUmVxdWVzdBoaLnN5c21sLkRpYWdub3N0aWNzUmVzcG9uc2USOwoIRXZhbHVhdGUSFi5zeXNtbC5FdmFsdWF0ZVJlcXVlc3QaFy5zeXNtbC5FdmFsdWF0ZVJlc3BvbnNlEkQKC0luc3RhbnRpYXRlEhkuc3lzbWwuSW5zdGFudGlhdGVSZXF1ZXN0Ghouc3lzbWwuSW5zdGFudGlhdGVSZXNwb25zZRJKCg1FeGVjdXRlQWN0aW9uEhsuc3lzbWwuRXhlY3V0ZUFjdGlvblJlcXVlc3QaHC5zeXNtbC5FeGVjdXRlQWN0aW9uUmVzcG9uc2USRwoMRXhlY3V0ZVN0YXRlEhouc3lzbWwuRXhlY3V0ZVN0YXRlUmVxdWVzdBobLnN5c21sLkV4ZWN1dGVTdGF0ZVJlc3BvbnNlEjgKB0NvbnZlcnQSFS5zeXNtbC5Db252ZXJ0UmVxdWVzdBoWLnN5c21sLkNvbnZlcnRSZXNwb25zZRJBCgpBcHBseUVkaXRzEhguc3lzbWwuQXBwbHlFZGl0c1JlcXVlc3QaGS5zeXNtbC5BcHBseUVkaXRzUmVzcG9uc2USUwoQVmVyaWZ5Q29uc3RyYWludBIeLnN5c21sLlZlcmlmeUNvbnN0cmFpbnRSZXF1ZXN0Gh8uc3lzbWwuVmVyaWZ5Q29uc3RyYWludFJlc3BvbnNlElYKEVZlcmlmeVJlcXVpcmVtZW50Eh8uc3lzbWwuVmVyaWZ5UmVxdWlyZW1lbnRSZXF1ZXN0GiAuc3lzbWwuVmVyaWZ5UmVxdWlyZW1lbnRSZXNwb25zZRJZChJWZXJpZnlTYXRpc2ZhY3Rpb24SIC5zeXNtbC5WZXJpZnlTYXRpc2ZhY3Rpb25SZXF1ZXN0GiEuc3lzbWwuVmVyaWZ5U2F0aXNmYWN0aW9uUmVzcG9uc2USUwoQVmFsaWRhdGVJbnN0YW5jZRIeLnN5c21sLlZhbGlkYXRlSW5zdGFuY2VSZXF1ZXN0Gh8uc3lzbWwuVmFsaWRhdGVJbnN0YW5jZVJlc3BvbnNlEkcKDEV2YWx1YXRlQ2FsYxIaLnN5c21sLkV2YWx1YXRlQ2FsY1JlcXVlc3QaGy5zeXNtbC5FdmFsdWF0ZUNhbGNSZXNwb25zZRJECgtSdW5BbmFseXNpcxIZLnN5c21sLlJ1bkFuYWx5c2lzUmVxdWVzdBoaLnN5c21sLlJ1bkFuYWx5c2lzUmVzcG9uc2USOwoIUnVuU3dlZXASFi5zeXNtbC5SdW5Td2VlcFJlcXVlc3QaFy5zeXNtbC5SdW5Td2VlcFJlc3BvbnNlEkQKC0xpc3RFbmdpbmVzEhkuc3lzbWwuTGlzdEVuZ2luZXNSZXF1ZXN0Ghouc3lzbWwuTGlzdEVuZ2luZXNSZXNwb25zZRIyCgVRdWVyeRITLnN5c21sLlF1ZXJ5UmVxdWVzdBoULnN5c21sLlF1ZXJ5UmVzcG9uc2USUwoQUnVuRG9jdW1lbnRRdWVyeRIeLnN5c21sLlJ1bkRvY3VtZW50UXVlcnlSZXF1ZXN0Gh8uc3lzbWwuUnVuRG9jdW1lbnRRdWVyeVJlc3BvbnNlEk0KDlJlbmRlckRvY3VtZW50Ehwuc3lzbWwuUmVuZGVyRG9jdW1lbnRSZXF1ZXN0Gh0uc3lzbWwuUmVuZGVyRG9jdW1lbnRSZXNwb25zZUIqWihnaXRodWIuY29tL09wZW4tTUJFRS9PcGVuU3lzTUwvYXBpL3Byb3RvYgZwcm90bzM"); + fileDesc("CgtzeXNtbC5wcm90bxIFc3lzbWwiuQIKB1ZlcmRpY3QSDAoEa2luZBgBIAEoCRISCgplbGVtZW50X2lkGAIgASgJEg8KB2VsZW1lbnQYAyABKAkSDQoFaG9sZHMYBCABKAgSEQoJY29uZGl0aW9uGAUgASgJEhMKC2luc3RhbmNlX2lkGAYgASgDEhgKEGluc3RhbmNlX3R5cGVfaWQYByABKAkSDQoFZXJyb3IYCCABKAkSLAoOZmFpbHVyZV9yZWFzb24YCSABKA4yFC5zeXNtbC5GYWlsdXJlUmVhc29uEhYKDnJlcXVpcmVtZW50X2lkGAogASgJEg4KBmVuZ2luZRgLIAEoCRIQCghzdHJlbmd0aBgMIAEoCRIcCgZib3VuZHMYDSADKAsyDC5zeXNtbC5Cb3VuZBIVCg1pbnN0YW5jZV9wYXRoGA4gASgJIjUKBUJvdW5kEgwKBG5hbWUYASABKAkSDQoFbGltaXQYAiABKAMSDwoHcmVhY2hlZBgDIAEoCCJrChdWZXJpZnlDb25zdHJhaW50UmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIZChFzdWJqZWN0X3N5bWJvbF9pZBgDIAEoCRIOCgZlbmdpbmUYBCABKAkilgEKGFZlcmlmeUNvbnN0cmFpbnRSZXNwb25zZRIfCgd2ZXJkaWN0GAEgASgLMg4uc3lzbWwuVmVyZGljdBIiCglpbnN0YW5jZXMYAiADKAsyDy5zeXNtbC5JbnN0YW5jZRINCgVlcnJvchgDIAEoCRImCgtkaWFnbm9zdGljcxgEIAMoCzIRLnN5c21sLkRpYWdub3N0aWMibAoYVmVyaWZ5UmVxdWlyZW1lbnRSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEQoJc3ltYm9sX2lkGAIgASgJEhkKEXN1YmplY3Rfc3ltYm9sX2lkGAMgASgJEg4KBmVuZ2luZRgEIAEoCSJtChNWZXJpZmljYXRpb25WZXJkaWN0Eg8KB2Nhc2VfaWQYASABKAkSDAoEa2luZBgCIAEoCRIOCgZkZXRhaWwYAyABKAkSDwoHc3ViY2FzZRgEIAEoCBIWCg5yZXF1aXJlbWVudF9pZBgFIAEoCSLSAQoZVmVyaWZ5UmVxdWlyZW1lbnRSZXNwb25zZRIfCgd2ZXJkaWN0GAEgASgLMg4uc3lzbWwuVmVyZGljdBIiCglpbnN0YW5jZXMYAiADKAsyDy5zeXNtbC5JbnN0YW5jZRINCgVlcnJvchgDIAEoCRImCgtkaWFnbm9zdGljcxgEIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSOQoVdmVyaWZpY2F0aW9uX3ZlcmRpY3RzGAUgAygLMhouc3lzbWwuVmVyaWZpY2F0aW9uVmVyZGljdCJSChlWZXJpZnlTYXRpc2ZhY3Rpb25SZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEQoJc3ltYm9sX2lkGAIgASgJEg4KBmVuZ2luZRgDIAEoCSKCAgoaVmVyaWZ5U2F0aXNmYWN0aW9uUmVzcG9uc2USIAoIdmVyZGljdHMYASADKAsyDi5zeXNtbC5WZXJkaWN0EiIKCWluc3RhbmNlcxgCIAMoCzIPLnN5c21sLkluc3RhbmNlEg0KBWVycm9yGAMgASgJEiYKC2RpYWdub3N0aWNzGAQgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIsCg5mYWlsdXJlX3JlYXNvbhgFIAEoDjIULnN5c21sLkZhaWx1cmVSZWFzb24SOQoVdmVyaWZpY2F0aW9uX3ZlcmRpY3RzGAYgAygLMhouc3lzbWwuVmVyaWZpY2F0aW9uVmVyZGljdCJQChdWYWxpZGF0ZUluc3RhbmNlUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIOCgZlbmdpbmUYAyABKAkisgIKGFZhbGlkYXRlSW5zdGFuY2VSZXNwb25zZRIgCgh2ZXJkaWN0cxgBIAMoCzIOLnN5c21sLlZlcmRpY3QSHwoHc3VtbWFyeRgCIAEoCzIOLnN5c21sLlZlcmRpY3QSIgoJaW5zdGFuY2VzGAMgAygLMg8uc3lzbWwuSW5zdGFuY2USDQoFZXJyb3IYBCABKAkSJgoLZGlhZ25vc3RpY3MYBSADKAsyES5zeXNtbC5EaWFnbm9zdGljEiwKDmZhaWx1cmVfcmVhc29uGAYgASgOMhQuc3lzbWwuRmFpbHVyZVJlYXNvbhI5ChV2ZXJpZmljYXRpb25fdmVyZGljdHMYByADKAsyGi5zeXNtbC5WZXJpZmljYXRpb25WZXJkaWN0Eg8KB2JvdW5kZWQYCCABKAgibQoTRXZhbHVhdGVDYWxjUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIfCglhcmd1bWVudHMYAyADKAsyDC5zeXNtbC5WYWx1ZRIOCgZlbmdpbmUYBCABKAki/QEKFEV2YWx1YXRlQ2FsY1Jlc3BvbnNlEhwKBnJlc3VsdBgBIAEoCzIMLnN5c21sLlZhbHVlEiIKB291dHB1dHMYAiADKAsyES5zeXNtbC5DYWxjT3V0cHV0Eg0KBWVycm9yGAMgASgJEiYKC2RpYWdub3N0aWNzGAQgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIsCg5mYWlsdXJlX3JlYXNvbhgFIAEoDjIULnN5c21sLkZhaWx1cmVSZWFzb24SDgoGZW5naW5lGAYgASgJEhAKCHN0cmVuZ3RoGAcgASgJEhwKBmJvdW5kcxgIIAMoCzIMLnN5c21sLkJvdW5kIjcKCkNhbGNPdXRwdXQSDAoEbmFtZRgBIAEoCRIbCgV2YWx1ZRgCIAEoCzIMLnN5c21sLlZhbHVlIpMBCg5DYXNlRXZhbHVhdGlvbhITCgtmdW5jdGlvbl9pZBgBIAEoCRIfCglhcmd1bWVudHMYAiADKAsyDC5zeXNtbC5WYWx1ZRIcCgZyZXN1bHQYAyABKAsyDC5zeXNtbC5WYWx1ZRINCgVlcnJvchgEIAEoCRIQCghzZWxlY3RlZBgFIAEoCBIMCgR0aWVkGAYgASgIIqYCChJSdW5BbmFseXNpc1JlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIRCglzeW1ib2xfaWQYAiABKAkSGQoRc3ViamVjdF9zeW1ib2xfaWQYAyABKAkSHwoJYXJndW1lbnRzGAQgAygLMgwuc3lzbWwuVmFsdWUSRgoPbmFtZWRfYXJndW1lbnRzGAUgAygLMi0uc3lzbWwuUnVuQW5hbHlzaXNSZXF1ZXN0Lk5hbWVkQXJndW1lbnRzRW50cnkSEAoIc2NoZWR1bGUYBiABKAkSDgoGZW5naW5lGAcgASgJGkMKE05hbWVkQXJndW1lbnRzRW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBItwDChNSdW5BbmFseXNpc1Jlc3BvbnNlEiIKB291dHB1dHMYASADKAsyES5zeXNtbC5DYWxjT3V0cHV0EiAKCHZlcmRpY3RzGAIgAygLMg4uc3lzbWwuVmVyZGljdBIiCglpbnN0YW5jZXMYAyADKAsyDy5zeXNtbC5JbnN0YW5jZRINCgVlcnJvchgEIAEoCRImCgtkaWFnbm9zdGljcxgFIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSLAoOZmFpbHVyZV9yZWFzb24YBiABKA4yFC5zeXNtbC5GYWlsdXJlUmVhc29uEjkKFXZlcmlmaWNhdGlvbl92ZXJkaWN0cxgHIAMoCzIaLnN5c21sLlZlcmlmaWNhdGlvblZlcmRpY3QSIAoIb3V0Y29tZXMYCCADKAsyDi5zeXNtbC5PdXRjb21lEi0KC2V4cGxvcmF0aW9uGAkgASgLMhguc3lzbWwuRXhwbG9yYXRpb25TdGF0dXMSKgoLZXZhbHVhdGlvbnMYCiADKAsyFS5zeXNtbC5DYXNlRXZhbHVhdGlvbhIOCgZlbmdpbmUYCyABKAkSEAoIc3RyZW5ndGgYDCABKAkSHAoGYm91bmRzGA0gAygLMgwuc3lzbWwuQm91bmQilwIKB091dGNvbWUSLAoHb3V0cHV0cxgBIAMoCzIbLnN5c21sLk91dGNvbWUuT3V0cHV0c0VudHJ5EhMKC2ZpbmFsX3N0YXRlGAIgASgJEhYKDnN0YXRlc192aXNpdGVkGAMgAygJEg0KBWVycm9yGAQgASgJEhYKDmxpbmVhcml6YXRpb25zGAUgASgFEg8KB3dpdG5lc3MYBiADKAkSJgoLZGlhZ25vc3RpY3MYByADKAsyES5zeXNtbC5EaWFnbm9zdGljEhMKC3Byb2JhYmlsaXR5GAggASgBGjwKDE91dHB1dHNFbnRyeRILCgNrZXkYASABKAkSGwoFdmFsdWUYAiABKAsyDC5zeXNtbC5WYWx1ZToCOAEilgEKEUV4cGxvcmF0aW9uU3RhdHVzEhAKCGNvbXBsZXRlGAEgASgIEgwKBHJ1bnMYAiABKAUSEwoLYnVkZ2V0c19oaXQYAyADKAkSEwoLcnVuc19idWRnZXQYBCABKAUSFAoMZGVwdGhfYnVkZ2V0GAUgASgFEiEKGXByb2JhYmlsaXRpZXNfbG93ZXJfYm91bmQYBiABKAgiFAoSTGlzdEVuZ2luZXNSZXF1ZXN0IvwBCgpFbmdpbmVJbmZvEgwKBG5hbWUYASABKAkSEQoJYXV0aG9yaXR5GAIgASgJEg8KB2Fuc3dlcnMYAyADKAkSDgoGYm91bmRzGAQgAygJEg8KB3Byb2Nlc3MYBSABKAkSFQoNcHJvY2Vzc19mb3VuZBgGIAEoCRINCgVyZWFkeRgHIAEoCBITCgt1bmF2YWlsYWJsZRgIIAEoCRIMCgRraW5kGAkgASgJEhAKCHByb3RvY29sGAogASgJEg4KBnNvdXJjZRgLIAEoCRIPCgdjb21tYW5kGAwgASgJEg8KB3ZlcnNpb24YDSABKAkSDgoGc2VydmVkGA4gASgIIjkKE0xpc3RFbmdpbmVzUmVzcG9uc2USIgoHZW5naW5lcxgBIAMoCzIRLnN5c21sLkVuZ2luZUluZm8ijAEKEFBhcnNlRmlsZVJlcXVlc3QSEwoJZmlsZV9wYXRoGAEgASgJSAASEQoHY29udGVudBgCIAEoCUgAEhgKDGNvbnRlbnRfaGFzaBgDIAEoCUICGAESEAoIbGFuZ3VhZ2UYBCABKAkSGgoSc3RyaWN0X2NvbmZvcm1hbmNlGAUgASgIQggKBnNvdXJjZSJiCg5Tb3VyY2VEb2N1bWVudBITCglmaWxlX3BhdGgYASABKAlIABIRCgdjb250ZW50GAIgASgJSAASEAoIbGFuZ3VhZ2UYAyABKAkSDAoEbmFtZRgEIAEoCUIICgZzb3VyY2UiWwoTUGFyc2VTb3VyY2VzUmVxdWVzdBIoCglkb2N1bWVudHMYASADKAsyFS5zeXNtbC5Tb3VyY2VEb2N1bWVudBIaChJzdHJpY3RfY29uZm9ybWFuY2UYAiABKAgigwEKFFBhcnNlU291cmNlc1Jlc3BvbnNlEhIKCm1vZGVsX2hhc2gYASABKAkSIAoFcm9vdHMYAiADKAsyES5zeXNtbC5TeW1ib2xJbmZvEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxINCgVlcnJvchgEIAEoCSJ/ChFQYXJzZUZpbGVSZXNwb25zZRISCgptb2RlbF9oYXNoGAEgASgJEh8KBHJvb3QYAiABKAsyES5zeXNtbC5TeW1ib2xJbmZvEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxINCgVlcnJvchgEIAEoCSI5ChBHZXRTeW1ib2xSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEQoJc3ltYm9sX2lkGAIgASgJIkIKDlN5bWJvbFJlc3BvbnNlEiEKBnN5bWJvbBgBIAEoCzIRLnN5c21sLlN5bWJvbEluZm8SDQoFZXJyb3IYAiABKAkiKAoSRGlhZ25vc3RpY3NSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkiTAoTRGlhZ25vc3RpY3NSZXNwb25zZRImCgtkaWFnbm9zdGljcxgBIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSDQoFZXJyb3IYAiABKAkibwoPRXZhbHVhdGVSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEgoKZXhwcmVzc2lvbhgCIAEoCRIZChFjb250ZXh0X3N5bWJvbF9pZBgDIAEoCRIZChFzdWJqZWN0X3N5bWJvbF9pZBgEIAEoCSJnChBFdmFsdWF0ZVJlc3BvbnNlEhwKBnJlc3VsdBgBIAEoCzIMLnN5c21sLlZhbHVlEg0KBWVycm9yGAIgASgJEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYyLCAQoISW5zdGFuY2USCgoCaWQYASABKAMSFgoOdHlwZV9zeW1ib2xfaWQYAiABKAkSOgoOZmVhdHVyZV92YWx1ZXMYBCADKAsyIi5zeXNtbC5JbnN0YW5jZS5GZWF0dXJlVmFsdWVzRW50cnkaSQoSRmVhdHVyZVZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnN5c21sLkZlYXR1cmVWYWx1ZToCOAFKBAgDEARSBXNsb3RzIoQBCgxGZWF0dXJlVmFsdWUSFAoMZmVhdHVyZV9uYW1lGAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWUSHAoGdmFsdWVzGAMgAygLMgwuc3lzbWwuVmFsdWUSFAoMbWF0ZXJpYWxpemVkGAQgASgIEg0KBWVycm9yGAUgASgJIjsKEkluc3RhbnRpYXRlUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCSKTAQoTSW5zdGFudGlhdGVSZXNwb25zZRIhCghpbnN0YW5jZRgBIAEoCzIPLnN5c21sLkluc3RhbmNlEg0KBWVycm9yGAIgASgJEiYKC2RpYWdub3N0aWNzGAMgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIiCglpbnN0YW5jZXMYBCADKAsyDy5zeXNtbC5JbnN0YW5jZSLpAQoURXhlY3V0ZUFjdGlvblJlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIYChBhY3Rpb25fc3ltYm9sX2lkGAIgASgJEjcKBmlucHV0cxgDIAMoCzInLnN5c21sLkV4ZWN1dGVBY3Rpb25SZXF1ZXN0LklucHV0c0VudHJ5EhAKCHNjaGVkdWxlGAQgASgJEhsKE3BlcmZvcm1lcl9zeW1ib2xfaWQYBSABKAkaOwoLSW5wdXRzRW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBIq0CChVFeGVjdXRlQWN0aW9uUmVzcG9uc2USOgoHb3V0cHV0cxgBIAMoCzIpLnN5c21sLkV4ZWN1dGVBY3Rpb25SZXNwb25zZS5PdXRwdXRzRW50cnkSDQoFZXJyb3IYAiABKAkSJgoLZGlhZ25vc3RpY3MYAyADKAsyES5zeXNtbC5EaWFnbm9zdGljEiAKCG91dGNvbWVzGAQgAygLMg4uc3lzbWwuT3V0Y29tZRItCgtleHBsb3JhdGlvbhgFIAEoCzIYLnN5c21sLkV4cGxvcmF0aW9uU3RhdHVzEhIKCmZpbmFsX3RpbWUYBiABKAEaPAoMT3V0cHV0c0VudHJ5EgsKA2tleRgBIAEoCRIbCgV2YWx1ZRgCIAEoCzIMLnN5c21sLlZhbHVlOgI4ASKJAQoTRXhlY3V0ZVN0YXRlUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEh8KF3N0YXRlX21hY2hpbmVfc3ltYm9sX2lkGAIgASgJEg4KBmV2ZW50cxgDIAMoCRIQCghzY2hlZHVsZRgEIAEoCRIbChNwZXJmb3JtZXJfc3ltYm9sX2lkGAUgASgJItMCChRFeGVjdXRlU3RhdGVSZXNwb25zZRIWCg5zdGF0ZXNfdmlzaXRlZBgBIAMoCRJECg1maW5hbF9jb250ZXh0GAIgAygLMi0uc3lzbWwuRXhlY3V0ZVN0YXRlUmVzcG9uc2UuRmluYWxDb250ZXh0RW50cnkSDQoFZXJyb3IYAyABKAkSJgoLZGlhZ25vc3RpY3MYBCADKAsyES5zeXNtbC5EaWFnbm9zdGljEiAKCG91dGNvbWVzGAUgAygLMg4uc3lzbWwuT3V0Y29tZRItCgtleHBsb3JhdGlvbhgGIAEoCzIYLnN5c21sLkV4cGxvcmF0aW9uU3RhdHVzEhIKCmZpbmFsX3RpbWUYByABKAEaQQoRRmluYWxDb250ZXh0RW50cnkSCwoDa2V5GAEgASgJEhsKBXZhbHVlGAIgASgLMgwuc3lzbWwuVmFsdWU6AjgBIqABCg5Db252ZXJ0UmVxdWVzdBITCglmaWxlX3BhdGgYASABKAlIABIRCgdjb250ZW50GAIgASgJSAASFAoKbW9kZWxfaGFzaBgGIAEoCUgAEhMKC2Zyb21fZm9ybWF0GAMgASgJEhEKCXRvX2Zvcm1hdBgEIAEoCRIeChZ0b2xlcmF0ZV9zeW50YXhfZXJyb3JzGAUgASgIQggKBnNvdXJjZSK0AQoPQ29udmVydFJlc3BvbnNlEg8KB2NvbnRlbnQYASABKAkSEwoLZnJvbV9mb3JtYXQYAiABKAkSEQoJdG9fZm9ybWF0GAMgASgJEg0KBWVycm9yGAQgASgJEiYKC2RpYWdub3N0aWNzGAUgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIUCgxleHBlcmltZW50YWwYBiABKAgSGwoTZXhwZXJpbWVudGFsX25vdGljZRgHIAEoCSJ9ChFBcHBseUVkaXRzUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEigKCm9wZXJhdGlvbnMYAiADKAsyFC5zeXNtbC5FZGl0T3BlcmF0aW9uEhAKCGRvY3VtZW50GAMgASgJEhgKEGFjY2VwdF9kb2N1bWVudHMYBCABKAgikQIKDUVkaXRPcGVyYXRpb24SKAoJc2V0X3ZhbHVlGAEgASgLMhMuc3lzbWwuU2V0VmFsdWVFZGl0SAASIwoGcmVuYW1lGAIgASgLMhEuc3lzbWwuUmVuYW1lRWRpdEgAEioKCmFkZF9tZW1iZXIYAyABKAsyFC5zeXNtbC5BZGRNZW1iZXJFZGl0SAASIwoGZGVsZXRlGAQgASgLMhEuc3lzbWwuRGVsZXRlRWRpdEgAEh8KBG1vdmUYBSABKAsyDy5zeXNtbC5Nb3ZlRWRpdEgAEjIKDmFkZF9jb25uZWN0aW9uGAYgASgLMhguc3lzbWwuQWRkQ29ubmVjdGlvbkVkaXRIAEILCglvcGVyYXRpb24iggEKDUFkZE1lbWJlckVkaXQSDQoFb3duZXIYASABKAkSDAoEa2luZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSFAoMbXVsdGlwbGljaXR5GAUgASgJEg0KBXZhbHVlGAYgASgJEhMKC3NwZWNpYWxpemVzGAcgAygJIm4KEUFkZENvbm5lY3Rpb25FZGl0Eg0KBW93bmVyGAEgASgJEgwKBGtpbmQYAiABKAkSEAoIZnJvbV9lbmQYAyABKAkSDgoGdG9fZW5kGAQgASgJEgwKBG5hbWUYBSABKAkSDAoEdHlwZRgGIAEoCSItCgpEZWxldGVFZGl0Eg4KBnRhcmdldBgBIAEoCRIPCgdjYXNjYWRlGAIgASgIIikKCE1vdmVFZGl0Eg4KBnRhcmdldBgBIAEoCRINCgVvd25lchgCIAEoCSItCgxTZXRWYWx1ZUVkaXQSDgoGdGFyZ2V0GAEgASgJEg0KBXZhbHVlGAIgASgJIi4KClJlbmFtZUVkaXQSDgoGdGFyZ2V0GAEgASgJEhAKCG5ld19uYW1lGAIgASgJIpACChJBcHBseUVkaXRzUmVzcG9uc2USDwoHY29udGVudBgBIAEoCRIjCgdhcHBsaWVkGAIgAygLMhIuc3lzbWwuQXBwbGllZEVkaXQSDQoFZXJyb3IYAyABKAkSIwoHZmFpbHVyZRgEIAEoDjISLnN5c21sLkVkaXRGYWlsdXJlEiYKC2RpYWdub3N0aWNzGAUgAygLMhEuc3lzbWwuRGlhZ25vc3RpYxIaChJyZWZlcnJpbmdfZWxlbWVudHMYBiADKAkSKAoJZG9jdW1lbnRzGAcgAygLMhUuc3lzbWwuRWRpdGVkRG9jdW1lbnQSIgoJcmVmZXJyZXJzGAggAygLMg8uc3lzbWwuUmVmZXJyZXIiLwoORWRpdGVkRG9jdW1lbnQSDAoEbmFtZRgBIAEoCRIPCgdjb250ZW50GAIgASgJIioKCFJlZmVycmVyEgwKBG5hbWUYASABKAkSEAoIZG9jdW1lbnQYAiABKAkijAEKC0FwcGxpZWRFZGl0EhcKD29wZXJhdGlvbl9pbmRleBgBIAEoBRIOCgZ0YXJnZXQYAiABKAkSDgoGb2Zmc2V0GAMgASgFEg4KBmxlbmd0aBgEIAEoBRIQCghvbGRfdGV4dBgFIAEoCRIQCghuZXdfdGV4dBgGIAEoCRIQCghkb2N1bWVudBgHIAEoCSL9AgoKU3ltYm9sSW5mbxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkSMQoIbWV0YWRhdGEYBCADKAsyHy5zeXNtbC5TeW1ib2xJbmZvLk1ldGFkYXRhRW50cnkSEQoJY2hpbGRfaWRzGAUgAygJEigKCmF0dHJpYnV0ZXMYBiADKAsyFC5zeXNtbC5BdHRyaWJ1dGVJbmZvEiIKCXR5cGVfaW5mbxgHIAEoCzIPLnN5c21sLlR5cGVJbmZvEi0KDG11bHRpcGxpY2l0eRgIIAEoCzIXLnN5c21sLk11bHRpcGxpY2l0eUluZm8SLgoPc3BlY2lhbGl6YXRpb25zGAkgAygLMhUuc3lzbWwuU3BlY2lhbGl6YXRpb24SIwobd2l0aGhlbGRfbGlicmFyeV9hdHRyaWJ1dGVzGAogASgFGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJYCg5TcGVjaWFsaXphdGlvbhIMCgRraW5kGAEgASgJEhAKCGRlY2xhcmVkGAIgASgJEhEKCXRhcmdldF9pZBgDIAEoCRITCgt0YXJnZXRfa2luZBgEIAEoCSKVAQoIVHlwZUluZm8SEAoIZGVjbGFyZWQYASABKAkSEwoLcmVzb2x2ZWRfaWQYAiABKAkSFQoNcmVzb2x2ZWRfa2luZBgDIAEoCRIRCglwcmltaXRpdmUYBCABKAkSGAoQcHJpbWl0aXZlX3NvdXJjZRgFIAEoCRIQCghxdWFudGl0eRgGIAEoCBIMCgR1bml0GAcgASgJIjAKEE11bHRpcGxpY2l0eUluZm8SDQoFbG93ZXIYASABKAkSDQoFdXBwZXIYAiABKAkiVgoNQXR0cmlidXRlSW5mbxIMCgRuYW1lGAEgASgJEgwKBHR5cGUYAiABKAkSGwoFdmFsdWUYAyABKAsyDC5zeXNtbC5WYWx1ZRIMCgR1bml0GAQgASgJIsMFCgVWYWx1ZRITCglpbnRfdmFsdWUYASABKANIABIUCgpyZWFsX3ZhbHVlGAIgASgBSAASFAoKYm9vbF92YWx1ZRgDIAEoCEgAEhYKDHN0cmluZ192YWx1ZRgEIAEoCUgAEhUKC2luc3RhbmNlX2lkGAUgASgDSAASKAoIc2VxdWVuY2UYBiABKAsyFC5zeXNtbC5WYWx1ZVNlcXVlbmNlSAASDgoEbnVsbBgHIAEoCUgAEiMKCHF1YW50aXR5GAggASgLMg8uc3lzbWwuUXVhbnRpdHlIABIqCgxlbnVtX2xpdGVyYWwYCSABKAsyEi5zeXNtbC5FbnVtTGl0ZXJhbEgAEg8KBXVuc2V0GAogASgISAASIQoHY29tcGxleBgLIAEoCzIOLnN5c21sLkNvbXBsZXhIABIdCgVhcnJheRgMIAEoCzIMLnN5c21sLkFycmF5SAASHwoGdmVjdG9yGA0gASgLMg0uc3lzbWwuVmVjdG9ySAASMAoPdmVjdG9yX3F1YW50aXR5GA4gASgLMhUuc3lzbWwuVmVjdG9yUXVhbnRpdHlIABIwCg9tZWFzdXJlbWVudF9yZWYYDyABKAsyFS5zeXNtbC5NZWFzdXJlbWVudFJlZkgAEhIKCGluZmluaXR5GBAgASgISAASIwoIZnVuY3Rpb24YESABKAsyDy5zeXNtbC5GdW5jdGlvbkgAEh4KA3NldBgSIAEoCzIPLnN5c21sLlZhbHVlU2V0SAASMAoPdGVuc29yX3F1YW50aXR5GBMgASgLMhUuc3lzbWwuVGVuc29yUXVhbnRpdHlIABInCgptZXRhb2JqZWN0GBQgASgLMhEuc3lzbWwuTWV0YW9iamVjdEgAEisKDHVuZGV0ZXJtaW5lZBgVIAEoCzITLnN5c21sLlVuZGV0ZXJtaW5lZEgAQgYKBGtpbmQiNgoKTWV0YW9iamVjdBISCgplbGVtZW50X2lkGAEgASgJEhQKDG1ldGFjbGFzc19pZBgCIAEoCSJGCgxVbmRldGVybWluZWQSDgoGcmVhc29uGAEgASgJEiYKBWNvdW50GAIgASgLMhcuc3lzbWwuTXVsdGlwbGljaXR5SW5mbyIsCghGdW5jdGlvbhIPCgdjYWxjX2lkGAEgASgJEg8KB3NlbGZfaWQYAiABKAMiKgoIVmFsdWVTZXQSHgoIZWxlbWVudHMYASADKAsyDC5zeXNtbC5WYWx1ZSJJCg5UZW5zb3JRdWFudGl0eRISCgpkaW1lbnNpb25zGAEgAygDEiMKCmNvbXBvbmVudHMYAiADKAsyDy5zeXNtbC5RdWFudGl0eSI7CgVBcnJheRISCgpkaW1lbnNpb25zGAEgAygDEh4KCGVsZW1lbnRzGAIgAygLMgwuc3lzbWwuVmFsdWUiKgoGVmVjdG9yEiAKCmNvbXBvbmVudHMYASADKAsyDC5zeXNtbC5WYWx1ZSI1Cg5WZWN0b3JRdWFudGl0eRIjCgpjb21wb25lbnRzGAEgAygLMg8uc3lzbWwuUXVhbnRpdHkiKgoHQ29tcGxleBIMCgRyZWFsGAEgASgBEhEKCWltYWdpbmFyeRgCIAEoASJkCgtFbnVtTGl0ZXJhbBISCgpsaXRlcmFsX2lkGAEgASgJEhYKDmVudW1lcmF0aW9uX2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGwoFdmFsdWUYBCABKAsyDC5zeXNtbC5WYWx1ZSIvCg1WYWx1ZVNlcXVlbmNlEh4KCGVsZW1lbnRzGAEgAygLMgwuc3lzbWwuVmFsdWUifAoIUXVhbnRpdHkSFwoNaW50X21hZ25pdHVkZRgBIAEoA0gAEhgKDnJlYWxfbWFnbml0dWRlGAIgASgBSAASDAoEdW5pdBgDIAEoCRIiCgl1bml0X3Rlcm0YBCABKAsyDy5zeXNtbC5Vbml0VGVybUILCgltYWduaXR1ZGUiUwoOTWVhc3VyZW1lbnRSZWYSDAoEdW5pdBgBIAEoCRIiCgl1bml0X3Rlcm0YAiABKAsyDy5zeXNtbC5Vbml0VGVybRIPCgd1bml0X2lkGAMgASgJIlQKCFVuaXRUZXJtEhEKCXNjYWxlX251bRgBIAEoARIRCglzY2FsZV9kZW4YAiABKAESIgoHZmFjdG9ycxgDIAMoCzIRLnN5c21sLlVuaXRGYWN0b3IiLwoKVW5pdEZhY3RvchIPCgd1bml0X2lkGAEgASgJEhAKCGV4cG9uZW50GAIgASgBIlgKCkRpYWdub3N0aWMSEAoIc2V2ZXJpdHkYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIZCgRzcGFuGAMgASgLMgsuc3lzbWwuU3BhbhIMCgRjb2RlGAQgASgJIl4KBFNwYW4SDAoEZmlsZRgBIAEoCRISCgpzdGFydF9saW5lGAIgASgFEhEKCXN0YXJ0X2NvbBgDIAEoBRIQCghlbmRfbGluZRgEIAEoBRIPCgdlbmRfY29sGAUgASgFIhMKEVNlcnZlckluZm9SZXF1ZXN0IjsKElNlcnZlckluZm9SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJEhQKDGNhcGFiaWxpdGllcxgCIAMoCSJTCgxRdWVyeVJlcXVlc3QSEgoKbW9kZWxfaGFzaBgBIAEoCRIbCgVxdWVyeRgCIAEoCzIMLnN5c21sLlF1ZXJ5EhIKCm9zbGNfcXVlcnkYAyABKAkiPAoNUXVlcnlSZXNwb25zZRIrCghlbGVtZW50cxgBIAMoCzIZLnN5c21sLlF1ZXJ5UmVzdWx0RWxlbWVudCJICgVRdWVyeRINCgVzY29wZRgBIAMoCRIOCgZzZWxlY3QYAiADKAkSIAoFd2hlcmUYAyABKAsyES5zeXNtbC5Db25zdHJhaW50InwKCkNvbnN0cmFpbnQSLwoJcHJpbWl0aXZlGAEgASgLMhouc3lzbWwuUHJpbWl0aXZlQ29uc3RyYWludEgAEi8KCWNvbXBvc2l0ZRgCIAEoCzIaLnN5c21sLkNvbXBvc2l0ZUNvbnN0cmFpbnRIAEIMCgpjb25zdHJhaW50InMKE1ByaW1pdGl2ZUNvbnN0cmFpbnQSDwoHaW52ZXJzZRgBIAEoCBIQCghwcm9wZXJ0eRgCIAEoCRIqCghvcGVyYXRvchgDIAEoDjIYLnN5c21sLlByaW1pdGl2ZU9wZXJhdG9yEg0KBXZhbHVlGAQgAygJImgKE0NvbXBvc2l0ZUNvbnN0cmFpbnQSKgoIb3BlcmF0b3IYASABKA4yGC5zeXNtbC5Db21wb3NpdGVPcGVyYXRvchIlCgpjb25zdHJhaW50GAIgAygLMhEuc3lzbWwuQ29uc3RyYWludCKgAQoSUXVlcnlSZXN1bHRFbGVtZW50EgoKAmlkGAEgASgJEgwKBHR5cGUYAiABKAkSPQoKcHJvcGVydGllcxgDIAMoCzIpLnN5c21sLlF1ZXJ5UmVzdWx0RWxlbWVudC5Qcm9wZXJ0aWVzRW50cnkaMQoPUHJvcGVydGllc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicwoKU3dlZXBSYW5nZRIRCglwYXJhbWV0ZXIYASABKAkSGwoFc3RhcnQYAiABKAsyDC5zeXNtbC5WYWx1ZRIZCgNlbmQYAyABKAsyDC5zeXNtbC5WYWx1ZRIaCgRzdGVwGAQgASgLMgwuc3lzbWwuVmFsdWUi0AIKD1J1blN3ZWVwUmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhEKCXN5bWJvbF9pZBgCIAEoCRIZChFzdWJqZWN0X3N5bWJvbF9pZBgDIAEoCRIfCglhcmd1bWVudHMYBCADKAsyDC5zeXNtbC5WYWx1ZRJDCg9uYW1lZF9hcmd1bWVudHMYBSADKAsyKi5zeXNtbC5SdW5Td2VlcFJlcXVlc3QuTmFtZWRBcmd1bWVudHNFbnRyeRIhCgZyYW5nZXMYBiADKAsyES5zeXNtbC5Td2VlcFJhbmdlEg8KB3NhbXBsZXMYByABKAMSDAoEc2VlZBgIIAEoBBIOCgZlbmdpbmUYCSABKAkaQwoTTmFtZWRBcmd1bWVudHNFbnRyeRILCgNrZXkYASABKAkSGwoFdmFsdWUYAiABKAsyDC5zeXNtbC5WYWx1ZToCOAEi9AEKCFN3ZWVwUm93EiEKBmlucHV0cxgBIAMoCzIRLnN5c21sLkNhbGNPdXRwdXQSIgoHb3V0cHV0cxgCIAMoCzIRLnN5c21sLkNhbGNPdXRwdXQSIAoIdmVyZGljdHMYAyADKAsyDi5zeXNtbC5WZXJkaWN0EhYKDmVsYXBzZWRfbWljcm9zGAQgASgDEg0KBWVycm9yGAUgASgJEiwKDmZhaWx1cmVfcmVhc29uGAYgASgOMhQuc3lzbWwuRmFpbHVyZVJlYXNvbhIqCgtldmFsdWF0aW9ucxgHIAMoCzIVLnN5c21sLkNhc2VFdmFsdWF0aW9uIq0CChBSdW5Td2VlcFJlc3BvbnNlEh0KBHJvd3MYASADKAsyDy5zeXNtbC5Td2VlcFJvdxISCgpwYXJhbWV0ZXJzGAIgAygJEg8KB3NhbXBsZWQYAyABKAgSDAoEc2VlZBgEIAEoBBINCgVlcnJvchgFIAEoCRImCgtkaWFnbm9zdGljcxgGIAMoCzIRLnN5c21sLkRpYWdub3N0aWMSLAoOZmFpbHVyZV9yZWFzb24YByABKA4yFC5zeXNtbC5GYWlsdXJlUmVhc29uEiIKCWluc3RhbmNlcxgIIAMoCzIPLnN5c21sLkluc3RhbmNlEg4KBmVuZ2luZRgJIAEoCRIQCghzdHJlbmd0aBgKIAEoCRIcCgZib3VuZHMYCyADKAsyDC5zeXNtbC5Cb3VuZCJuChdSdW5Eb2N1bWVudFF1ZXJ5UmVxdWVzdBISCgptb2RlbF9oYXNoGAEgASgJEhAKCHF1ZXJ5X2lkGAIgASgJEi0KCGJpbmRpbmdzGAMgAygLMhsuc3lzbWwuRG9jdW1lbnRRdWVyeUJpbmRpbmciTwoURG9jdW1lbnRRdWVyeUJpbmRpbmcSEQoJcGFyYW1ldGVyGAEgASgJEiQKBnZhbHVlcxgCIAMoCzIULnN5c21sLkRvY3VtZW50VmFsdWUi9wIKDURvY3VtZW50VmFsdWUSFAoKZWxlbWVudF9pZBgBIAEoCUgAEhYKDHN0cmluZ192YWx1ZRgCIAEoCUgAEhMKCWludF92YWx1ZRgDIAEoA0gAEhQKCnJlYWxfdmFsdWUYBCABKAFIABIUCgpib29sX3ZhbHVlGAUgASgISAASEgoIaW5maW5pdHkYBiABKAhIABIjCghxdWFudGl0eRgIIAEoCzIPLnN5c21sLlF1YW50aXR5SAASKQoHdmVyZGljdBgJIAEoCzIWLnN5c21sLkRvY3VtZW50VmVyZGljdEgAEicKBm9iamVjdBgKIAEoCzIVLnN5c21sLkRvY3VtZW50T2JqZWN0SAASJQoFc3RhdGUYCyABKAsyFC5zeXNtbC5Eb2N1bWVudFN0YXRlSAASJQoFZXZlbnQYDCABKAsyFC5zeXNtbC5Eb2N1bWVudEV2ZW50SAASFAoMZWxlbWVudF90eXBlGAcgASgJQgYKBGtpbmQiWgoORG9jdW1lbnRPYmplY3QSEwoLaW5zdGFuY2VfaWQYASABKAMSDAoEcGF0aBgCIAEoCRIlCgdlbGVtZW50GAMgASgLMhQuc3lzbWwuRG9jdW1lbnRWYWx1ZSKuAQoPRG9jdW1lbnRWZXJkaWN0EicKCWFzc2VydGlvbhgBIAEoCzIULnN5c21sLkRvY3VtZW50VmFsdWUSDAoEa2luZBgCIAEoCRIMCgR0ZXh0GAMgASgJEgwKBHBhdGgYBCABKAkSDwoHdmVyZGljdBgFIAEoCRIRCgljb25kaXRpb24YBiABKAkSDgoGcmVhc29uGAcgASgJEhQKDHZlcmlmaWNhdGlvbhgIIAMoCSKxAQoNRG9jdW1lbnRTdGF0ZRIlCgZvYmplY3QYASABKAsyFS5zeXNtbC5Eb2N1bWVudE9iamVjdBIPCgdtYWNoaW5lGAIgASgJEgwKBG5hbWUYAyABKAkSEgoKc3RhdGVfcGF0aBgEIAEoCRIjCgVzdGF0ZRgFIAEoCzIULnN5c21sLkRvY3VtZW50VmFsdWUSDgoGcmVnaW9uGAYgASgJEhEKCWVuY2xvc2luZxgHIAMoCSKcAgoNRG9jdW1lbnRFdmVudBIMCgRraW5kGAEgASgJEiIKBHRpbWUYAiABKAsyFC5zeXNtbC5Eb2N1bWVudFZhbHVlEiUKBm9iamVjdBgDIAEoCzIVLnN5c21sLkRvY3VtZW50T2JqZWN0Eg8KB21hY2hpbmUYBCABKAkSDQoFc3RhdGUYBSABKAkSDAoEZnJvbRgGIAEoCRIKCgJ0bxgHIAEoCRIlCgZ0YXJnZXQYCCABKAsyFS5zeXNtbC5Eb2N1bWVudE9iamVjdBINCgVldmVudBgJIAEoCRIPCgdwYXlsb2FkGAogAygJEhQKDGFsdGVybmF0aXZlcxgLIAMoCRINCgV0YWtlbhgMIAEoCRIMCgR0ZXh0GA0gASgJIiMKE0RvY3VtZW50UXVlcnlDb2x1bW4SDAoEbmFtZRgBIAEoCSI5ChFEb2N1bWVudFF1ZXJ5Q2VsbBIkCgZ2YWx1ZXMYASADKAsyFC5zeXNtbC5Eb2N1bWVudFZhbHVlImIKEERvY3VtZW50UXVlcnlSb3cSJQoHZWxlbWVudBgBIAEoCzIULnN5c21sLkRvY3VtZW50VmFsdWUSJwoFY2VsbHMYAiADKAsyGC5zeXNtbC5Eb2N1bWVudFF1ZXJ5Q2VsbCJuChhSdW5Eb2N1bWVudFF1ZXJ5UmVzcG9uc2USKwoHY29sdW1ucxgBIAMoCzIaLnN5c21sLkRvY3VtZW50UXVlcnlDb2x1bW4SJQoEcm93cxgCIAMoCzIXLnN5c21sLkRvY3VtZW50UXVlcnlSb3ciTgoVUmVuZGVyRG9jdW1lbnRSZXF1ZXN0EhIKCm1vZGVsX2hhc2gYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkSDAoEZm9ybRgDIAEoCSI4ChZSZW5kZXJEb2N1bWVudFJlc3BvbnNlEhAKCG1hcmtkb3duGAEgASgJEgwKBGh0bWwYAiABKAkqkwEKDUZhaWx1cmVSZWFzb24SHgoaRkFJTFVSRV9SRUFTT05fVU5TUEVDSUZJRUQQABIdChlGQUlMVVJFX1JFQVNPTl9FVkFMVUFUSU9OEAESHQoZRkFJTFVSRV9SRUFTT05fV1JPTkdfS0lORBACEiQKIEZBSUxVUkVfUkVBU09OX0FNQklHVU9VU19TVUJKRUNUEAMqjAUKC0VkaXRGYWlsdXJlEhwKGEVESVRfRkFJTFVSRV9VTlNQRUNJRklFRBAAEh4KGkVESVRfRkFJTFVSRV9OT19PUEVSQVRJT05TEAESHwobRURJVF9GQUlMVVJFX1VOS05PV05fVEFSR0VUEAISIQodRURJVF9GQUlMVVJFX0FNQklHVU9VU19UQVJHRVQQAxIbChdFRElUX0ZBSUxVUkVfTk9UX1ZBTFVFRBAEEh4KGkVESVRfRkFJTFVSRV9JTlZBTElEX1ZBTFVFEAUSHQoZRURJVF9GQUlMVVJFX0lOVkFMSURfTkFNRRAGEhoKFkVESVRfRkFJTFVSRV9OT1RfTkFNRUQQBxIiCh5FRElUX0ZBSUxVUkVfUkVOQU1FX1JFRkVSRU5DRUQQCBIiCh5FRElUX0ZBSUxVUkVfT1ZFUkxBUFBJTkdfRURJVFMQCRIfChtFRElUX0ZBSUxVUkVfUkVTVUxUX0lOVkFMSUQQChIeChpFRElUX0ZBSUxVUkVfT1dORVJfVU5LTk9XThALEiQKIEVESVRfRkFJTFVSRV9PV05FUl9OT1RfTkFNRVNQQUNFEAwSHQoZRURJVF9GQUlMVVJFX0lMTEVHQUxfS0lORBANEiIKHkVESVRfRkFJTFVSRV9NRU1CRVJfTkFNRV9UQUtFThAOEiIKHkVESVRfRkFJTFVSRV9ERUxFVEVfUkVGRVJFTkNFRBAPEiQKIEVESVRfRkFJTFVSRV9PV05FUl9JTlNJREVfVEFSR0VUEBASIAocRURJVF9GQUlMVVJFX01PVkVfUkVGRVJFTkNFRBAREiUKIUVESVRfRkFJTFVSRV9SRUZFUkVOQ0VEX0VMU0VXSEVSRRASKpIBChFQcmltaXRpdmVPcGVyYXRvchIiCh5QUklNSVRJVkVfT1BFUkFUT1JfVU5TUEVDSUZJRUQQABIcChhQUklNSVRJVkVfT1BFUkFUT1JfRVFVQUwQARIeChpQUklNSVRJVkVfT1BFUkFUT1JfR1JFQVRFUhACEhsKF1BSSU1JVElWRV9PUEVSQVRPUl9MRVNTEAMqbgoRQ29tcG9zaXRlT3BlcmF0b3ISIgoeQ09NUE9TSVRFX09QRVJBVE9SX1VOU1BFQ0lGSUVEEAASGgoWQ09NUE9TSVRFX09QRVJBVE9SX0FORBABEhkKFUNPTVBPU0lURV9PUEVSQVRPUl9PUhACMr8MCgxTeXNNTFNlcnZpY2USRAoNR2V0U2VydmVySW5mbxIYLnN5c21sLlNlcnZlckluZm9SZXF1ZXN0Ghkuc3lzbWwuU2VydmVySW5mb1Jlc3BvbnNlEj4KCVBhcnNlRmlsZRIXLnN5c21sLlBhcnNlRmlsZVJlcXVlc3QaGC5zeXNtbC5QYXJzZUZpbGVSZXNwb25zZRJHCgxQYXJzZVNvdXJjZXMSGi5zeXNtbC5QYXJzZVNvdXJjZXNSZXF1ZXN0Ghsuc3lzbWwuUGFyc2VTb3VyY2VzUmVzcG9uc2USOwoJR2V0U3ltYm9sEhcuc3lzbWwuR2V0U3ltYm9sUmVxdWVzdBoVLnN5c21sLlN5bWJvbFJlc3BvbnNlEkcKDkdldERpYWdub3N0aWNzEhkuc3lzbWwuRGlhZ25vc3RpY3NSZXF1ZXN0Ghouc3lzbWwuRGlhZ25vc3RpY3NSZXNwb25zZRI7CghFdmFsdWF0ZRIWLnN5c21sLkV2YWx1YXRlUmVxdWVzdBoXLnN5c21sLkV2YWx1YXRlUmVzcG9uc2USRAoLSW5zdGFudGlhdGUSGS5zeXNtbC5JbnN0YW50aWF0ZVJlcXVlc3QaGi5zeXNtbC5JbnN0YW50aWF0ZVJlc3BvbnNlEkoKDUV4ZWN1dGVBY3Rpb24SGy5zeXNtbC5FeGVjdXRlQWN0aW9uUmVxdWVzdBocLnN5c21sLkV4ZWN1dGVBY3Rpb25SZXNwb25zZRJHCgxFeGVjdXRlU3RhdGUSGi5zeXNtbC5FeGVjdXRlU3RhdGVSZXF1ZXN0Ghsuc3lzbWwuRXhlY3V0ZVN0YXRlUmVzcG9uc2USOAoHQ29udmVydBIVLnN5c21sLkNvbnZlcnRSZXF1ZXN0GhYuc3lzbWwuQ29udmVydFJlc3BvbnNlEkEKCkFwcGx5RWRpdHMSGC5zeXNtbC5BcHBseUVkaXRzUmVxdWVzdBoZLnN5c21sLkFwcGx5RWRpdHNSZXNwb25zZRJTChBWZXJpZnlDb25zdHJhaW50Eh4uc3lzbWwuVmVyaWZ5Q29uc3RyYWludFJlcXVlc3QaHy5zeXNtbC5WZXJpZnlDb25zdHJhaW50UmVzcG9uc2USVgoRVmVyaWZ5UmVxdWlyZW1lbnQSHy5zeXNtbC5WZXJpZnlSZXF1aXJlbWVudFJlcXVlc3QaIC5zeXNtbC5WZXJpZnlSZXF1aXJlbWVudFJlc3BvbnNlElkKElZlcmlmeVNhdGlzZmFjdGlvbhIgLnN5c21sLlZlcmlmeVNhdGlzZmFjdGlvblJlcXVlc3QaIS5zeXNtbC5WZXJpZnlTYXRpc2ZhY3Rpb25SZXNwb25zZRJTChBWYWxpZGF0ZUluc3RhbmNlEh4uc3lzbWwuVmFsaWRhdGVJbnN0YW5jZVJlcXVlc3QaHy5zeXNtbC5WYWxpZGF0ZUluc3RhbmNlUmVzcG9uc2USRwoMRXZhbHVhdGVDYWxjEhouc3lzbWwuRXZhbHVhdGVDYWxjUmVxdWVzdBobLnN5c21sLkV2YWx1YXRlQ2FsY1Jlc3BvbnNlEkQKC1J1bkFuYWx5c2lzEhkuc3lzbWwuUnVuQW5hbHlzaXNSZXF1ZXN0Ghouc3lzbWwuUnVuQW5hbHlzaXNSZXNwb25zZRI7CghSdW5Td2VlcBIWLnN5c21sLlJ1blN3ZWVwUmVxdWVzdBoXLnN5c21sLlJ1blN3ZWVwUmVzcG9uc2USRAoLTGlzdEVuZ2luZXMSGS5zeXNtbC5MaXN0RW5naW5lc1JlcXVlc3QaGi5zeXNtbC5MaXN0RW5naW5lc1Jlc3BvbnNlEjIKBVF1ZXJ5EhMuc3lzbWwuUXVlcnlSZXF1ZXN0GhQuc3lzbWwuUXVlcnlSZXNwb25zZRJTChBSdW5Eb2N1bWVudFF1ZXJ5Eh4uc3lzbWwuUnVuRG9jdW1lbnRRdWVyeVJlcXVlc3QaHy5zeXNtbC5SdW5Eb2N1bWVudFF1ZXJ5UmVzcG9uc2USTQoOUmVuZGVyRG9jdW1lbnQSHC5zeXNtbC5SZW5kZXJEb2N1bWVudFJlcXVlc3QaHS5zeXNtbC5SZW5kZXJEb2N1bWVudFJlc3BvbnNlQipaKGdpdGh1Yi5jb20vT3Blbi1NQkVFL09wZW5TeXNNTC9hcGkvcHJvdG9iBnByb3RvMw"); /** * Verdict is one verification's answer: whether the condition held, and, when @@ -2259,6 +2259,12 @@ export type EditOperation = Message<"sysml.EditOperation"> & { */ value: MoveEdit; case: "move"; + } | { + /** + * @generated from field: sysml.AddConnectionEdit add_connection = 6; + */ + value: AddConnectionEdit; + case: "addConnection"; } | { case: undefined; value?: undefined }; }; @@ -2332,6 +2338,63 @@ export type AddMemberEdit = Message<"sysml.AddMemberEdit"> & { export const AddMemberEditSchema: GenMessage = /*@__PURE__*/ messageDesc(file_sysml, 45); +/** + * AddConnectionEdit inserts a usage whose ends connect two features. + * + * @generated from message sysml.AddConnectionEdit + */ +export type AddConnectionEdit = Message<"sysml.AddConnectionEdit"> & { + /** + * Namespace FQN receiving the usage; empty means the document root. + * + * @generated from field: string owner = 1; + */ + owner: string; + + /** + * Usage kind: SysML connection, interface, allocation, binding, flow, + * succession or transition; KerML connector, binding, flow or succession. + * + * @generated from field: string kind = 2; + */ + kind: string; + + /** + * First feature reference resolved from the owner. + * + * @generated from field: string from_end = 3; + */ + fromEnd: string; + + /** + * Second feature reference resolved from the owner. + * + * @generated from field: string to_end = 4; + */ + toEnd: string; + + /** + * Optional declared name. + * + * @generated from field: string name = 5; + */ + name: string; + + /** + * Optional typing target, legal only for typed connection kinds. + * + * @generated from field: string type = 6; + */ + type: string; +}; + +/** + * Describes the message sysml.AddConnectionEdit. + * Use `create(AddConnectionEditSchema)` to create a new message. + */ +export const AddConnectionEditSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_sysml, 46); + /** * DeleteEdit removes a declaration and its owned trivia. * @@ -2358,7 +2421,7 @@ export type DeleteEdit = Message<"sysml.DeleteEdit"> & { * Use `create(DeleteEditSchema)` to create a new message. */ export const DeleteEditSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 46); + messageDesc(file_sysml, 47); /** * MoveEdit re-parents a declaration: the span DeleteEdit would remove is @@ -2389,7 +2452,7 @@ export type MoveEdit = Message<"sysml.MoveEdit"> & { * Use `create(MoveEditSchema)` to create a new message. */ export const MoveEditSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 47); + messageDesc(file_sysml, 48); /** * SetValueEdit sets the value of a feature that already exists, replacing the @@ -2419,7 +2482,7 @@ export type SetValueEdit = Message<"sysml.SetValueEdit"> & { * Use `create(SetValueEditSchema)` to create a new message. */ export const SetValueEditSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 48); + messageDesc(file_sysml, 49); /** * RenameEdit rewrites the name token of a declaration and every reference to @@ -2450,7 +2513,7 @@ export type RenameEdit = Message<"sysml.RenameEdit"> & { * Use `create(RenameEditSchema)` to create a new message. */ export const RenameEditSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 49); + messageDesc(file_sysml, 50); /** * ApplyEditsResponse carries the edited source, or says why nothing was edited. @@ -2541,7 +2604,7 @@ export type ApplyEditsResponse = Message<"sysml.ApplyEditsResponse"> & { * Use `create(ApplyEditsResponseSchema)` to create a new message. */ export const ApplyEditsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 50); + messageDesc(file_sysml, 51); /** * EditedDocument is the edited notation of one document of the model. @@ -2571,7 +2634,7 @@ export type EditedDocument = Message<"sysml.EditedDocument"> & { * Use `create(EditedDocumentSchema)` to create a new message. */ export const EditedDocumentSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 51); + messageDesc(file_sysml, 52); /** * Referrer is one declaration referring to the target of a refused edit. @@ -2600,7 +2663,7 @@ export type Referrer = Message<"sysml.Referrer"> & { * Use `create(ReferrerSchema)` to create a new message. */ export const ReferrerSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 52); + messageDesc(file_sysml, 53); /** * AppliedEdit is one byte range of the original source that an operation @@ -2666,7 +2729,7 @@ export type AppliedEdit = Message<"sysml.AppliedEdit"> & { * Use `create(AppliedEditSchema)` to create a new message. */ export const AppliedEditSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 53); + messageDesc(file_sysml, 54); /** * SymbolInfo represents any SysML element @@ -2748,7 +2811,7 @@ export type SymbolInfo = Message<"sysml.SymbolInfo"> & { * Use `create(SymbolInfoSchema)` to create a new message. */ export const SymbolInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 54); + messageDesc(file_sysml, 55); /** * Specialization is one generalization edge an element declares. @@ -2790,7 +2853,7 @@ export type Specialization = Message<"sysml.Specialization"> & { * Use `create(SpecializationSchema)` to create a new message. */ export const SpecializationSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 55); + messageDesc(file_sysml, 56); /** * TypeInfo is the static type of a usage, or the classification of a @@ -2856,7 +2919,7 @@ export type TypeInfo = Message<"sysml.TypeInfo"> & { * Use `create(TypeInfoSchema)` to create a new message. */ export const TypeInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 56); + messageDesc(file_sysml, 57); /** * MultiplicityInfo is a declared multiplicity range. A bound the service cannot @@ -2885,7 +2948,7 @@ export type MultiplicityInfo = Message<"sysml.MultiplicityInfo"> & { * Use `create(MultiplicityInfoSchema)` to create a new message. */ export const MultiplicityInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 57); + messageDesc(file_sysml, 58); /** * AttributeInfo represents an attribute with its value @@ -2919,7 +2982,7 @@ export type AttributeInfo = Message<"sysml.AttributeInfo"> & { * Use `create(AttributeInfoSchema)` to create a new message. */ export const AttributeInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 58); + messageDesc(file_sysml, 59); /** * Value represents a runtime-evaluable value @@ -3098,7 +3161,7 @@ export type Value = Message<"sysml.Value"> & { * Use `create(ValueSchema)` to create a new message. */ export const ValueSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 59); + messageDesc(file_sysml, 60); /** * Metaobject is an element of the model held as an instance of its reflective @@ -3135,7 +3198,7 @@ export type Metaobject = Message<"sysml.Metaobject"> & { * Use `create(MetaobjectSchema)` to create a new message. */ export const MetaobjectSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 60); + messageDesc(file_sysml, 61); /** * Undetermined is the model-level result of an expression the model does not @@ -3170,7 +3233,7 @@ export type Undetermined = Message<"sysml.Undetermined"> & { * Use `create(UndeterminedSchema)` to create a new message. */ export const UndeterminedSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 61); + messageDesc(file_sysml, 62); /** * Function is a calc held as a value: a calc definition, or a calc usage with @@ -3207,7 +3270,7 @@ export type Function = Message<"sysml.Function"> & { * Use `create(FunctionSchema)` to create a new message. */ export const FunctionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 62); + messageDesc(file_sysml, 63); /** * ValueSet is a unique, unordered collection — a Collections::Set's elements — @@ -3233,7 +3296,7 @@ export type ValueSet = Message<"sysml.ValueSet"> & { * Use `create(ValueSetSchema)` to create a new message. */ export const ValueSetSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 63); + messageDesc(file_sysml, 64); /** * TensorQuantity is a Quantities::TensorQuantityValue of any rank: its @@ -3265,7 +3328,7 @@ export type TensorQuantity = Message<"sysml.TensorQuantity"> & { * Use `create(TensorQuantitySchema)` to create a new message. */ export const TensorQuantitySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 64); + messageDesc(file_sysml, 65); /** * Array is a Collections::Array: its elements flattened in row-major order @@ -3295,7 +3358,7 @@ export type Array = Message<"sysml.Array"> & { * Use `create(ArraySchema)` to create a new message. */ export const ArraySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 65); + messageDesc(file_sysml, 66); /** * Vector is a VectorValues::NumericalVectorValue: its components in order, @@ -3318,7 +3381,7 @@ export type Vector = Message<"sysml.Vector"> & { * Use `create(VectorSchema)` to create a new message. */ export const VectorSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 66); + messageDesc(file_sysml, 67); /** * VectorQuantity is a Quantities::VectorQuantityValue: one Quantity per axis, @@ -3341,7 +3404,7 @@ export type VectorQuantity = Message<"sysml.VectorQuantity"> & { * Use `create(VectorQuantitySchema)` to create a new message. */ export const VectorQuantitySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 67); + messageDesc(file_sysml, 68); /** * Complex is one complex number in rectangular form. It crosses as one value @@ -3366,7 +3429,7 @@ export type Complex = Message<"sysml.Complex"> & { * Use `create(ComplexSchema)` to create a new message. */ export const ComplexSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 68); + messageDesc(file_sysml, 69); /** * EnumLiteral is one literal of an enumeration definition. A literal is its own @@ -3411,7 +3474,7 @@ export type EnumLiteral = Message<"sysml.EnumLiteral"> & { * Use `create(EnumLiteralSchema)` to create a new message. */ export const EnumLiteralSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 69); + messageDesc(file_sysml, 70); /** * @generated from message sysml.ValueSequence @@ -3428,7 +3491,7 @@ export type ValueSequence = Message<"sysml.ValueSequence"> & { * Use `create(ValueSequenceSchema)` to create a new message. */ export const ValueSequenceSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 70); + messageDesc(file_sysml, 71); /** * Quantity is a magnitude and the measurement reference it is expressed in, sent @@ -3479,7 +3542,7 @@ export type Quantity = Message<"sysml.Quantity"> & { * Use `create(QuantitySchema)` to create a new message. */ export const QuantitySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 71); + messageDesc(file_sysml, 72); /** * MeasurementRef is a MeasurementReferences::ScalarMeasurementReference held as @@ -3527,7 +3590,7 @@ export type MeasurementRef = Message<"sysml.MeasurementRef"> & { * Use `create(MeasurementRefSchema)` to create a new message. */ export const MeasurementRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 72); + messageDesc(file_sysml, 73); /** * UnitTerm is a unit reduced to a scale factor over base units: `km/h` reduces @@ -3561,7 +3624,7 @@ export type UnitTerm = Message<"sysml.UnitTerm"> & { * Use `create(UnitTermSchema)` to create a new message. */ export const UnitTermSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 73); + messageDesc(file_sysml, 74); /** * UnitFactor is one base unit raised to an exponent. @@ -3587,7 +3650,7 @@ export type UnitFactor = Message<"sysml.UnitFactor"> & { * Use `create(UnitFactorSchema)` to create a new message. */ export const UnitFactorSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 74); + messageDesc(file_sysml, 75); /** * Diagnostic represents a parse/semantic error or warning @@ -3626,7 +3689,7 @@ export type Diagnostic = Message<"sysml.Diagnostic"> & { * Use `create(DiagnosticSchema)` to create a new message. */ export const DiagnosticSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 75); + messageDesc(file_sysml, 76); /** * Span represents a source location @@ -3665,7 +3728,7 @@ export type Span = Message<"sysml.Span"> & { * Use `create(SpanSchema)` to create a new message. */ export const SpanSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 76); + messageDesc(file_sysml, 77); /** * ServerInfoRequest asks the service to describe itself. It carries no fields; @@ -3681,7 +3744,7 @@ export type ServerInfoRequest = Message<"sysml.ServerInfoRequest"> & { * Use `create(ServerInfoRequestSchema)` to create a new message. */ export const ServerInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 77); + messageDesc(file_sysml, 78); /** * ServerInfoResponse describes the running service. @@ -3823,7 +3886,7 @@ export type ServerInfoResponse = Message<"sysml.ServerInfoResponse"> & { * Use `create(ServerInfoResponseSchema)` to create a new message. */ export const ServerInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 78); + messageDesc(file_sysml, 79); /** * QueryRequest runs a Query against a model the service already parsed. @@ -3856,7 +3919,7 @@ export type QueryRequest = Message<"sysml.QueryRequest"> & { * Use `create(QueryRequestSchema)` to create a new message. */ export const QueryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 79); + messageDesc(file_sysml, 80); /** * QueryResponse contains the elements the query selected, in the order they are @@ -3878,7 +3941,7 @@ export type QueryResponse = Message<"sysml.QueryResponse"> & { * Use `create(QueryResponseSchema)` to create a new message. */ export const QueryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 80); + messageDesc(file_sysml, 81); /** * Query is the standard's Query resource (SysML v2 API & Services). Its `@type` @@ -3918,7 +3981,7 @@ export type Query = Message<"sysml.Query"> & { * Use `create(QuerySchema)` to create a new message. */ export const QuerySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 81); + messageDesc(file_sysml, 82); /** * Constraint is the standard's Constraint, whose `@type` discriminates between @@ -3950,7 +4013,7 @@ export type Constraint = Message<"sysml.Constraint"> & { * Use `create(ConstraintSchema)` to create a new message. */ export const ConstraintSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 82); + messageDesc(file_sysml, 83); /** * PrimitiveConstraint compares one property of an element against a value. @@ -3993,7 +4056,7 @@ export type PrimitiveConstraint = Message<"sysml.PrimitiveConstraint"> & { * Use `create(PrimitiveConstraintSchema)` to create a new message. */ export const PrimitiveConstraintSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 83); + messageDesc(file_sysml, 84); /** * CompositeConstraint combines constraints. An empty constraint list fails the @@ -4018,7 +4081,7 @@ export type CompositeConstraint = Message<"sysml.CompositeConstraint"> & { * Use `create(CompositeConstraintSchema)` to create a new message. */ export const CompositeConstraintSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 84); + messageDesc(file_sysml, 85); /** * QueryResultElement is one matched element. `id` and `type` are always @@ -4054,7 +4117,7 @@ export type QueryResultElement = Message<"sysml.QueryResultElement"> & { * Use `create(QueryResultElementSchema)` to create a new message. */ export const QueryResultElementSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 85); + messageDesc(file_sysml, 86); /** * SweepRange is one parameter's range: the endpoints a swept run advances @@ -4098,7 +4161,7 @@ export type SweepRange = Message<"sysml.SweepRange"> & { * Use `create(SweepRangeSchema)` to create a new message. */ export const SweepRangeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 86); + messageDesc(file_sysml, 87); /** * RunSweepRequest runs one analysis case or calc once per row of a sweep. Every @@ -4181,7 +4244,7 @@ export type RunSweepRequest = Message<"sysml.RunSweepRequest"> & { * Use `create(RunSweepRequestSchema)` to create a new message. */ export const RunSweepRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 87); + messageDesc(file_sysml, 88); /** * SweepRow is one run of a sweep: what it bound, what it produced, how long it @@ -4249,7 +4312,7 @@ export type SweepRow = Message<"sysml.SweepRow"> & { * Use `create(SweepRowSchema)` to create a new message. */ export const SweepRowSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 88); + messageDesc(file_sysml, 89); /** * RunSweepResponse carries the table, one row per run, in the order the runs @@ -4339,7 +4402,7 @@ export type RunSweepResponse = Message<"sysml.RunSweepResponse"> & { * Use `create(RunSweepResponseSchema)` to create a new message. */ export const RunSweepResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 89); + messageDesc(file_sysml, 90); /** * RunDocumentQueryRequest runs a named document query — a calc def @@ -4381,7 +4444,7 @@ export type RunDocumentQueryRequest = Message<"sysml.RunDocumentQueryRequest"> & * Use `create(RunDocumentQueryRequestSchema)` to create a new message. */ export const RunDocumentQueryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 90); + messageDesc(file_sysml, 91); /** * DocumentQueryBinding binds one entry parameter of a document query. @@ -4405,7 +4468,7 @@ export type DocumentQueryBinding = Message<"sysml.DocumentQueryBinding"> & { * Use `create(DocumentQueryBindingSchema)` to create a new message. */ export const DocumentQueryBindingSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 91); + messageDesc(file_sysml, 92); /** * DocumentValue is one typed document-query value. A request binds a model @@ -4512,7 +4575,7 @@ export type DocumentValue = Message<"sysml.DocumentValue"> & { * Use `create(DocumentValueSchema)` to create a new message. */ export const DocumentValueSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 92); + messageDesc(file_sysml, 93); /** * DocumentObject is an object the service holds for the model, created by @@ -4559,7 +4622,7 @@ export type DocumentObject = Message<"sysml.DocumentObject"> & { * Use `create(DocumentObjectSchema)` to create a new message. */ export const DocumentObjectSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 93); + messageDesc(file_sysml, 94); /** * DocumentVerdict is one row a `Verdicts` query answered: an assertion checked @@ -4635,7 +4698,7 @@ export type DocumentVerdict = Message<"sysml.DocumentVerdict"> & { * Use `create(DocumentVerdictSchema)` to create a new message. */ export const DocumentVerdictSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 94); + messageDesc(file_sysml, 95); /** * DocumentState is one row a `States` query answered: an active leaf state of @@ -4702,7 +4765,7 @@ export type DocumentState = Message<"sysml.DocumentState"> & { * Use `create(DocumentStateSchema)` to create a new message. */ export const DocumentStateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 95); + messageDesc(file_sysml, 96); /** * DocumentEvent is one row an `Events` query answered: one record of the @@ -4808,7 +4871,7 @@ export type DocumentEvent = Message<"sysml.DocumentEvent"> & { * Use `create(DocumentEventSchema)` to create a new message. */ export const DocumentEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 96); + messageDesc(file_sysml, 97); /** * DocumentQueryColumn is one projected property, in projection order. @@ -4827,7 +4890,7 @@ export type DocumentQueryColumn = Message<"sysml.DocumentQueryColumn"> & { * Use `create(DocumentQueryColumnSchema)` to create a new message. */ export const DocumentQueryColumnSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 97); + messageDesc(file_sysml, 98); /** * DocumentQueryCell is one row's values for one column, in the query's order. @@ -4846,7 +4909,7 @@ export type DocumentQueryCell = Message<"sysml.DocumentQueryCell"> & { * Use `create(DocumentQueryCellSchema)` to create a new message. */ export const DocumentQueryCellSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 98); + messageDesc(file_sysml, 99); /** * DocumentQueryRow is one selected element and its projected cells, one per @@ -4876,7 +4939,7 @@ export type DocumentQueryRow = Message<"sysml.DocumentQueryRow"> & { * Use `create(DocumentQueryRowSchema)` to create a new message. */ export const DocumentQueryRowSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 99); + messageDesc(file_sysml, 100); /** * RunDocumentQueryResponse is the query's answer: its projected columns and its @@ -4903,7 +4966,7 @@ export type RunDocumentQueryResponse = Message<"sysml.RunDocumentQueryResponse"> * Use `create(RunDocumentQueryResponseSchema)` to create a new message. */ export const RunDocumentQueryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 100); + messageDesc(file_sysml, 101); /** * RenderDocumentRequest renders a named document — a part def specializing @@ -4944,7 +5007,7 @@ export type RenderDocumentRequest = Message<"sysml.RenderDocumentRequest"> & { * Use `create(RenderDocumentRequestSchema)` to create a new message. */ export const RenderDocumentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 101); + messageDesc(file_sysml, 102); /** * RenderDocumentResponse carries the rendered document in the form requested, @@ -4970,7 +5033,7 @@ export type RenderDocumentResponse = Message<"sysml.RenderDocumentResponse"> & { * Use `create(RenderDocumentResponseSchema)` to create a new message. */ export const RenderDocumentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_sysml, 102); + messageDesc(file_sysml, 103); /** * FailureReason says what kind of failure an `error` reports, so a client acts diff --git a/client/opensysml/README.md b/client/opensysml/README.md index d7799b4517..0f8e3d90e9 100644 --- a/client/opensysml/README.md +++ b/client/opensysml/README.md @@ -234,14 +234,18 @@ elements, err := client.Query(ctx, model, opensysml.Query{ }) ``` -Edits are typed the same way — `SetValue`, `Rename`, `AddMember`, `Delete`, -`Move` — and either all apply, answering the edited source, or none do and the +Edits are typed the same way — `SetValue`, `Rename`, `AddMember`, `AddConnection`, +`Delete`, `Move` — and either all apply, answering the edited source, or none do and the refusal arrives as an `*EditError` naming its kind: ```go result, err := client.ApplyEdits(ctx, model, opensysml.SetValue{Target: "Demo::sedan::mass", Value: "1200.0[SI::kg]"}) +result, err = client.ApplyEdits(ctx, model, opensysml.AddConnection{ + Owner: "Demo::System", Kind: "allocation", From: "a", To: "b", Name: "alloc1", +}) + var refused *opensysml.EditError if errors.As(err, &refused) && refused.Failure == opensysml.EditFailureDeleteReferenced { // refused.Referrers names what still refers to it, each with its document diff --git a/client/opensysml/authoring.go b/client/opensysml/authoring.go index 197fa442ab..4302e02763 100644 --- a/client/opensysml/authoring.go +++ b/client/opensysml/authoring.go @@ -147,7 +147,7 @@ func (c *client) convert(ctx context.Context, req *pb.ConvertRequest) (*Conversi } // Edit is one source-preserving change to a model's notation: SetValue, Rename, -// AddMember, Delete or Move. A type switch over them is exhaustive. +// AddMember, AddConnection, Delete or Move. A type switch over them is exhaustive. type Edit interface { isEdit() } @@ -188,6 +188,22 @@ type AddMember struct { Specializes []string } +// AddConnection inserts a connection-like usage into a namespace or document root. +type AddConnection struct { + // Owner is the namespace to receive the usage; empty is the document root. + Owner string + // Kind is the written connection kind, such as "allocation" or "flow". + Kind string + // From is the first feature reference, written as notation. + From string + // To is the second feature reference, written as notation. + To string + // Name is the optional declared identifier. + Name string + // Type is an optional typing target. + Type string +} + // Delete removes a declaration and the trivia it owns. type Delete struct { // Target is the declaration to remove, by qualified name. @@ -205,11 +221,12 @@ type Move struct { Owner string } -func (SetValue) isEdit() { /* marker: closed Edit set */ } -func (Rename) isEdit() { /* marker: closed Edit set */ } -func (AddMember) isEdit() { /* marker: closed Edit set */ } -func (Delete) isEdit() { /* marker: closed Edit set */ } -func (Move) isEdit() { /* marker: closed Edit set */ } +func (SetValue) isEdit() { /* marker: closed Edit set */ } +func (Rename) isEdit() { /* marker: closed Edit set */ } +func (AddMember) isEdit() { /* marker: closed Edit set */ } +func (AddConnection) isEdit() { /* marker: closed Edit set */ } +func (Delete) isEdit() { /* marker: closed Edit set */ } +func (Move) isEdit() { /* marker: closed Edit set */ } // EditFailure says why edits were refused. type EditFailure int32 @@ -326,6 +343,22 @@ func (c *client) requireEditDocuments(ctx context.Context, document string) erro return nil } +func (c *client) requireCapabilities(ctx context.Context, capabilities ...string) error { + info, err := c.serverInfo(ctx) + if err != nil { + return err + } + for _, capability := range capabilities { + if !info.Has(capability) { + return &StatusError{ + Code: CodeUnimplemented, + Message: fmt.Sprintf("capability %q is unavailable", capability), + } + } + } + return nil +} + func (c *client) ApplyDocumentEdits(ctx context.Context, model *Model, document string, edits ...Edit) (*EditResult, error) { hash, err := c.call(model) if err != nil { @@ -334,6 +367,14 @@ func (c *client) ApplyDocumentEdits(ctx context.Context, model *Model, document if err := c.requireEditDocuments(ctx, document); err != nil { return nil, err } + for _, operation := range edits { + if _, ok := operation.(AddConnection); ok { + if err := c.requireCapabilities(ctx, CapabilityAuthoring, CapabilityConnectionAuthoring); err != nil { + return nil, err + } + break + } + } // This client reads Documents, so a model of several documents may be edited. req := &pb.ApplyEditsRequest{ModelHash: hash, Document: document, AcceptDocuments: true} for _, edit := range edits { @@ -407,6 +448,13 @@ func editToProto(edit Edit) (*pb.EditOperation, error) { Value: operation.Value, Specializes: append([]string(nil), operation.Specializes...), }}}, nil + case AddConnection: + return &pb.EditOperation{Operation: &pb.EditOperation_AddConnection{ + AddConnection: &pb.AddConnectionEdit{ + Owner: operation.Owner, Kind: operation.Kind, FromEnd: operation.From, + ToEnd: operation.To, Name: operation.Name, Type: operation.Type, + }, + }}, nil case Delete: return &pb.EditOperation{Operation: &pb.EditOperation_Delete{Delete: &pb.DeleteEdit{ Target: operation.Target, diff --git a/client/opensysml/authoring_internal_test.go b/client/opensysml/authoring_internal_test.go index 70c0ed71a8..a19879aa2f 100644 --- a/client/opensysml/authoring_internal_test.go +++ b/client/opensysml/authoring_internal_test.go @@ -2,13 +2,15 @@ package opensysml import ( "context" + "errors" + "strings" "testing" pb "github.com/Open-MBEE/OpenSysML/api/proto" ) func (o *oldCaller) applyEdits(context.Context, *pb.ApplyEditsRequest) (*pb.ApplyEditsResponse, error) { - o.t.Fatal("a document name was sent to a service without edit_documents") + o.t.Fatal("an edit was sent without its required capability") return nil, nil } @@ -30,3 +32,35 @@ func TestADocumentNameIsNotSentWithoutTheCapability(t *testing.T) { }) } } + +func TestAddConnectionIsNotSentWithoutItsCapabilities(t *testing.T) { + ctx := context.Background() + model := &Model{Hash: "h"} + tests := map[string]struct { + capabilities []string + missing string + }{ + "predates connection_authoring": { + capabilities: []string{CapabilityApplyEdits, CapabilityAuthoring}, + missing: CapabilityConnectionAuthoring, + }, + "predates authoring": { + capabilities: []string{CapabilityApplyEdits, CapabilityConnectionAuthoring}, + missing: CapabilityAuthoring, + }, + } + for name, test := range tests { + t.Run(name, func(t *testing.T) { + old := &oldCaller{t: t, capabilities: test.capabilities} + c := &client{caller: old} + _, err := c.ApplyEdits(ctx, model, AddConnection{ + Owner: "Demo::System", Kind: "allocation", From: "a", To: "b", + }) + wantUnimplemented(t, "ApplyEdits AddConnection", err) + var status *StatusError + if !errors.As(err, &status) || !strings.Contains(status.Message, test.missing) { + t.Errorf("ApplyEdits error = %v, want missing capability %q", err, test.missing) + } + }) + } +} diff --git a/client/opensysml/surface_test.go b/client/opensysml/surface_test.go index be7694461a..523a9e01aa 100644 --- a/client/opensysml/surface_test.go +++ b/client/opensysml/surface_test.go @@ -954,6 +954,47 @@ func TestApplyEditsAddsAMember(t *testing.T) { } } +func TestApplyEditsAddsAConnection(t *testing.T) { + client := newClient(t) + model := parse(t, client, "package Demo { part def System { part a; part b; } }") + result, err := client.ApplyEdits(context.Background(), model, + opensysml.AddConnection{ + Owner: "Demo::System", Kind: "allocation", From: "a", To: "b", Name: "alloc1", + }) + if err != nil { + t.Fatalf("ApplyEdits: %v", err) + } + if !strings.Contains(result.Content, "allocation alloc1 allocate a to b;") { + t.Errorf("the connection was not added:\n%s", result.Content) + } +} + +func TestApplyEditsAddsATypedConnection(t *testing.T) { + client := newClient(t) + model := parse(t, client, `package Demo { + port def Plug; + connection def Cable { + end a : Plug; + end b : Plug; + } + part def Rig { + part left { port p : Plug; } + part right { port p : Plug; } + } +}`) + result, err := client.ApplyEdits(context.Background(), model, + opensysml.AddConnection{ + Owner: "Demo::Rig", Kind: "connection", From: "left.p", To: "right.p", + Name: "cable", Type: "Cable", + }) + if err != nil { + t.Fatalf("ApplyEdits: %v", err) + } + if !strings.Contains(result.Content, "connection cable : Cable connect left.p to right.p;") { + t.Errorf("the typed connection was not added:\n%s", result.Content) + } +} + func TestEveryOperationIsRefusedAfterClose(t *testing.T) { client, err := opensysml.New() if err != nil { diff --git a/client/opensysml/types.go b/client/opensysml/types.go index 27dbddae74..8680cea273 100644 --- a/client/opensysml/types.go +++ b/client/opensysml/types.go @@ -25,6 +25,7 @@ const ( CapabilityFeatureValues = sysmlgrpc.CapabilityFeatureValues CapabilityApplyEdits = sysmlgrpc.CapabilityApplyEdits CapabilityAuthoring = sysmlgrpc.CapabilityAuthoring + CapabilityConnectionAuthoring = sysmlgrpc.CapabilityConnectionAuthoring CapabilityEditDocuments = sysmlgrpc.CapabilityEditDocuments CapabilityInlineLanguage = sysmlgrpc.CapabilityInlineLanguage CapabilityStrictConformance = sysmlgrpc.CapabilityStrictConformance diff --git a/client/python/README.md b/client/python/README.md index fec649d391..ade9b0cdf4 100644 --- a/client/python/README.md +++ b/client/python/README.md @@ -41,8 +41,12 @@ untouched source: ```python model.edit().add_part_def("", "Vehicle").apply() model.edit().add_part("Vehicle", "engine", type="Engine").apply() +model.edit().add_allocation("Demo::System", "a", "b", name="alloc1").apply() ``` +`Editor.add_connection(owner, kind, from_, to, name=None, type=None)` writes +connection-like usages; `add_allocation` and `add_flow` are typed helpers. + Use `opensysml.loads(text, language="kerml")` for inline KerML content. Every call goes through the `sysml-grpc` service, which `opensysml` starts automatically from diff --git a/client/python/opensysml/capabilities.py b/client/python/opensysml/capabilities.py index 7fe4cf2016..5f569c1d56 100644 --- a/client/python/opensysml/capabilities.py +++ b/client/python/opensysml/capabilities.py @@ -80,6 +80,8 @@ CAPABILITY_APPLY_EDITS = "apply_edits" #: Source-preserving add-member and delete authoring operations. CAPABILITY_AUTHORING = "authoring" +#: The ``ApplyEdits`` ``add_connection`` operation. +CAPABILITY_CONNECTION_AUTHORING = "connection_authoring" #: ``ApplyEdits`` edits a model of several documents as one batch and answers #: each edited document by name in ``EditResult.documents``, with each applied #: edit's document and each referrer's. Without it the service edits a model of diff --git a/client/python/opensysml/connection.py b/client/python/opensysml/connection.py index 7a99fe33e0..823e4d4b06 100644 --- a/client/python/opensysml/connection.py +++ b/client/python/opensysml/connection.py @@ -14,7 +14,9 @@ from opensysml.binary import ensure_binary, resolve_latest_version from opensysml.capabilities import ( CAPABILITY_APPLY_EDITS, - CAPABILITY_AUTHORING, CAPABILITY_INLINE_LANGUAGE, + CAPABILITY_AUTHORING, + CAPABILITY_CONNECTION_AUTHORING, + CAPABILITY_INLINE_LANGUAGE, CAPABILITY_STRICT_CONFORMANCE, CAPABILITY_COMPLEX_VALUES, CAPABILITY_CONVERT, @@ -950,7 +952,8 @@ def apply_edits(self, model_hash, operations): model_hash (str): Hash of the model to edit operations (list[tuple]): ``('set_value', target, value)`` and ``('rename', target, new_name)`` tuples, as - :class:`~opensysml.edit.Editor` collects them + :class:`~opensysml.edit.Editor` collects them, along with + ``('add_connection', owner, kind, from_end, to_end, name, type)`` Returns: EditResult: The edited notation and what each operation changed @@ -967,6 +970,7 @@ def apply_edits(self, model_hash, operations): # This client reads ``documents``, so a model of several may be edited. request = sysml_pb2.ApplyEditsRequest(model_hash=model_hash, accept_documents=True) requests_authoring = False + requests_connection_authoring = False for operation_data in operations: operation = request.operations.add() kind = operation_data[0] @@ -990,6 +994,24 @@ def apply_edits(self, model_hash, operations): add.owner, add.kind, add.name = owner, member_kind, name add.type, add.multiplicity, add.value = type_name, multiplicity, value add.specializes.extend(specializes) + elif kind == 'add_connection': + if len(operation_data) != 7: + raise ValueError( + "malformed add_connection operation: expected 7 fields" + ) + _, owner, connection_kind, from_end, to_end, name, type_name = operation_data + require(info, CAPABILITY_AUTHORING, upgrade_remedy(CAPABILITY_AUTHORING)) + require( + info, + CAPABILITY_CONNECTION_AUTHORING, + upgrade_remedy(CAPABILITY_CONNECTION_AUTHORING), + ) + requests_authoring = True + requests_connection_authoring = True + add = operation.add_connection + add.owner, add.kind = owner, connection_kind + add.from_end, add.to_end = from_end, to_end + add.name, add.type = name, type_name elif kind == 'delete': if len(operation_data) != 3 or not isinstance(operation_data[2], bool): raise ValueError( @@ -1011,12 +1033,14 @@ def apply_edits(self, model_hash, operations): else: raise ValueError( f"unknown edit operation {kind!r}: expected set_value, rename, " - f"add_member, delete or move" + f"add_member, add_connection, delete or move" ) requested_capabilities = [CAPABILITY_APPLY_EDITS] if requests_authoring: requested_capabilities.append(CAPABILITY_AUTHORING) + if requests_connection_authoring: + requested_capabilities.append(CAPABILITY_CONNECTION_AUTHORING) with translate_rpc_errors( unimplemented=self._capability_refusal(requested_capabilities) ): diff --git a/client/python/opensysml/edit.py b/client/python/opensysml/edit.py index bba28ab0e9..484b23c406 100644 --- a/client/python/opensysml/edit.py +++ b/client/python/opensysml/edit.py @@ -8,7 +8,7 @@ before returning it. Operations include setting a feature's value, renaming a declaration, adding a -member, deleting a declaration, and moving one into another namespace. +member or connection, deleting a declaration, and moving one into another namespace. Renaming rewrites the declaration's name token only and is refused for an element that is referenced — see :class:`~opensysml.errors.RenameReferencedError`. """ @@ -308,6 +308,30 @@ def add_member(self, owner, kind, name, type=None, multiplicity=None, value or "", list(specializes))) return self + def add_connection(self, owner, kind, from_, to, name=None, type=None): + """Add a connection-like usage between two feature references.""" + for label, text in (("kind", kind), ("from_", from_), ("to", to)): + if not isinstance(text, str): + raise TypeError( + f"{label} must be notation text, not {text.__class__.__name__}" + ) + for label, text in (("name", name), ("type", type)): + if text is not None and not isinstance(text, str): + raise TypeError( + f"{label} must be notation text, not {text.__class__.__name__}" + ) + owner = owner if isinstance(owner, str) else _target_id(owner) + self._add(("add_connection", owner, kind, from_, to, name or "", type or "")) + return self + + def add_allocation(self, owner, from_, to, **kwargs): + """Add an ``allocation ... allocate from_ to to`` usage.""" + return self.add_connection(owner, "allocation", from_, to, **kwargs) + + def add_flow(self, owner, from_, to, **kwargs): + """Add a ``flow ... from from_ to to`` usage.""" + return self.add_connection(owner, "flow", from_, to, **kwargs) + def delete(self, target, cascade=False): """Delete a declaration, optionally removing declarations that refer to it.""" if not isinstance(cascade, bool): diff --git a/client/python/opensysml/proto/sysml_pb2.py b/client/python/opensysml/proto/sysml_pb2.py index 90215d4984..ad83014a4d 100644 --- a/client/python/opensysml/proto/sysml_pb2.py +++ b/client/python/opensysml/proto/sysml_pb2.py @@ -24,7 +24,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bsysml.proto\x12\x05sysml\"\xb9\x02\n\x07Verdict\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x12\n\nelement_id\x18\x02 \x01(\t\x12\x0f\n\x07\x65lement\x18\x03 \x01(\t\x12\r\n\x05holds\x18\x04 \x01(\x08\x12\x11\n\tcondition\x18\x05 \x01(\t\x12\x13\n\x0binstance_id\x18\x06 \x01(\x03\x12\x18\n\x10instance_type_id\x18\x07 \x01(\t\x12\r\n\x05\x65rror\x18\x08 \x01(\t\x12,\n\x0e\x66\x61ilure_reason\x18\t \x01(\x0e\x32\x14.sysml.FailureReason\x12\x16\n\x0erequirement_id\x18\n \x01(\t\x12\x0e\n\x06\x65ngine\x18\x0b \x01(\t\x12\x10\n\x08strength\x18\x0c \x01(\t\x12\x1c\n\x06\x62ounds\x18\r \x03(\x0b\x32\x0c.sysml.Bound\x12\x15\n\rinstance_path\x18\x0e \x01(\t\"5\n\x05\x42ound\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\x03\x12\x0f\n\x07reached\x18\x03 \x01(\x08\"k\n\x17VerifyConstraintRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x04 \x01(\t\"\x96\x01\n\x18VerifyConstraintResponse\x12\x1f\n\x07verdict\x18\x01 \x01(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x02 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\"l\n\x18VerifyRequirementRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x04 \x01(\t\"m\n\x13VerificationVerdict\x12\x0f\n\x07\x63\x61se_id\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x65tail\x18\x03 \x01(\t\x12\x0f\n\x07subcase\x18\x04 \x01(\x08\x12\x16\n\x0erequirement_id\x18\x05 \x01(\t\"\xd2\x01\n\x19VerifyRequirementResponse\x12\x1f\n\x07verdict\x18\x01 \x01(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x02 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x39\n\x15verification_verdicts\x18\x05 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\"R\n\x19VerifySatisfactionRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x03 \x01(\t\"\x82\x02\n\x1aVerifySatisfactionResponse\x12 \n\x08verdicts\x18\x01 \x03(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x02 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x05 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x39\n\x15verification_verdicts\x18\x06 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\"P\n\x17ValidateInstanceRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x03 \x01(\t\"\xb2\x02\n\x18ValidateInstanceResponse\x12 \n\x08verdicts\x18\x01 \x03(\x0b\x32\x0e.sysml.Verdict\x12\x1f\n\x07summary\x18\x02 \x01(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x03 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x39\n\x15verification_verdicts\x18\x07 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\x12\x0f\n\x07\x62ounded\x18\x08 \x01(\x08\"m\n\x13\x45valuateCalcRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x1f\n\targuments\x18\x03 \x03(\x0b\x32\x0c.sysml.Value\x12\x0e\n\x06\x65ngine\x18\x04 \x01(\t\"\xfd\x01\n\x14\x45valuateCalcResponse\x12\x1c\n\x06result\x18\x01 \x01(\x0b\x32\x0c.sysml.Value\x12\"\n\x07outputs\x18\x02 \x03(\x0b\x32\x11.sysml.CalcOutput\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x05 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x0e\n\x06\x65ngine\x18\x06 \x01(\t\x12\x10\n\x08strength\x18\x07 \x01(\t\x12\x1c\n\x06\x62ounds\x18\x08 \x03(\x0b\x32\x0c.sysml.Bound\"7\n\nCalcOutput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value\"\x93\x01\n\x0e\x43\x61seEvaluation\x12\x13\n\x0b\x66unction_id\x18\x01 \x01(\t\x12\x1f\n\targuments\x18\x02 \x03(\x0b\x32\x0c.sysml.Value\x12\x1c\n\x06result\x18\x03 \x01(\x0b\x32\x0c.sysml.Value\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x10\n\x08selected\x18\x05 \x01(\x08\x12\x0c\n\x04tied\x18\x06 \x01(\x08\"\xa6\x02\n\x12RunAnalysisRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x1f\n\targuments\x18\x04 \x03(\x0b\x32\x0c.sysml.Value\x12\x46\n\x0fnamed_arguments\x18\x05 \x03(\x0b\x32-.sysml.RunAnalysisRequest.NamedArgumentsEntry\x12\x10\n\x08schedule\x18\x06 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x07 \x01(\t\x1a\x43\n\x13NamedArgumentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xdc\x03\n\x13RunAnalysisResponse\x12\"\n\x07outputs\x18\x01 \x03(\x0b\x32\x11.sysml.CalcOutput\x12 \n\x08verdicts\x18\x02 \x03(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x03 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x39\n\x15verification_verdicts\x18\x07 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\x12 \n\x08outcomes\x18\x08 \x03(\x0b\x32\x0e.sysml.Outcome\x12-\n\x0b\x65xploration\x18\t \x01(\x0b\x32\x18.sysml.ExplorationStatus\x12*\n\x0b\x65valuations\x18\n \x03(\x0b\x32\x15.sysml.CaseEvaluation\x12\x0e\n\x06\x65ngine\x18\x0b \x01(\t\x12\x10\n\x08strength\x18\x0c \x01(\t\x12\x1c\n\x06\x62ounds\x18\r \x03(\x0b\x32\x0c.sysml.Bound\"\x97\x02\n\x07Outcome\x12,\n\x07outputs\x18\x01 \x03(\x0b\x32\x1b.sysml.Outcome.OutputsEntry\x12\x13\n\x0b\x66inal_state\x18\x02 \x01(\t\x12\x16\n\x0estates_visited\x18\x03 \x03(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x16\n\x0elinearizations\x18\x05 \x01(\x05\x12\x0f\n\x07witness\x18\x06 \x03(\t\x12&\n\x0b\x64iagnostics\x18\x07 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x13\n\x0bprobability\x18\x08 \x01(\x01\x1a<\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\x96\x01\n\x11\x45xplorationStatus\x12\x10\n\x08\x63omplete\x18\x01 \x01(\x08\x12\x0c\n\x04runs\x18\x02 \x01(\x05\x12\x13\n\x0b\x62udgets_hit\x18\x03 \x03(\t\x12\x13\n\x0bruns_budget\x18\x04 \x01(\x05\x12\x14\n\x0c\x64\x65pth_budget\x18\x05 \x01(\x05\x12!\n\x19probabilities_lower_bound\x18\x06 \x01(\x08\"\x14\n\x12ListEnginesRequest\"\xfc\x01\n\nEngineInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x0f\n\x07\x61nswers\x18\x03 \x03(\t\x12\x0e\n\x06\x62ounds\x18\x04 \x03(\t\x12\x0f\n\x07process\x18\x05 \x01(\t\x12\x15\n\rprocess_found\x18\x06 \x01(\t\x12\r\n\x05ready\x18\x07 \x01(\x08\x12\x13\n\x0bunavailable\x18\x08 \x01(\t\x12\x0c\n\x04kind\x18\t \x01(\t\x12\x10\n\x08protocol\x18\n \x01(\t\x12\x0e\n\x06source\x18\x0b \x01(\t\x12\x0f\n\x07\x63ommand\x18\x0c \x01(\t\x12\x0f\n\x07version\x18\r \x01(\t\x12\x0e\n\x06served\x18\x0e \x01(\x08\"9\n\x13ListEnginesResponse\x12\"\n\x07\x65ngines\x18\x01 \x03(\x0b\x32\x11.sysml.EngineInfo\"\x8c\x01\n\x10ParseFileRequest\x12\x13\n\tfile_path\x18\x01 \x01(\tH\x00\x12\x11\n\x07\x63ontent\x18\x02 \x01(\tH\x00\x12\x18\n\x0c\x63ontent_hash\x18\x03 \x01(\tB\x02\x18\x01\x12\x10\n\x08language\x18\x04 \x01(\t\x12\x1a\n\x12strict_conformance\x18\x05 \x01(\x08\x42\x08\n\x06source\"b\n\x0eSourceDocument\x12\x13\n\tfile_path\x18\x01 \x01(\tH\x00\x12\x11\n\x07\x63ontent\x18\x02 \x01(\tH\x00\x12\x10\n\x08language\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\tB\x08\n\x06source\"[\n\x13ParseSourcesRequest\x12(\n\tdocuments\x18\x01 \x03(\x0b\x32\x15.sysml.SourceDocument\x12\x1a\n\x12strict_conformance\x18\x02 \x01(\x08\"\x83\x01\n\x14ParseSourcesResponse\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12 \n\x05roots\x18\x02 \x03(\x0b\x32\x11.sysml.SymbolInfo\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"\x7f\n\x11ParseFileResponse\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x1f\n\x04root\x18\x02 \x01(\x0b\x32\x11.sysml.SymbolInfo\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"9\n\x10GetSymbolRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\"B\n\x0eSymbolResponse\x12!\n\x06symbol\x18\x01 \x01(\x0b\x32\x11.sysml.SymbolInfo\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"(\n\x12\x44iagnosticsRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\"L\n\x13\x44iagnosticsResponse\x12&\n\x0b\x64iagnostics\x18\x01 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"o\n\x0f\x45valuateRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x12\n\nexpression\x18\x02 \x01(\t\x12\x19\n\x11\x63ontext_symbol_id\x18\x03 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x04 \x01(\t\"g\n\x10\x45valuateResponse\x12\x1c\n\x06result\x18\x01 \x01(\x0b\x32\x0c.sysml.Value\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\"\xc2\x01\n\x08Instance\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x16\n\x0etype_symbol_id\x18\x02 \x01(\t\x12:\n\x0e\x66\x65\x61ture_values\x18\x04 \x03(\x0b\x32\".sysml.Instance.FeatureValuesEntry\x1aI\n\x12\x46\x65\x61tureValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.sysml.FeatureValue:\x02\x38\x01J\x04\x08\x03\x10\x04R\x05slots\"\x84\x01\n\x0c\x46\x65\x61tureValue\x12\x14\n\x0c\x66\x65\x61ture_name\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value\x12\x1c\n\x06values\x18\x03 \x03(\x0b\x32\x0c.sysml.Value\x12\x14\n\x0cmaterialized\x18\x04 \x01(\x08\x12\r\n\x05\x65rror\x18\x05 \x01(\t\";\n\x12InstantiateRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\"\x93\x01\n\x13InstantiateResponse\x12!\n\x08instance\x18\x01 \x01(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\"\n\tinstances\x18\x04 \x03(\x0b\x32\x0f.sysml.Instance\"\xe9\x01\n\x14\x45xecuteActionRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x18\n\x10\x61\x63tion_symbol_id\x18\x02 \x01(\t\x12\x37\n\x06inputs\x18\x03 \x03(\x0b\x32\'.sysml.ExecuteActionRequest.InputsEntry\x12\x10\n\x08schedule\x18\x04 \x01(\t\x12\x1b\n\x13performer_symbol_id\x18\x05 \x01(\t\x1a;\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xad\x02\n\x15\x45xecuteActionResponse\x12:\n\x07outputs\x18\x01 \x03(\x0b\x32).sysml.ExecuteActionResponse.OutputsEntry\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12 \n\x08outcomes\x18\x04 \x03(\x0b\x32\x0e.sysml.Outcome\x12-\n\x0b\x65xploration\x18\x05 \x01(\x0b\x32\x18.sysml.ExplorationStatus\x12\x12\n\nfinal_time\x18\x06 \x01(\x01\x1a<\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\x89\x01\n\x13\x45xecuteStateRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x1f\n\x17state_machine_symbol_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65vents\x18\x03 \x03(\t\x12\x10\n\x08schedule\x18\x04 \x01(\t\x12\x1b\n\x13performer_symbol_id\x18\x05 \x01(\t\"\xd3\x02\n\x14\x45xecuteStateResponse\x12\x16\n\x0estates_visited\x18\x01 \x03(\t\x12\x44\n\rfinal_context\x18\x02 \x03(\x0b\x32-.sysml.ExecuteStateResponse.FinalContextEntry\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12 \n\x08outcomes\x18\x05 \x03(\x0b\x32\x0e.sysml.Outcome\x12-\n\x0b\x65xploration\x18\x06 \x01(\x0b\x32\x18.sysml.ExplorationStatus\x12\x12\n\nfinal_time\x18\x07 \x01(\x01\x1a\x41\n\x11\x46inalContextEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xa0\x01\n\x0e\x43onvertRequest\x12\x13\n\tfile_path\x18\x01 \x01(\tH\x00\x12\x11\n\x07\x63ontent\x18\x02 \x01(\tH\x00\x12\x14\n\nmodel_hash\x18\x06 \x01(\tH\x00\x12\x13\n\x0b\x66rom_format\x18\x03 \x01(\t\x12\x11\n\tto_format\x18\x04 \x01(\t\x12\x1e\n\x16tolerate_syntax_errors\x18\x05 \x01(\x08\x42\x08\n\x06source\"\xb4\x01\n\x0f\x43onvertResponse\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\x12\x13\n\x0b\x66rom_format\x18\x02 \x01(\t\x12\x11\n\tto_format\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x14\n\x0c\x65xperimental\x18\x06 \x01(\x08\x12\x1b\n\x13\x65xperimental_notice\x18\x07 \x01(\t\"}\n\x11\x41pplyEditsRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12(\n\noperations\x18\x02 \x03(\x0b\x32\x14.sysml.EditOperation\x12\x10\n\x08\x64ocument\x18\x03 \x01(\t\x12\x18\n\x10\x61\x63\x63\x65pt_documents\x18\x04 \x01(\x08\"\xdd\x01\n\rEditOperation\x12(\n\tset_value\x18\x01 \x01(\x0b\x32\x13.sysml.SetValueEditH\x00\x12#\n\x06rename\x18\x02 \x01(\x0b\x32\x11.sysml.RenameEditH\x00\x12*\n\nadd_member\x18\x03 \x01(\x0b\x32\x14.sysml.AddMemberEditH\x00\x12#\n\x06\x64\x65lete\x18\x04 \x01(\x0b\x32\x11.sysml.DeleteEditH\x00\x12\x1f\n\x04move\x18\x05 \x01(\x0b\x32\x0f.sysml.MoveEditH\x00\x42\x0b\n\toperation\"\x82\x01\n\rAddMemberEdit\x12\r\n\x05owner\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x14\n\x0cmultiplicity\x18\x05 \x01(\t\x12\r\n\x05value\x18\x06 \x01(\t\x12\x13\n\x0bspecializes\x18\x07 \x03(\t\"-\n\nDeleteEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61scade\x18\x02 \x01(\x08\")\n\x08MoveEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\"-\n\x0cSetValueEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\".\n\nRenameEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"\x90\x02\n\x12\x41pplyEditsResponse\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\x12#\n\x07\x61pplied\x18\x02 \x03(\x0b\x32\x12.sysml.AppliedEdit\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12#\n\x07\x66\x61ilure\x18\x04 \x01(\x0e\x32\x12.sysml.EditFailure\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x1a\n\x12referring_elements\x18\x06 \x03(\t\x12(\n\tdocuments\x18\x07 \x03(\x0b\x32\x15.sysml.EditedDocument\x12\"\n\treferrers\x18\x08 \x03(\x0b\x32\x0f.sysml.Referrer\"/\n\x0e\x45\x64itedDocument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\t\"*\n\x08Referrer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08\x64ocument\x18\x02 \x01(\t\"\x8c\x01\n\x0b\x41ppliedEdit\x12\x17\n\x0foperation_index\x18\x01 \x01(\x05\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x05\x12\x0e\n\x06length\x18\x04 \x01(\x05\x12\x10\n\x08old_text\x18\x05 \x01(\t\x12\x10\n\x08new_text\x18\x06 \x01(\t\x12\x10\n\x08\x64ocument\x18\x07 \x01(\t\"\xfd\x02\n\nSymbolInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04kind\x18\x03 \x01(\t\x12\x31\n\x08metadata\x18\x04 \x03(\x0b\x32\x1f.sysml.SymbolInfo.MetadataEntry\x12\x11\n\tchild_ids\x18\x05 \x03(\t\x12(\n\nattributes\x18\x06 \x03(\x0b\x32\x14.sysml.AttributeInfo\x12\"\n\ttype_info\x18\x07 \x01(\x0b\x32\x0f.sysml.TypeInfo\x12-\n\x0cmultiplicity\x18\x08 \x01(\x0b\x32\x17.sysml.MultiplicityInfo\x12.\n\x0fspecializations\x18\t \x03(\x0b\x32\x15.sysml.Specialization\x12#\n\x1bwithheld_library_attributes\x18\n \x01(\x05\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"X\n\x0eSpecialization\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x10\n\x08\x64\x65\x63lared\x18\x02 \x01(\t\x12\x11\n\ttarget_id\x18\x03 \x01(\t\x12\x13\n\x0btarget_kind\x18\x04 \x01(\t\"\x95\x01\n\x08TypeInfo\x12\x10\n\x08\x64\x65\x63lared\x18\x01 \x01(\t\x12\x13\n\x0bresolved_id\x18\x02 \x01(\t\x12\x15\n\rresolved_kind\x18\x03 \x01(\t\x12\x11\n\tprimitive\x18\x04 \x01(\t\x12\x18\n\x10primitive_source\x18\x05 \x01(\t\x12\x10\n\x08quantity\x18\x06 \x01(\x08\x12\x0c\n\x04unit\x18\x07 \x01(\t\"0\n\x10MultiplicityInfo\x12\r\n\x05lower\x18\x01 \x01(\t\x12\r\n\x05upper\x18\x02 \x01(\t\"V\n\rAttributeInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x1b\n\x05value\x18\x03 \x01(\x0b\x32\x0c.sysml.Value\x12\x0c\n\x04unit\x18\x04 \x01(\t\"\xc3\x05\n\x05Value\x12\x13\n\tint_value\x18\x01 \x01(\x03H\x00\x12\x14\n\nreal_value\x18\x02 \x01(\x01H\x00\x12\x14\n\nbool_value\x18\x03 \x01(\x08H\x00\x12\x16\n\x0cstring_value\x18\x04 \x01(\tH\x00\x12\x15\n\x0binstance_id\x18\x05 \x01(\x03H\x00\x12(\n\x08sequence\x18\x06 \x01(\x0b\x32\x14.sysml.ValueSequenceH\x00\x12\x0e\n\x04null\x18\x07 \x01(\tH\x00\x12#\n\x08quantity\x18\x08 \x01(\x0b\x32\x0f.sysml.QuantityH\x00\x12*\n\x0c\x65num_literal\x18\t \x01(\x0b\x32\x12.sysml.EnumLiteralH\x00\x12\x0f\n\x05unset\x18\n \x01(\x08H\x00\x12!\n\x07\x63omplex\x18\x0b \x01(\x0b\x32\x0e.sysml.ComplexH\x00\x12\x1d\n\x05\x61rray\x18\x0c \x01(\x0b\x32\x0c.sysml.ArrayH\x00\x12\x1f\n\x06vector\x18\r \x01(\x0b\x32\r.sysml.VectorH\x00\x12\x30\n\x0fvector_quantity\x18\x0e \x01(\x0b\x32\x15.sysml.VectorQuantityH\x00\x12\x30\n\x0fmeasurement_ref\x18\x0f \x01(\x0b\x32\x15.sysml.MeasurementRefH\x00\x12\x12\n\x08infinity\x18\x10 \x01(\x08H\x00\x12#\n\x08\x66unction\x18\x11 \x01(\x0b\x32\x0f.sysml.FunctionH\x00\x12\x1e\n\x03set\x18\x12 \x01(\x0b\x32\x0f.sysml.ValueSetH\x00\x12\x30\n\x0ftensor_quantity\x18\x13 \x01(\x0b\x32\x15.sysml.TensorQuantityH\x00\x12\'\n\nmetaobject\x18\x14 \x01(\x0b\x32\x11.sysml.MetaobjectH\x00\x12+\n\x0cundetermined\x18\x15 \x01(\x0b\x32\x13.sysml.UndeterminedH\x00\x42\x06\n\x04kind\"6\n\nMetaobject\x12\x12\n\nelement_id\x18\x01 \x01(\t\x12\x14\n\x0cmetaclass_id\x18\x02 \x01(\t\"F\n\x0cUndetermined\x12\x0e\n\x06reason\x18\x01 \x01(\t\x12&\n\x05\x63ount\x18\x02 \x01(\x0b\x32\x17.sysml.MultiplicityInfo\",\n\x08\x46unction\x12\x0f\n\x07\x63\x61lc_id\x18\x01 \x01(\t\x12\x0f\n\x07self_id\x18\x02 \x01(\x03\"*\n\x08ValueSet\x12\x1e\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x0c.sysml.Value\"I\n\x0eTensorQuantity\x12\x12\n\ndimensions\x18\x01 \x03(\x03\x12#\n\ncomponents\x18\x02 \x03(\x0b\x32\x0f.sysml.Quantity\";\n\x05\x41rray\x12\x12\n\ndimensions\x18\x01 \x03(\x03\x12\x1e\n\x08\x65lements\x18\x02 \x03(\x0b\x32\x0c.sysml.Value\"*\n\x06Vector\x12 \n\ncomponents\x18\x01 \x03(\x0b\x32\x0c.sysml.Value\"5\n\x0eVectorQuantity\x12#\n\ncomponents\x18\x01 \x03(\x0b\x32\x0f.sysml.Quantity\"*\n\x07\x43omplex\x12\x0c\n\x04real\x18\x01 \x01(\x01\x12\x11\n\timaginary\x18\x02 \x01(\x01\"d\n\x0b\x45numLiteral\x12\x12\n\nliteral_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65numeration_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1b\n\x05value\x18\x04 \x01(\x0b\x32\x0c.sysml.Value\"/\n\rValueSequence\x12\x1e\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x0c.sysml.Value\"|\n\x08Quantity\x12\x17\n\rint_magnitude\x18\x01 \x01(\x03H\x00\x12\x18\n\x0ereal_magnitude\x18\x02 \x01(\x01H\x00\x12\x0c\n\x04unit\x18\x03 \x01(\t\x12\"\n\tunit_term\x18\x04 \x01(\x0b\x32\x0f.sysml.UnitTermB\x0b\n\tmagnitude\"S\n\x0eMeasurementRef\x12\x0c\n\x04unit\x18\x01 \x01(\t\x12\"\n\tunit_term\x18\x02 \x01(\x0b\x32\x0f.sysml.UnitTerm\x12\x0f\n\x07unit_id\x18\x03 \x01(\t\"T\n\x08UnitTerm\x12\x11\n\tscale_num\x18\x01 \x01(\x01\x12\x11\n\tscale_den\x18\x02 \x01(\x01\x12\"\n\x07\x66\x61\x63tors\x18\x03 \x03(\x0b\x32\x11.sysml.UnitFactor\"/\n\nUnitFactor\x12\x0f\n\x07unit_id\x18\x01 \x01(\t\x12\x10\n\x08\x65xponent\x18\x02 \x01(\x01\"X\n\nDiagnostic\x12\x10\n\x08severity\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x19\n\x04span\x18\x03 \x01(\x0b\x32\x0b.sysml.Span\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\"^\n\x04Span\x12\x0c\n\x04\x66ile\x18\x01 \x01(\t\x12\x12\n\nstart_line\x18\x02 \x01(\x05\x12\x11\n\tstart_col\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_line\x18\x04 \x01(\x05\x12\x0f\n\x07\x65nd_col\x18\x05 \x01(\x05\"\x13\n\x11ServerInfoRequest\";\n\x12ServerInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x14\n\x0c\x63\x61pabilities\x18\x02 \x03(\t\"S\n\x0cQueryRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x1b\n\x05query\x18\x02 \x01(\x0b\x32\x0c.sysml.Query\x12\x12\n\noslc_query\x18\x03 \x01(\t\"<\n\rQueryResponse\x12+\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x19.sysml.QueryResultElement\"H\n\x05Query\x12\r\n\x05scope\x18\x01 \x03(\t\x12\x0e\n\x06select\x18\x02 \x03(\t\x12 \n\x05where\x18\x03 \x01(\x0b\x32\x11.sysml.Constraint\"|\n\nConstraint\x12/\n\tprimitive\x18\x01 \x01(\x0b\x32\x1a.sysml.PrimitiveConstraintH\x00\x12/\n\tcomposite\x18\x02 \x01(\x0b\x32\x1a.sysml.CompositeConstraintH\x00\x42\x0c\n\nconstraint\"s\n\x13PrimitiveConstraint\x12\x0f\n\x07inverse\x18\x01 \x01(\x08\x12\x10\n\x08property\x18\x02 \x01(\t\x12*\n\x08operator\x18\x03 \x01(\x0e\x32\x18.sysml.PrimitiveOperator\x12\r\n\x05value\x18\x04 \x03(\t\"h\n\x13\x43ompositeConstraint\x12*\n\x08operator\x18\x01 \x01(\x0e\x32\x18.sysml.CompositeOperator\x12%\n\nconstraint\x18\x02 \x03(\x0b\x32\x11.sysml.Constraint\"\xa0\x01\n\x12QueryResultElement\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12=\n\nproperties\x18\x03 \x03(\x0b\x32).sysml.QueryResultElement.PropertiesEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"s\n\nSweepRange\x12\x11\n\tparameter\x18\x01 \x01(\t\x12\x1b\n\x05start\x18\x02 \x01(\x0b\x32\x0c.sysml.Value\x12\x19\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x0c.sysml.Value\x12\x1a\n\x04step\x18\x04 \x01(\x0b\x32\x0c.sysml.Value\"\xd0\x02\n\x0fRunSweepRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x1f\n\targuments\x18\x04 \x03(\x0b\x32\x0c.sysml.Value\x12\x43\n\x0fnamed_arguments\x18\x05 \x03(\x0b\x32*.sysml.RunSweepRequest.NamedArgumentsEntry\x12!\n\x06ranges\x18\x06 \x03(\x0b\x32\x11.sysml.SweepRange\x12\x0f\n\x07samples\x18\x07 \x01(\x03\x12\x0c\n\x04seed\x18\x08 \x01(\x04\x12\x0e\n\x06\x65ngine\x18\t \x01(\t\x1a\x43\n\x13NamedArgumentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xf4\x01\n\x08SweepRow\x12!\n\x06inputs\x18\x01 \x03(\x0b\x32\x11.sysml.CalcOutput\x12\"\n\x07outputs\x18\x02 \x03(\x0b\x32\x11.sysml.CalcOutput\x12 \n\x08verdicts\x18\x03 \x03(\x0b\x32\x0e.sysml.Verdict\x12\x16\n\x0e\x65lapsed_micros\x18\x04 \x01(\x03\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12,\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\x0e\x32\x14.sysml.FailureReason\x12*\n\x0b\x65valuations\x18\x07 \x03(\x0b\x32\x15.sysml.CaseEvaluation\"\xad\x02\n\x10RunSweepResponse\x12\x1d\n\x04rows\x18\x01 \x03(\x0b\x32\x0f.sysml.SweepRow\x12\x12\n\nparameters\x18\x02 \x03(\t\x12\x0f\n\x07sampled\x18\x03 \x01(\x08\x12\x0c\n\x04seed\x18\x04 \x01(\x04\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x06 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x07 \x01(\x0e\x32\x14.sysml.FailureReason\x12\"\n\tinstances\x18\x08 \x03(\x0b\x32\x0f.sysml.Instance\x12\x0e\n\x06\x65ngine\x18\t \x01(\t\x12\x10\n\x08strength\x18\n \x01(\t\x12\x1c\n\x06\x62ounds\x18\x0b \x03(\x0b\x32\x0c.sysml.Bound\"n\n\x17RunDocumentQueryRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x10\n\x08query_id\x18\x02 \x01(\t\x12-\n\x08\x62indings\x18\x03 \x03(\x0b\x32\x1b.sysml.DocumentQueryBinding\"O\n\x14\x44ocumentQueryBinding\x12\x11\n\tparameter\x18\x01 \x01(\t\x12$\n\x06values\x18\x02 \x03(\x0b\x32\x14.sysml.DocumentValue\"\xf7\x02\n\rDocumentValue\x12\x14\n\nelement_id\x18\x01 \x01(\tH\x00\x12\x16\n\x0cstring_value\x18\x02 \x01(\tH\x00\x12\x13\n\tint_value\x18\x03 \x01(\x03H\x00\x12\x14\n\nreal_value\x18\x04 \x01(\x01H\x00\x12\x14\n\nbool_value\x18\x05 \x01(\x08H\x00\x12\x12\n\x08infinity\x18\x06 \x01(\x08H\x00\x12#\n\x08quantity\x18\x08 \x01(\x0b\x32\x0f.sysml.QuantityH\x00\x12)\n\x07verdict\x18\t \x01(\x0b\x32\x16.sysml.DocumentVerdictH\x00\x12\'\n\x06object\x18\n \x01(\x0b\x32\x15.sysml.DocumentObjectH\x00\x12%\n\x05state\x18\x0b \x01(\x0b\x32\x14.sysml.DocumentStateH\x00\x12%\n\x05\x65vent\x18\x0c \x01(\x0b\x32\x14.sysml.DocumentEventH\x00\x12\x14\n\x0c\x65lement_type\x18\x07 \x01(\tB\x06\n\x04kind\"Z\n\x0e\x44ocumentObject\x12\x13\n\x0binstance_id\x18\x01 \x01(\x03\x12\x0c\n\x04path\x18\x02 \x01(\t\x12%\n\x07\x65lement\x18\x03 \x01(\x0b\x32\x14.sysml.DocumentValue\"\xae\x01\n\x0f\x44ocumentVerdict\x12\'\n\tassertion\x18\x01 \x01(\x0b\x32\x14.sysml.DocumentValue\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04text\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x0f\n\x07verdict\x18\x05 \x01(\t\x12\x11\n\tcondition\x18\x06 \x01(\t\x12\x0e\n\x06reason\x18\x07 \x01(\t\x12\x14\n\x0cverification\x18\x08 \x03(\t\"\xb1\x01\n\rDocumentState\x12%\n\x06object\x18\x01 \x01(\x0b\x32\x15.sysml.DocumentObject\x12\x0f\n\x07machine\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x12\n\nstate_path\x18\x04 \x01(\t\x12#\n\x05state\x18\x05 \x01(\x0b\x32\x14.sysml.DocumentValue\x12\x0e\n\x06region\x18\x06 \x01(\t\x12\x11\n\tenclosing\x18\x07 \x03(\t\"\x9c\x02\n\rDocumentEvent\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\"\n\x04time\x18\x02 \x01(\x0b\x32\x14.sysml.DocumentValue\x12%\n\x06object\x18\x03 \x01(\x0b\x32\x15.sysml.DocumentObject\x12\x0f\n\x07machine\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x0c\n\x04\x66rom\x18\x06 \x01(\t\x12\n\n\x02to\x18\x07 \x01(\t\x12%\n\x06target\x18\x08 \x01(\x0b\x32\x15.sysml.DocumentObject\x12\r\n\x05\x65vent\x18\t \x01(\t\x12\x0f\n\x07payload\x18\n \x03(\t\x12\x14\n\x0c\x61lternatives\x18\x0b \x03(\t\x12\r\n\x05taken\x18\x0c \x01(\t\x12\x0c\n\x04text\x18\r \x01(\t\"#\n\x13\x44ocumentQueryColumn\x12\x0c\n\x04name\x18\x01 \x01(\t\"9\n\x11\x44ocumentQueryCell\x12$\n\x06values\x18\x01 \x03(\x0b\x32\x14.sysml.DocumentValue\"b\n\x10\x44ocumentQueryRow\x12%\n\x07\x65lement\x18\x01 \x01(\x0b\x32\x14.sysml.DocumentValue\x12\'\n\x05\x63\x65lls\x18\x02 \x03(\x0b\x32\x18.sysml.DocumentQueryCell\"n\n\x18RunDocumentQueryResponse\x12+\n\x07\x63olumns\x18\x01 \x03(\x0b\x32\x1a.sysml.DocumentQueryColumn\x12%\n\x04rows\x18\x02 \x03(\x0b\x32\x17.sysml.DocumentQueryRow\"N\n\x15RenderDocumentRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x13\n\x0b\x64ocument_id\x18\x02 \x01(\t\x12\x0c\n\x04\x66orm\x18\x03 \x01(\t\"8\n\x16RenderDocumentResponse\x12\x10\n\x08markdown\x18\x01 \x01(\t\x12\x0c\n\x04html\x18\x02 \x01(\t*\x93\x01\n\rFailureReason\x12\x1e\n\x1a\x46\x41ILURE_REASON_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x46\x41ILURE_REASON_EVALUATION\x10\x01\x12\x1d\n\x19\x46\x41ILURE_REASON_WRONG_KIND\x10\x02\x12$\n FAILURE_REASON_AMBIGUOUS_SUBJECT\x10\x03*\x8c\x05\n\x0b\x45\x64itFailure\x12\x1c\n\x18\x45\x44IT_FAILURE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x45\x44IT_FAILURE_NO_OPERATIONS\x10\x01\x12\x1f\n\x1b\x45\x44IT_FAILURE_UNKNOWN_TARGET\x10\x02\x12!\n\x1d\x45\x44IT_FAILURE_AMBIGUOUS_TARGET\x10\x03\x12\x1b\n\x17\x45\x44IT_FAILURE_NOT_VALUED\x10\x04\x12\x1e\n\x1a\x45\x44IT_FAILURE_INVALID_VALUE\x10\x05\x12\x1d\n\x19\x45\x44IT_FAILURE_INVALID_NAME\x10\x06\x12\x1a\n\x16\x45\x44IT_FAILURE_NOT_NAMED\x10\x07\x12\"\n\x1e\x45\x44IT_FAILURE_RENAME_REFERENCED\x10\x08\x12\"\n\x1e\x45\x44IT_FAILURE_OVERLAPPING_EDITS\x10\t\x12\x1f\n\x1b\x45\x44IT_FAILURE_RESULT_INVALID\x10\n\x12\x1e\n\x1a\x45\x44IT_FAILURE_OWNER_UNKNOWN\x10\x0b\x12$\n EDIT_FAILURE_OWNER_NOT_NAMESPACE\x10\x0c\x12\x1d\n\x19\x45\x44IT_FAILURE_ILLEGAL_KIND\x10\r\x12\"\n\x1e\x45\x44IT_FAILURE_MEMBER_NAME_TAKEN\x10\x0e\x12\"\n\x1e\x45\x44IT_FAILURE_DELETE_REFERENCED\x10\x0f\x12$\n EDIT_FAILURE_OWNER_INSIDE_TARGET\x10\x10\x12 \n\x1c\x45\x44IT_FAILURE_MOVE_REFERENCED\x10\x11\x12%\n!EDIT_FAILURE_REFERENCED_ELSEWHERE\x10\x12*\x92\x01\n\x11PrimitiveOperator\x12\"\n\x1ePRIMITIVE_OPERATOR_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRIMITIVE_OPERATOR_EQUAL\x10\x01\x12\x1e\n\x1aPRIMITIVE_OPERATOR_GREATER\x10\x02\x12\x1b\n\x17PRIMITIVE_OPERATOR_LESS\x10\x03*n\n\x11\x43ompositeOperator\x12\"\n\x1e\x43OMPOSITE_OPERATOR_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43OMPOSITE_OPERATOR_AND\x10\x01\x12\x19\n\x15\x43OMPOSITE_OPERATOR_OR\x10\x02\x32\xbf\x0c\n\x0cSysMLService\x12\x44\n\rGetServerInfo\x12\x18.sysml.ServerInfoRequest\x1a\x19.sysml.ServerInfoResponse\x12>\n\tParseFile\x12\x17.sysml.ParseFileRequest\x1a\x18.sysml.ParseFileResponse\x12G\n\x0cParseSources\x12\x1a.sysml.ParseSourcesRequest\x1a\x1b.sysml.ParseSourcesResponse\x12;\n\tGetSymbol\x12\x17.sysml.GetSymbolRequest\x1a\x15.sysml.SymbolResponse\x12G\n\x0eGetDiagnostics\x12\x19.sysml.DiagnosticsRequest\x1a\x1a.sysml.DiagnosticsResponse\x12;\n\x08\x45valuate\x12\x16.sysml.EvaluateRequest\x1a\x17.sysml.EvaluateResponse\x12\x44\n\x0bInstantiate\x12\x19.sysml.InstantiateRequest\x1a\x1a.sysml.InstantiateResponse\x12J\n\rExecuteAction\x12\x1b.sysml.ExecuteActionRequest\x1a\x1c.sysml.ExecuteActionResponse\x12G\n\x0c\x45xecuteState\x12\x1a.sysml.ExecuteStateRequest\x1a\x1b.sysml.ExecuteStateResponse\x12\x38\n\x07\x43onvert\x12\x15.sysml.ConvertRequest\x1a\x16.sysml.ConvertResponse\x12\x41\n\nApplyEdits\x12\x18.sysml.ApplyEditsRequest\x1a\x19.sysml.ApplyEditsResponse\x12S\n\x10VerifyConstraint\x12\x1e.sysml.VerifyConstraintRequest\x1a\x1f.sysml.VerifyConstraintResponse\x12V\n\x11VerifyRequirement\x12\x1f.sysml.VerifyRequirementRequest\x1a .sysml.VerifyRequirementResponse\x12Y\n\x12VerifySatisfaction\x12 .sysml.VerifySatisfactionRequest\x1a!.sysml.VerifySatisfactionResponse\x12S\n\x10ValidateInstance\x12\x1e.sysml.ValidateInstanceRequest\x1a\x1f.sysml.ValidateInstanceResponse\x12G\n\x0c\x45valuateCalc\x12\x1a.sysml.EvaluateCalcRequest\x1a\x1b.sysml.EvaluateCalcResponse\x12\x44\n\x0bRunAnalysis\x12\x19.sysml.RunAnalysisRequest\x1a\x1a.sysml.RunAnalysisResponse\x12;\n\x08RunSweep\x12\x16.sysml.RunSweepRequest\x1a\x17.sysml.RunSweepResponse\x12\x44\n\x0bListEngines\x12\x19.sysml.ListEnginesRequest\x1a\x1a.sysml.ListEnginesResponse\x12\x32\n\x05Query\x12\x13.sysml.QueryRequest\x1a\x14.sysml.QueryResponse\x12S\n\x10RunDocumentQuery\x12\x1e.sysml.RunDocumentQueryRequest\x1a\x1f.sysml.RunDocumentQueryResponse\x12M\n\x0eRenderDocument\x12\x1c.sysml.RenderDocumentRequest\x1a\x1d.sysml.RenderDocumentResponseB*Z(github.com/Open-MBEE/OpenSysML/api/protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bsysml.proto\x12\x05sysml\"\xb9\x02\n\x07Verdict\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x12\n\nelement_id\x18\x02 \x01(\t\x12\x0f\n\x07\x65lement\x18\x03 \x01(\t\x12\r\n\x05holds\x18\x04 \x01(\x08\x12\x11\n\tcondition\x18\x05 \x01(\t\x12\x13\n\x0binstance_id\x18\x06 \x01(\x03\x12\x18\n\x10instance_type_id\x18\x07 \x01(\t\x12\r\n\x05\x65rror\x18\x08 \x01(\t\x12,\n\x0e\x66\x61ilure_reason\x18\t \x01(\x0e\x32\x14.sysml.FailureReason\x12\x16\n\x0erequirement_id\x18\n \x01(\t\x12\x0e\n\x06\x65ngine\x18\x0b \x01(\t\x12\x10\n\x08strength\x18\x0c \x01(\t\x12\x1c\n\x06\x62ounds\x18\r \x03(\x0b\x32\x0c.sysml.Bound\x12\x15\n\rinstance_path\x18\x0e \x01(\t\"5\n\x05\x42ound\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\x03\x12\x0f\n\x07reached\x18\x03 \x01(\x08\"k\n\x17VerifyConstraintRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x04 \x01(\t\"\x96\x01\n\x18VerifyConstraintResponse\x12\x1f\n\x07verdict\x18\x01 \x01(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x02 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\"l\n\x18VerifyRequirementRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x04 \x01(\t\"m\n\x13VerificationVerdict\x12\x0f\n\x07\x63\x61se_id\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x65tail\x18\x03 \x01(\t\x12\x0f\n\x07subcase\x18\x04 \x01(\x08\x12\x16\n\x0erequirement_id\x18\x05 \x01(\t\"\xd2\x01\n\x19VerifyRequirementResponse\x12\x1f\n\x07verdict\x18\x01 \x01(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x02 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x39\n\x15verification_verdicts\x18\x05 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\"R\n\x19VerifySatisfactionRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x03 \x01(\t\"\x82\x02\n\x1aVerifySatisfactionResponse\x12 \n\x08verdicts\x18\x01 \x03(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x02 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x05 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x39\n\x15verification_verdicts\x18\x06 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\"P\n\x17ValidateInstanceRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x03 \x01(\t\"\xb2\x02\n\x18ValidateInstanceResponse\x12 \n\x08verdicts\x18\x01 \x03(\x0b\x32\x0e.sysml.Verdict\x12\x1f\n\x07summary\x18\x02 \x01(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x03 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x39\n\x15verification_verdicts\x18\x07 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\x12\x0f\n\x07\x62ounded\x18\x08 \x01(\x08\"m\n\x13\x45valuateCalcRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x1f\n\targuments\x18\x03 \x03(\x0b\x32\x0c.sysml.Value\x12\x0e\n\x06\x65ngine\x18\x04 \x01(\t\"\xfd\x01\n\x14\x45valuateCalcResponse\x12\x1c\n\x06result\x18\x01 \x01(\x0b\x32\x0c.sysml.Value\x12\"\n\x07outputs\x18\x02 \x03(\x0b\x32\x11.sysml.CalcOutput\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x05 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x0e\n\x06\x65ngine\x18\x06 \x01(\t\x12\x10\n\x08strength\x18\x07 \x01(\t\x12\x1c\n\x06\x62ounds\x18\x08 \x03(\x0b\x32\x0c.sysml.Bound\"7\n\nCalcOutput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value\"\x93\x01\n\x0e\x43\x61seEvaluation\x12\x13\n\x0b\x66unction_id\x18\x01 \x01(\t\x12\x1f\n\targuments\x18\x02 \x03(\x0b\x32\x0c.sysml.Value\x12\x1c\n\x06result\x18\x03 \x01(\x0b\x32\x0c.sysml.Value\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x10\n\x08selected\x18\x05 \x01(\x08\x12\x0c\n\x04tied\x18\x06 \x01(\x08\"\xa6\x02\n\x12RunAnalysisRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x1f\n\targuments\x18\x04 \x03(\x0b\x32\x0c.sysml.Value\x12\x46\n\x0fnamed_arguments\x18\x05 \x03(\x0b\x32-.sysml.RunAnalysisRequest.NamedArgumentsEntry\x12\x10\n\x08schedule\x18\x06 \x01(\t\x12\x0e\n\x06\x65ngine\x18\x07 \x01(\t\x1a\x43\n\x13NamedArgumentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xdc\x03\n\x13RunAnalysisResponse\x12\"\n\x07outputs\x18\x01 \x03(\x0b\x32\x11.sysml.CalcOutput\x12 \n\x08verdicts\x18\x02 \x03(\x0b\x32\x0e.sysml.Verdict\x12\"\n\tinstances\x18\x03 \x03(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\x0e\x32\x14.sysml.FailureReason\x12\x39\n\x15verification_verdicts\x18\x07 \x03(\x0b\x32\x1a.sysml.VerificationVerdict\x12 \n\x08outcomes\x18\x08 \x03(\x0b\x32\x0e.sysml.Outcome\x12-\n\x0b\x65xploration\x18\t \x01(\x0b\x32\x18.sysml.ExplorationStatus\x12*\n\x0b\x65valuations\x18\n \x03(\x0b\x32\x15.sysml.CaseEvaluation\x12\x0e\n\x06\x65ngine\x18\x0b \x01(\t\x12\x10\n\x08strength\x18\x0c \x01(\t\x12\x1c\n\x06\x62ounds\x18\r \x03(\x0b\x32\x0c.sysml.Bound\"\x97\x02\n\x07Outcome\x12,\n\x07outputs\x18\x01 \x03(\x0b\x32\x1b.sysml.Outcome.OutputsEntry\x12\x13\n\x0b\x66inal_state\x18\x02 \x01(\t\x12\x16\n\x0estates_visited\x18\x03 \x03(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x16\n\x0elinearizations\x18\x05 \x01(\x05\x12\x0f\n\x07witness\x18\x06 \x03(\t\x12&\n\x0b\x64iagnostics\x18\x07 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x13\n\x0bprobability\x18\x08 \x01(\x01\x1a<\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\x96\x01\n\x11\x45xplorationStatus\x12\x10\n\x08\x63omplete\x18\x01 \x01(\x08\x12\x0c\n\x04runs\x18\x02 \x01(\x05\x12\x13\n\x0b\x62udgets_hit\x18\x03 \x03(\t\x12\x13\n\x0bruns_budget\x18\x04 \x01(\x05\x12\x14\n\x0c\x64\x65pth_budget\x18\x05 \x01(\x05\x12!\n\x19probabilities_lower_bound\x18\x06 \x01(\x08\"\x14\n\x12ListEnginesRequest\"\xfc\x01\n\nEngineInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x0f\n\x07\x61nswers\x18\x03 \x03(\t\x12\x0e\n\x06\x62ounds\x18\x04 \x03(\t\x12\x0f\n\x07process\x18\x05 \x01(\t\x12\x15\n\rprocess_found\x18\x06 \x01(\t\x12\r\n\x05ready\x18\x07 \x01(\x08\x12\x13\n\x0bunavailable\x18\x08 \x01(\t\x12\x0c\n\x04kind\x18\t \x01(\t\x12\x10\n\x08protocol\x18\n \x01(\t\x12\x0e\n\x06source\x18\x0b \x01(\t\x12\x0f\n\x07\x63ommand\x18\x0c \x01(\t\x12\x0f\n\x07version\x18\r \x01(\t\x12\x0e\n\x06served\x18\x0e \x01(\x08\"9\n\x13ListEnginesResponse\x12\"\n\x07\x65ngines\x18\x01 \x03(\x0b\x32\x11.sysml.EngineInfo\"\x8c\x01\n\x10ParseFileRequest\x12\x13\n\tfile_path\x18\x01 \x01(\tH\x00\x12\x11\n\x07\x63ontent\x18\x02 \x01(\tH\x00\x12\x18\n\x0c\x63ontent_hash\x18\x03 \x01(\tB\x02\x18\x01\x12\x10\n\x08language\x18\x04 \x01(\t\x12\x1a\n\x12strict_conformance\x18\x05 \x01(\x08\x42\x08\n\x06source\"b\n\x0eSourceDocument\x12\x13\n\tfile_path\x18\x01 \x01(\tH\x00\x12\x11\n\x07\x63ontent\x18\x02 \x01(\tH\x00\x12\x10\n\x08language\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\tB\x08\n\x06source\"[\n\x13ParseSourcesRequest\x12(\n\tdocuments\x18\x01 \x03(\x0b\x32\x15.sysml.SourceDocument\x12\x1a\n\x12strict_conformance\x18\x02 \x01(\x08\"\x83\x01\n\x14ParseSourcesResponse\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12 \n\x05roots\x18\x02 \x03(\x0b\x32\x11.sysml.SymbolInfo\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"\x7f\n\x11ParseFileResponse\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x1f\n\x04root\x18\x02 \x01(\x0b\x32\x11.sysml.SymbolInfo\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"9\n\x10GetSymbolRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\"B\n\x0eSymbolResponse\x12!\n\x06symbol\x18\x01 \x01(\x0b\x32\x11.sysml.SymbolInfo\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"(\n\x12\x44iagnosticsRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\"L\n\x13\x44iagnosticsResponse\x12&\n\x0b\x64iagnostics\x18\x01 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"o\n\x0f\x45valuateRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x12\n\nexpression\x18\x02 \x01(\t\x12\x19\n\x11\x63ontext_symbol_id\x18\x03 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x04 \x01(\t\"g\n\x10\x45valuateResponse\x12\x1c\n\x06result\x18\x01 \x01(\x0b\x32\x0c.sysml.Value\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\"\xc2\x01\n\x08Instance\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x16\n\x0etype_symbol_id\x18\x02 \x01(\t\x12:\n\x0e\x66\x65\x61ture_values\x18\x04 \x03(\x0b\x32\".sysml.Instance.FeatureValuesEntry\x1aI\n\x12\x46\x65\x61tureValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.sysml.FeatureValue:\x02\x38\x01J\x04\x08\x03\x10\x04R\x05slots\"\x84\x01\n\x0c\x46\x65\x61tureValue\x12\x14\n\x0c\x66\x65\x61ture_name\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value\x12\x1c\n\x06values\x18\x03 \x03(\x0b\x32\x0c.sysml.Value\x12\x14\n\x0cmaterialized\x18\x04 \x01(\x08\x12\r\n\x05\x65rror\x18\x05 \x01(\t\";\n\x12InstantiateRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\"\x93\x01\n\x13InstantiateResponse\x12!\n\x08instance\x18\x01 \x01(\x0b\x32\x0f.sysml.Instance\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\"\n\tinstances\x18\x04 \x03(\x0b\x32\x0f.sysml.Instance\"\xe9\x01\n\x14\x45xecuteActionRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x18\n\x10\x61\x63tion_symbol_id\x18\x02 \x01(\t\x12\x37\n\x06inputs\x18\x03 \x03(\x0b\x32\'.sysml.ExecuteActionRequest.InputsEntry\x12\x10\n\x08schedule\x18\x04 \x01(\t\x12\x1b\n\x13performer_symbol_id\x18\x05 \x01(\t\x1a;\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xad\x02\n\x15\x45xecuteActionResponse\x12:\n\x07outputs\x18\x01 \x03(\x0b\x32).sysml.ExecuteActionResponse.OutputsEntry\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x03 \x03(\x0b\x32\x11.sysml.Diagnostic\x12 \n\x08outcomes\x18\x04 \x03(\x0b\x32\x0e.sysml.Outcome\x12-\n\x0b\x65xploration\x18\x05 \x01(\x0b\x32\x18.sysml.ExplorationStatus\x12\x12\n\nfinal_time\x18\x06 \x01(\x01\x1a<\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\x89\x01\n\x13\x45xecuteStateRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x1f\n\x17state_machine_symbol_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65vents\x18\x03 \x03(\t\x12\x10\n\x08schedule\x18\x04 \x01(\t\x12\x1b\n\x13performer_symbol_id\x18\x05 \x01(\t\"\xd3\x02\n\x14\x45xecuteStateResponse\x12\x16\n\x0estates_visited\x18\x01 \x03(\t\x12\x44\n\rfinal_context\x18\x02 \x03(\x0b\x32-.sysml.ExecuteStateResponse.FinalContextEntry\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x04 \x03(\x0b\x32\x11.sysml.Diagnostic\x12 \n\x08outcomes\x18\x05 \x03(\x0b\x32\x0e.sysml.Outcome\x12-\n\x0b\x65xploration\x18\x06 \x01(\x0b\x32\x18.sysml.ExplorationStatus\x12\x12\n\nfinal_time\x18\x07 \x01(\x01\x1a\x41\n\x11\x46inalContextEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xa0\x01\n\x0e\x43onvertRequest\x12\x13\n\tfile_path\x18\x01 \x01(\tH\x00\x12\x11\n\x07\x63ontent\x18\x02 \x01(\tH\x00\x12\x14\n\nmodel_hash\x18\x06 \x01(\tH\x00\x12\x13\n\x0b\x66rom_format\x18\x03 \x01(\t\x12\x11\n\tto_format\x18\x04 \x01(\t\x12\x1e\n\x16tolerate_syntax_errors\x18\x05 \x01(\x08\x42\x08\n\x06source\"\xb4\x01\n\x0f\x43onvertResponse\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\x12\x13\n\x0b\x66rom_format\x18\x02 \x01(\t\x12\x11\n\tto_format\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x14\n\x0c\x65xperimental\x18\x06 \x01(\x08\x12\x1b\n\x13\x65xperimental_notice\x18\x07 \x01(\t\"}\n\x11\x41pplyEditsRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12(\n\noperations\x18\x02 \x03(\x0b\x32\x14.sysml.EditOperation\x12\x10\n\x08\x64ocument\x18\x03 \x01(\t\x12\x18\n\x10\x61\x63\x63\x65pt_documents\x18\x04 \x01(\x08\"\x91\x02\n\rEditOperation\x12(\n\tset_value\x18\x01 \x01(\x0b\x32\x13.sysml.SetValueEditH\x00\x12#\n\x06rename\x18\x02 \x01(\x0b\x32\x11.sysml.RenameEditH\x00\x12*\n\nadd_member\x18\x03 \x01(\x0b\x32\x14.sysml.AddMemberEditH\x00\x12#\n\x06\x64\x65lete\x18\x04 \x01(\x0b\x32\x11.sysml.DeleteEditH\x00\x12\x1f\n\x04move\x18\x05 \x01(\x0b\x32\x0f.sysml.MoveEditH\x00\x12\x32\n\x0e\x61\x64\x64_connection\x18\x06 \x01(\x0b\x32\x18.sysml.AddConnectionEditH\x00\x42\x0b\n\toperation\"\x82\x01\n\rAddMemberEdit\x12\r\n\x05owner\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x14\n\x0cmultiplicity\x18\x05 \x01(\t\x12\r\n\x05value\x18\x06 \x01(\t\x12\x13\n\x0bspecializes\x18\x07 \x03(\t\"n\n\x11\x41\x64\x64\x43onnectionEdit\x12\r\n\x05owner\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x10\n\x08\x66rom_end\x18\x03 \x01(\t\x12\x0e\n\x06to_end\x18\x04 \x01(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x0c\n\x04type\x18\x06 \x01(\t\"-\n\nDeleteEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61scade\x18\x02 \x01(\x08\")\n\x08MoveEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\"-\n\x0cSetValueEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\".\n\nRenameEdit\x12\x0e\n\x06target\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"\x90\x02\n\x12\x41pplyEditsResponse\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\x12#\n\x07\x61pplied\x18\x02 \x03(\x0b\x32\x12.sysml.AppliedEdit\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12#\n\x07\x66\x61ilure\x18\x04 \x01(\x0e\x32\x12.sysml.EditFailure\x12&\n\x0b\x64iagnostics\x18\x05 \x03(\x0b\x32\x11.sysml.Diagnostic\x12\x1a\n\x12referring_elements\x18\x06 \x03(\t\x12(\n\tdocuments\x18\x07 \x03(\x0b\x32\x15.sysml.EditedDocument\x12\"\n\treferrers\x18\x08 \x03(\x0b\x32\x0f.sysml.Referrer\"/\n\x0e\x45\x64itedDocument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\t\"*\n\x08Referrer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08\x64ocument\x18\x02 \x01(\t\"\x8c\x01\n\x0b\x41ppliedEdit\x12\x17\n\x0foperation_index\x18\x01 \x01(\x05\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x05\x12\x0e\n\x06length\x18\x04 \x01(\x05\x12\x10\n\x08old_text\x18\x05 \x01(\t\x12\x10\n\x08new_text\x18\x06 \x01(\t\x12\x10\n\x08\x64ocument\x18\x07 \x01(\t\"\xfd\x02\n\nSymbolInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04kind\x18\x03 \x01(\t\x12\x31\n\x08metadata\x18\x04 \x03(\x0b\x32\x1f.sysml.SymbolInfo.MetadataEntry\x12\x11\n\tchild_ids\x18\x05 \x03(\t\x12(\n\nattributes\x18\x06 \x03(\x0b\x32\x14.sysml.AttributeInfo\x12\"\n\ttype_info\x18\x07 \x01(\x0b\x32\x0f.sysml.TypeInfo\x12-\n\x0cmultiplicity\x18\x08 \x01(\x0b\x32\x17.sysml.MultiplicityInfo\x12.\n\x0fspecializations\x18\t \x03(\x0b\x32\x15.sysml.Specialization\x12#\n\x1bwithheld_library_attributes\x18\n \x01(\x05\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"X\n\x0eSpecialization\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x10\n\x08\x64\x65\x63lared\x18\x02 \x01(\t\x12\x11\n\ttarget_id\x18\x03 \x01(\t\x12\x13\n\x0btarget_kind\x18\x04 \x01(\t\"\x95\x01\n\x08TypeInfo\x12\x10\n\x08\x64\x65\x63lared\x18\x01 \x01(\t\x12\x13\n\x0bresolved_id\x18\x02 \x01(\t\x12\x15\n\rresolved_kind\x18\x03 \x01(\t\x12\x11\n\tprimitive\x18\x04 \x01(\t\x12\x18\n\x10primitive_source\x18\x05 \x01(\t\x12\x10\n\x08quantity\x18\x06 \x01(\x08\x12\x0c\n\x04unit\x18\x07 \x01(\t\"0\n\x10MultiplicityInfo\x12\r\n\x05lower\x18\x01 \x01(\t\x12\r\n\x05upper\x18\x02 \x01(\t\"V\n\rAttributeInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x1b\n\x05value\x18\x03 \x01(\x0b\x32\x0c.sysml.Value\x12\x0c\n\x04unit\x18\x04 \x01(\t\"\xc3\x05\n\x05Value\x12\x13\n\tint_value\x18\x01 \x01(\x03H\x00\x12\x14\n\nreal_value\x18\x02 \x01(\x01H\x00\x12\x14\n\nbool_value\x18\x03 \x01(\x08H\x00\x12\x16\n\x0cstring_value\x18\x04 \x01(\tH\x00\x12\x15\n\x0binstance_id\x18\x05 \x01(\x03H\x00\x12(\n\x08sequence\x18\x06 \x01(\x0b\x32\x14.sysml.ValueSequenceH\x00\x12\x0e\n\x04null\x18\x07 \x01(\tH\x00\x12#\n\x08quantity\x18\x08 \x01(\x0b\x32\x0f.sysml.QuantityH\x00\x12*\n\x0c\x65num_literal\x18\t \x01(\x0b\x32\x12.sysml.EnumLiteralH\x00\x12\x0f\n\x05unset\x18\n \x01(\x08H\x00\x12!\n\x07\x63omplex\x18\x0b \x01(\x0b\x32\x0e.sysml.ComplexH\x00\x12\x1d\n\x05\x61rray\x18\x0c \x01(\x0b\x32\x0c.sysml.ArrayH\x00\x12\x1f\n\x06vector\x18\r \x01(\x0b\x32\r.sysml.VectorH\x00\x12\x30\n\x0fvector_quantity\x18\x0e \x01(\x0b\x32\x15.sysml.VectorQuantityH\x00\x12\x30\n\x0fmeasurement_ref\x18\x0f \x01(\x0b\x32\x15.sysml.MeasurementRefH\x00\x12\x12\n\x08infinity\x18\x10 \x01(\x08H\x00\x12#\n\x08\x66unction\x18\x11 \x01(\x0b\x32\x0f.sysml.FunctionH\x00\x12\x1e\n\x03set\x18\x12 \x01(\x0b\x32\x0f.sysml.ValueSetH\x00\x12\x30\n\x0ftensor_quantity\x18\x13 \x01(\x0b\x32\x15.sysml.TensorQuantityH\x00\x12\'\n\nmetaobject\x18\x14 \x01(\x0b\x32\x11.sysml.MetaobjectH\x00\x12+\n\x0cundetermined\x18\x15 \x01(\x0b\x32\x13.sysml.UndeterminedH\x00\x42\x06\n\x04kind\"6\n\nMetaobject\x12\x12\n\nelement_id\x18\x01 \x01(\t\x12\x14\n\x0cmetaclass_id\x18\x02 \x01(\t\"F\n\x0cUndetermined\x12\x0e\n\x06reason\x18\x01 \x01(\t\x12&\n\x05\x63ount\x18\x02 \x01(\x0b\x32\x17.sysml.MultiplicityInfo\",\n\x08\x46unction\x12\x0f\n\x07\x63\x61lc_id\x18\x01 \x01(\t\x12\x0f\n\x07self_id\x18\x02 \x01(\x03\"*\n\x08ValueSet\x12\x1e\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x0c.sysml.Value\"I\n\x0eTensorQuantity\x12\x12\n\ndimensions\x18\x01 \x03(\x03\x12#\n\ncomponents\x18\x02 \x03(\x0b\x32\x0f.sysml.Quantity\";\n\x05\x41rray\x12\x12\n\ndimensions\x18\x01 \x03(\x03\x12\x1e\n\x08\x65lements\x18\x02 \x03(\x0b\x32\x0c.sysml.Value\"*\n\x06Vector\x12 \n\ncomponents\x18\x01 \x03(\x0b\x32\x0c.sysml.Value\"5\n\x0eVectorQuantity\x12#\n\ncomponents\x18\x01 \x03(\x0b\x32\x0f.sysml.Quantity\"*\n\x07\x43omplex\x12\x0c\n\x04real\x18\x01 \x01(\x01\x12\x11\n\timaginary\x18\x02 \x01(\x01\"d\n\x0b\x45numLiteral\x12\x12\n\nliteral_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65numeration_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1b\n\x05value\x18\x04 \x01(\x0b\x32\x0c.sysml.Value\"/\n\rValueSequence\x12\x1e\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x0c.sysml.Value\"|\n\x08Quantity\x12\x17\n\rint_magnitude\x18\x01 \x01(\x03H\x00\x12\x18\n\x0ereal_magnitude\x18\x02 \x01(\x01H\x00\x12\x0c\n\x04unit\x18\x03 \x01(\t\x12\"\n\tunit_term\x18\x04 \x01(\x0b\x32\x0f.sysml.UnitTermB\x0b\n\tmagnitude\"S\n\x0eMeasurementRef\x12\x0c\n\x04unit\x18\x01 \x01(\t\x12\"\n\tunit_term\x18\x02 \x01(\x0b\x32\x0f.sysml.UnitTerm\x12\x0f\n\x07unit_id\x18\x03 \x01(\t\"T\n\x08UnitTerm\x12\x11\n\tscale_num\x18\x01 \x01(\x01\x12\x11\n\tscale_den\x18\x02 \x01(\x01\x12\"\n\x07\x66\x61\x63tors\x18\x03 \x03(\x0b\x32\x11.sysml.UnitFactor\"/\n\nUnitFactor\x12\x0f\n\x07unit_id\x18\x01 \x01(\t\x12\x10\n\x08\x65xponent\x18\x02 \x01(\x01\"X\n\nDiagnostic\x12\x10\n\x08severity\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x19\n\x04span\x18\x03 \x01(\x0b\x32\x0b.sysml.Span\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\"^\n\x04Span\x12\x0c\n\x04\x66ile\x18\x01 \x01(\t\x12\x12\n\nstart_line\x18\x02 \x01(\x05\x12\x11\n\tstart_col\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_line\x18\x04 \x01(\x05\x12\x0f\n\x07\x65nd_col\x18\x05 \x01(\x05\"\x13\n\x11ServerInfoRequest\";\n\x12ServerInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x14\n\x0c\x63\x61pabilities\x18\x02 \x03(\t\"S\n\x0cQueryRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x1b\n\x05query\x18\x02 \x01(\x0b\x32\x0c.sysml.Query\x12\x12\n\noslc_query\x18\x03 \x01(\t\"<\n\rQueryResponse\x12+\n\x08\x65lements\x18\x01 \x03(\x0b\x32\x19.sysml.QueryResultElement\"H\n\x05Query\x12\r\n\x05scope\x18\x01 \x03(\t\x12\x0e\n\x06select\x18\x02 \x03(\t\x12 \n\x05where\x18\x03 \x01(\x0b\x32\x11.sysml.Constraint\"|\n\nConstraint\x12/\n\tprimitive\x18\x01 \x01(\x0b\x32\x1a.sysml.PrimitiveConstraintH\x00\x12/\n\tcomposite\x18\x02 \x01(\x0b\x32\x1a.sysml.CompositeConstraintH\x00\x42\x0c\n\nconstraint\"s\n\x13PrimitiveConstraint\x12\x0f\n\x07inverse\x18\x01 \x01(\x08\x12\x10\n\x08property\x18\x02 \x01(\t\x12*\n\x08operator\x18\x03 \x01(\x0e\x32\x18.sysml.PrimitiveOperator\x12\r\n\x05value\x18\x04 \x03(\t\"h\n\x13\x43ompositeConstraint\x12*\n\x08operator\x18\x01 \x01(\x0e\x32\x18.sysml.CompositeOperator\x12%\n\nconstraint\x18\x02 \x03(\x0b\x32\x11.sysml.Constraint\"\xa0\x01\n\x12QueryResultElement\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12=\n\nproperties\x18\x03 \x03(\x0b\x32).sysml.QueryResultElement.PropertiesEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"s\n\nSweepRange\x12\x11\n\tparameter\x18\x01 \x01(\t\x12\x1b\n\x05start\x18\x02 \x01(\x0b\x32\x0c.sysml.Value\x12\x19\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x0c.sysml.Value\x12\x1a\n\x04step\x18\x04 \x01(\x0b\x32\x0c.sysml.Value\"\xd0\x02\n\x0fRunSweepRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x11\n\tsymbol_id\x18\x02 \x01(\t\x12\x19\n\x11subject_symbol_id\x18\x03 \x01(\t\x12\x1f\n\targuments\x18\x04 \x03(\x0b\x32\x0c.sysml.Value\x12\x43\n\x0fnamed_arguments\x18\x05 \x03(\x0b\x32*.sysml.RunSweepRequest.NamedArgumentsEntry\x12!\n\x06ranges\x18\x06 \x03(\x0b\x32\x11.sysml.SweepRange\x12\x0f\n\x07samples\x18\x07 \x01(\x03\x12\x0c\n\x04seed\x18\x08 \x01(\x04\x12\x0e\n\x06\x65ngine\x18\t \x01(\t\x1a\x43\n\x13NamedArgumentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x05value\x18\x02 \x01(\x0b\x32\x0c.sysml.Value:\x02\x38\x01\"\xf4\x01\n\x08SweepRow\x12!\n\x06inputs\x18\x01 \x03(\x0b\x32\x11.sysml.CalcOutput\x12\"\n\x07outputs\x18\x02 \x03(\x0b\x32\x11.sysml.CalcOutput\x12 \n\x08verdicts\x18\x03 \x03(\x0b\x32\x0e.sysml.Verdict\x12\x16\n\x0e\x65lapsed_micros\x18\x04 \x01(\x03\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12,\n\x0e\x66\x61ilure_reason\x18\x06 \x01(\x0e\x32\x14.sysml.FailureReason\x12*\n\x0b\x65valuations\x18\x07 \x03(\x0b\x32\x15.sysml.CaseEvaluation\"\xad\x02\n\x10RunSweepResponse\x12\x1d\n\x04rows\x18\x01 \x03(\x0b\x32\x0f.sysml.SweepRow\x12\x12\n\nparameters\x18\x02 \x03(\t\x12\x0f\n\x07sampled\x18\x03 \x01(\x08\x12\x0c\n\x04seed\x18\x04 \x01(\x04\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12&\n\x0b\x64iagnostics\x18\x06 \x03(\x0b\x32\x11.sysml.Diagnostic\x12,\n\x0e\x66\x61ilure_reason\x18\x07 \x01(\x0e\x32\x14.sysml.FailureReason\x12\"\n\tinstances\x18\x08 \x03(\x0b\x32\x0f.sysml.Instance\x12\x0e\n\x06\x65ngine\x18\t \x01(\t\x12\x10\n\x08strength\x18\n \x01(\t\x12\x1c\n\x06\x62ounds\x18\x0b \x03(\x0b\x32\x0c.sysml.Bound\"n\n\x17RunDocumentQueryRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x10\n\x08query_id\x18\x02 \x01(\t\x12-\n\x08\x62indings\x18\x03 \x03(\x0b\x32\x1b.sysml.DocumentQueryBinding\"O\n\x14\x44ocumentQueryBinding\x12\x11\n\tparameter\x18\x01 \x01(\t\x12$\n\x06values\x18\x02 \x03(\x0b\x32\x14.sysml.DocumentValue\"\xf7\x02\n\rDocumentValue\x12\x14\n\nelement_id\x18\x01 \x01(\tH\x00\x12\x16\n\x0cstring_value\x18\x02 \x01(\tH\x00\x12\x13\n\tint_value\x18\x03 \x01(\x03H\x00\x12\x14\n\nreal_value\x18\x04 \x01(\x01H\x00\x12\x14\n\nbool_value\x18\x05 \x01(\x08H\x00\x12\x12\n\x08infinity\x18\x06 \x01(\x08H\x00\x12#\n\x08quantity\x18\x08 \x01(\x0b\x32\x0f.sysml.QuantityH\x00\x12)\n\x07verdict\x18\t \x01(\x0b\x32\x16.sysml.DocumentVerdictH\x00\x12\'\n\x06object\x18\n \x01(\x0b\x32\x15.sysml.DocumentObjectH\x00\x12%\n\x05state\x18\x0b \x01(\x0b\x32\x14.sysml.DocumentStateH\x00\x12%\n\x05\x65vent\x18\x0c \x01(\x0b\x32\x14.sysml.DocumentEventH\x00\x12\x14\n\x0c\x65lement_type\x18\x07 \x01(\tB\x06\n\x04kind\"Z\n\x0e\x44ocumentObject\x12\x13\n\x0binstance_id\x18\x01 \x01(\x03\x12\x0c\n\x04path\x18\x02 \x01(\t\x12%\n\x07\x65lement\x18\x03 \x01(\x0b\x32\x14.sysml.DocumentValue\"\xae\x01\n\x0f\x44ocumentVerdict\x12\'\n\tassertion\x18\x01 \x01(\x0b\x32\x14.sysml.DocumentValue\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04text\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x0f\n\x07verdict\x18\x05 \x01(\t\x12\x11\n\tcondition\x18\x06 \x01(\t\x12\x0e\n\x06reason\x18\x07 \x01(\t\x12\x14\n\x0cverification\x18\x08 \x03(\t\"\xb1\x01\n\rDocumentState\x12%\n\x06object\x18\x01 \x01(\x0b\x32\x15.sysml.DocumentObject\x12\x0f\n\x07machine\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x12\n\nstate_path\x18\x04 \x01(\t\x12#\n\x05state\x18\x05 \x01(\x0b\x32\x14.sysml.DocumentValue\x12\x0e\n\x06region\x18\x06 \x01(\t\x12\x11\n\tenclosing\x18\x07 \x03(\t\"\x9c\x02\n\rDocumentEvent\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\"\n\x04time\x18\x02 \x01(\x0b\x32\x14.sysml.DocumentValue\x12%\n\x06object\x18\x03 \x01(\x0b\x32\x15.sysml.DocumentObject\x12\x0f\n\x07machine\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x0c\n\x04\x66rom\x18\x06 \x01(\t\x12\n\n\x02to\x18\x07 \x01(\t\x12%\n\x06target\x18\x08 \x01(\x0b\x32\x15.sysml.DocumentObject\x12\r\n\x05\x65vent\x18\t \x01(\t\x12\x0f\n\x07payload\x18\n \x03(\t\x12\x14\n\x0c\x61lternatives\x18\x0b \x03(\t\x12\r\n\x05taken\x18\x0c \x01(\t\x12\x0c\n\x04text\x18\r \x01(\t\"#\n\x13\x44ocumentQueryColumn\x12\x0c\n\x04name\x18\x01 \x01(\t\"9\n\x11\x44ocumentQueryCell\x12$\n\x06values\x18\x01 \x03(\x0b\x32\x14.sysml.DocumentValue\"b\n\x10\x44ocumentQueryRow\x12%\n\x07\x65lement\x18\x01 \x01(\x0b\x32\x14.sysml.DocumentValue\x12\'\n\x05\x63\x65lls\x18\x02 \x03(\x0b\x32\x18.sysml.DocumentQueryCell\"n\n\x18RunDocumentQueryResponse\x12+\n\x07\x63olumns\x18\x01 \x03(\x0b\x32\x1a.sysml.DocumentQueryColumn\x12%\n\x04rows\x18\x02 \x03(\x0b\x32\x17.sysml.DocumentQueryRow\"N\n\x15RenderDocumentRequest\x12\x12\n\nmodel_hash\x18\x01 \x01(\t\x12\x13\n\x0b\x64ocument_id\x18\x02 \x01(\t\x12\x0c\n\x04\x66orm\x18\x03 \x01(\t\"8\n\x16RenderDocumentResponse\x12\x10\n\x08markdown\x18\x01 \x01(\t\x12\x0c\n\x04html\x18\x02 \x01(\t*\x93\x01\n\rFailureReason\x12\x1e\n\x1a\x46\x41ILURE_REASON_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x46\x41ILURE_REASON_EVALUATION\x10\x01\x12\x1d\n\x19\x46\x41ILURE_REASON_WRONG_KIND\x10\x02\x12$\n FAILURE_REASON_AMBIGUOUS_SUBJECT\x10\x03*\x8c\x05\n\x0b\x45\x64itFailure\x12\x1c\n\x18\x45\x44IT_FAILURE_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x45\x44IT_FAILURE_NO_OPERATIONS\x10\x01\x12\x1f\n\x1b\x45\x44IT_FAILURE_UNKNOWN_TARGET\x10\x02\x12!\n\x1d\x45\x44IT_FAILURE_AMBIGUOUS_TARGET\x10\x03\x12\x1b\n\x17\x45\x44IT_FAILURE_NOT_VALUED\x10\x04\x12\x1e\n\x1a\x45\x44IT_FAILURE_INVALID_VALUE\x10\x05\x12\x1d\n\x19\x45\x44IT_FAILURE_INVALID_NAME\x10\x06\x12\x1a\n\x16\x45\x44IT_FAILURE_NOT_NAMED\x10\x07\x12\"\n\x1e\x45\x44IT_FAILURE_RENAME_REFERENCED\x10\x08\x12\"\n\x1e\x45\x44IT_FAILURE_OVERLAPPING_EDITS\x10\t\x12\x1f\n\x1b\x45\x44IT_FAILURE_RESULT_INVALID\x10\n\x12\x1e\n\x1a\x45\x44IT_FAILURE_OWNER_UNKNOWN\x10\x0b\x12$\n EDIT_FAILURE_OWNER_NOT_NAMESPACE\x10\x0c\x12\x1d\n\x19\x45\x44IT_FAILURE_ILLEGAL_KIND\x10\r\x12\"\n\x1e\x45\x44IT_FAILURE_MEMBER_NAME_TAKEN\x10\x0e\x12\"\n\x1e\x45\x44IT_FAILURE_DELETE_REFERENCED\x10\x0f\x12$\n EDIT_FAILURE_OWNER_INSIDE_TARGET\x10\x10\x12 \n\x1c\x45\x44IT_FAILURE_MOVE_REFERENCED\x10\x11\x12%\n!EDIT_FAILURE_REFERENCED_ELSEWHERE\x10\x12*\x92\x01\n\x11PrimitiveOperator\x12\"\n\x1ePRIMITIVE_OPERATOR_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRIMITIVE_OPERATOR_EQUAL\x10\x01\x12\x1e\n\x1aPRIMITIVE_OPERATOR_GREATER\x10\x02\x12\x1b\n\x17PRIMITIVE_OPERATOR_LESS\x10\x03*n\n\x11\x43ompositeOperator\x12\"\n\x1e\x43OMPOSITE_OPERATOR_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43OMPOSITE_OPERATOR_AND\x10\x01\x12\x19\n\x15\x43OMPOSITE_OPERATOR_OR\x10\x02\x32\xbf\x0c\n\x0cSysMLService\x12\x44\n\rGetServerInfo\x12\x18.sysml.ServerInfoRequest\x1a\x19.sysml.ServerInfoResponse\x12>\n\tParseFile\x12\x17.sysml.ParseFileRequest\x1a\x18.sysml.ParseFileResponse\x12G\n\x0cParseSources\x12\x1a.sysml.ParseSourcesRequest\x1a\x1b.sysml.ParseSourcesResponse\x12;\n\tGetSymbol\x12\x17.sysml.GetSymbolRequest\x1a\x15.sysml.SymbolResponse\x12G\n\x0eGetDiagnostics\x12\x19.sysml.DiagnosticsRequest\x1a\x1a.sysml.DiagnosticsResponse\x12;\n\x08\x45valuate\x12\x16.sysml.EvaluateRequest\x1a\x17.sysml.EvaluateResponse\x12\x44\n\x0bInstantiate\x12\x19.sysml.InstantiateRequest\x1a\x1a.sysml.InstantiateResponse\x12J\n\rExecuteAction\x12\x1b.sysml.ExecuteActionRequest\x1a\x1c.sysml.ExecuteActionResponse\x12G\n\x0c\x45xecuteState\x12\x1a.sysml.ExecuteStateRequest\x1a\x1b.sysml.ExecuteStateResponse\x12\x38\n\x07\x43onvert\x12\x15.sysml.ConvertRequest\x1a\x16.sysml.ConvertResponse\x12\x41\n\nApplyEdits\x12\x18.sysml.ApplyEditsRequest\x1a\x19.sysml.ApplyEditsResponse\x12S\n\x10VerifyConstraint\x12\x1e.sysml.VerifyConstraintRequest\x1a\x1f.sysml.VerifyConstraintResponse\x12V\n\x11VerifyRequirement\x12\x1f.sysml.VerifyRequirementRequest\x1a .sysml.VerifyRequirementResponse\x12Y\n\x12VerifySatisfaction\x12 .sysml.VerifySatisfactionRequest\x1a!.sysml.VerifySatisfactionResponse\x12S\n\x10ValidateInstance\x12\x1e.sysml.ValidateInstanceRequest\x1a\x1f.sysml.ValidateInstanceResponse\x12G\n\x0c\x45valuateCalc\x12\x1a.sysml.EvaluateCalcRequest\x1a\x1b.sysml.EvaluateCalcResponse\x12\x44\n\x0bRunAnalysis\x12\x19.sysml.RunAnalysisRequest\x1a\x1a.sysml.RunAnalysisResponse\x12;\n\x08RunSweep\x12\x16.sysml.RunSweepRequest\x1a\x17.sysml.RunSweepResponse\x12\x44\n\x0bListEngines\x12\x19.sysml.ListEnginesRequest\x1a\x1a.sysml.ListEnginesResponse\x12\x32\n\x05Query\x12\x13.sysml.QueryRequest\x1a\x14.sysml.QueryResponse\x12S\n\x10RunDocumentQuery\x12\x1e.sysml.RunDocumentQueryRequest\x1a\x1f.sysml.RunDocumentQueryResponse\x12M\n\x0eRenderDocument\x12\x1c.sysml.RenderDocumentRequest\x1a\x1d.sysml.RenderDocumentResponseB*Z(github.com/Open-MBEE/OpenSysML/api/protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -52,14 +52,14 @@ _globals['_QUERYRESULTELEMENT_PROPERTIESENTRY']._serialized_options = b'8\001' _globals['_RUNSWEEPREQUEST_NAMEDARGUMENTSENTRY']._loaded_options = None _globals['_RUNSWEEPREQUEST_NAMEDARGUMENTSENTRY']._serialized_options = b'8\001' - _globals['_FAILUREREASON']._serialized_start=14331 - _globals['_FAILUREREASON']._serialized_end=14478 - _globals['_EDITFAILURE']._serialized_start=14481 - _globals['_EDITFAILURE']._serialized_end=15133 - _globals['_PRIMITIVEOPERATOR']._serialized_start=15136 - _globals['_PRIMITIVEOPERATOR']._serialized_end=15282 - _globals['_COMPOSITEOPERATOR']._serialized_start=15284 - _globals['_COMPOSITEOPERATOR']._serialized_end=15394 + _globals['_FAILUREREASON']._serialized_start=14495 + _globals['_FAILUREREASON']._serialized_end=14642 + _globals['_EDITFAILURE']._serialized_start=14645 + _globals['_EDITFAILURE']._serialized_end=15297 + _globals['_PRIMITIVEOPERATOR']._serialized_start=15300 + _globals['_PRIMITIVEOPERATOR']._serialized_end=15446 + _globals['_COMPOSITEOPERATOR']._serialized_start=15448 + _globals['_COMPOSITEOPERATOR']._serialized_end=15558 _globals['_VERDICT']._serialized_start=23 _globals['_VERDICT']._serialized_end=336 _globals['_BOUND']._serialized_start=338 @@ -161,129 +161,131 @@ _globals['_APPLYEDITSREQUEST']._serialized_start=6921 _globals['_APPLYEDITSREQUEST']._serialized_end=7046 _globals['_EDITOPERATION']._serialized_start=7049 - _globals['_EDITOPERATION']._serialized_end=7270 - _globals['_ADDMEMBEREDIT']._serialized_start=7273 - _globals['_ADDMEMBEREDIT']._serialized_end=7403 - _globals['_DELETEEDIT']._serialized_start=7405 - _globals['_DELETEEDIT']._serialized_end=7450 - _globals['_MOVEEDIT']._serialized_start=7452 - _globals['_MOVEEDIT']._serialized_end=7493 - _globals['_SETVALUEEDIT']._serialized_start=7495 - _globals['_SETVALUEEDIT']._serialized_end=7540 - _globals['_RENAMEEDIT']._serialized_start=7542 - _globals['_RENAMEEDIT']._serialized_end=7588 - _globals['_APPLYEDITSRESPONSE']._serialized_start=7591 - _globals['_APPLYEDITSRESPONSE']._serialized_end=7863 - _globals['_EDITEDDOCUMENT']._serialized_start=7865 - _globals['_EDITEDDOCUMENT']._serialized_end=7912 - _globals['_REFERRER']._serialized_start=7914 - _globals['_REFERRER']._serialized_end=7956 - _globals['_APPLIEDEDIT']._serialized_start=7959 - _globals['_APPLIEDEDIT']._serialized_end=8099 - _globals['_SYMBOLINFO']._serialized_start=8102 - _globals['_SYMBOLINFO']._serialized_end=8483 - _globals['_SYMBOLINFO_METADATAENTRY']._serialized_start=8436 - _globals['_SYMBOLINFO_METADATAENTRY']._serialized_end=8483 - _globals['_SPECIALIZATION']._serialized_start=8485 - _globals['_SPECIALIZATION']._serialized_end=8573 - _globals['_TYPEINFO']._serialized_start=8576 - _globals['_TYPEINFO']._serialized_end=8725 - _globals['_MULTIPLICITYINFO']._serialized_start=8727 - _globals['_MULTIPLICITYINFO']._serialized_end=8775 - _globals['_ATTRIBUTEINFO']._serialized_start=8777 - _globals['_ATTRIBUTEINFO']._serialized_end=8863 - _globals['_VALUE']._serialized_start=8866 - _globals['_VALUE']._serialized_end=9573 - _globals['_METAOBJECT']._serialized_start=9575 - _globals['_METAOBJECT']._serialized_end=9629 - _globals['_UNDETERMINED']._serialized_start=9631 - _globals['_UNDETERMINED']._serialized_end=9701 - _globals['_FUNCTION']._serialized_start=9703 - _globals['_FUNCTION']._serialized_end=9747 - _globals['_VALUESET']._serialized_start=9749 - _globals['_VALUESET']._serialized_end=9791 - _globals['_TENSORQUANTITY']._serialized_start=9793 - _globals['_TENSORQUANTITY']._serialized_end=9866 - _globals['_ARRAY']._serialized_start=9868 - _globals['_ARRAY']._serialized_end=9927 - _globals['_VECTOR']._serialized_start=9929 - _globals['_VECTOR']._serialized_end=9971 - _globals['_VECTORQUANTITY']._serialized_start=9973 - _globals['_VECTORQUANTITY']._serialized_end=10026 - _globals['_COMPLEX']._serialized_start=10028 - _globals['_COMPLEX']._serialized_end=10070 - _globals['_ENUMLITERAL']._serialized_start=10072 - _globals['_ENUMLITERAL']._serialized_end=10172 - _globals['_VALUESEQUENCE']._serialized_start=10174 - _globals['_VALUESEQUENCE']._serialized_end=10221 - _globals['_QUANTITY']._serialized_start=10223 - _globals['_QUANTITY']._serialized_end=10347 - _globals['_MEASUREMENTREF']._serialized_start=10349 - _globals['_MEASUREMENTREF']._serialized_end=10432 - _globals['_UNITTERM']._serialized_start=10434 - _globals['_UNITTERM']._serialized_end=10518 - _globals['_UNITFACTOR']._serialized_start=10520 - _globals['_UNITFACTOR']._serialized_end=10567 - _globals['_DIAGNOSTIC']._serialized_start=10569 - _globals['_DIAGNOSTIC']._serialized_end=10657 - _globals['_SPAN']._serialized_start=10659 - _globals['_SPAN']._serialized_end=10753 - _globals['_SERVERINFOREQUEST']._serialized_start=10755 - _globals['_SERVERINFOREQUEST']._serialized_end=10774 - _globals['_SERVERINFORESPONSE']._serialized_start=10776 - _globals['_SERVERINFORESPONSE']._serialized_end=10835 - _globals['_QUERYREQUEST']._serialized_start=10837 - _globals['_QUERYREQUEST']._serialized_end=10920 - _globals['_QUERYRESPONSE']._serialized_start=10922 - _globals['_QUERYRESPONSE']._serialized_end=10982 - _globals['_QUERY']._serialized_start=10984 - _globals['_QUERY']._serialized_end=11056 - _globals['_CONSTRAINT']._serialized_start=11058 - _globals['_CONSTRAINT']._serialized_end=11182 - _globals['_PRIMITIVECONSTRAINT']._serialized_start=11184 - _globals['_PRIMITIVECONSTRAINT']._serialized_end=11299 - _globals['_COMPOSITECONSTRAINT']._serialized_start=11301 - _globals['_COMPOSITECONSTRAINT']._serialized_end=11405 - _globals['_QUERYRESULTELEMENT']._serialized_start=11408 - _globals['_QUERYRESULTELEMENT']._serialized_end=11568 - _globals['_QUERYRESULTELEMENT_PROPERTIESENTRY']._serialized_start=11519 - _globals['_QUERYRESULTELEMENT_PROPERTIESENTRY']._serialized_end=11568 - _globals['_SWEEPRANGE']._serialized_start=11570 - _globals['_SWEEPRANGE']._serialized_end=11685 - _globals['_RUNSWEEPREQUEST']._serialized_start=11688 - _globals['_RUNSWEEPREQUEST']._serialized_end=12024 + _globals['_EDITOPERATION']._serialized_end=7322 + _globals['_ADDMEMBEREDIT']._serialized_start=7325 + _globals['_ADDMEMBEREDIT']._serialized_end=7455 + _globals['_ADDCONNECTIONEDIT']._serialized_start=7457 + _globals['_ADDCONNECTIONEDIT']._serialized_end=7567 + _globals['_DELETEEDIT']._serialized_start=7569 + _globals['_DELETEEDIT']._serialized_end=7614 + _globals['_MOVEEDIT']._serialized_start=7616 + _globals['_MOVEEDIT']._serialized_end=7657 + _globals['_SETVALUEEDIT']._serialized_start=7659 + _globals['_SETVALUEEDIT']._serialized_end=7704 + _globals['_RENAMEEDIT']._serialized_start=7706 + _globals['_RENAMEEDIT']._serialized_end=7752 + _globals['_APPLYEDITSRESPONSE']._serialized_start=7755 + _globals['_APPLYEDITSRESPONSE']._serialized_end=8027 + _globals['_EDITEDDOCUMENT']._serialized_start=8029 + _globals['_EDITEDDOCUMENT']._serialized_end=8076 + _globals['_REFERRER']._serialized_start=8078 + _globals['_REFERRER']._serialized_end=8120 + _globals['_APPLIEDEDIT']._serialized_start=8123 + _globals['_APPLIEDEDIT']._serialized_end=8263 + _globals['_SYMBOLINFO']._serialized_start=8266 + _globals['_SYMBOLINFO']._serialized_end=8647 + _globals['_SYMBOLINFO_METADATAENTRY']._serialized_start=8600 + _globals['_SYMBOLINFO_METADATAENTRY']._serialized_end=8647 + _globals['_SPECIALIZATION']._serialized_start=8649 + _globals['_SPECIALIZATION']._serialized_end=8737 + _globals['_TYPEINFO']._serialized_start=8740 + _globals['_TYPEINFO']._serialized_end=8889 + _globals['_MULTIPLICITYINFO']._serialized_start=8891 + _globals['_MULTIPLICITYINFO']._serialized_end=8939 + _globals['_ATTRIBUTEINFO']._serialized_start=8941 + _globals['_ATTRIBUTEINFO']._serialized_end=9027 + _globals['_VALUE']._serialized_start=9030 + _globals['_VALUE']._serialized_end=9737 + _globals['_METAOBJECT']._serialized_start=9739 + _globals['_METAOBJECT']._serialized_end=9793 + _globals['_UNDETERMINED']._serialized_start=9795 + _globals['_UNDETERMINED']._serialized_end=9865 + _globals['_FUNCTION']._serialized_start=9867 + _globals['_FUNCTION']._serialized_end=9911 + _globals['_VALUESET']._serialized_start=9913 + _globals['_VALUESET']._serialized_end=9955 + _globals['_TENSORQUANTITY']._serialized_start=9957 + _globals['_TENSORQUANTITY']._serialized_end=10030 + _globals['_ARRAY']._serialized_start=10032 + _globals['_ARRAY']._serialized_end=10091 + _globals['_VECTOR']._serialized_start=10093 + _globals['_VECTOR']._serialized_end=10135 + _globals['_VECTORQUANTITY']._serialized_start=10137 + _globals['_VECTORQUANTITY']._serialized_end=10190 + _globals['_COMPLEX']._serialized_start=10192 + _globals['_COMPLEX']._serialized_end=10234 + _globals['_ENUMLITERAL']._serialized_start=10236 + _globals['_ENUMLITERAL']._serialized_end=10336 + _globals['_VALUESEQUENCE']._serialized_start=10338 + _globals['_VALUESEQUENCE']._serialized_end=10385 + _globals['_QUANTITY']._serialized_start=10387 + _globals['_QUANTITY']._serialized_end=10511 + _globals['_MEASUREMENTREF']._serialized_start=10513 + _globals['_MEASUREMENTREF']._serialized_end=10596 + _globals['_UNITTERM']._serialized_start=10598 + _globals['_UNITTERM']._serialized_end=10682 + _globals['_UNITFACTOR']._serialized_start=10684 + _globals['_UNITFACTOR']._serialized_end=10731 + _globals['_DIAGNOSTIC']._serialized_start=10733 + _globals['_DIAGNOSTIC']._serialized_end=10821 + _globals['_SPAN']._serialized_start=10823 + _globals['_SPAN']._serialized_end=10917 + _globals['_SERVERINFOREQUEST']._serialized_start=10919 + _globals['_SERVERINFOREQUEST']._serialized_end=10938 + _globals['_SERVERINFORESPONSE']._serialized_start=10940 + _globals['_SERVERINFORESPONSE']._serialized_end=10999 + _globals['_QUERYREQUEST']._serialized_start=11001 + _globals['_QUERYREQUEST']._serialized_end=11084 + _globals['_QUERYRESPONSE']._serialized_start=11086 + _globals['_QUERYRESPONSE']._serialized_end=11146 + _globals['_QUERY']._serialized_start=11148 + _globals['_QUERY']._serialized_end=11220 + _globals['_CONSTRAINT']._serialized_start=11222 + _globals['_CONSTRAINT']._serialized_end=11346 + _globals['_PRIMITIVECONSTRAINT']._serialized_start=11348 + _globals['_PRIMITIVECONSTRAINT']._serialized_end=11463 + _globals['_COMPOSITECONSTRAINT']._serialized_start=11465 + _globals['_COMPOSITECONSTRAINT']._serialized_end=11569 + _globals['_QUERYRESULTELEMENT']._serialized_start=11572 + _globals['_QUERYRESULTELEMENT']._serialized_end=11732 + _globals['_QUERYRESULTELEMENT_PROPERTIESENTRY']._serialized_start=11683 + _globals['_QUERYRESULTELEMENT_PROPERTIESENTRY']._serialized_end=11732 + _globals['_SWEEPRANGE']._serialized_start=11734 + _globals['_SWEEPRANGE']._serialized_end=11849 + _globals['_RUNSWEEPREQUEST']._serialized_start=11852 + _globals['_RUNSWEEPREQUEST']._serialized_end=12188 _globals['_RUNSWEEPREQUEST_NAMEDARGUMENTSENTRY']._serialized_start=2627 _globals['_RUNSWEEPREQUEST_NAMEDARGUMENTSENTRY']._serialized_end=2694 - _globals['_SWEEPROW']._serialized_start=12027 - _globals['_SWEEPROW']._serialized_end=12271 - _globals['_RUNSWEEPRESPONSE']._serialized_start=12274 - _globals['_RUNSWEEPRESPONSE']._serialized_end=12575 - _globals['_RUNDOCUMENTQUERYREQUEST']._serialized_start=12577 - _globals['_RUNDOCUMENTQUERYREQUEST']._serialized_end=12687 - _globals['_DOCUMENTQUERYBINDING']._serialized_start=12689 - _globals['_DOCUMENTQUERYBINDING']._serialized_end=12768 - _globals['_DOCUMENTVALUE']._serialized_start=12771 - _globals['_DOCUMENTVALUE']._serialized_end=13146 - _globals['_DOCUMENTOBJECT']._serialized_start=13148 - _globals['_DOCUMENTOBJECT']._serialized_end=13238 - _globals['_DOCUMENTVERDICT']._serialized_start=13241 - _globals['_DOCUMENTVERDICT']._serialized_end=13415 - _globals['_DOCUMENTSTATE']._serialized_start=13418 - _globals['_DOCUMENTSTATE']._serialized_end=13595 - _globals['_DOCUMENTEVENT']._serialized_start=13598 - _globals['_DOCUMENTEVENT']._serialized_end=13882 - _globals['_DOCUMENTQUERYCOLUMN']._serialized_start=13884 - _globals['_DOCUMENTQUERYCOLUMN']._serialized_end=13919 - _globals['_DOCUMENTQUERYCELL']._serialized_start=13921 - _globals['_DOCUMENTQUERYCELL']._serialized_end=13978 - _globals['_DOCUMENTQUERYROW']._serialized_start=13980 - _globals['_DOCUMENTQUERYROW']._serialized_end=14078 - _globals['_RUNDOCUMENTQUERYRESPONSE']._serialized_start=14080 - _globals['_RUNDOCUMENTQUERYRESPONSE']._serialized_end=14190 - _globals['_RENDERDOCUMENTREQUEST']._serialized_start=14192 - _globals['_RENDERDOCUMENTREQUEST']._serialized_end=14270 - _globals['_RENDERDOCUMENTRESPONSE']._serialized_start=14272 - _globals['_RENDERDOCUMENTRESPONSE']._serialized_end=14328 - _globals['_SYSMLSERVICE']._serialized_start=15397 - _globals['_SYSMLSERVICE']._serialized_end=16996 + _globals['_SWEEPROW']._serialized_start=12191 + _globals['_SWEEPROW']._serialized_end=12435 + _globals['_RUNSWEEPRESPONSE']._serialized_start=12438 + _globals['_RUNSWEEPRESPONSE']._serialized_end=12739 + _globals['_RUNDOCUMENTQUERYREQUEST']._serialized_start=12741 + _globals['_RUNDOCUMENTQUERYREQUEST']._serialized_end=12851 + _globals['_DOCUMENTQUERYBINDING']._serialized_start=12853 + _globals['_DOCUMENTQUERYBINDING']._serialized_end=12932 + _globals['_DOCUMENTVALUE']._serialized_start=12935 + _globals['_DOCUMENTVALUE']._serialized_end=13310 + _globals['_DOCUMENTOBJECT']._serialized_start=13312 + _globals['_DOCUMENTOBJECT']._serialized_end=13402 + _globals['_DOCUMENTVERDICT']._serialized_start=13405 + _globals['_DOCUMENTVERDICT']._serialized_end=13579 + _globals['_DOCUMENTSTATE']._serialized_start=13582 + _globals['_DOCUMENTSTATE']._serialized_end=13759 + _globals['_DOCUMENTEVENT']._serialized_start=13762 + _globals['_DOCUMENTEVENT']._serialized_end=14046 + _globals['_DOCUMENTQUERYCOLUMN']._serialized_start=14048 + _globals['_DOCUMENTQUERYCOLUMN']._serialized_end=14083 + _globals['_DOCUMENTQUERYCELL']._serialized_start=14085 + _globals['_DOCUMENTQUERYCELL']._serialized_end=14142 + _globals['_DOCUMENTQUERYROW']._serialized_start=14144 + _globals['_DOCUMENTQUERYROW']._serialized_end=14242 + _globals['_RUNDOCUMENTQUERYRESPONSE']._serialized_start=14244 + _globals['_RUNDOCUMENTQUERYRESPONSE']._serialized_end=14354 + _globals['_RENDERDOCUMENTREQUEST']._serialized_start=14356 + _globals['_RENDERDOCUMENTREQUEST']._serialized_end=14434 + _globals['_RENDERDOCUMENTRESPONSE']._serialized_start=14436 + _globals['_RENDERDOCUMENTRESPONSE']._serialized_end=14492 + _globals['_SYSMLSERVICE']._serialized_start=15561 + _globals['_SYSMLSERVICE']._serialized_end=17160 # @@protoc_insertion_point(module_scope) diff --git a/client/python/opensysml/proto/sysml_pb2.pyi b/client/python/opensysml/proto/sysml_pb2.pyi index c4b6b91199..412c6c2541 100644 --- a/client/python/opensysml/proto/sysml_pb2.pyi +++ b/client/python/opensysml/proto/sysml_pb2.pyi @@ -728,18 +728,20 @@ class ApplyEditsRequest(_message.Message): def __init__(self, model_hash: _Optional[str] = ..., operations: _Optional[_Iterable[_Union[EditOperation, _Mapping]]] = ..., document: _Optional[str] = ..., accept_documents: _Optional[bool] = ...) -> None: ... class EditOperation(_message.Message): - __slots__ = ("set_value", "rename", "add_member", "delete", "move") + __slots__ = ("set_value", "rename", "add_member", "delete", "move", "add_connection") SET_VALUE_FIELD_NUMBER: _ClassVar[int] RENAME_FIELD_NUMBER: _ClassVar[int] ADD_MEMBER_FIELD_NUMBER: _ClassVar[int] DELETE_FIELD_NUMBER: _ClassVar[int] MOVE_FIELD_NUMBER: _ClassVar[int] + ADD_CONNECTION_FIELD_NUMBER: _ClassVar[int] set_value: SetValueEdit rename: RenameEdit add_member: AddMemberEdit delete: DeleteEdit move: MoveEdit - def __init__(self, set_value: _Optional[_Union[SetValueEdit, _Mapping]] = ..., rename: _Optional[_Union[RenameEdit, _Mapping]] = ..., add_member: _Optional[_Union[AddMemberEdit, _Mapping]] = ..., delete: _Optional[_Union[DeleteEdit, _Mapping]] = ..., move: _Optional[_Union[MoveEdit, _Mapping]] = ...) -> None: ... + add_connection: AddConnectionEdit + def __init__(self, set_value: _Optional[_Union[SetValueEdit, _Mapping]] = ..., rename: _Optional[_Union[RenameEdit, _Mapping]] = ..., add_member: _Optional[_Union[AddMemberEdit, _Mapping]] = ..., delete: _Optional[_Union[DeleteEdit, _Mapping]] = ..., move: _Optional[_Union[MoveEdit, _Mapping]] = ..., add_connection: _Optional[_Union[AddConnectionEdit, _Mapping]] = ...) -> None: ... class AddMemberEdit(_message.Message): __slots__ = ("owner", "kind", "name", "type", "multiplicity", "value", "specializes") @@ -759,6 +761,22 @@ class AddMemberEdit(_message.Message): specializes: _containers.RepeatedScalarFieldContainer[str] def __init__(self, owner: _Optional[str] = ..., kind: _Optional[str] = ..., name: _Optional[str] = ..., type: _Optional[str] = ..., multiplicity: _Optional[str] = ..., value: _Optional[str] = ..., specializes: _Optional[_Iterable[str]] = ...) -> None: ... +class AddConnectionEdit(_message.Message): + __slots__ = ("owner", "kind", "from_end", "to_end", "name", "type") + OWNER_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + FROM_END_FIELD_NUMBER: _ClassVar[int] + TO_END_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + owner: str + kind: str + from_end: str + to_end: str + name: str + type: str + def __init__(self, owner: _Optional[str] = ..., kind: _Optional[str] = ..., from_end: _Optional[str] = ..., to_end: _Optional[str] = ..., name: _Optional[str] = ..., type: _Optional[str] = ...) -> None: ... + class DeleteEdit(_message.Message): __slots__ = ("target", "cascade") TARGET_FIELD_NUMBER: _ClassVar[int] diff --git a/client/python/tests/test_edit.py b/client/python/tests/test_edit.py index 00eec6c2a6..8542415859 100644 --- a/client/python/tests/test_edit.py +++ b/client/python/tests/test_edit.py @@ -18,6 +18,7 @@ from opensysml.capabilities import ( CAPABILITY_APPLY_EDITS, CAPABILITY_AUTHORING, + CAPABILITY_CONNECTION_AUTHORING, CAPABILITY_EDIT_DOCUMENTS, CAPABILITY_INLINE_LANGUAGE, MissingCapabilityError, @@ -240,6 +241,71 @@ def test_add_member_and_delete_requests_are_exact(fake_service): assert result is not None +def test_add_connection_and_typed_helpers_are_exact(fake_service): + port, service = fake_service( + capabilities=( + CAPABILITY_APPLY_EDITS, + CAPABILITY_AUTHORING, + CAPABILITY_CONNECTION_AUTHORING, + ) + ) + + class Owner: + id = "Demo::SC" + + with Connection(port=port, auto_start=False) as conn: + ( + conn.load_from_content(MODEL) + .edit() + .add_connection( + Owner(), "flow", "tank.fuelOut", "engine.fuelIn", + name="fuelFlow", type="Fuel", + ) + .add_allocation("Demo::SC", "a", "b", name="alloc1") + .add_flow("Demo::SC", "c", "d") + .apply() + ) + connection, allocation, flow = service.requests[0].operations + assert connection.WhichOneof("operation") == "add_connection" + assert ( + connection.add_connection.owner, connection.add_connection.kind, + connection.add_connection.from_end, connection.add_connection.to_end, + connection.add_connection.name, connection.add_connection.type, + ) == ( + "Demo::SC", "flow", "tank.fuelOut", "engine.fuelIn", "fuelFlow", "Fuel", + ) + assert ( + allocation.add_connection.kind, allocation.add_connection.from_end, + allocation.add_connection.to_end, allocation.add_connection.name, + ) == ("allocation", "a", "b", "alloc1") + assert ( + flow.add_connection.kind, flow.add_connection.from_end, + flow.add_connection.to_end, + ) == ("flow", "c", "d") + + +@pytest.mark.parametrize( + "args", + [ + ("Demo::SC", 1, "a", "b"), + ("Demo::SC", "flow", None, "b"), + ("Demo::SC", "flow", "a", 2), + ("Demo::SC", "flow", "a", "b", 1), + ("Demo::SC", "flow", "a", "b", None, 1), + ], +) +def test_add_connection_rejects_non_string_fields(fake_service, args): + port, service = fake_service( + capabilities=(CAPABILITY_APPLY_EDITS, CAPABILITY_AUTHORING) + ) + with Connection(port=port, auto_start=False) as conn: + edit = conn.load_from_content(MODEL).edit() + with pytest.raises(TypeError): + edit.add_connection(*args) + assert service.requests == [] + assert len(edit) == 0 + + def test_move_request_is_exact(fake_service): port, service = fake_service( capabilities=(CAPABILITY_APPLY_EDITS, CAPABILITY_AUTHORING) @@ -285,15 +351,35 @@ def test_authoring_capability_gates_add_delete_and_move(fake_service): add = model.edit().add_part("Demo::SC", "new") delete = model.edit().delete("Demo::sc") move = model.edit().move("Demo::sc", "Demo::SC") + connection = model.edit().add_connection("Demo::SC", "flow", "a", "b") with pytest.raises(MissingCapabilityError) as add_error: add.apply() with pytest.raises(MissingCapabilityError) as delete_error: delete.apply() with pytest.raises(MissingCapabilityError) as move_error: move.apply() + with pytest.raises(MissingCapabilityError) as connection_error: + connection.apply() assert add_error.value.capability == CAPABILITY_AUTHORING assert delete_error.value.capability == CAPABILITY_AUTHORING assert move_error.value.capability == CAPABILITY_AUTHORING + assert connection_error.value.capability == CAPABILITY_AUTHORING + assert service.requests == [] + + +def test_connection_authoring_capability_gates_add_connection(fake_service): + port, service = fake_service( + capabilities=(CAPABILITY_APPLY_EDITS, CAPABILITY_AUTHORING) + ) + with Connection(port=port, auto_start=False) as conn: + connection = ( + conn.load_from_content(MODEL) + .edit() + .add_connection("Demo::SC", "flow", "a", "b") + ) + with pytest.raises(MissingCapabilityError) as error: + connection.apply() + assert error.value.capability == CAPABILITY_CONNECTION_AUTHORING assert service.requests == [] @@ -664,6 +750,15 @@ def test_authoring_adds_definition_and_part_and_reads_it_back(self, real_service assert vehicle is not None assert any(part.name == "engine" for part in vehicle.parts()) + def test_authoring_adds_an_allocation(self, real_service): + source = "package Demo { part def System { part a; part b; } }" + with Connection(port=real_service, auto_start=False) as conn: + model = conn.load_from_content(source) + result = model.edit().add_allocation( + "Demo::System", "a", "b", name="alloc1" + ).apply() + assert "allocation alloc1 allocate a to b;" in str(result) + def test_a_value_is_added_to_a_feature_that_had_none(self, real_service): with Connection(port=real_service, auto_start=False) as conn: model = conn.load_from_content(MODEL) diff --git a/client/python/tests/test_wire_compat.py b/client/python/tests/test_wire_compat.py index 774c63c621..b85c1e7e71 100644 --- a/client/python/tests/test_wire_compat.py +++ b/client/python/tests/test_wire_compat.py @@ -345,16 +345,20 @@ def test_apply_edits_is_an_added_rpc(): def test_edit_messages_pin_their_field_numbers(): - """The edit messages' own numbering, pinned from the release that added it.""" + """The edit messages' field numbers, including the additive connection fields.""" expected = { "ApplyEditsRequest": {"model_hash": 1, "operations": 2, "document": 3, "accept_documents": 4}, "EditOperation": { - "set_value": 1, "rename": 2, "add_member": 3, "delete": 4, "move": 5 + "set_value": 1, "rename": 2, "add_member": 3, "delete": 4, "move": 5, + "add_connection": 6, }, "AddMemberEdit": { "owner": 1, "kind": 2, "name": 3, "type": 4, "multiplicity": 5, "value": 6, "specializes": 7, }, + "AddConnectionEdit": { + "owner": 1, "kind": 2, "from_end": 3, "to_end": 4, "name": 5, "type": 6, + }, "DeleteEdit": {"target": 1, "cascade": 2}, "MoveEdit": {"target": 1, "owner": 2}, "SetValueEdit": {"target": 1, "value": 2}, diff --git a/client/rust/conformance/sysml.descriptor.binpb b/client/rust/conformance/sysml.descriptor.binpb index ae56d7e5b5..0fd4646fb7 100644 Binary files a/client/rust/conformance/sysml.descriptor.binpb and b/client/rust/conformance/sysml.descriptor.binpb differ diff --git a/client/rust/opensysml/src/proto/sysml/sysml.rs b/client/rust/opensysml/src/proto/sysml/sysml.rs index 97a1d99295..e41754bf6b 100644 --- a/client/rust/opensysml/src/proto/sysml/sysml.rs +++ b/client/rust/opensysml/src/proto/sysml/sysml.rs @@ -985,7 +985,7 @@ pub struct ApplyEditsRequest { /// EditOperation is one source-preserving change to make. #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct EditOperation { - #[prost(oneof="edit_operation::Operation", tags="1, 2, 3, 4, 5")] + #[prost(oneof="edit_operation::Operation", tags="1, 2, 3, 4, 5, 6")] pub operation: ::core::option::Option, } /// Nested message and enum types in `EditOperation`. @@ -1002,6 +1002,8 @@ pub mod edit_operation { Delete(super::DeleteEdit), #[prost(message, tag="5")] Move(super::MoveEdit), + #[prost(message, tag="6")] + AddConnection(super::AddConnectionEdit), } } /// AddMemberEdit inserts a declaration into a namespace or the document root. @@ -1029,6 +1031,29 @@ pub struct AddMemberEdit { #[prost(string, repeated, tag="7")] pub specializes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } +/// AddConnectionEdit inserts a usage whose ends connect two features. +#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] +pub struct AddConnectionEdit { + /// Namespace FQN receiving the usage; empty means the document root. + #[prost(string, tag="1")] + pub owner: ::prost::alloc::string::String, + /// Usage kind: SysML connection, interface, allocation, binding, flow, + /// succession or transition; KerML connector, binding, flow or succession. + #[prost(string, tag="2")] + pub kind: ::prost::alloc::string::String, + /// First feature reference resolved from the owner. + #[prost(string, tag="3")] + pub from_end: ::prost::alloc::string::String, + /// Second feature reference resolved from the owner. + #[prost(string, tag="4")] + pub to_end: ::prost::alloc::string::String, + /// Optional declared name. + #[prost(string, tag="5")] + pub name: ::prost::alloc::string::String, + /// Optional typing target, legal only for typed connection kinds. + #[prost(string, tag="6")] + pub r#type: ::prost::alloc::string::String, +} /// DeleteEdit removes a declaration and its owned trivia. #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct DeleteEdit { diff --git a/conformance/fixtures/apply_edits_connection.sysml b/conformance/fixtures/apply_edits_connection.sysml new file mode 100644 index 0000000000..be44c0a6bc --- /dev/null +++ b/conformance/fixtures/apply_edits_connection.sysml @@ -0,0 +1,6 @@ +package Demo { + part def System { + part a; + part b; + } +} diff --git a/conformance/scenarios/08-apply-edits.json b/conformance/scenarios/08-apply-edits.json index 4d46d56428..ebf0fc8ab7 100644 --- a/conformance/scenarios/08-apply-edits.json +++ b/conformance/scenarios/08-apply-edits.json @@ -55,6 +55,45 @@ } } }, + { + "id": "apply_edits/an_allocation_is_written_between_two_features", + "rpc": "ApplyEdits", + "requires_capabilities": [ + "apply_edits", + "authoring", + "connection_authoring" + ], + "model": { + "fixture": "apply_edits_connection.sysml" + }, + "request": { + "model_hash": "${model_hash}", + "operations": [ + { + "add_connection": { + "owner": "Demo::System", + "kind": "allocation", + "from_end": "a", + "to_end": "b", + "name": "alloc1" + } + } + ] + }, + "expect": { + "contains_all": { + "content": [ + "allocation alloc1 allocate a to b;" + ] + }, + "absent": [ + "error" + ], + "counts": { + "applied": 1 + } + } + }, { "id": "apply_edits/a_rename_of_an_unreferenced_element_is_applied", "rpc": "ApplyEdits", diff --git a/docs/guide/09-clients.md b/docs/guide/09-clients.md index 3dbcbae6c4..f93578cee9 100644 --- a/docs/guide/09-clients.md +++ b/docs/guide/09-clients.md @@ -1139,7 +1139,12 @@ result = model.edit().add_part_def("", "Vehicle").apply() `add_member(owner, kind, name, type=None, multiplicity=None, value=None, specializes=None)` accepts notation strings for the declaration. Typed `add_*` helpers cover the common SysML and -KerML kinds, `delete(target, cascade=False)` removes declarations transactionally, and +KerML kinds. `add_connection(owner, kind, from_, to, name=None, type=None)` writes a +`connection`, `interface`, `allocation`, `binding`, `flow`, `succession` or `transition` (KerML: +`connector`, `binding`, `flow` or `succession`); its feature references resolve from the owner's +scope, for example `tank.fuelOut`. `add_allocation` and `add_flow` select those kinds directly. +The optional `type` is accepted only for kinds that permit a typing target. +`delete(target, cascade=False)` removes declarations transactionally, and `move(target, owner)` carries a declaration, body and comments included, into another namespace of the same document (`""` is the document itself), respelling the references the move would otherwise break. @@ -1221,7 +1226,8 @@ These limitations are intentional: Editing is capability-negotiated the same way as conversion: a service that does not report the `apply_edits` capability raises `MissingCapabilityError` naming the required upgrade before any -call is made. +call is made. An `add_connection` edit also requires both `authoring` and +`connection_authoring`. ### Querying a model using the standard query model diff --git a/docs/project/spec-compliance.md b/docs/project/spec-compliance.md index 4c5862db39..9ad0128fc0 100644 --- a/docs/project/spec-compliance.md +++ b/docs/project/spec-compliance.md @@ -2714,7 +2714,7 @@ operations are defined: set value, rename, add member, delete, and move. | RPC | Implementation | Status | Tests | |-----|---------------|--------|-------| -| GetServerInfo | service.go `Service.GetServerInfo`, `capabilityAvailability` | ✅ Faithful — reports the build version (informational; a source build reports `dev`) and this service instance's capabilities in append-only canonical order: `type_facts`, `convert`, `verification`, `query`, `oslc_query`, `enum_values`, `evaluate_subject`, `symbol_attributes`, `unset_value`, `feature_values`, `apply_edits`, `authoring`, `inline_language`, `strict_conformance`, `document_query`, `render_document`, `parse_sources`, `complex_values`, `structured_values`, `measurement_refs`, `function_values`, `engines`, `undetermined_value`. The same availability object drives request refusal and response population, so a capability cannot be advertised while withheld or withheld while advertised. A service predating this RPC answers `UNIMPLEMENTED`, which the client reads as supporting no capability | service_test.go:TestGetServerInfo, capability_test.go:`TestCapabilityAvailabilityDrivesAdvertisementAndRefusal`, client/python/tests/test_capabilities.py | +| GetServerInfo | service.go `Service.GetServerInfo`, `capabilityAvailability` | ✅ Faithful — reports the build version (informational; a source build reports `dev`) and this service instance's capabilities in append-only canonical order: `type_facts`, `convert`, `verification`, `query`, `oslc_query`, `enum_values`, `evaluate_subject`, `symbol_attributes`, `unset_value`, `feature_values`, `apply_edits`, `authoring`, `inline_language`, `strict_conformance`, `document_query`, `render_document`, `parse_sources`, `complex_values`, `structured_values`, `measurement_refs`, `function_values`, `set_values`, `tensor_values`, `verification_verdicts`, `infinity_value`, `diagnostic_codes`, `schedule`, `case_evaluations`, `schedule_explore`, `final_time`, `engines`, `metaobject_values`, `undetermined_value`, `engines_external`, `edit_documents`, `performer`, `render_document_html`, `connection_authoring`. The same availability object drives request refusal and response population, so a capability cannot be advertised while withheld or withheld while advertised. A service predating this RPC answers `UNIMPLEMENTED`, which the client reads as supporting no capability | service_test.go:TestGetServerInfo, capability_test.go:`TestCapabilityAvailabilityDrivesAdvertisementAndRefusal`, client/python/tests/test_capabilities.py | | ParseFile | service.go `Service.ParseFile` (parser + passes.Analyze + stdlib load) | ✅ Faithful — the cache is keyed by the file name and content the service read, so repeated parses of an unchanged source hit it whatever the request's (ignored) `content_hash` says, a hash disagreeing with its content cannot serve another model, and identical content read under two names keeps a record each, since their diagnostics name different files. An explicit inline language requires `inline_language`, and `strict_conformance=true` requires `strict_conformance`; an unavailable requested field is `UNIMPLEMENTED`, while an unset field retains the default parse | runtime_test.go:TestParseFile_*, service_test.go:`TestParseFileCachesByContentRead`, service_test.go:`TestParseFileCachesPerFileName`, capability_test.go, conformance parse cases | | ParseFile (standard library) | `grpc/libindex.go` `libraryBase`, `buildLibraryIndex`, `indexPrewarmFromEnv` (`OPENSYSML_GRPC_INDEX_POOL`, positive prewarms, 0 disables), `symbols/layer.go`, `symbols/index.go` `Freeze`/`NewOverlay`, `libs/shared.go` `SharedBase`/`NewModelIndex`, `grpc/service.go` `Service.Prewarm`/`Close`/`ParseFile` | ✅ Faithful — the library does not depend on the model and is immutable once loaded, so it is built once, frozen, and read by every model through an overlay holding that model's own document. What a model resolves against is unchanged (same source list, same expansion, same persist step, same `Index.Library` marking); a model writes only into its overlay, so no two cached models see each other's documents and eviction removes only the evicting model's state; a request arriving before the shared index exists builds it, so a result never depends on prewarming. A cold `ParseFile` on `examples/combined-behavioral-demo.sysml` measures ~0.5–0.9 ms against ~100–128 ms building the library per model, and 100 cached models cost ~1.1 MiB rather than ~1598 MiB | `grpc/libindex_test.go:TestSharedIndexMatchesFreshlyBuiltIndex` (identical diagnostics and identical qualified lookups over the whole index, shared vs built inline), `:TestParseFileServesEveryModelFromOneLibraryIndex`, `:TestParseFileTakesNoIndexOnACacheHit`, `:TestCachedModelsOwnTheirIndex`, `:TestLibraryBaseFallsBackToBuildingInline`, `:TestLibraryBaseCloseReleasesTheIndexAndStillServes`, `:TestIndexPrewarmFromEnv`, `:TestLibraryBaseBuildsOnceUnderConcurrentDemand`, `symbols/overlay_test.go:TestOverlayEqualsAnIndexBuiltWhole`, `:TestOverlayAnswersEveryLookupAsAnIndexBuiltWhole`, `:TestOverlayRemovalOfABaseDocumentLeavesTheBaseIntact`, `:TestOverlaySuppressesAnAmbiguatedBaseImport`, `:TestConcurrentOverlaysDoNotSeeEachOther`, `:TestFrozenIndexRejectsWrites`, `libs/shared_index_test.go:TestModelsOverASharedLibraryAgreeWithModelsOverTheirOwn`, `:TestLibraryMarkingReadsThroughTheSharedBase`, `:TestAModelOverTheSharedBaseCostsFarLessThanItsOwnIndex`, `robustness_test.go:parse_with_unavailable_standard_library`, `BenchmarkParseFileColdShared`/`ColdInline` | | Convert | export.go `Service.Convert`, conversion in `internal/translate/convert` and `internal/translate/export` | ✅ Faithful for what OpenSysML writes — SysML/KerML notation, RDF Turtle and the API's JSON element form (`api-json`), from a loaded model named by its `model_hash`, a path the service opens, or inline content, with the format names `sysml -convert` takes and canonical names reported back. A `model_hash` converts the source that parse read, so a file edited since then does not change what is written, and a model evicted from the cache is `NOT_FOUND` rather than converted as something else; a `file_path` is read afresh, for a caller who does want the file as it stands. Notation to notation is source-preserving (comments and layout survive); a graph direction returns an equivalent model, not identical bytes, and drops comments, per docs/reference/rdf-mapping.md. A conversion that cannot be written faithfully returns `error` plus the diagnostics rather than partial output, and `tolerate_syntax_errors` is honored for notation to notation only, since a graph built from an unparsed declaration would lose it silently | export_test.go:TestConvert*, `TestConvertModelHashConvertsWhatWasParsed`, `TestConvertUncachedModelHashIsNotFound`, client/python/tests/test_conversion.py | @@ -2730,7 +2730,7 @@ operations are defined: set value, rename, add member, delete, and move. | ExecuteState | service.go:315-355 | ✅ Faithful | runtime_test.go:TestExecuteState_*, conformance `execute_state_transitions` | | ValidateInstance | validate.go `Service.ValidateInstance` (`runtime.Context.ValidateObject` over an object of `symbol_id`, instantiated as `VerifyConstraint` instantiates one) | ✅ Faithful — answers one `Verdict` per assertion about the object and the objects it holds, each labelled with `instance_id`, `instance_type_id` and the root-relative `instance_path` (`wheels[2]`), then a `summary` verdict of kind `object` that holds only when every assertion holds and the walk was complete — `bounded` reports a walk cut short, and an undecided summary carries `error` with `FAILURE_REASON_EVALUATION`; the object's instance graph in `instances`, verification-case verdicts in `verification_verdicts`, and on refusal an in-band `error` (an empty or unknown symbol, or an object that could not be built). Requires `verification`; an unknown model is `NOT_FOUND`. Exposed in the Connect adapter, the Go client (`Client.ValidateInstance` answering a `Validation` with `Valid()`/`Violated()`) and the Python client (`Model.validate_instance` answering a `Validation`) | validate_test.go:TestValidateInstance*, capability_test.go, engines_test.go, conformance `09-verify.json`, client/opensysml/surface_test.go:TestValidateInstance*, client/python/tests/test_verification.py, test_model_surface_integration.py | | ListEngines | `internal/frontend/grpc/engines.go` `Service.ListEngines`, `engineSelection`, `CapabilityEngines` (over `analysis.Default().Listings()`) | ✅ Faithful — lists the analysis engines of the build in name order with the authority, questions, bounds and process status of each; the `engine` field of the verification, calculation, analysis and sweep requests selects the engine (unset is `auto`, a set value requires `engines`, an unknown name is `INVALID_ARGUMENT`), and their responses carry `engine`, `strength` and `bounds`. See *Analysis Engines* below | engines_test.go:`TestListEnginesNamesEveryEngine`, `:TestEngineFieldNeedsTheEnginesCapability`, `:TestAnUnknownEngineIsInvalidArgument`, `:TestVerdictsCarryEngineStrengthAndBounds`, `:TestNamedEngineRefusalIsFinalOverTheWire`, `:TestEngineExploreIsScheduleExplore`, client/python/tests/test_engines.py | -| ApplyEdits | `internal/frontend/grpc/edit.go` `Service.ApplyEdits`, engine in `internal/check/edit` | ✅ Faithful for its five operations — sets a feature's value, renames a declaration, adds a member, deletes a declaration, and moves one into another namespace — on the source the named model was parsed from, splicing the spans the operations reach and leaving every other byte identical. The edited source is re-parsed and re-analysed before it is returned, so a refusal carries diagnostics and no content; a model evicted from the cache is `NOT_FOUND` rather than edited as something else. A rename rewrites the references to the renamed element as well as its declaration, and a non-cascade deletion of a referenced element is refused — see *Source-Preserving Model Editing* below. Every call requires `apply_edits`; `add_member`, `delete` and `move` additionally require `authoring`, and missing requirements are `UNIMPLEMENTED` | `internal/frontend/grpc/edit.go`, `internal/frontend/grpc/edit_test.go`, `internal/check/edit/edit_test.go`, capability_test.go, `client/python/tests/test_edit.py`, `client/python/tests/test_wire_compat.py:test_apply_edits_is_an_added_rpc` | +| ApplyEdits | `internal/frontend/grpc/edit.go` `Service.ApplyEdits`, engine in `internal/check/edit` | ✅ Faithful for its six operations — sets a feature's value, renames a declaration, adds a member or connection-like usage, deletes a declaration, and moves one into another namespace — on the source the named model was parsed from, splicing the spans the operations reach and leaving every other byte identical. The edited source is re-parsed and re-analysed before it is returned, so a refusal carries diagnostics and no content; a model evicted from the cache is `NOT_FOUND` rather than edited as something else. A rename rewrites the references to the renamed element as well as its declaration, and a non-cascade deletion of a referenced element is refused — see *Source-Preserving Model Editing* below. Every call requires `apply_edits`; member, delete and move edits additionally require `authoring`, while an add-connection edit requires both `authoring` and `connection_authoring`; missing requirements are `UNIMPLEMENTED` | `internal/frontend/grpc/edit.go`, `internal/frontend/grpc/edit_test.go`, `internal/check/edit/edit_test.go`, capability_test.go, `client/python/tests/test_edit.py`, `client/python/tests/test_wire_compat.py:test_apply_edits_is_an_added_rpc` | ### Server Process Lifecycle (`cmd/sysml-grpc`) diff --git a/docs/reference/api.md b/docs/reference/api.md index 5ccde798d3..d68655ac75 100644 --- a/docs/reference/api.md +++ b/docs/reference/api.md @@ -84,6 +84,16 @@ A service advertising `apply_edits` without `edit_documents` (`CapabilityEditDoc `Documents`: it edits a model of one document and answers `Content` alone, so a caller checks the capability before reading `Documents`, `Referrers` or an applied edit's `Document`. +The `add_connection` operation takes `owner`, `kind`, `from_end`, `to_end`, and optional `name` +and `type` fields: + +| Operation | Fields | Writes | +| --- | --- | --- | +| `add_connection` | `owner`, `kind`, `from_end`, `to_end`, `name?`, `type?` | A `connection`, `interface`, `allocation`, `binding`, `flow`, `succession` or `transition` (KerML: `connector`, `binding`, `flow`, `succession`) in the owner's body, with `from_end` and `to_end` written as they resolve from the owner's scope (`tank.fuelOut`). | + +`type` is accepted only for connection kinds that permit a typing target. +`add_connection` requires both the `authoring` and `connection_authoring` capabilities. + ```go result, err := client.ApplyEdits(ctx, model, opensysml.Rename{Target: "Lib::Engine", NewName: "Motor"}) for _, doc := range result.Documents { @@ -120,8 +130,11 @@ by hand decodes the answers by [the wire contract](wire-contract.md). `Editor.add_member(owner, kind, name, type=None, multiplicity=None, value=None, specializes=None)` and its typed `add_*` helpers create declarations while -preserving untouched source bytes. `Editor.delete(target, cascade=False)` -removes declarations transactionally; `Editor.move(target, owner)` carries one +preserving untouched source bytes. `Editor.add_connection(owner, kind, from_, +to, name=None, type=None)` writes a connection-like usage between feature +references; `add_allocation` and `add_flow` are typed helpers. +`Editor.delete(target, cascade=False)` removes declarations transactionally; +`Editor.move(target, owner)` carries one into another namespace of the same document and respells the references the move would break. `opensysml.loads(content, language=None, strict=False)` loads inline SysML or KerML for this workflow. diff --git a/docs/reference/service-transports.md b/docs/reference/service-transports.md index 8654dac110..3c4f927b99 100644 --- a/docs/reference/service-transports.md +++ b/docs/reference/service-transports.md @@ -51,7 +51,7 @@ capability's definition rather than something a client has to guess: | The capability describes | A request that needs it | What a client should do | |---|---|---| -| what the service can be *asked*: `strict_conformance`, `inline_language`, `parse_sources`, `evaluate_subject`, `verification`, `convert`, `apply_edits`, `authoring`, `edit_documents`, `query`, `oslc_query`, `document_query`, `render_document`, `render_document_html`, `schedule`, `performer` | is **refused** with `UNIMPLEMENTED`, naming the capability | check the advertised list first, and report the missing capability locally rather than spending a round trip | +| what the service can be *asked*: `strict_conformance`, `inline_language`, `parse_sources`, `evaluate_subject`, `verification`, `convert`, `apply_edits`, `authoring`, `connection_authoring`, `edit_documents`, `query`, `oslc_query`, `document_query`, `render_document`, `render_document_html`, `schedule`, `performer` | is **refused** with `UNIMPLEMENTED`, naming the capability | check the advertised list first, and report the missing capability locally rather than spending a round trip | | how a response is *populated*: `type_facts`, `symbol_attributes`, `feature_values`, `enum_values`, `unset_value`, `undetermined_value`, `complex_values`, `structured_values`, `measurement_refs`, `function_values`, `metaobject_values`, `verification_verdicts`, `case_evaluations`, `infinity_value`, `diagnostic_codes`, `final_time`, `edit_documents` | is answered with those fields **omitted** | check before reading the fields; an omitted field is not an error | `edit_documents` sits in both rows: without it `ApplyEdits` still edits a model of one document diff --git a/internal/frontend/grpc/authoring_test.go b/internal/frontend/grpc/authoring_test.go index 022cc75dee..e535f7cc38 100644 --- a/internal/frontend/grpc/authoring_test.go +++ b/internal/frontend/grpc/authoring_test.go @@ -6,6 +6,7 @@ import ( "strings" "testing" + "connectrpc.com/connect" pb "github.com/Open-MBEE/OpenSysML/api/proto" "github.com/Open-MBEE/OpenSysML/internal/check/edit" ) @@ -16,6 +17,14 @@ func addMemberOp(owner, kind, name string) *pb.EditOperation { }} } +func addConnectionOp(owner, kind, from, to, name, typ string) *pb.EditOperation { + return &pb.EditOperation{Operation: &pb.EditOperation_AddConnection{ + AddConnection: &pb.AddConnectionEdit{ + Owner: owner, Kind: kind, FromEnd: from, ToEnd: to, Name: name, Type: typ, + }, + }} +} + func deleteOp(target string, cascade bool) *pb.EditOperation { return &pb.EditOperation{Operation: &pb.EditOperation_Delete{ Delete: &pb.DeleteEdit{Target: target, Cascade: cascade}, @@ -87,6 +96,151 @@ func TestApplyEditsAddMemberAndDelete(t *testing.T) { } } +func TestApplyEditsAddConnection(t *testing.T) { + srv := mustNewService(t, 10) + hash := mustParsedModel(t, srv, "package Demo {\n part def System {\n part a;\n part b;\n }\n}\n") + + added, err := srv.ApplyEdits(context.Background(), &pb.ApplyEditsRequest{ + ModelHash: hash, + Operations: []*pb.EditOperation{addConnectionOp("Demo::System", "allocation", "a", "b", "alloc1", "")}, + }) + if err != nil { + t.Fatalf("add connection call failed: %v", err) + } + want := "package Demo {\n part def System {\n part a;\n part b;\n allocation alloc1 allocate a to b;\n }\n}\n" + if added.Error != "" || added.Content != want { + t.Fatalf("add connection response = %+v\n%s\nwant:\n%s", added, added.Content, want) + } + + hash = mustParsedModel(t, srv, `package Demo { + item def Fuel; + part def Tank { port fuelOut : Fuel; } + part def Engine { port fuelIn : Fuel; } + part def System { + part tank : Tank; + part engine : Engine; + } +} +`) + flow, err := srv.ApplyEdits(context.Background(), &pb.ApplyEditsRequest{ + ModelHash: hash, + Operations: []*pb.EditOperation{addConnectionOp("Demo::System", "flow", "tank.fuelOut", "engine.fuelIn", "", "")}, + }) + if err != nil { + t.Fatalf("add flow call failed: %v", err) + } + if flow.Error != "" || !strings.Contains(flow.Content, " flow from tank.fuelOut to engine.fuelIn;\n") { + t.Fatalf("flow response = %+v\n%s", flow, flow.Content) + } + + hash = mustParsedModel(t, srv, `package Demo { + port def Plug; + connection def Cable { + end a : Plug; + end b : Plug; + } + part def Rig { + part left { port p : Plug; } + part right { port p : Plug; } + } +} +`) + typed, err := srv.ApplyEdits(context.Background(), &pb.ApplyEditsRequest{ + ModelHash: hash, + Operations: []*pb.EditOperation{addConnectionOp("Demo::Rig", "connection", "left.p", "right.p", "cable", "Cable")}, + }) + if err != nil { + t.Fatalf("add typed connection call failed: %v", err) + } + if typed.Error != "" || !strings.Contains(typed.Content, "connection cable : Cable connect left.p to right.p;") { + t.Fatalf("typed connection response = %+v\n%s", typed, typed.Content) + } +} + +func TestApplyEditsAddConnectionRefusals(t *testing.T) { + tests := []struct { + name string + source string + op *pb.EditOperation + failure pb.EditFailure + }{ + { + name: "unknown kind", + source: "package Demo {\n part def System {\n part a;\n part b;\n }\n}\n", + op: addConnectionOp("Demo::System", "unknown", "a", "b", "", ""), + failure: pb.EditFailure_EDIT_FAILURE_ILLEGAL_KIND, + }, + { + name: "type on succession", + source: "package Demo {\n action def System {\n action a;\n action b;\n }\n}\n", + op: addConnectionOp("Demo::System", "succession", "a", "b", "", "SomeType"), + failure: pb.EditFailure_EDIT_FAILURE_ILLEGAL_KIND, + }, + { + name: "unresolved end", + source: "package Demo {\n part def System {\n part a;\n part b;\n }\n}\n", + op: addConnectionOp("Demo::System", "flow", "missing", "b", "", ""), + failure: pb.EditFailure_EDIT_FAILURE_RESULT_INVALID, + }, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + srv := mustNewService(t, 10) + hash := mustParsedModel(t, srv, tc.source) + resp, err := srv.ApplyEdits(context.Background(), &pb.ApplyEditsRequest{ + ModelHash: hash, Operations: []*pb.EditOperation{tc.op}, + }) + if err != nil { + t.Fatalf("ApplyEdits: %v", err) + } + if resp.Content != "" || resp.Failure != tc.failure { + t.Fatalf("response = %+v, want refusal %s", resp, tc.failure) + } + }) + } +} + +func TestApplyEditsAddConnectionRequiresAuthoring(t *testing.T) { + srv := mustNewServiceWithout(t, CapabilityAuthoring) + ctx := context.Background() + hash := mustParsedModel(t, srv, "package Demo {\n part def System {\n part a;\n part b;\n }\n}\n") + _, err := srv.ApplyEdits(ctx, &pb.ApplyEditsRequest{ + ModelHash: hash, + Operations: []*pb.EditOperation{ + addConnectionOp("Demo::System", "allocation", "a", "b", "alloc1", ""), + }, + }) + if connect.CodeOf(err) != connect.CodeUnimplemented { + t.Fatalf("ApplyEdits status = %s, want UNIMPLEMENTED: %v", connect.CodeOf(err), err) + } +} + +func TestApplyEditsAddConnectionRequiresConnectionAuthoring(t *testing.T) { + srv := mustNewServiceWithout(t, CapabilityConnectionAuthoring) + ctx := context.Background() + hash := mustParsedModel(t, srv, "package Demo {\n part def System {\n part a;\n part b;\n }\n}\n") + _, err := srv.ApplyEdits(ctx, &pb.ApplyEditsRequest{ + ModelHash: hash, + Operations: []*pb.EditOperation{ + addConnectionOp("Demo::System", "allocation", "a", "b", "alloc1", ""), + }, + }) + if connect.CodeOf(err) != connect.CodeUnimplemented || !strings.Contains(err.Error(), CapabilityConnectionAuthoring) { + t.Fatalf("ApplyEdits refusal = %v, want UNIMPLEMENTED naming %q", err, CapabilityConnectionAuthoring) + } + + added, err := srv.ApplyEdits(ctx, &pb.ApplyEditsRequest{ + ModelHash: hash, + Operations: []*pb.EditOperation{addMemberOp("Demo::System", "part", "c")}, + }) + if err != nil { + t.Fatalf("ApplyEdits add_member: %v", err) + } + if added.Error != "" || !strings.Contains(added.Content, "part c") { + t.Fatalf("add_member response = %+v, want the new part", added) + } +} + func TestApplyEditsNewFailureEnumsAreMapped(t *testing.T) { tests := []struct { failure edit.Failure @@ -113,7 +267,7 @@ func TestGetServerInfoAuthoringCapabilities(t *testing.T) { if err != nil { t.Fatalf("GetServerInfo: %v", err) } - for _, capability := range []string{CapabilityAuthoring, CapabilityInlineLanguage} { + for _, capability := range []string{CapabilityAuthoring, CapabilityConnectionAuthoring, CapabilityInlineLanguage} { if !slices.Contains(info.Capabilities, capability) { t.Errorf("capabilities = %v, want %q", info.Capabilities, capability) } diff --git a/internal/frontend/grpc/capability_test.go b/internal/frontend/grpc/capability_test.go index 06cda1c583..8dda4923ee 100644 --- a/internal/frontend/grpc/capability_test.go +++ b/internal/frontend/grpc/capability_test.go @@ -93,6 +93,12 @@ func TestCapabilityGatedRequestsAreRefused(t *testing.T) { }) return err }}, + {"connection authoring", CapabilityConnectionAuthoring, func(s *Service) error { + _, err := s.ApplyEdits(ctx, &pb.ApplyEditsRequest{ + Operations: []*pb.EditOperation{addConnectionOp("", "flow", "a", "b", "", "")}, + }) + return err + }}, {"edit documents", CapabilityEditDocuments, func(s *Service) error { _, err := s.ApplyEdits(ctx, &pb.ApplyEditsRequest{Document: "q.sysml"}) return err diff --git a/internal/frontend/grpc/edit.go b/internal/frontend/grpc/edit.go index a42bfdb3b9..ed119cc042 100644 --- a/internal/frontend/grpc/edit.go +++ b/internal/frontend/grpc/edit.go @@ -35,6 +35,11 @@ func (s *Service) ApplyEdits(ctx context.Context, req *pb.ApplyEditsRequest) (*p return nil, err } } + if requestsConnectionAuthoring(req.Operations) { + if err := s.requireCapability(CapabilityConnectionAuthoring); err != nil { + return nil, err + } + } documents := s.capabilities.has(CapabilityEditDocuments) if req.Document != "" && !documents { return nil, s.requireCapability(CapabilityEditDocuments) @@ -179,7 +184,17 @@ func editResultToProto(result *edit.Result, edited string, sole bool) *pb.ApplyE func requestsAuthoring(operations []*pb.EditOperation) bool { for _, operation := range operations { switch operation.GetOperation().(type) { - case *pb.EditOperation_AddMember, *pb.EditOperation_Delete, *pb.EditOperation_Move: + case *pb.EditOperation_AddMember, *pb.EditOperation_AddConnection, + *pb.EditOperation_Delete, *pb.EditOperation_Move: + return true + } + } + return false +} + +func requestsConnectionAuthoring(operations []*pb.EditOperation) bool { + for _, operation := range operations { + if _, ok := operation.GetOperation().(*pb.EditOperation_AddConnection); ok { return true } } @@ -205,6 +220,13 @@ func editOperations(pbOps []*pb.EditOperation) ([]edit.Operation, error) { member.Value = add.GetValue() member.Specializes = append([]string(nil), add.GetSpecializes()...) ops = append(ops, member) + case *pb.EditOperation_AddConnection: + add := op.AddConnection + connection := edit.AddConnection( + add.GetOwner(), add.GetKind(), add.GetFromEnd(), add.GetToEnd(), add.GetName(), + ) + connection.Type = add.GetType() + ops = append(ops, connection) case *pb.EditOperation_Delete: del := op.Delete ops = append(ops, edit.Delete(del.GetTarget(), del.GetCascade())) @@ -212,7 +234,7 @@ func editOperations(pbOps []*pb.EditOperation) ([]edit.Operation, error) { ops = append(ops, edit.Move(op.Move.GetTarget(), op.Move.GetOwner())) default: return nil, statusErrorf(connect.CodeInvalidArgument, - "operation %d must be set_value, rename, add_member, delete or move", i) + "operation %d must be set_value, rename, add_member, add_connection, delete or move", i) } } return ops, nil diff --git a/internal/frontend/grpc/service.go b/internal/frontend/grpc/service.go index a236e851e2..5aed5336a3 100644 --- a/internal/frontend/grpc/service.go +++ b/internal/frontend/grpc/service.go @@ -82,6 +82,9 @@ const CapabilityApplyEdits = "apply_edits" // CapabilityAuthoring names add-member and delete source authoring operations. const CapabilityAuthoring = "authoring" +// CapabilityConnectionAuthoring names the ApplyEdits add_connection operation. +const CapabilityConnectionAuthoring = "connection_authoring" + // CapabilityEditDocuments names the capability of editing a model of several // documents as one batch, for a request accepting documents, and of answering // each edited document by name in ApplyEditsResponse.documents. @@ -195,6 +198,7 @@ var capabilities = []string{ CapabilityEditDocuments, CapabilityPerformer, CapabilityRenderDocumentHTML, + CapabilityConnectionAuthoring, } type capabilityAvailability struct { diff --git a/tests/grpc/conformance_test.go b/tests/grpc/conformance_test.go index e2e75370f5..15799a58ee 100644 --- a/tests/grpc/conformance_test.go +++ b/tests/grpc/conformance_test.go @@ -97,6 +97,9 @@ type conformanceEditOperation struct { Owner string `json:"owner,omitempty"` MemberKind string `json:"member_kind,omitempty"` MemberName string `json:"member_name,omitempty"` + Name string `json:"name,omitempty"` + FromEnd string `json:"from_end,omitempty"` + ToEnd string `json:"to_end,omitempty"` Type string `json:"type,omitempty"` Multiplicity string `json:"multiplicity,omitempty"` Specializes []string `json:"specializes,omitempty"` @@ -202,6 +205,13 @@ func runApplyEditsCase(t *testing.T, srv *grpc.Service, ctx context.Context, mod Value: op.Value, Specializes: op.Specializes, }}, }) + case "add_connection": + operations = append(operations, &pb.EditOperation{ + Operation: &pb.EditOperation_AddConnection{AddConnection: &pb.AddConnectionEdit{ + Owner: op.Owner, Kind: op.MemberKind, FromEnd: op.FromEnd, + ToEnd: op.ToEnd, Name: op.Name, Type: op.Type, + }}, + }) case "delete": operations = append(operations, &pb.EditOperation{ Operation: &pb.EditOperation_Delete{Delete: &pb.DeleteEdit{ diff --git a/tests/grpc/testdata/conformance/apply_edits_add_connection.expected.json b/tests/grpc/testdata/conformance/apply_edits_add_connection.expected.json new file mode 100644 index 0000000000..316c1dedfc --- /dev/null +++ b/tests/grpc/testdata/conformance/apply_edits_add_connection.expected.json @@ -0,0 +1,14 @@ +{ + "rpc": "ApplyEdits", + "operations": [ + { + "kind": "add_connection", + "owner": "Demo::System", + "member_kind": "allocation", + "from_end": "a", + "to_end": "b", + "name": "alloc1" + } + ], + "expected_content": "package Demo {\n part def System {\n part a;\n part b;\n allocation alloc1 allocate a to b;\n }\n}\n" +} diff --git a/tests/grpc/testdata/conformance/apply_edits_add_connection.sysml b/tests/grpc/testdata/conformance/apply_edits_add_connection.sysml new file mode 100644 index 0000000000..be44c0a6bc --- /dev/null +++ b/tests/grpc/testdata/conformance/apply_edits_add_connection.sysml @@ -0,0 +1,6 @@ +package Demo { + part def System { + part a; + part b; + } +} diff --git a/tools/cmd/conformance/pkgclient.go b/tools/cmd/conformance/pkgclient.go index b290bc3eae..0b4419252d 100644 --- a/tools/cmd/conformance/pkgclient.go +++ b/tools/cmd/conformance/pkgclient.go @@ -1382,6 +1382,15 @@ func editFromProto(operation *pb.EditOperation) (opensysml.Edit, bool) { Value: kind.AddMember.GetValue(), Specializes: kind.AddMember.GetSpecializes(), }, true + case *pb.EditOperation_AddConnection: + return opensysml.AddConnection{ + Owner: kind.AddConnection.GetOwner(), + Kind: kind.AddConnection.GetKind(), + From: kind.AddConnection.GetFromEnd(), + To: kind.AddConnection.GetToEnd(), + Name: kind.AddConnection.GetName(), + Type: kind.AddConnection.GetType(), + }, true case *pb.EditOperation_Delete: return opensysml.Delete{Target: kind.Delete.GetTarget(), Cascade: kind.Delete.GetCascade()}, true default: