@cobotar/protocol 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # CobotAR-Protocol
2
2
  A collection of protobuf messages for the CobotAR-project
3
3
 
4
- Current version: 1.3.1
4
+ Current version: 1.3.2
5
5
 
6
6
  ## Documentation
7
7
  Find it here: [documentation/README.md](documentation/README.md)
@@ -8,9 +8,11 @@ import type { ActionType } from "./action_pb.ts";
8
8
  import { file_ar_v1_action } from "./action_pb.ts";
9
9
  import type { DefinitionStatus } from "./definition_status_pb.ts";
10
10
  import { file_ar_v1_definition_status } from "./definition_status_pb.ts";
11
- import type { ExchangeType, HandlerRequirement } from "./events_pb.ts";
12
- import { file_ar_v1_events } from "./events_pb.ts";
11
+ import type { ExecutionContract } from "./execution_contract_pb.ts";
12
+ import { file_ar_v1_execution_contract } from "./execution_contract_pb.ts";
13
13
  import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
14
+ import type { PropertyTemplate } from "../../common/v1/property_pb.ts";
15
+ import { file_common_v1_property } from "../../common/v1/property_pb.ts";
14
16
  import { file_validation_v1_predefined_string_rules } from "../../validation/v1/predefined_string_rules_pb.ts";
15
17
  import type { Message } from "@bufbuild/protobuf";
16
18
 
@@ -18,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
18
20
  * Describes the file ar/v1/action_definition.proto.
19
21
  */
20
22
  export const file_ar_v1_action_definition: GenFile = /*@__PURE__*/
21
- fileDesc("Ch1hci92MS9hY3Rpb25fZGVmaW5pdGlvbi5wcm90bxIFYXIudjEihQQKEEFjdGlvbkRlZmluaXRpb24SGAoCaWQYASABKAlCDLpICcgBAXIE6PMEARIZCgNrZXkYAiABKAlCDLpICcgBAXIE4PMEARIXCgRuYW1lGAMgASgJQgm6SAZyBIDxBAESDAoEaWNvbhgEIAEoCRITCgtkZXNjcmlwdGlvbhgFIAEoCRIsCgR0eXBlGAYgASgOMhEuYXIudjEuQWN0aW9uVHlwZUILukgIyAEBggECEAESLgoFZ3JvdXAYByABKA4yEi5hci52MS5BY3Rpb25Hcm91cEILukgIyAEBggECEAESGQoIcmV2aXNpb24YCCABKARCB7pIBDICKAESNAoGc3RhdHVzGAkgASgOMhcuYXIudjEuRGVmaW5pdGlvblN0YXR1c0ILukgIyAEBggECEAESFQoNcmVxdWlyZV9hZ2VudBgKIAEoCBIvChJjb25zdW1lcnNfcmVxdWlyZWQYCyADKAsyEy5hci52MS5FeGNoYW5nZVR5cGUSLwoSY29uc3VtZXJzX29wdGlvbmFsGAwgAygLMhMuYXIudjEuRXhjaGFuZ2VUeXBlEjQKEXJlcXVpcmVkX2hhbmRsZXJzGA0gAygLMhkuYXIudjEuSGFuZGxlclJlcXVpcmVtZW50EiIKBWVtaXRzGA4gAygLMhMuYXIudjEuRXhjaGFuZ2VUeXBlIrQDChFBY3Rpb25EZWZpbml0aW9ucxKeAwoFaXRlbXMYASADKAsyFy5hci52MS5BY3Rpb25EZWZpbml0aW9uQvUCukjxAroBeQojYWN0aW9uX2RlZmluaXRpb25zLml0ZW1zLnVuaXF1ZV9pZHMSJGFjdGlvbiBkZWZpbml0aW9uIGlkcyBtdXN0IGJlIHVuaXF1ZRosdGhpcy5tYXAoZGVmaW5pdGlvbiwgZGVmaW5pdGlvbi5pZCkudW5pcXVlKCm6AfEBCi1hY3Rpb25fZGVmaW5pdGlvbnMuaXRlbXMudW5pcXVlX2tleV9yZXZpc2lvbnMSN2FjdGlvbiBkZWZpbml0aW9uIGtleSBhbmQgcmV2aXNpb24gcGFpcnMgbXVzdCBiZSB1bmlxdWUahgF0aGlzLmFsbChkZWZpbml0aW9uLCB0aGlzLmZpbHRlcihjYW5kaWRhdGUsIGNhbmRpZGF0ZS5rZXkgPT0gZGVmaW5pdGlvbi5rZXkgJiYgY2FuZGlkYXRlLnJldmlzaW9uID09IGRlZmluaXRpb24ucmV2aXNpb24pLnNpemUoKSA9PSAxKSp0CgtBY3Rpb25Hcm91cBIcChhBQ1RJT05fR1JPVVBfVU5TUEVDSUZJRUQQABIYChRBQ1RJT05fR1JPVVBfR0VORVJBTBABEhYKEkFDVElPTl9HUk9VUF9ST0JPVBACEhUKEUFDVElPTl9HUk9VUF9UQVNLEANCkQEKCWNvbS5hci52MUIVQWN0aW9uRGVmaW5pdGlvblByb3RvUAFaL2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9hci92MTthcnYxogIDQVhYqgIOTWVzc2FnZXMuQVIuVjHKAgVBclxWMeICEUFyXFYxXEdQQk1ldGFkYXRh6gIGQXI6OlYxYgZwcm90bzM", [file_ar_v1_action, file_ar_v1_definition_status, file_ar_v1_events, file_buf_validate_validate, file_validation_v1_predefined_string_rules]);
23
+ fileDesc("Ch1hci92MS9hY3Rpb25fZGVmaW5pdGlvbi5wcm90bxIFYXIudjEiqgQKEEFjdGlvbkRlZmluaXRpb24SGAoCaWQYASABKAlCDLpICcgBAXIE6PMEARIZCgNrZXkYAiABKAlCDLpICcgBAXIE4PMEARIXCgRuYW1lGAMgASgJQgm6SAZyBIDxBAESDAoEaWNvbhgEIAEoCRITCgtkZXNjcmlwdGlvbhgFIAEoCRIsCgR0eXBlGAYgASgOMhEuYXIudjEuQWN0aW9uVHlwZUILukgIyAEBggECEAESLgoFZ3JvdXAYByABKA4yEi5hci52MS5BY3Rpb25Hcm91cEILukgIyAEBggECEAESGQoIcmV2aXNpb24YCCABKARCB7pIBDICKAESNAoGc3RhdHVzGAkgASgOMhcuYXIudjEuRGVmaW5pdGlvblN0YXR1c0ILukgIyAEBggECEAEStAEKCnByb3BlcnRpZXMYCiADKAsyGy5jb21tb24udjEuUHJvcGVydHlUZW1wbGF0ZUKCAbpIf7oBfAooYWN0aW9uX2RlZmluaXRpb24ucHJvcGVydGllcy51bmlxdWVfa2V5cxIlcHJvcGVydHkgdGVtcGxhdGUga2V5cyBtdXN0IGJlIHVuaXF1ZRopdGhpcy5tYXAocHJvcGVydHksIHByb3BlcnR5LmtleSkudW5pcXVlKCkSMwoJZXhlY3V0aW9uGA0gASgLMhguYXIudjEuRXhlY3V0aW9uQ29udHJhY3RCBrpIA8gBAUoECAsQDEoECAwQDSK0AwoRQWN0aW9uRGVmaW5pdGlvbnMSngMKBWl0ZW1zGAEgAygLMhcuYXIudjEuQWN0aW9uRGVmaW5pdGlvbkL1ArpI8QK6AXkKI2FjdGlvbl9kZWZpbml0aW9ucy5pdGVtcy51bmlxdWVfaWRzEiRhY3Rpb24gZGVmaW5pdGlvbiBpZHMgbXVzdCBiZSB1bmlxdWUaLHRoaXMubWFwKGRlZmluaXRpb24sIGRlZmluaXRpb24uaWQpLnVuaXF1ZSgpugHxAQotYWN0aW9uX2RlZmluaXRpb25zLml0ZW1zLnVuaXF1ZV9rZXlfcmV2aXNpb25zEjdhY3Rpb24gZGVmaW5pdGlvbiBrZXkgYW5kIHJldmlzaW9uIHBhaXJzIG11c3QgYmUgdW5pcXVlGoYBdGhpcy5hbGwoZGVmaW5pdGlvbiwgdGhpcy5maWx0ZXIoY2FuZGlkYXRlLCBjYW5kaWRhdGUua2V5ID09IGRlZmluaXRpb24ua2V5ICYmIGNhbmRpZGF0ZS5yZXZpc2lvbiA9PSBkZWZpbml0aW9uLnJldmlzaW9uKS5zaXplKCkgPT0gMSkqdAoLQWN0aW9uR3JvdXASHAoYQUNUSU9OX0dST1VQX1VOU1BFQ0lGSUVEEAASGAoUQUNUSU9OX0dST1VQX0dFTkVSQUwQARIWChJBQ1RJT05fR1JPVVBfUk9CT1QQAhIVChFBQ1RJT05fR1JPVVBfVEFTSxADQpEBCgljb20uYXIudjFCFUFjdGlvbkRlZmluaXRpb25Qcm90b1ABWi9naXRodWIuY29tL2NvYm90YXIvcHJvdG9jb2wvbWVzc2FnZXMvYXIvdjE7YXJ2MaICA0FYWKoCDk1lc3NhZ2VzLkFSLlYxygIFQXJcVjHiAhFBclxWMVxHUEJNZXRhZGF0YeoCBkFyOjpWMWIGcHJvdG8z", [file_ar_v1_action, file_ar_v1_definition_status, file_ar_v1_execution_contract, file_buf_validate_validate, file_common_v1_property, file_validation_v1_predefined_string_rules]);
22
24
 
23
25
  /**
24
26
  * @generated from message ar.v1.ActionDefinition
@@ -76,37 +78,14 @@ export type ActionDefinition = Message<"ar.v1.ActionDefinition"> & {
76
78
  status: DefinitionStatus;
77
79
 
78
80
  /**
79
- * @generated from field: bool require_agent = 10;
81
+ * @generated from field: repeated common.v1.PropertyTemplate properties = 10;
80
82
  */
81
- requireAgent: boolean;
83
+ properties: PropertyTemplate[];
82
84
 
83
85
  /**
84
- * Inputs the action expects to receive
85
- *
86
- * @generated from field: repeated ar.v1.ExchangeType consumers_required = 11;
87
- */
88
- consumersRequired: ExchangeType[];
89
-
90
- /**
91
- * Inputs that will enhance the action, but are not needed to function
92
- *
93
- * @generated from field: repeated ar.v1.ExchangeType consumers_optional = 12;
94
- */
95
- consumersOptional: ExchangeType[];
96
-
97
- /**
98
- * Events that MUST have at least one handler somewhere else in the system.
99
- *
100
- * @generated from field: repeated ar.v1.HandlerRequirement required_handlers = 13;
101
- */
102
- requiredHandlers: HandlerRequirement[];
103
-
104
- /**
105
- * Outputs the action publishes
106
- *
107
- * @generated from field: repeated ar.v1.ExchangeType emits = 14;
86
+ * @generated from field: ar.v1.ExecutionContract execution = 13;
108
87
  */
109
- emits: ExchangeType[];
88
+ execution?: ExecutionContract;
110
89
  };
111
90
 
112
91
  /**
@@ -0,0 +1,69 @@
1
+ // @generated by protoc-gen-es v2.10.2 with parameter "target=ts,import_extension=ts"
2
+ // @generated from file ar/v1/execution_contract.proto (package ar.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import type { ExchangeType, HandlerRequirement } from "./events_pb.ts";
8
+ import { file_ar_v1_events } from "./events_pb.ts";
9
+ import type { Message } from "@bufbuild/protobuf";
10
+
11
+ /**
12
+ * Describes the file ar/v1/execution_contract.proto.
13
+ */
14
+ export const file_ar_v1_execution_contract: GenFile = /*@__PURE__*/
15
+ fileDesc("Ch5hci92MS9leGVjdXRpb25fY29udHJhY3QucHJvdG8SBWFyLnYxIv0BChFFeGVjdXRpb25Db250cmFjdBIVCg1yZXF1aXJlX2FnZW50GAEgASgIEhUKDXJlcXVpcmVfZnJhbWUYAiABKAgSLwoSY29uc3VtZXJzX3JlcXVpcmVkGAMgAygLMhMuYXIudjEuRXhjaGFuZ2VUeXBlEi8KEmNvbnN1bWVyc19vcHRpb25hbBgEIAMoCzITLmFyLnYxLkV4Y2hhbmdlVHlwZRI0ChFyZXF1aXJlZF9oYW5kbGVycxgFIAMoCzIZLmFyLnYxLkhhbmRsZXJSZXF1aXJlbWVudBIiCgVlbWl0cxgGIAMoCzITLmFyLnYxLkV4Y2hhbmdlVHlwZUKSAQoJY29tLmFyLnYxQhZFeGVjdXRpb25Db250cmFjdFByb3RvUAFaL2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9hci92MTthcnYxogIDQVhYqgIOTWVzc2FnZXMuQVIuVjHKAgVBclxWMeICEUFyXFYxXEdQQk1ldGFkYXRh6gIGQXI6OlYxYgZwcm90bzM", [file_ar_v1_events]);
16
+
17
+ /**
18
+ * ExecutionContract declares the runtime dependencies and exchanges required
19
+ * to execute or render a built-in definition.
20
+ *
21
+ * @generated from message ar.v1.ExecutionContract
22
+ */
23
+ export type ExecutionContract = Message<"ar.v1.ExecutionContract"> & {
24
+ /**
25
+ * @generated from field: bool require_agent = 1;
26
+ */
27
+ requireAgent: boolean;
28
+
29
+ /**
30
+ * @generated from field: bool require_frame = 2;
31
+ */
32
+ requireFrame: boolean;
33
+
34
+ /**
35
+ * Inputs the action expects to receive
36
+ *
37
+ * @generated from field: repeated ar.v1.ExchangeType consumers_required = 3;
38
+ */
39
+ consumersRequired: ExchangeType[];
40
+
41
+ /**
42
+ * Inputs that will enhance the action, but are not needed to function
43
+ *
44
+ * @generated from field: repeated ar.v1.ExchangeType consumers_optional = 4;
45
+ */
46
+ consumersOptional: ExchangeType[];
47
+
48
+ /**
49
+ * Events that MUST have at least one handler somewhere else in the system.
50
+ *
51
+ * @generated from field: repeated ar.v1.HandlerRequirement required_handlers = 5;
52
+ */
53
+ requiredHandlers: HandlerRequirement[];
54
+
55
+ /**
56
+ * Outputs the action publishes
57
+ *
58
+ * @generated from field: repeated ar.v1.ExchangeType emits = 6;
59
+ */
60
+ emits: ExchangeType[];
61
+ };
62
+
63
+ /**
64
+ * Describes the message ar.v1.ExecutionContract.
65
+ * Use `create(ExecutionContractSchema)` to create a new message.
66
+ */
67
+ export const ExecutionContractSchema: GenMessage<ExecutionContract> = /*@__PURE__*/
68
+ messageDesc(file_ar_v1_execution_contract, 0);
69
+
@@ -6,8 +6,8 @@ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"
6
6
  import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
7
7
  import type { DefinitionStatus } from "./definition_status_pb.ts";
8
8
  import { file_ar_v1_definition_status } from "./definition_status_pb.ts";
9
- import type { ExchangeType, HandlerRequirement } from "./events_pb.ts";
10
- import { file_ar_v1_events } from "./events_pb.ts";
9
+ import type { ExecutionContract } from "./execution_contract_pb.ts";
10
+ import { file_ar_v1_execution_contract } from "./execution_contract_pb.ts";
11
11
  import type { FeedbackType } from "./feedback_pb.ts";
12
12
  import { file_ar_v1_feedback } from "./feedback_pb.ts";
13
13
  import type { FeedbackCapability } from "./feedback_capability_pb.ts";
@@ -15,6 +15,8 @@ import { file_ar_v1_feedback_capability } from "./feedback_capability_pb.ts";
15
15
  import type { FeedbackFeature } from "./feedback_features_pb.ts";
16
16
  import { file_ar_v1_feedback_features } from "./feedback_features_pb.ts";
17
17
  import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
18
+ import type { PropertyTemplate } from "../../common/v1/property_pb.ts";
19
+ import { file_common_v1_property } from "../../common/v1/property_pb.ts";
18
20
  import { file_validation_v1_predefined_string_rules } from "../../validation/v1/predefined_string_rules_pb.ts";
19
21
  import type { Message } from "@bufbuild/protobuf";
20
22
 
@@ -22,7 +24,7 @@ import type { Message } from "@bufbuild/protobuf";
22
24
  * Describes the file ar/v1/feedback_definition.proto.
23
25
  */
24
26
  export const file_ar_v1_feedback_definition: GenFile = /*@__PURE__*/
25
- fileDesc("Ch9hci92MS9mZWVkYmFja19kZWZpbml0aW9uLnByb3RvEgVhci52MSKOBwoSRmVlZGJhY2tEZWZpbml0aW9uEhgKAmlkGAEgASgJQgy6SAnIAQFyBPDzBAESGQoDa2V5GAIgASgJQgy6SAnIAQFyBODzBAESFwoEbmFtZRgDIAEoCUIJukgGcgSA8QQBEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSLgoEdHlwZRgGIAEoDjITLmFyLnYxLkZlZWRiYWNrVHlwZUILukgIyAEBggECEAESMAoFZ3JvdXAYByABKA4yFC5hci52MS5GZWVkYmFja0dyb3VwQgu6SAjIAQGCAQIQARIZCghyZXZpc2lvbhgIIAEoBEIHukgEMgIoARI0CgZzdGF0dXMYCSABKA4yFy5hci52MS5EZWZpbml0aW9uU3RhdHVzQgu6SAjIAQGCAQIQARIVCg1yZXF1aXJlX2FnZW50GAogASgIEhUKDXJlcXVpcmVfZnJhbWUYCyABKAgSLwoSY29uc3VtZXJzX3JlcXVpcmVkGAwgAygLMhMuYXIudjEuRXhjaGFuZ2VUeXBlEi8KEmNvbnN1bWVyc19vcHRpb25hbBgNIAMoCzITLmFyLnYxLkV4Y2hhbmdlVHlwZRI0ChFyZXF1aXJlZF9oYW5kbGVycxgOIAMoCzIZLmFyLnYxLkhhbmRsZXJSZXF1aXJlbWVudBIiCgVlbWl0cxgPIAMoCzITLmFyLnYxLkV4Y2hhbmdlVHlwZRKgAQoIZmVhdHVyZXMYECADKAsyFi5hci52MS5GZWVkYmFja0ZlYXR1cmVCdrpIc7oBcAooZmVlZGJhY2tfZGVmaW5pdGlvbi5mZWF0dXJlcy51bmlxdWVfa2V5cxIbZmVhdHVyZSBrZXlzIG11c3QgYmUgdW5pcXVlGid0aGlzLm1hcChmZWF0dXJlLCBmZWF0dXJlLmtleSkudW5pcXVlKCkSxgEKDGNhcGFiaWxpdGllcxgRIAMoCzIZLmFyLnYxLkZlZWRiYWNrQ2FwYWJpbGl0eUKUAbpIkAG6AYwBCjFmZWVkYmFja19kZWZpbml0aW9uLmNhcGFiaWxpdGllcy51bmlxdWVfc2VtYW50aWNzEiNjYXBhYmlsaXR5IHNlbWFudGljcyBtdXN0IGJlIHVuaXF1ZRoydGhpcy5tYXAoY2FwYWJpbGl0eSwgY2FwYWJpbGl0eS5zZW1hbnRpYykudW5pcXVlKCkiwAMKE0ZlZWRiYWNrRGVmaW5pdGlvbnMSqAMKBWl0ZW1zGAEgAygLMhkuYXIudjEuRmVlZGJhY2tEZWZpbml0aW9uQv0Cukj5AroBfQolZmVlZGJhY2tfZGVmaW5pdGlvbnMuaXRlbXMudW5pcXVlX2lkcxImZmVlZGJhY2sgZGVmaW5pdGlvbiBpZHMgbXVzdCBiZSB1bmlxdWUaLHRoaXMubWFwKGRlZmluaXRpb24sIGRlZmluaXRpb24uaWQpLnVuaXF1ZSgpugH1AQovZmVlZGJhY2tfZGVmaW5pdGlvbnMuaXRlbXMudW5pcXVlX2tleV9yZXZpc2lvbnMSOWZlZWRiYWNrIGRlZmluaXRpb24ga2V5IGFuZCByZXZpc2lvbiBwYWlycyBtdXN0IGJlIHVuaXF1ZRqGAXRoaXMuYWxsKGRlZmluaXRpb24sIHRoaXMuZmlsdGVyKGNhbmRpZGF0ZSwgY2FuZGlkYXRlLmtleSA9PSBkZWZpbml0aW9uLmtleSAmJiBjYW5kaWRhdGUucmV2aXNpb24gPT0gZGVmaW5pdGlvbi5yZXZpc2lvbikuc2l6ZSgpID09IDEpKvsBCg1GZWVkYmFja0dyb3VwEh4KGkZFRURCQUNLX0dST1VQX1VOU1BFQ0lGSUVEEAASGgoWRkVFREJBQ0tfR1JPVVBfR0VORVJBTBABEhoKFkZFRURCQUNLX0dST1VQX1NQQVRJQUwQAhIbChdGRUVEQkFDS19HUk9VUF9SRVNPVVJDRRADEhoKFkZFRURCQUNLX0dST1VQX1BST0NFU1MQBBIdChlGRUVEQkFDS19HUk9VUF9WQUxJREFUSU9OEAUSGAoURkVFREJBQ0tfR1JPVVBfUk9CT1QQBhIgChxGRUVEQkFDS19HUk9VUF9DT0xMQUJPUkFUSU9OEAdCkwEKCWNvbS5hci52MUIXRmVlZGJhY2tEZWZpbml0aW9uUHJvdG9QAVovZ2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL2FyL3YxO2FydjGiAgNBWFiqAg5NZXNzYWdlcy5BUi5WMcoCBUFyXFYx4gIRQXJcVjFcR1BCTWV0YWRhdGHqAgZBcjo6VjFiBnByb3RvMw", [file_ar_v1_definition_status, file_ar_v1_events, file_ar_v1_feedback, file_ar_v1_feedback_capability, file_ar_v1_feedback_features, file_buf_validate_validate, file_validation_v1_predefined_string_rules]);
27
+ fileDesc("Ch9hci92MS9mZWVkYmFja19kZWZpbml0aW9uLnByb3RvEgVhci52MSKTBwoSRmVlZGJhY2tEZWZpbml0aW9uEhgKAmlkGAEgASgJQgy6SAnIAQFyBPDzBAESGQoDa2V5GAIgASgJQgy6SAnIAQFyBODzBAESFwoEbmFtZRgDIAEoCUIJukgGcgSA8QQBEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSLgoEdHlwZRgGIAEoDjITLmFyLnYxLkZlZWRiYWNrVHlwZUILukgIyAEBggECEAESMAoFZ3JvdXAYByABKA4yFC5hci52MS5GZWVkYmFja0dyb3VwQgu6SAjIAQGCAQIQARIZCghyZXZpc2lvbhgIIAEoBEIHukgEMgIoARI0CgZzdGF0dXMYCSABKA4yFy5hci52MS5EZWZpbml0aW9uU3RhdHVzQgu6SAjIAQGCAQIQARK3AQoKcHJvcGVydGllcxgKIAMoCzIbLmNvbW1vbi52MS5Qcm9wZXJ0eVRlbXBsYXRlQoUBukiBAboBfgoqZmVlZGJhY2tfZGVmaW5pdGlvbi5wcm9wZXJ0aWVzLnVuaXF1ZV9rZXlzEiVwcm9wZXJ0eSB0ZW1wbGF0ZSBrZXlzIG11c3QgYmUgdW5pcXVlGil0aGlzLm1hcChwcm9wZXJ0eSwgcHJvcGVydHkua2V5KS51bmlxdWUoKRKgAQoIZmVhdHVyZXMYCyADKAsyFi5hci52MS5GZWVkYmFja0ZlYXR1cmVCdrpIc7oBcAooZmVlZGJhY2tfZGVmaW5pdGlvbi5mZWF0dXJlcy51bmlxdWVfa2V5cxIbZmVhdHVyZSBrZXlzIG11c3QgYmUgdW5pcXVlGid0aGlzLm1hcChmZWF0dXJlLCBmZWF0dXJlLmtleSkudW5pcXVlKCkSxgEKDGNhcGFiaWxpdGllcxgMIAMoCzIZLmFyLnYxLkZlZWRiYWNrQ2FwYWJpbGl0eUKUAbpIkAG6AYwBCjFmZWVkYmFja19kZWZpbml0aW9uLmNhcGFiaWxpdGllcy51bmlxdWVfc2VtYW50aWNzEiNjYXBhYmlsaXR5IHNlbWFudGljcyBtdXN0IGJlIHVuaXF1ZRoydGhpcy5tYXAoY2FwYWJpbGl0eSwgY2FwYWJpbGl0eS5zZW1hbnRpYykudW5pcXVlKCkSMwoJZXhlY3V0aW9uGA0gASgLMhguYXIudjEuRXhlY3V0aW9uQ29udHJhY3RCBrpIA8gBASLAAwoTRmVlZGJhY2tEZWZpbml0aW9ucxKoAwoFaXRlbXMYASADKAsyGS5hci52MS5GZWVkYmFja0RlZmluaXRpb25C/QK6SPkCugF9CiVmZWVkYmFja19kZWZpbml0aW9ucy5pdGVtcy51bmlxdWVfaWRzEiZmZWVkYmFjayBkZWZpbml0aW9uIGlkcyBtdXN0IGJlIHVuaXF1ZRosdGhpcy5tYXAoZGVmaW5pdGlvbiwgZGVmaW5pdGlvbi5pZCkudW5pcXVlKCm6AfUBCi9mZWVkYmFja19kZWZpbml0aW9ucy5pdGVtcy51bmlxdWVfa2V5X3JldmlzaW9ucxI5ZmVlZGJhY2sgZGVmaW5pdGlvbiBrZXkgYW5kIHJldmlzaW9uIHBhaXJzIG11c3QgYmUgdW5pcXVlGoYBdGhpcy5hbGwoZGVmaW5pdGlvbiwgdGhpcy5maWx0ZXIoY2FuZGlkYXRlLCBjYW5kaWRhdGUua2V5ID09IGRlZmluaXRpb24ua2V5ICYmIGNhbmRpZGF0ZS5yZXZpc2lvbiA9PSBkZWZpbml0aW9uLnJldmlzaW9uKS5zaXplKCkgPT0gMSkq+wEKDUZlZWRiYWNrR3JvdXASHgoaRkVFREJBQ0tfR1JPVVBfVU5TUEVDSUZJRUQQABIaChZGRUVEQkFDS19HUk9VUF9HRU5FUkFMEAESGgoWRkVFREJBQ0tfR1JPVVBfU1BBVElBTBACEhsKF0ZFRURCQUNLX0dST1VQX1JFU09VUkNFEAMSGgoWRkVFREJBQ0tfR1JPVVBfUFJPQ0VTUxAEEh0KGUZFRURCQUNLX0dST1VQX1ZBTElEQVRJT04QBRIYChRGRUVEQkFDS19HUk9VUF9ST0JPVBAGEiAKHEZFRURCQUNLX0dST1VQX0NPTExBQk9SQVRJT04QB0KTAQoJY29tLmFyLnYxQhdGZWVkYmFja0RlZmluaXRpb25Qcm90b1ABWi9naXRodWIuY29tL2NvYm90YXIvcHJvdG9jb2wvbWVzc2FnZXMvYXIvdjE7YXJ2MaICA0FYWKoCDk1lc3NhZ2VzLkFSLlYxygIFQXJcVjHiAhFBclxWMVxHUEJNZXRhZGF0YeoCBkFyOjpWMWIGcHJvdG8z", [file_ar_v1_definition_status, file_ar_v1_execution_contract, file_ar_v1_feedback, file_ar_v1_feedback_capability, file_ar_v1_feedback_features, file_buf_validate_validate, file_common_v1_property, file_validation_v1_predefined_string_rules]);
26
28
 
27
29
  /**
28
30
  * @generated from message ar.v1.FeedbackDefinition
@@ -80,56 +82,28 @@ export type FeedbackDefinition = Message<"ar.v1.FeedbackDefinition"> & {
80
82
  status: DefinitionStatus;
81
83
 
82
84
  /**
83
- * @generated from field: bool require_agent = 10;
85
+ * @generated from field: repeated common.v1.PropertyTemplate properties = 10;
84
86
  */
85
- requireAgent: boolean;
86
-
87
- /**
88
- * @generated from field: bool require_frame = 11;
89
- */
90
- requireFrame: boolean;
91
-
92
- /**
93
- * Inputs the feedback expects to receive
94
- *
95
- * @generated from field: repeated ar.v1.ExchangeType consumers_required = 12;
96
- */
97
- consumersRequired: ExchangeType[];
98
-
99
- /**
100
- * Inputs that will enhance the feedback, but are not needed to function
101
- *
102
- * @generated from field: repeated ar.v1.ExchangeType consumers_optional = 13;
103
- */
104
- consumersOptional: ExchangeType[];
105
-
106
- /**
107
- * Events that MUST have at least one handler somewhere else in the system.
108
- *
109
- * @generated from field: repeated ar.v1.HandlerRequirement required_handlers = 14;
110
- */
111
- requiredHandlers: HandlerRequirement[];
112
-
113
- /**
114
- * Outputs the feedback publishes
115
- *
116
- * @generated from field: repeated ar.v1.ExchangeType emits = 15;
117
- */
118
- emits: ExchangeType[];
87
+ properties: PropertyTemplate[];
119
88
 
120
89
  /**
121
90
  * Implementation/configuration features
122
91
  *
123
- * @generated from field: repeated ar.v1.FeedbackFeature features = 16;
92
+ * @generated from field: repeated ar.v1.FeedbackFeature features = 11;
124
93
  */
125
94
  features: FeedbackFeature[];
126
95
 
127
96
  /**
128
97
  * Assistance semantics
129
98
  *
130
- * @generated from field: repeated ar.v1.FeedbackCapability capabilities = 17;
99
+ * @generated from field: repeated ar.v1.FeedbackCapability capabilities = 12;
131
100
  */
132
101
  capabilities: FeedbackCapability[];
102
+
103
+ /**
104
+ * @generated from field: ar.v1.ExecutionContract execution = 13;
105
+ */
106
+ execution?: ExecutionContract;
133
107
  };
134
108
 
135
109
  /**
@@ -6,11 +6,13 @@ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"
6
6
  import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
7
7
  import type { DefinitionStatus } from "./definition_status_pb.ts";
8
8
  import { file_ar_v1_definition_status } from "./definition_status_pb.ts";
9
- import type { ExchangeType, HandlerRequirement } from "./events_pb.ts";
10
- import { file_ar_v1_events } from "./events_pb.ts";
9
+ import type { ExecutionContract } from "./execution_contract_pb.ts";
10
+ import { file_ar_v1_execution_contract } from "./execution_contract_pb.ts";
11
11
  import type { FunctionType } from "./function_pb.ts";
12
12
  import { file_ar_v1_function } from "./function_pb.ts";
13
13
  import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
14
+ import type { PropertyTemplate } from "../../common/v1/property_pb.ts";
15
+ import { file_common_v1_property } from "../../common/v1/property_pb.ts";
14
16
  import { file_validation_v1_predefined_string_rules } from "../../validation/v1/predefined_string_rules_pb.ts";
15
17
  import type { Message } from "@bufbuild/protobuf";
16
18
 
@@ -18,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
18
20
  * Describes the file ar/v1/function_definition.proto.
19
21
  */
20
22
  export const file_ar_v1_function_definition: GenFile = /*@__PURE__*/
21
- fileDesc("Ch9hci92MS9mdW5jdGlvbl9kZWZpbml0aW9uLnByb3RvEgVhci52MSL0AwoSRnVuY3Rpb25EZWZpbml0aW9uEhgKAmlkGAEgASgJQgy6SAnIAQFyBPjzBAESGQoDa2V5GAIgASgJQgy6SAnIAQFyBODzBAESFwoEbmFtZRgDIAEoCUIJukgGcgSA8QQBEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSLgoEdHlwZRgGIAEoDjITLmFyLnYxLkZ1bmN0aW9uVHlwZUILukgIyAEBggECEAESMAoFZ3JvdXAYByABKA4yFC5hci52MS5GdW5jdGlvbkdyb3VwQgu6SAjIAQGCAQIQARIZCghyZXZpc2lvbhgIIAEoBEIHukgEMgIoARI0CgZzdGF0dXMYCSABKA4yFy5hci52MS5EZWZpbml0aW9uU3RhdHVzQgu6SAjIAQGCAQIQARIvChJjb25zdW1lcnNfcmVxdWlyZWQYCiADKAsyEy5hci52MS5FeGNoYW5nZVR5cGUSLwoSY29uc3VtZXJzX29wdGlvbmFsGAsgAygLMhMuYXIudjEuRXhjaGFuZ2VUeXBlEjQKEXJlcXVpcmVkX2hhbmRsZXJzGAwgAygLMhkuYXIudjEuSGFuZGxlclJlcXVpcmVtZW50EiIKBWVtaXRzGA0gAygLMhMuYXIudjEuRXhjaGFuZ2VUeXBlIsADChNGdW5jdGlvbkRlZmluaXRpb25zEqgDCgVpdGVtcxgBIAMoCzIZLmFyLnYxLkZ1bmN0aW9uRGVmaW5pdGlvbkL9ArpI+QK6AX0KJWZ1bmN0aW9uX2RlZmluaXRpb25zLml0ZW1zLnVuaXF1ZV9pZHMSJmZ1bmN0aW9uIGRlZmluaXRpb24gaWRzIG11c3QgYmUgdW5pcXVlGix0aGlzLm1hcChkZWZpbml0aW9uLCBkZWZpbml0aW9uLmlkKS51bmlxdWUoKboB9QEKL2Z1bmN0aW9uX2RlZmluaXRpb25zLml0ZW1zLnVuaXF1ZV9rZXlfcmV2aXNpb25zEjlmdW5jdGlvbiBkZWZpbml0aW9uIGtleSBhbmQgcmV2aXNpb24gcGFpcnMgbXVzdCBiZSB1bmlxdWUahgF0aGlzLmFsbChkZWZpbml0aW9uLCB0aGlzLmZpbHRlcihjYW5kaWRhdGUsIGNhbmRpZGF0ZS5rZXkgPT0gZGVmaW5pdGlvbi5rZXkgJiYgY2FuZGlkYXRlLnJldmlzaW9uID09IGRlZmluaXRpb24ucmV2aXNpb24pLnNpemUoKSA9PSAxKSqnAgoNRnVuY3Rpb25Hcm91cBIeChpGVU5DVElPTl9HUk9VUF9VTlNQRUNJRklFRBAAEhoKFkZVTkNUSU9OX0dST1VQX0dFTkVSQUwQARIYChRGVU5DVElPTl9HUk9VUF9ST0JPVBACEhcKE0ZVTkNUSU9OX0dST1VQX1RBU0sQAxIeChpGVU5DVElPTl9HUk9VUF9FTlZJUk9OTUVOVBAEEhsKF0ZVTkNUSU9OX0dST1VQX09QRVJBVE9SEAUSGgoWRlVOQ1RJT05fR1JPVVBfU1BBVElBTBAGEhgKFEZVTkNUSU9OX0dST1VQX0xPR0lDEAcSFwoTRlVOQ1RJT05fR1JPVVBfREFUQRAIEhsKF0ZVTkNUSU9OX0dST1VQX1RFTVBPUkFMEAlCkwEKCWNvbS5hci52MUIXRnVuY3Rpb25EZWZpbml0aW9uUHJvdG9QAVovZ2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL2FyL3YxO2FydjGiAgNBWFiqAg5NZXNzYWdlcy5BUi5WMcoCBUFyXFYx4gIRQXJcVjFcR1BCTWV0YWRhdGHqAgZBcjo6VjFiBnByb3RvMw", [file_ar_v1_definition_status, file_ar_v1_events, file_ar_v1_function, file_buf_validate_validate, file_validation_v1_predefined_string_rules]);
23
+ fileDesc("Ch9hci92MS9mdW5jdGlvbl9kZWZpbml0aW9uLnByb3RvEgVhci52MSKzBAoSRnVuY3Rpb25EZWZpbml0aW9uEhgKAmlkGAEgASgJQgy6SAnIAQFyBPjzBAESGQoDa2V5GAIgASgJQgy6SAnIAQFyBODzBAESFwoEbmFtZRgDIAEoCUIJukgGcgSA8QQBEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSLgoEdHlwZRgGIAEoDjITLmFyLnYxLkZ1bmN0aW9uVHlwZUILukgIyAEBggECEAESMAoFZ3JvdXAYByABKA4yFC5hci52MS5GdW5jdGlvbkdyb3VwQgu6SAjIAQGCAQIQARIZCghyZXZpc2lvbhgIIAEoBEIHukgEMgIoARI0CgZzdGF0dXMYCSABKA4yFy5hci52MS5EZWZpbml0aW9uU3RhdHVzQgu6SAjIAQGCAQIQARK3AQoKcHJvcGVydGllcxgKIAMoCzIbLmNvbW1vbi52MS5Qcm9wZXJ0eVRlbXBsYXRlQoUBukiBAboBfgoqZnVuY3Rpb25fZGVmaW5pdGlvbi5wcm9wZXJ0aWVzLnVuaXF1ZV9rZXlzEiVwcm9wZXJ0eSB0ZW1wbGF0ZSBrZXlzIG11c3QgYmUgdW5pcXVlGil0aGlzLm1hcChwcm9wZXJ0eSwgcHJvcGVydHkua2V5KS51bmlxdWUoKRIzCglleGVjdXRpb24YDSABKAsyGC5hci52MS5FeGVjdXRpb25Db250cmFjdEIGukgDyAEBSgQICxAMSgQIDBANIsADChNGdW5jdGlvbkRlZmluaXRpb25zEqgDCgVpdGVtcxgBIAMoCzIZLmFyLnYxLkZ1bmN0aW9uRGVmaW5pdGlvbkL9ArpI+QK6AX0KJWZ1bmN0aW9uX2RlZmluaXRpb25zLml0ZW1zLnVuaXF1ZV9pZHMSJmZ1bmN0aW9uIGRlZmluaXRpb24gaWRzIG11c3QgYmUgdW5pcXVlGix0aGlzLm1hcChkZWZpbml0aW9uLCBkZWZpbml0aW9uLmlkKS51bmlxdWUoKboB9QEKL2Z1bmN0aW9uX2RlZmluaXRpb25zLml0ZW1zLnVuaXF1ZV9rZXlfcmV2aXNpb25zEjlmdW5jdGlvbiBkZWZpbml0aW9uIGtleSBhbmQgcmV2aXNpb24gcGFpcnMgbXVzdCBiZSB1bmlxdWUahgF0aGlzLmFsbChkZWZpbml0aW9uLCB0aGlzLmZpbHRlcihjYW5kaWRhdGUsIGNhbmRpZGF0ZS5rZXkgPT0gZGVmaW5pdGlvbi5rZXkgJiYgY2FuZGlkYXRlLnJldmlzaW9uID09IGRlZmluaXRpb24ucmV2aXNpb24pLnNpemUoKSA9PSAxKSqnAgoNRnVuY3Rpb25Hcm91cBIeChpGVU5DVElPTl9HUk9VUF9VTlNQRUNJRklFRBAAEhoKFkZVTkNUSU9OX0dST1VQX0dFTkVSQUwQARIYChRGVU5DVElPTl9HUk9VUF9ST0JPVBACEhcKE0ZVTkNUSU9OX0dST1VQX1RBU0sQAxIeChpGVU5DVElPTl9HUk9VUF9FTlZJUk9OTUVOVBAEEhsKF0ZVTkNUSU9OX0dST1VQX09QRVJBVE9SEAUSGgoWRlVOQ1RJT05fR1JPVVBfU1BBVElBTBAGEhgKFEZVTkNUSU9OX0dST1VQX0xPR0lDEAcSFwoTRlVOQ1RJT05fR1JPVVBfREFUQRAIEhsKF0ZVTkNUSU9OX0dST1VQX1RFTVBPUkFMEAlCkwEKCWNvbS5hci52MUIXRnVuY3Rpb25EZWZpbml0aW9uUHJvdG9QAVovZ2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL2FyL3YxO2FydjGiAgNBWFiqAg5NZXNzYWdlcy5BUi5WMcoCBUFyXFYx4gIRQXJcVjFcR1BCTWV0YWRhdGHqAgZBcjo6VjFiBnByb3RvMw", [file_ar_v1_definition_status, file_ar_v1_execution_contract, file_ar_v1_function, file_buf_validate_validate, file_common_v1_property, file_validation_v1_predefined_string_rules]);
22
24
 
23
25
  /**
24
26
  * @generated from message ar.v1.FunctionDefinition
@@ -76,32 +78,14 @@ export type FunctionDefinition = Message<"ar.v1.FunctionDefinition"> & {
76
78
  status: DefinitionStatus;
77
79
 
78
80
  /**
79
- * Inputs the function expects to receive
80
- *
81
- * @generated from field: repeated ar.v1.ExchangeType consumers_required = 10;
82
- */
83
- consumersRequired: ExchangeType[];
84
-
85
- /**
86
- * Inputs that will enhance the function, but are not needed to function
87
- *
88
- * @generated from field: repeated ar.v1.ExchangeType consumers_optional = 11;
81
+ * @generated from field: repeated common.v1.PropertyTemplate properties = 10;
89
82
  */
90
- consumersOptional: ExchangeType[];
83
+ properties: PropertyTemplate[];
91
84
 
92
85
  /**
93
- * Events that MUST have at least one handler somewhere else in the system.
94
- *
95
- * @generated from field: repeated ar.v1.HandlerRequirement required_handlers = 12;
96
- */
97
- requiredHandlers: HandlerRequirement[];
98
-
99
- /**
100
- * Outputs the function publishes
101
- *
102
- * @generated from field: repeated ar.v1.ExchangeType emits = 13;
86
+ * @generated from field: ar.v1.ExecutionContract execution = 13;
103
87
  */
104
- emits: ExchangeType[];
88
+ execution?: ExecutionContract;
105
89
  };
106
90
 
107
91
  /**
@@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
20
20
  * Describes the file common/v1/property.proto.
21
21
  */
22
22
  export const file_common_v1_property: GenFile = /*@__PURE__*/
23
- fileDesc("Chhjb21tb24vdjEvcHJvcGVydHkucHJvdG8SCWNvbW1vbi52MSKXCQoSUHJvcGVydHlEZWZpbml0aW9uEhUKAmlkGAEgASgJQgm6SAZyBJjxBAESNwoDa2V5GBEgASgJQiq6SCdyJRABGEAyH15bYS16XVthLXowLTldKig/Ol9bYS16MC05XSspKiQSDAoEbmFtZRgCIAEoCRIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEjIKBHR5cGUYBSABKA4yFy5jb21tb24udjEuUHJvcGVydHlUeXBlQgu6SAjIAQGCAQIQARIRCglwYXJlbnRfaWQYBiABKAkSHAoUYXV0aG9yaW5nX2NvbnRleHRfaWQYByABKAkSMQoFc2NvcGUYCCABKA4yGC5jb21tb24udjEuUHJvcGVydHlTY29wZUIIukgFggECEAESTAobbWluaW11bV9yZXF1aXJlZF9wZXJtaXNzaW9uGAkgASgOMh0uY29tbW9uLnYxLlByb3BlcnR5UGVybWlzc2lvbkIIukgFggECEAESQQoPYWxsb3dlZF9vcmlnaW5zGAogAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQg26SAqSAQciBYIBAhABEjEKBWdyb3VwGAsgASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXBCCLpIBYIBAhABEhAKCG9yZGVyaW5nGAwgASgFEhIKCmhpZGVfZ3JvdXAYDSABKAgSEAoIYWR2YW5jZWQYDiABKAgSHAoUYWxsb3dfdG9fYmVfbWlycm9yZWQYDyABKAgSQAoNc2VtYW50aWNfcm9sZRgQIAEoDjIfLmNvbW1vbi52MS5Qcm9wZXJ0eVNlbWFudGljUm9sZUIIukgFggECEAESLgoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXMSKgoLZW51bV9leHRyYXMYKiABKAsyFS5jb21tb24udjEuRW51bUV4dHJhcxIwCg52ZWN0b3IzX2V4dHJhcxgrIAEoCzIYLmNvbW1vbi52MS5WZWN0b3IzRXh0cmFzEiwKDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhcxIqCgtwb3NlX2V4dHJhcxgtIAEoCzIVLmNvbW1vbi52MS5Qb3NlRXh0cmFzEi4KDWFuY2hvcl9leHRyYXMYLiABKAsyFy5jb21tb24udjEuQW5jaG9yRXh0cmFzOvMBukjvARqUAQoZZW51bV9yZXF1aXJlc19lbnVtX2V4dHJhcxI3ZW51bV9leHRyYXMgbXVzdCBiZSBzZXQgd2hlbiB0eXBlIGlzIEVOVU0gb3IgRU5VTV9NVUxUSRo+ISh0aGlzLnR5cGUgPT0gMTEgfHwgdGhpcy50eXBlID09IDEyKSB8fCBoYXModGhpcy5lbnVtX2V4dHJhcykiVgoNbnVtYmVyX2V4dHJhcwoLZW51bV9leHRyYXMKDnZlY3RvcjNfZXh0cmFzCgxjb2xvcl9leHRyYXMKC3Bvc2VfZXh0cmFzCg1hbmNob3JfZXh0cmFzIskDChBQcm9wZXJ0eUluc3RhbmNlEhUKAmlkGAEgASgJQgm6SAZyBJjzBAESKQoWcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgCIAEoCUIJukgGcgSY8QQBEicKBXNjb3BlGAMgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGUSEAoIc2NvcGVfaWQYBCABKAkSMwoGb3JpZ2luGAUgASgOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQgi6SAWCAQIQARIwCh1taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgGIAEoCUIJukgGcgSY8QQBEi8KBXZhbHVlGAcgASgLMhguY29tbW9uLnYxLlByb3BlcnR5VmFsdWVCBrpIA8gBATqfAbpImwEamAEKIm1pcnJvcl9yZXF1aXJlc19taXJyb3JfcHJvcGVydHlfaWQSNG1pcnJvcl9wcm9wZXJ0eV9pZCBtdXN0IGJlIHNldCB3aGVuIG9yaWdpbiBpcyBNSVJST1IaPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJyK9DQoNUHJvcGVydHlWYWx1ZRIyCgR0eXBlGAEgASgOMhcuY29tbW9uLnYxLlByb3BlcnR5VHlwZUILukgIyAEBggECEAESFwoKYm9vbF92YWx1ZRgVIAEoCEgAiAEBEhYKCWludF92YWx1ZRgWIAEoEkgBiAEBEhgKC2Zsb2F0X3ZhbHVlGBcgASgCSAKIAQESGQoMZG91YmxlX3ZhbHVlGBggASgBSAOIAQESGQoMc3RyaW5nX3ZhbHVlGBkgASgJSASIAQESKwoNdmVjdG9yM192YWx1ZRgaIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMSLgoKcG9zZV92YWx1ZRgbIAEoCzIaLmdlb21ldHJ5LnYxLkxvY2FsaXplZFBvc2USKQoMYW5jaG9yX3ZhbHVlGBwgASgLMhMuZ2VvbWV0cnkudjEuQW5jaG9yEiUKC2NvbG9yX3ZhbHVlGB0gASgLMhAuY29tbW9uLnYxLkNvbG9yEhsKDnJvYm90X2lkX3ZhbHVlGB4gASgJSAWIAQESIAoKZW51bV92YWx1ZRgfIAEoCUIHukgEcgIQAUgGiAEBEigKEGVudW1fbXVsdGlfdmFsdWUYICADKAlCDrpIC5IBCAgBIgRyAhABEhcKCmljb25fdmFsdWUYISABKAlIB4gBARIbCg5hc3NldF9pZF92YWx1ZRgiIAEoCUgIiAEBEhwKD3dvcmtlcl9pZF92YWx1ZRgjIAEoCUgJiAEBOuMHukjfBxqGBgogcHJvcGVydHlfdHlwZV9tYXRjaGVzX3ZhbHVlX2tpbmQSJ3R5cGUgbXVzdCBtYXRjaCB0aGUga2luZCBvZiB2YWx1ZSBmaWVsZBq4BSgodGhpcy50eXBlID09IDEgJiYgaGFzKHRoaXMuYm9vbF92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMiAmJiBoYXModGhpcy5pbnRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDMgJiYgaGFzKHRoaXMuZmxvYXRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDQgJiYgaGFzKHRoaXMuZG91YmxlX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSA1ICYmIGhhcyh0aGlzLnN0cmluZ192YWx1ZSkpIHx8KHRoaXMudHlwZSA9PSA2ICYmIGhhcyh0aGlzLnZlY3RvcjNfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDcgJiYgaGFzKHRoaXMucG9zZV92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gOCAmJiBoYXModGhpcy5hbmNob3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDkgJiYgaGFzKHRoaXMuY29sb3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDEwICYmIGhhcyh0aGlzLnJvYm90X2lkX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSAxMSAmJiBoYXModGhpcy5lbnVtX3ZhbHVlKSkgfHwodGhpcy50eXBlID09IDEyICYmIHNpemUodGhpcy5lbnVtX211bHRpX3ZhbHVlKSA+IDApIHx8ICh0aGlzLnR5cGUgPT0gMTMgJiYgaGFzKHRoaXMuaWNvbl92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMTQgJiYgaGFzKHRoaXMuYXNzZXRfaWRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDE1ICYmIGhhcyh0aGlzLndvcmtlcl9pZF92YWx1ZSkpKSLTAQoKYm9vbF92YWx1ZQoJaW50X3ZhbHVlCgtmbG9hdF92YWx1ZQoMZG91YmxlX3ZhbHVlCgxzdHJpbmdfdmFsdWUKDXZlY3RvcjNfdmFsdWUKCnBvc2VfdmFsdWUKDGFuY2hvcl92YWx1ZQoLY29sb3JfdmFsdWUKDnJvYm90X2lkX3ZhbHVlCgplbnVtX3ZhbHVlChBlbnVtX211bHRpX3ZhbHVlCgppY29uX3ZhbHVlCg5hc3NldF9pZF92YWx1ZQoPd29ya2VyX2lkX3ZhbHVlEAFCDQoLX2Jvb2xfdmFsdWVCDAoKX2ludF92YWx1ZUIOCgxfZmxvYXRfdmFsdWVCDwoNX2RvdWJsZV92YWx1ZUIPCg1fc3RyaW5nX3ZhbHVlQhEKD19yb2JvdF9pZF92YWx1ZUINCgtfZW51bV92YWx1ZUINCgtfaWNvbl92YWx1ZUIRCg9fYXNzZXRfaWRfdmFsdWVCEgoQX3dvcmtlcl9pZF92YWx1ZSLnAwoWUHJvcGVydHlJbnN0YW5jZVVwZGF0ZRInChRwcm9wZXJ0eV9pbnN0YW5jZV9pZBgBIAEoCUIJukgGcgSY8wQBEjMKBm9yaWdpbhgCIAEoDjIZLmNvbW1vbi52MS5Qcm9wZXJ0eU9yaWdpbkIIukgFggECEAESMAodbWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQYAyABKAlCCbpIBnIEmPEEARIvCgV2YWx1ZRgEIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQE6iwK6SIcCGmoKG2ZpeGVkX29yaWdpbl9yZXF1aXJlc192YWx1ZRImdmFsdWUgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgRklYRUQaI3RoaXMub3JpZ2luICE9IDEgfHwgaGFzKHRoaXMudmFsdWUpGpgBCiJtaXJyb3JfcmVxdWlyZXNfbWlycm9yX3Byb3BlcnR5X2lkEjRtaXJyb3JfcHJvcGVydHlfaWQgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgTUlSUk9SGjx0aGlzLm9yaWdpbiAhPSAyIHx8IHRoaXMubWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgIT0gJyciQwoTUHJvcGVydHlEZWZpbml0aW9ucxIsCgVpdGVtcxgBIAMoCzIdLmNvbW1vbi52MS5Qcm9wZXJ0eURlZmluaXRpb24iPwoRUHJvcGVydHlJbnN0YW5jZXMSKgoFaXRlbXMYASADKAsyGy5jb21tb24udjEuUHJvcGVydHlJbnN0YW5jZSLGAwoMTnVtYmVyRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESFQoEdW5pdBgEIAEoCUIHukgEcgIYAxIaCglwcmVjaXNpb24YBSABKA1CB7pIBCoCKAA6ogK6SJ4CGpsCChhudW1iZXJfZXh0cmFzX2NvbnNpc3RlbnQSVElmIGFueSBvZiBtaW4vbWF4L3N0ZXAgaXMgc2V0LCBhbGwgbXVzdCBiZSBzZXQ7IGFuZCBtaW4gPCBtYXg7IGFuZCBzdGVwIDw9IChtYXgtbWluKRqoASghaGFzKHRoaXMubWluKSAmJiAhaGFzKHRoaXMubWF4KSAmJiAhaGFzKHRoaXMuc3RlcCkpIHx8IChoYXModGhpcy5taW4pICYmIGhhcyh0aGlzLm1heCkgJiYgaGFzKHRoaXMuc3RlcCkgJiYgdGhpcy5taW4gPCB0aGlzLm1heCAmJiB0aGlzLnN0ZXAgPD0gKHRoaXMubWF4IC0gdGhpcy5taW4pKUIGCgRfbWluQgYKBF9tYXhCBwoFX3N0ZXAiawoKRW51bU9wdGlvbhIWCgV2YWx1ZRgBIAEoCUIHukgEcgIQARIWCgVsYWJlbBgCIAEoCUIHukgEcgIQARIMCgRpY29uGAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCGRpc2FibGVkGAUgASgIIqUBCgpFbnVtRXh0cmFzEhMKC3BsYWNlaG9sZGVyGAEgASgJEg4KBmZpbHRlchgCIAEoCBIPCgdncm91cGVkGAMgASgIEhIKCnNob3dfaWNvbnMYBCABKAgSGwoTbWF4X3NlbGVjdGVkX2xhYmVscxgFIAEoDRIwCgdvcHRpb25zGAYgAygLMhUuY29tbW9uLnYxLkVudW1PcHRpb25CCLpIBZIBAggBIvkDCg1WZWN0b3IzRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESGAoHbGFiZWxfeBgEIAEoCUIHukgEcgIYBRIYCgdsYWJlbF95GAUgASgJQge6SARyAhgFEhgKB2xhYmVsX3oYBiABKAlCB7pIBHICGAUSFQoEdW5pdBgHIAEoCUIHukgEcgIYAzqiArpIngIamwIKGG51bWJlcl9leHRyYXNfY29uc2lzdGVudBJUSWYgYW55IG9mIG1pbi9tYXgvc3RlcCBpcyBzZXQsIGFsbCBtdXN0IGJlIHNldDsgYW5kIG1pbiA8IG1heDsgYW5kIHN0ZXAgPD0gKG1heC1taW4pGqgBKCFoYXModGhpcy5taW4pICYmICFoYXModGhpcy5tYXgpICYmICFoYXModGhpcy5zdGVwKSkgfHwgKGhhcyh0aGlzLm1pbikgJiYgaGFzKHRoaXMubWF4KSAmJiBoYXModGhpcy5zdGVwKSAmJiB0aGlzLm1pbiA8IHRoaXMubWF4ICYmIHRoaXMuc3RlcCA8PSAodGhpcy5tYXggLSB0aGlzLm1pbikpQgYKBF9taW5CBgoEX21heEIHCgVfc3RlcCJOCgtDb2xvckV4dHJhcxIcCgRzdGVwGAEgASgBQg66SAsSCSkAAAAAAAAAABIhCgdkZWZhdWx0GAIgASgLMhAuY29tbW9uLnYxLkNvbG9yIiQKDEFuY2hvckV4dHJhcxIUCgxvbmx5X21hcmtlcnMYASABKAgiPAoKUG9zZUV4dHJhcxIXCg9hbmNob3JfZWRpdGFibGUYASABKAgSFQoNcG9zZV9lZGl0YWJsZRgCIAEoCCLHCgoVQ3JlYXRlUHJvcGVydHlNZXNzYWdlEhEKCXBhcmVudF9pZBgBIAEoCRIcChRhdXRob3JpbmdfY29udGV4dF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSMgoEdHlwZRgGIAEoDjIXLmNvbW1vbi52MS5Qcm9wZXJ0eVR5cGVCC7pICMgBAYIBAhABEjQKBXNjb3BlGAcgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGVCC7pICMgBAYIBAhABEkIKG21pbmltdW1fcmVxdWlyZWRfcGVybWlzc2lvbhgIIAEoDjIdLmNvbW1vbi52MS5Qcm9wZXJ0eVBlcm1pc3Npb24SMgoPYWxsb3dlZF9vcmlnaW5zGAkgAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luEicKBWdyb3VwGAogASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXASEAoIb3JkZXJpbmcYCyABKAUSEgoKaGlkZV9ncm91cBgMIAEoCBIQCghhZHZhbmNlZBgNIAEoCBIcChRhbGxvd190b19iZV9taXJyb3JlZBgOIAEoCBJACg1zZW1hbnRpY19yb2xlGBAgASgOMh8uY29tbW9uLnYxLlByb3BlcnR5U2VtYW50aWNSb2xlQgi6SAWCAQIQARI3CgNrZXkYESABKAlCKrpIJ3IlEAEYQDIfXlthLXpdW2EtejAtOV0qKD86X1thLXowLTldKykqJBI2CgZvcmlnaW4YFCABKA4yGS5jb21tb24udjEuUHJvcGVydHlPcmlnaW5CC7pICMgBAYIBAhABEhAKCHNjb3BlX2lkGBUgASgJEjAKHW1pcnJvcl9wcm9wZXJ0eV9kZWZpbml0aW9uX2lkGBYgASgJQgm6SAZyBJjxBAESNwoNaW5pdGlhbF92YWx1ZRgXIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQESMAoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXNIABIsCgtlbnVtX2V4dHJhcxgqIAEoCzIVLmNvbW1vbi52MS5FbnVtRXh0cmFzSAASMgoOdmVjdG9yM19leHRyYXMYKyABKAsyGC5jb21tb24udjEuVmVjdG9yM0V4dHJhc0gAEi4KDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhc0gAEiwKC3Bvc2VfZXh0cmFzGC0gASgLMhUuY29tbW9uLnYxLlBvc2VFeHRyYXNIABIwCg1hbmNob3JfZXh0cmFzGC4gASgLMhcuY29tbW9uLnYxLkFuY2hvckV4dHJhc0gAOowCukiIAhpsCiBkZWZpbml0aW9uX2FuZF92YWx1ZV90eXBlc19tYXRjaBIidHlwZSBtdXN0IG1hdGNoIGluaXRpYWxfdmFsdWUudHlwZRokdGhpcy50eXBlID09IHRoaXMuaW5pdGlhbF92YWx1ZS50eXBlGpcBChptaXJyb3JfcmVxdWlyZXNfZGVmaW5pdGlvbhI7bWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgaXMgcmVxdWlyZWQgZm9yIE1JUlJPUiBvcmlnaW4aPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJ0IICgZleHRyYXMqqQMKDFByb3BlcnR5VHlwZRIdChlQUk9QRVJUWV9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSUFJPUEVSVFlfVFlQRV9CT09MEAESFQoRUFJPUEVSVFlfVFlQRV9JTlQQAhIXChNQUk9QRVJUWV9UWVBFX0ZMT0FUEAMSGAoUUFJPUEVSVFlfVFlQRV9ET1VCTEUQBBIYChRQUk9QRVJUWV9UWVBFX1NUUklORxAFEhkKFVBST1BFUlRZX1RZUEVfVkVDVE9SMxAGEhYKElBST1BFUlRZX1RZUEVfUE9TRRAHEhgKFFBST1BFUlRZX1RZUEVfQU5DSE9SEAgSFwoTUFJPUEVSVFlfVFlQRV9DT0xPUhAJEhcKE1BST1BFUlRZX1RZUEVfUk9CT1QQChIWChJQUk9QRVJUWV9UWVBFX0VOVU0QCxIcChhQUk9QRVJUWV9UWVBFX0VOVU1fTVVMVEkQDBIWChJQUk9QRVJUWV9UWVBFX0lDT04QDRIXChNQUk9QRVJUWV9UWVBFX0FTU0VUEA4SGAoUUFJPUEVSVFlfVFlQRV9XT1JLRVIQDypoCg5Qcm9wZXJ0eU9yaWdpbhIfChtQUk9QRVJUWV9PUklHSU5fVU5TUEVDSUZJRUQQABIZChVQUk9QRVJUWV9PUklHSU5fRklYRUQQARIaChZQUk9QRVJUWV9PUklHSU5fTUlSUk9SEAIq3AIKDVByb3BlcnR5R3JvdXASHgoaUFJPUEVSVFlfR1JPVVBfVU5TUEVDSUZJRUQQABIZChVQUk9QRVJUWV9HUk9VUF9PVVRQVVQQARIfChtQUk9QRVJUWV9HUk9VUF9OT05fRURJVEFCTEUQAhIaChZQUk9QRVJUWV9HUk9VUF9TVFlMSU5HEAMSGwoXUFJPUEVSVFlfR1JPVVBfTE9DQVRJT04QBBIXChNQUk9QRVJUWV9HUk9VUF9JQ09OEAUSIAocUFJPUEVSVFlfR1JPVVBfQ09ORklHVVJBVElPThAGEhkKFVBST1BFUlRZX0dST1VQX0hJRERFThAHEh0KGVBST1BFUlRZX0dST1VQX0lOUFVUX1NMT1QQCBIcChhQUk9QRVJUWV9HUk9VUF9BTklNQVRJT04QCRIjCh9QUk9QRVJUWV9HUk9VUF9UQVJHRVRfSU5ESUNBVE9SEAoqtgEKElByb3BlcnR5UGVybWlzc2lvbhIjCh9QUk9QRVJUWV9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASHQoZUFJPUEVSVFlfUEVSTUlTU0lPTl9CQVNJQxAKEiAKHFBST1BFUlRZX1BFUk1JU1NJT05fQ09TTUVUSUMQFBIcChhQUk9QRVJUWV9QRVJNSVNTSU9OX0ZVTEwQHhIcChhQUk9QRVJUWV9QRVJNSVNTSU9OX05PTkUQKCrpDwoUUHJvcGVydHlTZW1hbnRpY1JvbGUSJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9VTlNQRUNJRklFRBAAEjEKLVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQkFDS0dST1VORF9DT0xPUhABEisKJ1BST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfVEVYVF9DT0xPUhACEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQk9SREVSX0NPTE9SEAMSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQU5FTF9PUEFDSVRZEAQSLgoqUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQU5FTF9DT1JORVJfUkFESVVTEAUSLQopUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QUklNQVJZX1RFWFRfQ09MT1IQFBIvCitQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1NFQ09OREFSWV9URVhUX0NPTE9SEBUSJAogUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9URVhUX1NJWkUQFhIqCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1RJVExFX1RFWFRfU0laRRAXEicKI1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQUNDRU5UX0NPTE9SECgSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TVUNDRVNTX0NPTE9SECkSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9XQVJOSU5HX0NPTE9SECoSJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9FUlJPUl9DT0xPUhArEikKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfRElTQUJMRURfQ09MT1IQLBItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NVUlJFTlRfVEFTS19DT0xPUhA8Ei4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfVVBDT01JTkdfVEFTS19DT0xPUhA9Ei8KK1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQ09NUExFVEVEX1RBU0tfQ09MT1IQPhItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0JMT0NLRURfVEFTS19DT0xPUhA/Ei4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfT1BUSU9OQUxfVEFTS19DT0xPUhBAEikKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfT1BFUkFUT1JfQ09MT1IQUBImCiJQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX0NPTE9SEFESLAooUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TSEFSRURfVEFTS19DT0xPUhBSEisKJ1BST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VQRVJWSVNPUl9DT0xPUhBTEiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFSVF9DT0xPUhBkEiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVE9PTF9DT0xPUhBlEiYKIlBST1BFUlRZX1NFTUFOVElDX1JPTEVfQVNTRVRfQ09MT1IQZhIqCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NPTlRBSU5FUl9DT0xPUhBnEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVEFSR0VUX0dIT1NUX0NPTE9SEHgSMQotUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9UQVJHRVRfSElHSExJR0hUX0NPTE9SEHkSJQohUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQVRIX0NPTE9SEHoSJQohUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9aT05FX0NPTE9SEHsSJwojUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9BTkNIT1JfQ09MT1IQfBIsCidQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX1BBVEhfQ09MT1IQjAESMgotUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9ST0JPVF9TSUxIT1VFVFRFX0NPTE9SEI0BEi4KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfSU5URU5UX0NPTE9SEI4BEjEKLFBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfT0NDVVBBTkNZX0NPTE9SEI8BEikKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VDQ0VTU19TT1VORBCgARIpCiRQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1dBUk5JTkdfU09VTkQQoQESJwoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9FUlJPUl9TT1VORBCiARItCihQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX05PVElGSUNBVElPTl9JQ09OEKMBEioKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUFVMU0VfRFVSQVRJT04QtAESKQokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9GQURFX0RVUkFUSU9OELUBEisKJlBST1BFUlRZX1NFTUFOVElDX1JPTEVfQU5JTUFUSU9OX1NQRUVEELYBEi8KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfSElHSExJR0hUX1RISUNLTkVTUxC3ASpmCg1Qcm9wZXJ0eVNjb3BlEh4KGlBST1BFUlRZX1NDT1BFX1VOU1BFQ0lGSUVEEAASGQoVUFJPUEVSVFlfU0NPUEVfRU5USVRZEAESGgoWUFJPUEVSVFlfU0NPUEVfUlVOVElNRRACQqUBCg1jb20uY29tbW9uLnYxQg1Qcm9wZXJ0eVByb3RvUAFaN2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9jb21tb24vdjE7Y29tbW9udjGiAgNDWFiqAhJNZXNzYWdlcy5Db21tb24uVjHKAglDb21tb25cVjHiAhVDb21tb25cVjFcR1BCTWV0YWRhdGHqAgpDb21tb246OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_color, file_geometry_v1_anchor, file_geometry_v1_pose, file_geometry_v1_vector3, file_validation_v1_predefined_string_rules]);
23
+ fileDesc("Chhjb21tb24vdjEvcHJvcGVydHkucHJvdG8SCWNvbW1vbi52MSL2CAoSUHJvcGVydHlEZWZpbml0aW9uEhUKAmlkGAEgASgJQgm6SAZyBJjxBAESFgoDa2V5GBEgASgJQgm6SAZyBODzBAESDAoEbmFtZRgCIAEoCRIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEjIKBHR5cGUYBSABKA4yFy5jb21tb24udjEuUHJvcGVydHlUeXBlQgu6SAjIAQGCAQIQARIRCglwYXJlbnRfaWQYBiABKAkSHAoUYXV0aG9yaW5nX2NvbnRleHRfaWQYByABKAkSMQoFc2NvcGUYCCABKA4yGC5jb21tb24udjEuUHJvcGVydHlTY29wZUIIukgFggECEAESTAobbWluaW11bV9yZXF1aXJlZF9wZXJtaXNzaW9uGAkgASgOMh0uY29tbW9uLnYxLlByb3BlcnR5UGVybWlzc2lvbkIIukgFggECEAESQQoPYWxsb3dlZF9vcmlnaW5zGAogAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQg26SAqSAQciBYIBAhABEjEKBWdyb3VwGAsgASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXBCCLpIBYIBAhABEhAKCG9yZGVyaW5nGAwgASgFEhIKCmhpZGVfZ3JvdXAYDSABKAgSEAoIYWR2YW5jZWQYDiABKAgSHAoUYWxsb3dfdG9fYmVfbWlycm9yZWQYDyABKAgSQAoNc2VtYW50aWNfcm9sZRgQIAEoDjIfLmNvbW1vbi52MS5Qcm9wZXJ0eVNlbWFudGljUm9sZUIIukgFggECEAESLgoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXMSKgoLZW51bV9leHRyYXMYKiABKAsyFS5jb21tb24udjEuRW51bUV4dHJhcxIwCg52ZWN0b3IzX2V4dHJhcxgrIAEoCzIYLmNvbW1vbi52MS5WZWN0b3IzRXh0cmFzEiwKDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhcxIqCgtwb3NlX2V4dHJhcxgtIAEoCzIVLmNvbW1vbi52MS5Qb3NlRXh0cmFzEi4KDWFuY2hvcl9leHRyYXMYLiABKAsyFy5jb21tb24udjEuQW5jaG9yRXh0cmFzOvMBukjvARqUAQoZZW51bV9yZXF1aXJlc19lbnVtX2V4dHJhcxI3ZW51bV9leHRyYXMgbXVzdCBiZSBzZXQgd2hlbiB0eXBlIGlzIEVOVU0gb3IgRU5VTV9NVUxUSRo+ISh0aGlzLnR5cGUgPT0gMTEgfHwgdGhpcy50eXBlID09IDEyKSB8fCBoYXModGhpcy5lbnVtX2V4dHJhcykiVgoNbnVtYmVyX2V4dHJhcwoLZW51bV9leHRyYXMKDnZlY3RvcjNfZXh0cmFzCgxjb2xvcl9leHRyYXMKC3Bvc2VfZXh0cmFzCg1hbmNob3JfZXh0cmFzIskDChBQcm9wZXJ0eUluc3RhbmNlEhUKAmlkGAEgASgJQgm6SAZyBJjzBAESKQoWcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgCIAEoCUIJukgGcgSY8QQBEicKBXNjb3BlGAMgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGUSEAoIc2NvcGVfaWQYBCABKAkSMwoGb3JpZ2luGAUgASgOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQgi6SAWCAQIQARIwCh1taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgGIAEoCUIJukgGcgSY8QQBEi8KBXZhbHVlGAcgASgLMhguY29tbW9uLnYxLlByb3BlcnR5VmFsdWVCBrpIA8gBATqfAbpImwEamAEKIm1pcnJvcl9yZXF1aXJlc19taXJyb3JfcHJvcGVydHlfaWQSNG1pcnJvcl9wcm9wZXJ0eV9pZCBtdXN0IGJlIHNldCB3aGVuIG9yaWdpbiBpcyBNSVJST1IaPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJyK9DQoNUHJvcGVydHlWYWx1ZRIyCgR0eXBlGAEgASgOMhcuY29tbW9uLnYxLlByb3BlcnR5VHlwZUILukgIyAEBggECEAESFwoKYm9vbF92YWx1ZRgVIAEoCEgAiAEBEhYKCWludF92YWx1ZRgWIAEoEkgBiAEBEhgKC2Zsb2F0X3ZhbHVlGBcgASgCSAKIAQESGQoMZG91YmxlX3ZhbHVlGBggASgBSAOIAQESGQoMc3RyaW5nX3ZhbHVlGBkgASgJSASIAQESKwoNdmVjdG9yM192YWx1ZRgaIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMSLgoKcG9zZV92YWx1ZRgbIAEoCzIaLmdlb21ldHJ5LnYxLkxvY2FsaXplZFBvc2USKQoMYW5jaG9yX3ZhbHVlGBwgASgLMhMuZ2VvbWV0cnkudjEuQW5jaG9yEiUKC2NvbG9yX3ZhbHVlGB0gASgLMhAuY29tbW9uLnYxLkNvbG9yEhsKDnJvYm90X2lkX3ZhbHVlGB4gASgJSAWIAQESIAoKZW51bV92YWx1ZRgfIAEoCUIHukgEcgIQAUgGiAEBEigKEGVudW1fbXVsdGlfdmFsdWUYICADKAlCDrpIC5IBCAgBIgRyAhABEhcKCmljb25fdmFsdWUYISABKAlIB4gBARIbCg5hc3NldF9pZF92YWx1ZRgiIAEoCUgIiAEBEhwKD3dvcmtlcl9pZF92YWx1ZRgjIAEoCUgJiAEBOuMHukjfBxqGBgogcHJvcGVydHlfdHlwZV9tYXRjaGVzX3ZhbHVlX2tpbmQSJ3R5cGUgbXVzdCBtYXRjaCB0aGUga2luZCBvZiB2YWx1ZSBmaWVsZBq4BSgodGhpcy50eXBlID09IDEgJiYgaGFzKHRoaXMuYm9vbF92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMiAmJiBoYXModGhpcy5pbnRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDMgJiYgaGFzKHRoaXMuZmxvYXRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDQgJiYgaGFzKHRoaXMuZG91YmxlX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSA1ICYmIGhhcyh0aGlzLnN0cmluZ192YWx1ZSkpIHx8KHRoaXMudHlwZSA9PSA2ICYmIGhhcyh0aGlzLnZlY3RvcjNfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDcgJiYgaGFzKHRoaXMucG9zZV92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gOCAmJiBoYXModGhpcy5hbmNob3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDkgJiYgaGFzKHRoaXMuY29sb3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDEwICYmIGhhcyh0aGlzLnJvYm90X2lkX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSAxMSAmJiBoYXModGhpcy5lbnVtX3ZhbHVlKSkgfHwodGhpcy50eXBlID09IDEyICYmIHNpemUodGhpcy5lbnVtX211bHRpX3ZhbHVlKSA+IDApIHx8ICh0aGlzLnR5cGUgPT0gMTMgJiYgaGFzKHRoaXMuaWNvbl92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMTQgJiYgaGFzKHRoaXMuYXNzZXRfaWRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDE1ICYmIGhhcyh0aGlzLndvcmtlcl9pZF92YWx1ZSkpKSLTAQoKYm9vbF92YWx1ZQoJaW50X3ZhbHVlCgtmbG9hdF92YWx1ZQoMZG91YmxlX3ZhbHVlCgxzdHJpbmdfdmFsdWUKDXZlY3RvcjNfdmFsdWUKCnBvc2VfdmFsdWUKDGFuY2hvcl92YWx1ZQoLY29sb3JfdmFsdWUKDnJvYm90X2lkX3ZhbHVlCgplbnVtX3ZhbHVlChBlbnVtX211bHRpX3ZhbHVlCgppY29uX3ZhbHVlCg5hc3NldF9pZF92YWx1ZQoPd29ya2VyX2lkX3ZhbHVlEAFCDQoLX2Jvb2xfdmFsdWVCDAoKX2ludF92YWx1ZUIOCgxfZmxvYXRfdmFsdWVCDwoNX2RvdWJsZV92YWx1ZUIPCg1fc3RyaW5nX3ZhbHVlQhEKD19yb2JvdF9pZF92YWx1ZUINCgtfZW51bV92YWx1ZUINCgtfaWNvbl92YWx1ZUIRCg9fYXNzZXRfaWRfdmFsdWVCEgoQX3dvcmtlcl9pZF92YWx1ZSLnAwoWUHJvcGVydHlJbnN0YW5jZVVwZGF0ZRInChRwcm9wZXJ0eV9pbnN0YW5jZV9pZBgBIAEoCUIJukgGcgSY8wQBEjMKBm9yaWdpbhgCIAEoDjIZLmNvbW1vbi52MS5Qcm9wZXJ0eU9yaWdpbkIIukgFggECEAESMAodbWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQYAyABKAlCCbpIBnIEmPEEARIvCgV2YWx1ZRgEIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQE6iwK6SIcCGmoKG2ZpeGVkX29yaWdpbl9yZXF1aXJlc192YWx1ZRImdmFsdWUgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgRklYRUQaI3RoaXMub3JpZ2luICE9IDEgfHwgaGFzKHRoaXMudmFsdWUpGpgBCiJtaXJyb3JfcmVxdWlyZXNfbWlycm9yX3Byb3BlcnR5X2lkEjRtaXJyb3JfcHJvcGVydHlfaWQgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgTUlSUk9SGjx0aGlzLm9yaWdpbiAhPSAyIHx8IHRoaXMubWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgIT0gJyciQwoTUHJvcGVydHlEZWZpbml0aW9ucxIsCgVpdGVtcxgBIAMoCzIdLmNvbW1vbi52MS5Qcm9wZXJ0eURlZmluaXRpb24iPwoRUHJvcGVydHlJbnN0YW5jZXMSKgoFaXRlbXMYASADKAsyGy5jb21tb24udjEuUHJvcGVydHlJbnN0YW5jZSKlAwoMTnVtYmVyRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESFQoEdW5pdBgEIAEoCUIHukgEcgIYAxIaCglwcmVjaXNpb24YBSABKA1CB7pIBCoCKAA6gQK6SP0BGvoBChhudW1iZXJfZXh0cmFzX2NvbnNpc3RlbnQSQ21pbiBtdXN0IGJlIGxlc3MgdGhhbiBtYXgsIGFuZCBzdGVwIG11c3Qgbm90IGV4Y2VlZCBhIGJvdW5kZWQgcmFuZ2UamAEoIWhhcyh0aGlzLm1pbikgfHwgIWhhcyh0aGlzLm1heCkgfHwgdGhpcy5taW4gPCB0aGlzLm1heCkgJiYgKCFoYXModGhpcy5zdGVwKSB8fCAhaGFzKHRoaXMubWluKSB8fCAhaGFzKHRoaXMubWF4KSB8fCB0aGlzLnN0ZXAgPD0gKHRoaXMubWF4IC0gdGhpcy5taW4pKUIGCgRfbWluQgYKBF9tYXhCBwoFX3N0ZXAiawoKRW51bU9wdGlvbhIWCgV2YWx1ZRgBIAEoCUIHukgEcgIQARIWCgVsYWJlbBgCIAEoCUIHukgEcgIQARIMCgRpY29uGAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCGRpc2FibGVkGAUgASgIIqUBCgpFbnVtRXh0cmFzEhMKC3BsYWNlaG9sZGVyGAEgASgJEg4KBmZpbHRlchgCIAEoCBIPCgdncm91cGVkGAMgASgIEhIKCnNob3dfaWNvbnMYBCABKAgSGwoTbWF4X3NlbGVjdGVkX2xhYmVscxgFIAEoDRIwCgdvcHRpb25zGAYgAygLMhUuY29tbW9uLnYxLkVudW1PcHRpb25CCLpIBZIBAggBItgDCg1WZWN0b3IzRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESGAoHbGFiZWxfeBgEIAEoCUIHukgEcgIYBRIYCgdsYWJlbF95GAUgASgJQge6SARyAhgFEhgKB2xhYmVsX3oYBiABKAlCB7pIBHICGAUSFQoEdW5pdBgHIAEoCUIHukgEcgIYAzqBArpI/QEa+gEKGG51bWJlcl9leHRyYXNfY29uc2lzdGVudBJDbWluIG11c3QgYmUgbGVzcyB0aGFuIG1heCwgYW5kIHN0ZXAgbXVzdCBub3QgZXhjZWVkIGEgYm91bmRlZCByYW5nZRqYASghaGFzKHRoaXMubWluKSB8fCAhaGFzKHRoaXMubWF4KSB8fCB0aGlzLm1pbiA8IHRoaXMubWF4KSAmJiAoIWhhcyh0aGlzLnN0ZXApIHx8ICFoYXModGhpcy5taW4pIHx8ICFoYXModGhpcy5tYXgpIHx8IHRoaXMuc3RlcCA8PSAodGhpcy5tYXggLSB0aGlzLm1pbikpQgYKBF9taW5CBgoEX21heEIHCgVfc3RlcCJOCgtDb2xvckV4dHJhcxIcCgRzdGVwGAEgASgBQg66SAsSCSkAAAAAAAAAABIhCgdkZWZhdWx0GAIgASgLMhAuY29tbW9uLnYxLkNvbG9yIiQKDEFuY2hvckV4dHJhcxIUCgxvbmx5X21hcmtlcnMYASABKAgiPAoKUG9zZUV4dHJhcxIXCg9hbmNob3JfZWRpdGFibGUYASABKAgSFQoNcG9zZV9lZGl0YWJsZRgCIAEoCCKmCgoVQ3JlYXRlUHJvcGVydHlNZXNzYWdlEhEKCXBhcmVudF9pZBgBIAEoCRIcChRhdXRob3JpbmdfY29udGV4dF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSMgoEdHlwZRgGIAEoDjIXLmNvbW1vbi52MS5Qcm9wZXJ0eVR5cGVCC7pICMgBAYIBAhABEjQKBXNjb3BlGAcgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGVCC7pICMgBAYIBAhABEkIKG21pbmltdW1fcmVxdWlyZWRfcGVybWlzc2lvbhgIIAEoDjIdLmNvbW1vbi52MS5Qcm9wZXJ0eVBlcm1pc3Npb24SMgoPYWxsb3dlZF9vcmlnaW5zGAkgAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luEicKBWdyb3VwGAogASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXASEAoIb3JkZXJpbmcYCyABKAUSEgoKaGlkZV9ncm91cBgMIAEoCBIQCghhZHZhbmNlZBgNIAEoCBIcChRhbGxvd190b19iZV9taXJyb3JlZBgOIAEoCBJACg1zZW1hbnRpY19yb2xlGBAgASgOMh8uY29tbW9uLnYxLlByb3BlcnR5U2VtYW50aWNSb2xlQgi6SAWCAQIQARIWCgNrZXkYESABKAlCCbpIBnIE4PMEARI2CgZvcmlnaW4YFCABKA4yGS5jb21tb24udjEuUHJvcGVydHlPcmlnaW5CC7pICMgBAYIBAhABEhAKCHNjb3BlX2lkGBUgASgJEjAKHW1pcnJvcl9wcm9wZXJ0eV9kZWZpbml0aW9uX2lkGBYgASgJQgm6SAZyBJjxBAESNwoNaW5pdGlhbF92YWx1ZRgXIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQESMAoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXNIABIsCgtlbnVtX2V4dHJhcxgqIAEoCzIVLmNvbW1vbi52MS5FbnVtRXh0cmFzSAASMgoOdmVjdG9yM19leHRyYXMYKyABKAsyGC5jb21tb24udjEuVmVjdG9yM0V4dHJhc0gAEi4KDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhc0gAEiwKC3Bvc2VfZXh0cmFzGC0gASgLMhUuY29tbW9uLnYxLlBvc2VFeHRyYXNIABIwCg1hbmNob3JfZXh0cmFzGC4gASgLMhcuY29tbW9uLnYxLkFuY2hvckV4dHJhc0gAOowCukiIAhpsCiBkZWZpbml0aW9uX2FuZF92YWx1ZV90eXBlc19tYXRjaBIidHlwZSBtdXN0IG1hdGNoIGluaXRpYWxfdmFsdWUudHlwZRokdGhpcy50eXBlID09IHRoaXMuaW5pdGlhbF92YWx1ZS50eXBlGpcBChptaXJyb3JfcmVxdWlyZXNfZGVmaW5pdGlvbhI7bWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgaXMgcmVxdWlyZWQgZm9yIE1JUlJPUiBvcmlnaW4aPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJ0IICgZleHRyYXMihQoKEFByb3BlcnR5VGVtcGxhdGUSFgoDa2V5GAEgASgJQgm6SAZyBODzBAESDAoEbmFtZRgCIAEoCRIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEjIKBHR5cGUYBSABKA4yFy5jb21tb24udjEuUHJvcGVydHlUeXBlQgu6SAjIAQGCAQIQARIxCgVzY29wZRgGIAEoDjIYLmNvbW1vbi52MS5Qcm9wZXJ0eVNjb3BlQgi6SAWCAQIQARJMChttaW5pbXVtX3JlcXVpcmVkX3Blcm1pc3Npb24YByABKA4yHS5jb21tb24udjEuUHJvcGVydHlQZXJtaXNzaW9uQgi6SAWCAQIQARJBCg9hbGxvd2VkX29yaWdpbnMYCCADKA4yGS5jb21tb24udjEuUHJvcGVydHlPcmlnaW5CDbpICpIBByIFggECEAESMQoFZ3JvdXAYCSABKA4yGC5jb21tb24udjEuUHJvcGVydHlHcm91cEIIukgFggECEAESEAoIb3JkZXJpbmcYCiABKAUSEgoKaGlkZV9ncm91cBgLIAEoCBIQCghhZHZhbmNlZBgMIAEoCBIcChRhbGxvd190b19iZV9taXJyb3JlZBgNIAEoCBJACg1zZW1hbnRpY19yb2xlGA4gASgOMh8uY29tbW9uLnYxLlByb3BlcnR5U2VtYW50aWNSb2xlQgi6SAWCAQIQARIvCg1kZWZhdWx0X3ZhbHVlGA8gASgLMhguY29tbW9uLnYxLlByb3BlcnR5VmFsdWUSIQoZcHJlc2VudGF0aW9uX2NvbmZpZ3VyYWJsZRgQIAEoCBIuCg1udW1iZXJfZXh0cmFzGCkgASgLMhcuY29tbW9uLnYxLk51bWJlckV4dHJhcxIqCgtlbnVtX2V4dHJhcxgqIAEoCzIVLmNvbW1vbi52MS5FbnVtRXh0cmFzEjAKDnZlY3RvcjNfZXh0cmFzGCsgASgLMhguY29tbW9uLnYxLlZlY3RvcjNFeHRyYXMSLAoMY29sb3JfZXh0cmFzGCwgASgLMhYuY29tbW9uLnYxLkNvbG9yRXh0cmFzEioKC3Bvc2VfZXh0cmFzGC0gASgLMhUuY29tbW9uLnYxLlBvc2VFeHRyYXMSLgoNYW5jaG9yX2V4dHJhcxguIAEoCzIXLmNvbW1vbi52MS5BbmNob3JFeHRyYXM6+AK6SPQCGpQBChllbnVtX3JlcXVpcmVzX2VudW1fZXh0cmFzEjdlbnVtX2V4dHJhcyBtdXN0IGJlIHNldCB3aGVuIHR5cGUgaXMgRU5VTSBvciBFTlVNX01VTFRJGj4hKHRoaXMudHlwZSA9PSAxMSB8fCB0aGlzLnR5cGUgPT0gMTIpIHx8IGhhcyh0aGlzLmVudW1fZXh0cmFzKRqCAQoaZGVmYXVsdF92YWx1ZV90eXBlX21hdGNoZXMSInR5cGUgbXVzdCBtYXRjaCBkZWZhdWx0X3ZhbHVlLnR5cGUaQCFoYXModGhpcy5kZWZhdWx0X3ZhbHVlKSB8fCB0aGlzLnR5cGUgPT0gdGhpcy5kZWZhdWx0X3ZhbHVlLnR5cGUiVgoNbnVtYmVyX2V4dHJhcwoLZW51bV9leHRyYXMKDnZlY3RvcjNfZXh0cmFzCgxjb2xvcl9leHRyYXMKC3Bvc2VfZXh0cmFzCg1hbmNob3JfZXh0cmFzKqkDCgxQcm9wZXJ0eVR5cGUSHQoZUFJPUEVSVFlfVFlQRV9VTlNQRUNJRklFRBAAEhYKElBST1BFUlRZX1RZUEVfQk9PTBABEhUKEVBST1BFUlRZX1RZUEVfSU5UEAISFwoTUFJPUEVSVFlfVFlQRV9GTE9BVBADEhgKFFBST1BFUlRZX1RZUEVfRE9VQkxFEAQSGAoUUFJPUEVSVFlfVFlQRV9TVFJJTkcQBRIZChVQUk9QRVJUWV9UWVBFX1ZFQ1RPUjMQBhIWChJQUk9QRVJUWV9UWVBFX1BPU0UQBxIYChRQUk9QRVJUWV9UWVBFX0FOQ0hPUhAIEhcKE1BST1BFUlRZX1RZUEVfQ09MT1IQCRIXChNQUk9QRVJUWV9UWVBFX1JPQk9UEAoSFgoSUFJPUEVSVFlfVFlQRV9FTlVNEAsSHAoYUFJPUEVSVFlfVFlQRV9FTlVNX01VTFRJEAwSFgoSUFJPUEVSVFlfVFlQRV9JQ09OEA0SFwoTUFJPUEVSVFlfVFlQRV9BU1NFVBAOEhgKFFBST1BFUlRZX1RZUEVfV09SS0VSEA8qaAoOUHJvcGVydHlPcmlnaW4SHwobUFJPUEVSVFlfT1JJR0lOX1VOU1BFQ0lGSUVEEAASGQoVUFJPUEVSVFlfT1JJR0lOX0ZJWEVEEAESGgoWUFJPUEVSVFlfT1JJR0lOX01JUlJPUhACKtwCCg1Qcm9wZXJ0eUdyb3VwEh4KGlBST1BFUlRZX0dST1VQX1VOU1BFQ0lGSUVEEAASGQoVUFJPUEVSVFlfR1JPVVBfT1VUUFVUEAESHwobUFJPUEVSVFlfR1JPVVBfTk9OX0VESVRBQkxFEAISGgoWUFJPUEVSVFlfR1JPVVBfU1RZTElORxADEhsKF1BST1BFUlRZX0dST1VQX0xPQ0FUSU9OEAQSFwoTUFJPUEVSVFlfR1JPVVBfSUNPThAFEiAKHFBST1BFUlRZX0dST1VQX0NPTkZJR1VSQVRJT04QBhIZChVQUk9QRVJUWV9HUk9VUF9ISURERU4QBxIdChlQUk9QRVJUWV9HUk9VUF9JTlBVVF9TTE9UEAgSHAoYUFJPUEVSVFlfR1JPVVBfQU5JTUFUSU9OEAkSIwofUFJPUEVSVFlfR1JPVVBfVEFSR0VUX0lORElDQVRPUhAKKrYBChJQcm9wZXJ0eVBlcm1pc3Npb24SIwofUFJPUEVSVFlfUEVSTUlTU0lPTl9VTlNQRUNJRklFRBAAEh0KGVBST1BFUlRZX1BFUk1JU1NJT05fQkFTSUMQChIgChxQUk9QRVJUWV9QRVJNSVNTSU9OX0NPU01FVElDEBQSHAoYUFJPUEVSVFlfUEVSTUlTU0lPTl9GVUxMEB4SHAoYUFJPUEVSVFlfUEVSTUlTU0lPTl9OT05FECgq6Q8KFFByb3BlcnR5U2VtYW50aWNSb2xlEiYKIlBST1BFUlRZX1NFTUFOVElDX1JPTEVfVU5TUEVDSUZJRUQQABIxCi1QUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1BBTkVMX0JBQ0tHUk9VTkRfQ09MT1IQARIrCidQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1BBTkVMX1RFWFRfQ09MT1IQAhItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1BBTkVMX0JPUkRFUl9DT0xPUhADEigKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfT1BBQ0lUWRAEEi4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQ09STkVSX1JBRElVUxAFEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUFJJTUFSWV9URVhUX0NPTE9SEBQSLworUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TRUNPTkRBUllfVEVYVF9DT0xPUhAVEiQKIFBST1BFUlRZX1NFTUFOVElDX1JPTEVfVEVYVF9TSVpFEBYSKgomUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9USVRMRV9URVhUX1NJWkUQFxInCiNQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0FDQ0VOVF9DT0xPUhAoEigKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VDQ0VTU19DT0xPUhApEigKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfV0FSTklOR19DT0xPUhAqEiYKIlBST1BFUlRZX1NFTUFOVElDX1JPTEVfRVJST1JfQ09MT1IQKxIpCiVQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0RJU0FCTEVEX0NPTE9SECwSLQopUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9DVVJSRU5UX1RBU0tfQ09MT1IQPBIuCipQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1VQQ09NSU5HX1RBU0tfQ09MT1IQPRIvCitQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NPTVBMRVRFRF9UQVNLX0NPTE9SED4SLQopUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9CTE9DS0VEX1RBU0tfQ09MT1IQPxIuCipQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX09QVElPTkFMX1RBU0tfQ09MT1IQQBIpCiVQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX09QRVJBVE9SX0NPTE9SEFASJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9ST0JPVF9DT0xPUhBREiwKKFBST1BFUlRZX1NFTUFOVElDX1JPTEVfU0hBUkVEX1RBU0tfQ09MT1IQUhIrCidQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1NVUEVSVklTT1JfQ09MT1IQUxIlCiFQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1BBUlRfQ09MT1IQZBIlCiFQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1RPT0xfQ09MT1IQZRImCiJQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0FTU0VUX0NPTE9SEGYSKgomUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9DT05UQUlORVJfQ09MT1IQZxItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1RBUkdFVF9HSE9TVF9DT0xPUhB4EjEKLVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVEFSR0VUX0hJR0hMSUdIVF9DT0xPUhB5EiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFUSF9DT0xPUhB6EiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfWk9ORV9DT0xPUhB7EicKI1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQU5DSE9SX0NPTE9SEHwSLAonUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9ST0JPVF9QQVRIX0NPTE9SEIwBEjIKLVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfU0lMSE9VRVRURV9DT0xPUhCNARIuCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX0lOVEVOVF9DT0xPUhCOARIxCixQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX09DQ1VQQU5DWV9DT0xPUhCPARIpCiRQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1NVQ0NFU1NfU09VTkQQoAESKQokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9XQVJOSU5HX1NPVU5EEKEBEicKIlBST1BFUlRZX1NFTUFOVElDX1JPTEVfRVJST1JfU09VTkQQogESLQooUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9OT1RJRklDQVRJT05fSUNPThCjARIqCiVQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1BVTFNFX0RVUkFUSU9OELQBEikKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfRkFERV9EVVJBVElPThC1ARIrCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0FOSU1BVElPTl9TUEVFRBC2ARIvCipQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0hJR0hMSUdIVF9USElDS05FU1MQtwEqZgoNUHJvcGVydHlTY29wZRIeChpQUk9QRVJUWV9TQ09QRV9VTlNQRUNJRklFRBAAEhkKFVBST1BFUlRZX1NDT1BFX0VOVElUWRABEhoKFlBST1BFUlRZX1NDT1BFX1JVTlRJTUUQAkKlAQoNY29tLmNvbW1vbi52MUINUHJvcGVydHlQcm90b1ABWjdnaXRodWIuY29tL2NvYm90YXIvcHJvdG9jb2wvbWVzc2FnZXMvY29tbW9uL3YxO2NvbW1vbnYxogIDQ1hYqgISTWVzc2FnZXMuQ29tbW9uLlYxygIJQ29tbW9uXFYx4gIVQ29tbW9uXFYxXEdQQk1ldGFkYXRh6gIKQ29tbW9uOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_common_v1_color, file_geometry_v1_anchor, file_geometry_v1_pose, file_geometry_v1_vector3, file_validation_v1_predefined_string_rules]);
24
24
 
25
25
  /**
26
26
  * PropertyDefinition
@@ -820,6 +820,137 @@ export type CreatePropertyMessage = Message<"common.v1.CreatePropertyMessage"> &
820
820
  export const CreatePropertyMessageSchema: GenMessage<CreatePropertyMessage> = /*@__PURE__*/
821
821
  messageDesc(file_common_v1_property, 13);
822
822
 
823
+ /**
824
+ * PropertyTemplate describes a property contract independently of a concrete
825
+ * owning entity and authoring/runtime context. Definition catalogs expose these
826
+ * templates so clients can build typed editors before an instance exists.
827
+ *
828
+ * @generated from message common.v1.PropertyTemplate
829
+ */
830
+ export type PropertyTemplate = Message<"common.v1.PropertyTemplate"> & {
831
+ /**
832
+ * @generated from field: string key = 1;
833
+ */
834
+ key: string;
835
+
836
+ /**
837
+ * @generated from field: string name = 2;
838
+ */
839
+ name: string;
840
+
841
+ /**
842
+ * @generated from field: string icon = 3;
843
+ */
844
+ icon: string;
845
+
846
+ /**
847
+ * @generated from field: string description = 4;
848
+ */
849
+ description: string;
850
+
851
+ /**
852
+ * @generated from field: common.v1.PropertyType type = 5;
853
+ */
854
+ type: PropertyType;
855
+
856
+ /**
857
+ * @generated from field: common.v1.PropertyScope scope = 6;
858
+ */
859
+ scope: PropertyScope;
860
+
861
+ /**
862
+ * @generated from field: common.v1.PropertyPermission minimum_required_permission = 7;
863
+ */
864
+ minimumRequiredPermission: PropertyPermission;
865
+
866
+ /**
867
+ * @generated from field: repeated common.v1.PropertyOrigin allowed_origins = 8;
868
+ */
869
+ allowedOrigins: PropertyOrigin[];
870
+
871
+ /**
872
+ * @generated from field: common.v1.PropertyGroup group = 9;
873
+ */
874
+ group: PropertyGroup;
875
+
876
+ /**
877
+ * @generated from field: int32 ordering = 10;
878
+ */
879
+ ordering: number;
880
+
881
+ /**
882
+ * @generated from field: bool hide_group = 11;
883
+ */
884
+ hideGroup: boolean;
885
+
886
+ /**
887
+ * @generated from field: bool advanced = 12;
888
+ */
889
+ advanced: boolean;
890
+
891
+ /**
892
+ * @generated from field: bool allow_to_be_mirrored = 13;
893
+ */
894
+ allowToBeMirrored: boolean;
895
+
896
+ /**
897
+ * @generated from field: common.v1.PropertySemanticRole semantic_role = 14;
898
+ */
899
+ semanticRole: PropertySemanticRole;
900
+
901
+ /**
902
+ * Default values are omitted when they can only be resolved in a concrete
903
+ * authoring/runtime context.
904
+ *
905
+ * @generated from field: common.v1.PropertyValue default_value = 15;
906
+ */
907
+ defaultValue?: PropertyValue;
908
+
909
+ /**
910
+ * True when PresentationStrategy presets may override this property.
911
+ *
912
+ * @generated from field: bool presentation_configurable = 16;
913
+ */
914
+ presentationConfigurable: boolean;
915
+
916
+ /**
917
+ * @generated from field: common.v1.NumberExtras number_extras = 41;
918
+ */
919
+ numberExtras?: NumberExtras;
920
+
921
+ /**
922
+ * @generated from field: common.v1.EnumExtras enum_extras = 42;
923
+ */
924
+ enumExtras?: EnumExtras;
925
+
926
+ /**
927
+ * @generated from field: common.v1.Vector3Extras vector3_extras = 43;
928
+ */
929
+ vector3Extras?: Vector3Extras;
930
+
931
+ /**
932
+ * @generated from field: common.v1.ColorExtras color_extras = 44;
933
+ */
934
+ colorExtras?: ColorExtras;
935
+
936
+ /**
937
+ * @generated from field: common.v1.PoseExtras pose_extras = 45;
938
+ */
939
+ poseExtras?: PoseExtras;
940
+
941
+ /**
942
+ * @generated from field: common.v1.AnchorExtras anchor_extras = 46;
943
+ */
944
+ anchorExtras?: AnchorExtras;
945
+ };
946
+
947
+ /**
948
+ * Describes the message common.v1.PropertyTemplate.
949
+ * Use `create(PropertyTemplateSchema)` to create a new message.
950
+ */
951
+ export const PropertyTemplateSchema: GenMessage<PropertyTemplate> = /*@__PURE__*/
952
+ messageDesc(file_common_v1_property, 14);
953
+
823
954
  /**
824
955
  * Used to specify the type of a property
825
956
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cobotar/protocol",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "A collection of protobuf messages for the CobotAR-project",
5
5
  "homepage": "https://github.com/cobotar/protocol#readme",
6
6
  "files": [