@cobotar/protocol 0.19.16 → 0.19.18

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.
@@ -0,0 +1,335 @@
1
+ // @generated by protoc-gen-es v2.10.2 with parameter "target=ts,import_extension=ts"
2
+ // @generated from file ar/v1/input_slot.proto (package ar.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
8
+ import { file_validation_v1_predefined_string_rules } from "../../validation/v1/predefined_string_rules_pb.ts";
9
+ import type { Message } from "@bufbuild/protobuf";
10
+
11
+ /**
12
+ * Describes the file ar/v1/input_slot.proto.
13
+ */
14
+ export const file_ar_v1_input_slot: GenFile = /*@__PURE__*/
15
+ fileDesc("ChZhci92MS9pbnB1dF9zbG90LnByb3RvEgVhci52MSL3AwoSQVJJbnB1dFNsb3RNZXNzYWdlEhUKAmlkGAEgASgJQgm6SAZyBPjrMAESHwoJY29uZmlnX2lkGAIgASgJQgy6SAnIAQFyBJDxBAESFwoEbmFtZRgDIAEoCUIJukgGcgSA8QQBEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSEAoIcmVxdWlyZWQYBiABKAgSKwoVZ2VuZXJhdGVkX3Byb3BlcnR5X2lkGAcgASgJQgy6SAnIAQFyBJjxBAESOgoNcmVzb3VyY2VfdHlwZRgIIAEoDjIZLmFyLnYxLkFSUmVzb3VyY2VTbG90VHlwZUIIukgFggECEAESOAoMY29udGV4dF90eXBlGAkgASgOMhguYXIudjEuQVJDb250ZXh0U2xvdFR5cGVCCLpIBYIBAhABOrcBukizARqwAQojYXJfaW5wdXRfc2xvdC5leGFjdGx5X29uZV9zbG90X2tpbmQSUmV4YWN0bHkgb25lIG9mIHJlc291cmNlX3R5cGUgb3IgY29udGV4dF90eXBlIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBub24tVU5TUEVDSUZJRUQaNSh0aGlzLnJlc291cmNlX3R5cGUgIT0gMCkgIT0gKHRoaXMuY29udGV4dF90eXBlICE9IDApIj8KE0FSSW5wdXRTbG90TWVzc2FnZXMSKAoFc2xvdHMYASADKAsyGS5hci52MS5BUklucHV0U2xvdE1lc3NhZ2UirwMKFUFSSW5wdXRTbG90QWRkTWVzc2FnZRIfCgljb25maWdfaWQYASABKAlCDLpICcgBAXIEkPEEARIMCgRuYW1lGAIgASgJEgwKBGljb24YAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSEAoIcmVxdWlyZWQYBSABKAgSOgoNcmVzb3VyY2VfdHlwZRgIIAEoDjIZLmFyLnYxLkFSUmVzb3VyY2VTbG90VHlwZUIIukgFggECEAESOAoMY29udGV4dF90eXBlGAkgASgOMhguYXIudjEuQVJDb250ZXh0U2xvdFR5cGVCCLpIBYIBAhABOrsBuki3ARq0AQonYXJfaW5wdXRfc2xvdF9hZGQuZXhhY3RseV9vbmVfc2xvdF9raW5kElJleGFjdGx5IG9uZSBvZiByZXNvdXJjZV90eXBlIG9yIGNvbnRleHRfdHlwZSBtdXN0IGJlIHNwZWNpZmllZCBhbmQgbm9uLVVOU1BFQ0lGSUVEGjUodGhpcy5yZXNvdXJjZV90eXBlICE9IDApICE9ICh0aGlzLmNvbnRleHRfdHlwZSAhPSAwKSKRAQoYQVJJbnB1dFNsb3RVcGRhdGVNZXNzYWdlEhUKAmlkGAEgASgJQgm6SAZyBPjrMAESFwoEbmFtZRgCIAEoCUIJukgGcgSA8QQBEgwKBGljb24YAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSFQoIcmVxdWlyZWQYBSABKAhIAIgBAUILCglfcmVxdWlyZWQiNAoYQVJJbnB1dFNsb3REZWxldGVNZXNzYWdlEhgKAmlkGAEgASgJQgy6SAnIAQFyBPjrMAEqfQoSQVJSZXNvdXJjZVNsb3RUeXBlEiUKIUFSX1JFU09VUkNFX1NMT1RfVFlQRV9VTlNQRUNJRklFRBAAEh8KG0FSX1JFU09VUkNFX1NMT1RfVFlQRV9ST0JPVBABEh8KG0FSX1JFU09VUkNFX1NMT1RfVFlQRV9BU1NFVBACKr8CChFBUkNvbnRleHRTbG90VHlwZRIkCiBBUl9DT05URVhUX1NMT1RfVFlQRV9VTlNQRUNJRklFRBAAEiAKHEFSX0NPTlRFWFRfU0xPVF9UWVBFX0xJTkVfSUQQARIgChxBUl9DT05URVhUX1NMT1RfVFlQRV9DRUxMX0lEEAISIwofQVJfQ09OVEVYVF9TTE9UX1RZUEVfU1RBVElPTl9JRBADEiIKHkFSX0NPTlRFWFRfU0xPVF9UWVBFX1dPUktFUl9JRBAEEicKI0FSX0NPTlRFWFRfU0xPVF9UWVBFX1BST0NFU1NfUlVOX0lEEAUSKAokQVJfQ09OVEVYVF9TTE9UX1RZUEVfU0VRVUVOQ0VfUlVOX0lEEAYSJAogQVJfQ09OVEVYVF9TTE9UX1RZUEVfVEFTS19SVU5fSUQQB0KKAQoJY29tLmFyLnYxQg5JbnB1dFNsb3RQcm90b1ABWi9naXRodWIuY29tL2NvYm90YXIvcHJvdG9jb2wvbWVzc2FnZXMvYXIvdjE7YXJ2MaICA0FYWKoCDk1lc3NhZ2VzLkFSLlYxygIFQXJcVjHiAhFBclxWMVxHUEJNZXRhZGF0YeoCBkFyOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_validation_v1_predefined_string_rules]);
16
+
17
+ /**
18
+ * ARInputSlotMessage is the authoritative config-owned input slot entity for
19
+ * AR configs.
20
+ *
21
+ * The backend is expected to derive and manage generated_property_id from the
22
+ * slot identity and source specification. Users should not author or edit the
23
+ * generated property directly.
24
+ *
25
+ * @generated from message ar.v1.ARInputSlotMessage
26
+ */
27
+ export type ARInputSlotMessage = Message<"ar.v1.ARInputSlotMessage"> & {
28
+ /**
29
+ * Stable slot identifier used by configs and runtime resolution.
30
+ *
31
+ * @generated from field: string id = 1;
32
+ */
33
+ id: string;
34
+
35
+ /**
36
+ * Owning AR config.
37
+ *
38
+ * @generated from field: string config_id = 2;
39
+ */
40
+ configId: string;
41
+
42
+ /**
43
+ * @generated from field: string name = 3;
44
+ */
45
+ name: string;
46
+
47
+ /**
48
+ * @generated from field: string icon = 4;
49
+ */
50
+ icon: string;
51
+
52
+ /**
53
+ * @generated from field: string description = 5;
54
+ */
55
+ description: string;
56
+
57
+ /**
58
+ * If true, bindings/resolution should fail when this slot cannot be satisfied.
59
+ *
60
+ * @generated from field: bool required = 6;
61
+ */
62
+ required: boolean;
63
+
64
+ /**
65
+ * Server-managed property that should receive the resolved slot value at runtime.
66
+ *
67
+ * @generated from field: string generated_property_id = 7;
68
+ */
69
+ generatedPropertyId: string;
70
+
71
+ /**
72
+ * Selected when this slot expects a concrete resource binding.
73
+ *
74
+ * @generated from field: ar.v1.ARResourceSlotType resource_type = 8;
75
+ */
76
+ resourceType: ARResourceSlotType;
77
+
78
+ /**
79
+ * Selected when this slot expects a runtime context value.
80
+ *
81
+ * @generated from field: ar.v1.ARContextSlotType context_type = 9;
82
+ */
83
+ contextType: ARContextSlotType;
84
+ };
85
+
86
+ /**
87
+ * Describes the message ar.v1.ARInputSlotMessage.
88
+ * Use `create(ARInputSlotMessageSchema)` to create a new message.
89
+ */
90
+ export const ARInputSlotMessageSchema: GenMessage<ARInputSlotMessage> = /*@__PURE__*/
91
+ messageDesc(file_ar_v1_input_slot, 0);
92
+
93
+ /**
94
+ * @generated from message ar.v1.ARInputSlotMessages
95
+ */
96
+ export type ARInputSlotMessages = Message<"ar.v1.ARInputSlotMessages"> & {
97
+ /**
98
+ * Config-owned input slots.
99
+ *
100
+ * @generated from field: repeated ar.v1.ARInputSlotMessage slots = 1;
101
+ */
102
+ slots: ARInputSlotMessage[];
103
+ };
104
+
105
+ /**
106
+ * Describes the message ar.v1.ARInputSlotMessages.
107
+ * Use `create(ARInputSlotMessagesSchema)` to create a new message.
108
+ */
109
+ export const ARInputSlotMessagesSchema: GenMessage<ARInputSlotMessages> = /*@__PURE__*/
110
+ messageDesc(file_ar_v1_input_slot, 1);
111
+
112
+ /**
113
+ * ARInputSlotAddMessage creates a new config-owned input slot.
114
+ *
115
+ * Source specification is treated as identity-shaping for the generated
116
+ * property. If the source kind must change later, prefer delete + recreate.
117
+ *
118
+ * @generated from message ar.v1.ARInputSlotAddMessage
119
+ */
120
+ export type ARInputSlotAddMessage = Message<"ar.v1.ARInputSlotAddMessage"> & {
121
+ /**
122
+ * Owning AR config to attach the new slot to.
123
+ *
124
+ * @generated from field: string config_id = 1;
125
+ */
126
+ configId: string;
127
+
128
+ /**
129
+ * @generated from field: string name = 2;
130
+ */
131
+ name: string;
132
+
133
+ /**
134
+ * @generated from field: string icon = 3;
135
+ */
136
+ icon: string;
137
+
138
+ /**
139
+ * @generated from field: string description = 4;
140
+ */
141
+ description: string;
142
+
143
+ /**
144
+ * If true, future bindings/resolution must satisfy the slot.
145
+ *
146
+ * @generated from field: bool required = 5;
147
+ */
148
+ required: boolean;
149
+
150
+ /**
151
+ * Use for slots that should be bound to a resource instance.
152
+ *
153
+ * @generated from field: ar.v1.ARResourceSlotType resource_type = 8;
154
+ */
155
+ resourceType: ARResourceSlotType;
156
+
157
+ /**
158
+ * Use for slots that should be populated from runtime context.
159
+ *
160
+ * @generated from field: ar.v1.ARContextSlotType context_type = 9;
161
+ */
162
+ contextType: ARContextSlotType;
163
+ };
164
+
165
+ /**
166
+ * Describes the message ar.v1.ARInputSlotAddMessage.
167
+ * Use `create(ARInputSlotAddMessageSchema)` to create a new message.
168
+ */
169
+ export const ARInputSlotAddMessageSchema: GenMessage<ARInputSlotAddMessage> = /*@__PURE__*/
170
+ messageDesc(file_ar_v1_input_slot, 2);
171
+
172
+ /**
173
+ * ARInputSlotUpdateMessage updates the editable metadata of an existing slot.
174
+ *
175
+ * The source specification and generated_property_id are intentionally not
176
+ * updated here. Those should be treated as structural and changed via recreate.
177
+ *
178
+ * @generated from message ar.v1.ARInputSlotUpdateMessage
179
+ */
180
+ export type ARInputSlotUpdateMessage = Message<"ar.v1.ARInputSlotUpdateMessage"> & {
181
+ /**
182
+ * Slot to update.
183
+ *
184
+ * @generated from field: string id = 1;
185
+ */
186
+ id: string;
187
+
188
+ /**
189
+ * @generated from field: string name = 2;
190
+ */
191
+ name: string;
192
+
193
+ /**
194
+ * @generated from field: string icon = 3;
195
+ */
196
+ icon: string;
197
+
198
+ /**
199
+ * @generated from field: string description = 4;
200
+ */
201
+ description: string;
202
+
203
+ /**
204
+ * Optional replacement for the slot's required flag.
205
+ *
206
+ * @generated from field: optional bool required = 5;
207
+ */
208
+ required?: boolean;
209
+ };
210
+
211
+ /**
212
+ * Describes the message ar.v1.ARInputSlotUpdateMessage.
213
+ * Use `create(ARInputSlotUpdateMessageSchema)` to create a new message.
214
+ */
215
+ export const ARInputSlotUpdateMessageSchema: GenMessage<ARInputSlotUpdateMessage> = /*@__PURE__*/
216
+ messageDesc(file_ar_v1_input_slot, 3);
217
+
218
+ /**
219
+ * @generated from message ar.v1.ARInputSlotDeleteMessage
220
+ */
221
+ export type ARInputSlotDeleteMessage = Message<"ar.v1.ARInputSlotDeleteMessage"> & {
222
+ /**
223
+ * Slot to delete.
224
+ *
225
+ * @generated from field: string id = 1;
226
+ */
227
+ id: string;
228
+ };
229
+
230
+ /**
231
+ * Describes the message ar.v1.ARInputSlotDeleteMessage.
232
+ * Use `create(ARInputSlotDeleteMessageSchema)` to create a new message.
233
+ */
234
+ export const ARInputSlotDeleteMessageSchema: GenMessage<ARInputSlotDeleteMessage> = /*@__PURE__*/
235
+ messageDesc(file_ar_v1_input_slot, 4);
236
+
237
+ /**
238
+ * @generated from enum ar.v1.ARResourceSlotType
239
+ */
240
+ export enum ARResourceSlotType {
241
+ /**
242
+ * No resource kind selected. Invalid for stored or add-requested slots.
243
+ *
244
+ * @generated from enum value: AR_RESOURCE_SLOT_TYPE_UNSPECIFIED = 0;
245
+ */
246
+ AR_RESOURCE_SLOT_TYPE_UNSPECIFIED = 0,
247
+
248
+ /**
249
+ * Slot expects a concrete robot instance.
250
+ *
251
+ * @generated from enum value: AR_RESOURCE_SLOT_TYPE_ROBOT = 1;
252
+ */
253
+ AR_RESOURCE_SLOT_TYPE_ROBOT = 1,
254
+
255
+ /**
256
+ * Slot expects a concrete asset instance.
257
+ *
258
+ * @generated from enum value: AR_RESOURCE_SLOT_TYPE_ASSET = 2;
259
+ */
260
+ AR_RESOURCE_SLOT_TYPE_ASSET = 2,
261
+ }
262
+
263
+ /**
264
+ * Describes the enum ar.v1.ARResourceSlotType.
265
+ */
266
+ export const ARResourceSlotTypeSchema: GenEnum<ARResourceSlotType> = /*@__PURE__*/
267
+ enumDesc(file_ar_v1_input_slot, 0);
268
+
269
+ /**
270
+ * @generated from enum ar.v1.ARContextSlotType
271
+ */
272
+ export enum ARContextSlotType {
273
+ /**
274
+ * No runtime context selected. Invalid for stored or add-requested slots.
275
+ *
276
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_UNSPECIFIED = 0;
277
+ */
278
+ AR_CONTEXT_SLOT_TYPE_UNSPECIFIED = 0,
279
+
280
+ /**
281
+ * Slot resolves to the active line id.
282
+ *
283
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_LINE_ID = 1;
284
+ */
285
+ AR_CONTEXT_SLOT_TYPE_LINE_ID = 1,
286
+
287
+ /**
288
+ * Slot resolves to the active cell id.
289
+ *
290
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_CELL_ID = 2;
291
+ */
292
+ AR_CONTEXT_SLOT_TYPE_CELL_ID = 2,
293
+
294
+ /**
295
+ * Slot resolves to the active station id.
296
+ *
297
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_STATION_ID = 3;
298
+ */
299
+ AR_CONTEXT_SLOT_TYPE_STATION_ID = 3,
300
+
301
+ /**
302
+ * Slot resolves to the active worker/operator id.
303
+ *
304
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_WORKER_ID = 4;
305
+ */
306
+ AR_CONTEXT_SLOT_TYPE_WORKER_ID = 4,
307
+
308
+ /**
309
+ * Slot resolves to the active process run id.
310
+ *
311
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_PROCESS_RUN_ID = 5;
312
+ */
313
+ AR_CONTEXT_SLOT_TYPE_PROCESS_RUN_ID = 5,
314
+
315
+ /**
316
+ * Slot resolves to the active sequence run id.
317
+ *
318
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_SEQUENCE_RUN_ID = 6;
319
+ */
320
+ AR_CONTEXT_SLOT_TYPE_SEQUENCE_RUN_ID = 6,
321
+
322
+ /**
323
+ * Slot resolves to the active task run id.
324
+ *
325
+ * @generated from enum value: AR_CONTEXT_SLOT_TYPE_TASK_RUN_ID = 7;
326
+ */
327
+ AR_CONTEXT_SLOT_TYPE_TASK_RUN_ID = 7,
328
+ }
329
+
330
+ /**
331
+ * Describes the enum ar.v1.ARContextSlotType.
332
+ */
333
+ export const ARContextSlotTypeSchema: GenEnum<ARContextSlotType> = /*@__PURE__*/
334
+ enumDesc(file_ar_v1_input_slot, 1);
335
+
@@ -5,6 +5,8 @@
5
5
  import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
6
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
7
7
  import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
8
+ import type { PropertyValueUpdate } from "../../common/v1/property_pb.ts";
9
+ import { file_common_v1_property } from "../../common/v1/property_pb.ts";
8
10
  import { file_validation_v1_predefined_string_rules } from "../../validation/v1/predefined_string_rules_pb.ts";
9
11
  import type { Message } from "@bufbuild/protobuf";
10
12
 
@@ -12,18 +14,22 @@ import type { Message } from "@bufbuild/protobuf";
12
14
  * Describes the file ar/v1/mapping.proto.
13
15
  */
14
16
  export const file_ar_v1_mapping: GenFile = /*@__PURE__*/
15
- fileDesc("ChNhci92MS9tYXBwaW5nLnByb3RvEgVhci52MSJLCgxSb2JvdE1hcHBpbmcSGwoIcm9ib3RfaWQYASABKAlCCbpIBnIEoPEEARIeCgtwcm9wZXJ0eV9pZBgCIAEoCUIJukgGcgSY8QQBIksKDEFzc2V0TWFwcGluZxIbCghhc3NldF9pZBgBIAEoCUIJukgGcgSw8QQBEh4KC3Byb3BlcnR5X2lkGAIgASgJQgm6SAZyBJjxBAEisgIKDk1hcHBpbmdNZXNzYWdlEgoKAmlkGAEgASgJEhcKBG5hbWUYAiABKAlCCbpIBnIEgPEEARIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEiQKDmVudmlyb25tZW50X2lkGAUgASgJQgy6SAnIAQFyBMDxBAESIgoMYXJfY29uZmlnX2lkGAYgASgJQgy6SAnIAQFyBJDxBAESEAoIZGlzYWJsZWQYByABKAgSKgoNcm9ib3RfbWFwcGluZxgIIAMoCzITLmFyLnYxLlJvYm90TWFwcGluZxIqCg1hc3NldF9tYXBwaW5nGAkgAygLMhMuYXIudjEuQXNzZXRNYXBwaW5nEhIKCnN0YW5kYWxvbmUYCiABKAgSEAoIcHJpb3JpdHkYCyABKAUiOgoPTWFwcGluZ01lc3NhZ2VzEicKCG1hcHBpbmdzGAEgAygLMhUuYXIudjEuTWFwcGluZ01lc3NhZ2VCiAEKCWNvbS5hci52MUIMTWFwcGluZ1Byb3RvUAFaL2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9hci92MTthcnYxogIDQVhYqgIOTWVzc2FnZXMuQVIuVjHKAgVBclxWMeICEUFyXFYxXEdQQk1ldGFkYXRh6gIGQXI6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_validation_v1_predefined_string_rules]);
17
+ fileDesc("ChNhci92MS9tYXBwaW5nLnByb3RvEgVhci52MSJLCgxSb2JvdE1hcHBpbmcSGwoIcm9ib3RfaWQYASABKAlCCbpIBnIEoPEEARIeCgtwcm9wZXJ0eV9pZBgCIAEoCUIJukgGcgSY8QQBIksKDEFzc2V0TWFwcGluZxIbCghhc3NldF9pZBgBIAEoCUIJukgGcgSw8QQBEh4KC3Byb3BlcnR5X2lkGAIgASgJQgm6SAZyBJjxBAEi4AEKEUFSUmVzb3VyY2VCaW5kaW5nEhoKB3Nsb3RfaWQYASABKAlCCbpIBnIEEAEYQBIpChFyb2JvdF9pbnN0YW5jZV9pZBgCIAEoCUIJukgGcgSo8QQBSACIAQESKQoRYXNzZXRfaW5zdGFuY2VfaWQYAyABKAlCCbpIBnIEuPEEAUgBiAEBOi26SCoiKAoRcm9ib3RfaW5zdGFuY2VfaWQKEWFzc2V0X2luc3RhbmNlX2lkEAFCFAoSX3JvYm90X2luc3RhbmNlX2lkQhQKEl9hc3NldF9pbnN0YW5jZV9pZCK2AwoWQVJDb25maWdCaW5kaW5nTWVzc2FnZRIVCgJpZBgBIAEoCUIJukgGcgTo6zABEhcKBG5hbWUYAiABKAlCCbpIBnIEgPEEARIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEiIKCnN0YXRpb25faWQYBSABKAlCCbpIBnIE+PEEAUgAiAEBEh8KB2NlbGxfaWQYBiABKAlCCbpIBnIEuPIEAUgBiAEBEiIKDGFyX2NvbmZpZ19pZBgHIAEoCUIMukgJyAEBcgSQ8QQBEhAKCGRpc2FibGVkGAggASgIEhIKCnN0YW5kYWxvbmUYCSABKAgSEAoIcHJpb3JpdHkYCiABKAUSMwoRcmVzb3VyY2VfYmluZGluZ3MYCyADKAsyGC5hci52MS5BUlJlc291cmNlQmluZGluZxI6ChJwcm9wZXJ0eV9vdmVycmlkZXMYDCADKAsyHi5jb21tb24udjEuUHJvcGVydHlWYWx1ZVVwZGF0ZTocukgZIhcKCnN0YXRpb25faWQKB2NlbGxfaWQQAUINCgtfc3RhdGlvbl9pZEIKCghfY2VsbF9pZCJKChdBUkNvbmZpZ0JpbmRpbmdNZXNzYWdlcxIvCghiaW5kaW5ncxgBIAMoCzIdLmFyLnYxLkFSQ29uZmlnQmluZGluZ01lc3NhZ2UisgIKDk1hcHBpbmdNZXNzYWdlEgoKAmlkGAEgASgJEhcKBG5hbWUYAiABKAlCCbpIBnIEgPEEARIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEiQKDmVudmlyb25tZW50X2lkGAUgASgJQgy6SAnIAQFyBMDxBAESIgoMYXJfY29uZmlnX2lkGAYgASgJQgy6SAnIAQFyBJDxBAESEAoIZGlzYWJsZWQYByABKAgSKgoNcm9ib3RfbWFwcGluZxgIIAMoCzITLmFyLnYxLlJvYm90TWFwcGluZxIqCg1hc3NldF9tYXBwaW5nGAkgAygLMhMuYXIudjEuQXNzZXRNYXBwaW5nEhIKCnN0YW5kYWxvbmUYCiABKAgSEAoIcHJpb3JpdHkYCyABKAUiOgoPTWFwcGluZ01lc3NhZ2VzEicKCG1hcHBpbmdzGAEgAygLMhUuYXIudjEuTWFwcGluZ01lc3NhZ2VCiAEKCWNvbS5hci52MUIMTWFwcGluZ1Byb3RvUAFaL2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9hci92MTthcnYxogIDQVhYqgIOTWVzc2FnZXMuQVIuVjHKAgVBclxWMeICEUFyXFYxXEdQQk1ldGFkYXRh6gIGQXI6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_property, file_validation_v1_predefined_string_rules]);
16
18
 
17
19
  /**
18
20
  * @generated from message ar.v1.RobotMapping
19
21
  */
20
22
  export type RobotMapping = Message<"ar.v1.RobotMapping"> & {
21
23
  /**
24
+ * Legacy robot definition identifier.
25
+ *
22
26
  * @generated from field: string robot_id = 1;
23
27
  */
24
28
  robotId: string;
25
29
 
26
30
  /**
31
+ * Legacy target property for the mapped robot.
32
+ *
27
33
  * @generated from field: string property_id = 2;
28
34
  */
29
35
  propertyId: string;
@@ -41,11 +47,15 @@ export const RobotMappingSchema: GenMessage<RobotMapping> = /*@__PURE__*/
41
47
  */
42
48
  export type AssetMapping = Message<"ar.v1.AssetMapping"> & {
43
49
  /**
50
+ * Legacy asset definition identifier.
51
+ *
44
52
  * @generated from field: string asset_id = 1;
45
53
  */
46
54
  assetId: string;
47
55
 
48
56
  /**
57
+ * Legacy target property for the mapped asset.
58
+ *
49
59
  * @generated from field: string property_id = 2;
50
60
  */
51
61
  propertyId: string;
@@ -59,10 +69,172 @@ export const AssetMappingSchema: GenMessage<AssetMapping> = /*@__PURE__*/
59
69
  messageDesc(file_ar_v1_mapping, 1);
60
70
 
61
71
  /**
72
+ * ARResourceBinding binds a config-declared slot to a concrete resource
73
+ * instance owned by the target station or cell.
74
+ *
75
+ * @generated from message ar.v1.ARResourceBinding
76
+ */
77
+ export type ARResourceBinding = Message<"ar.v1.ARResourceBinding"> & {
78
+ /**
79
+ * Config-declared slot to satisfy.
80
+ *
81
+ * @generated from field: string slot_id = 1;
82
+ */
83
+ slotId: string;
84
+
85
+ /**
86
+ * Concrete robot instance selected for the slot.
87
+ *
88
+ * @generated from field: optional string robot_instance_id = 2;
89
+ */
90
+ robotInstanceId?: string;
91
+
92
+ /**
93
+ * Concrete asset instance selected for the slot.
94
+ *
95
+ * @generated from field: optional string asset_instance_id = 3;
96
+ */
97
+ assetInstanceId?: string;
98
+ };
99
+
100
+ /**
101
+ * Describes the message ar.v1.ARResourceBinding.
102
+ * Use `create(ARResourceBindingSchema)` to create a new message.
103
+ */
104
+ export const ARResourceBindingSchema: GenMessage<ARResourceBinding> = /*@__PURE__*/
105
+ messageDesc(file_ar_v1_mapping, 2);
106
+
107
+ /**
108
+ * ARConfigBindingMessage binds a reusable ARConfig to a concrete runtime
109
+ * workspace.
110
+ *
111
+ * Runtime resolution should typically work like this:
112
+ * - load bindings targeted directly at the active station
113
+ * - load bindings targeted at the parent cell
114
+ * - sort by standalone/priority
115
+ * - apply property_overrides after the config template is loaded
116
+ * - populate resource slot properties and runtime context values afterwards
117
+ *
118
+ * This keeps ARConfig authoring reusable while making station/cell-specific
119
+ * resource wiring explicit and safe.
120
+ *
121
+ * @generated from message ar.v1.ARConfigBindingMessage
122
+ */
123
+ export type ARConfigBindingMessage = Message<"ar.v1.ARConfigBindingMessage"> & {
124
+ /**
125
+ * Stable binding identifier.
126
+ *
127
+ * @generated from field: string id = 1;
128
+ */
129
+ id: string;
130
+
131
+ /**
132
+ * @generated from field: string name = 2;
133
+ */
134
+ name: string;
135
+
136
+ /**
137
+ * @generated from field: string icon = 3;
138
+ */
139
+ icon: string;
140
+
141
+ /**
142
+ * @generated from field: string description = 4;
143
+ */
144
+ description: string;
145
+
146
+ /**
147
+ * Station this binding targets directly.
148
+ *
149
+ * @generated from field: optional string station_id = 5;
150
+ */
151
+ stationId?: string;
152
+
153
+ /**
154
+ * Cell this binding targets directly.
155
+ *
156
+ * @generated from field: optional string cell_id = 6;
157
+ */
158
+ cellId?: string;
159
+
160
+ /**
161
+ * Reusable AR config template to bind.
162
+ *
163
+ * @generated from field: string ar_config_id = 7;
164
+ */
165
+ arConfigId: string;
166
+
167
+ /**
168
+ * If true, the binding should be ignored by resolution.
169
+ *
170
+ * @generated from field: bool disabled = 8;
171
+ */
172
+ disabled: boolean;
173
+
174
+ /**
175
+ * If true, only standalone bindings with the highest priority should be shown.
176
+ *
177
+ * @generated from field: bool standalone = 9;
178
+ */
179
+ standalone: boolean;
180
+
181
+ /**
182
+ * Higher values should be resolved before lower values.
183
+ *
184
+ * @generated from field: int32 priority = 10;
185
+ */
186
+ priority: number;
187
+
188
+ /**
189
+ * Concrete resource assignments for config-declared slots.
190
+ *
191
+ * @generated from field: repeated ar.v1.ARResourceBinding resource_bindings = 11;
192
+ */
193
+ resourceBindings: ARResourceBinding[];
194
+
195
+ /**
196
+ * Station/cell-local values applied to config properties before runtime values.
197
+ *
198
+ * @generated from field: repeated common.v1.PropertyValueUpdate property_overrides = 12;
199
+ */
200
+ propertyOverrides: PropertyValueUpdate[];
201
+ };
202
+
203
+ /**
204
+ * Describes the message ar.v1.ARConfigBindingMessage.
205
+ * Use `create(ARConfigBindingMessageSchema)` to create a new message.
206
+ */
207
+ export const ARConfigBindingMessageSchema: GenMessage<ARConfigBindingMessage> = /*@__PURE__*/
208
+ messageDesc(file_ar_v1_mapping, 3);
209
+
210
+ /**
211
+ * @generated from message ar.v1.ARConfigBindingMessages
212
+ */
213
+ export type ARConfigBindingMessages = Message<"ar.v1.ARConfigBindingMessages"> & {
214
+ /**
215
+ * Station/cell bindings for reusable AR configs.
216
+ *
217
+ * @generated from field: repeated ar.v1.ARConfigBindingMessage bindings = 1;
218
+ */
219
+ bindings: ARConfigBindingMessage[];
220
+ };
221
+
222
+ /**
223
+ * Describes the message ar.v1.ARConfigBindingMessages.
224
+ * Use `create(ARConfigBindingMessagesSchema)` to create a new message.
225
+ */
226
+ export const ARConfigBindingMessagesSchema: GenMessage<ARConfigBindingMessages> = /*@__PURE__*/
227
+ messageDesc(file_ar_v1_mapping, 4);
228
+
229
+ /**
230
+ * Deprecated legacy environment-based mapping.
231
+ *
62
232
  * @generated from message ar.v1.MappingMessage
63
233
  */
64
234
  export type MappingMessage = Message<"ar.v1.MappingMessage"> & {
65
235
  /**
236
+ * Legacy mapping identifier.
237
+ *
66
238
  * @generated from field: string id = 1;
67
239
  */
68
240
  id: string;
@@ -83,26 +255,36 @@ export type MappingMessage = Message<"ar.v1.MappingMessage"> & {
83
255
  description: string;
84
256
 
85
257
  /**
258
+ * Legacy environment target.
259
+ *
86
260
  * @generated from field: string environment_id = 5;
87
261
  */
88
262
  environmentId: string;
89
263
 
90
264
  /**
265
+ * AR config template to load for the legacy environment.
266
+ *
91
267
  * @generated from field: string ar_config_id = 6;
92
268
  */
93
269
  arConfigId: string;
94
270
 
95
271
  /**
272
+ * If true, the mapping should be ignored.
273
+ *
96
274
  * @generated from field: bool disabled = 7;
97
275
  */
98
276
  disabled: boolean;
99
277
 
100
278
  /**
279
+ * Legacy robot-to-property assignments.
280
+ *
101
281
  * @generated from field: repeated ar.v1.RobotMapping robot_mapping = 8;
102
282
  */
103
283
  robotMapping: RobotMapping[];
104
284
 
105
285
  /**
286
+ * Legacy asset-to-property assignments.
287
+ *
106
288
  * @generated from field: repeated ar.v1.AssetMapping asset_mapping = 9;
107
289
  */
108
290
  assetMapping: AssetMapping[];
@@ -127,13 +309,15 @@ export type MappingMessage = Message<"ar.v1.MappingMessage"> & {
127
309
  * Use `create(MappingMessageSchema)` to create a new message.
128
310
  */
129
311
  export const MappingMessageSchema: GenMessage<MappingMessage> = /*@__PURE__*/
130
- messageDesc(file_ar_v1_mapping, 2);
312
+ messageDesc(file_ar_v1_mapping, 5);
131
313
 
132
314
  /**
133
315
  * @generated from message ar.v1.MappingMessages
134
316
  */
135
317
  export type MappingMessages = Message<"ar.v1.MappingMessages"> & {
136
318
  /**
319
+ * Legacy environment-based mappings.
320
+ *
137
321
  * @generated from field: repeated ar.v1.MappingMessage mappings = 1;
138
322
  */
139
323
  mappings: MappingMessage[];
@@ -144,5 +328,5 @@ export type MappingMessages = Message<"ar.v1.MappingMessages"> & {
144
328
  * Use `create(MappingMessagesSchema)` to create a new message.
145
329
  */
146
330
  export const MappingMessagesSchema: GenMessage<MappingMessages> = /*@__PURE__*/
147
- messageDesc(file_ar_v1_mapping, 3);
331
+ messageDesc(file_ar_v1_mapping, 6);
148
332
 
@@ -11,7 +11,7 @@ import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
11
11
  * Describes the file validation/v1/predefined_string_rules.proto.
12
12
  */
13
13
  export const file_validation_v1_predefined_string_rules: GenFile = /*@__PURE__*/
14
- fileDesc("Cit2YWxpZGF0aW9uL3YxL3ByZWRlZmluZWRfc3RyaW5nX3J1bGVzLnByb3RvEg12YWxpZGF0aW9uLnYxOrEBCg5uYW1lX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiQTiABKAhCbsJIawppChVzdHJpbmcubmFtZV9jb21wb25lbnQSKk5hbWUgbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgNjQgY2hhcmFjdGVycxokdGhpcy5zaXplKCkgPiAwICYmIHRoaXMuc2l6ZSgpIDw9IDY0Ug1uYW1lQ29tcG9uZW50OroBChJtb2RlbF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYkU4gASgIQnDCSG0KawoZc3RyaW5nLm1vZGVsX2lkX2NvbXBvbmVudBIjdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbW9kZWwgaWQaKSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbW9kZWwtJykpUhBtb2RlbElkQ29tcG9uZW50OswBChZhcl9jb25maWdfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJJOIAEoCEJ7wkh4CnYKHXN0cmluZy5hcl9jb25maWdfaWRfY29tcG9uZW50EiZ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBBUkNvbmZpZyBpZBotKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhcl9jb25maWctJykpUhNhckNvbmZpZ0lkQ29tcG9uZW50OskBChVwcm9wZXJ0eV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYk04gASgIQnnCSHYKdAocc3RyaW5nLnByb3BlcnR5X2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvcGVydHkgaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvcGVydHktJykpUhNwcm9wZXJ0eUlkQ29tcG9uZW50OvMBCh1yb2JvdF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiUTiABKAhCkwHCSI8BCowBCiRzdHJpbmcucm9ib3RfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHJvYm90IGRlZmluaXRpb24gaWQaNCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfZGVmaW5pdGlvbi0nKSlSGnJvYm90RGVmaW5pdGlvbklkQ29tcG9uZW50OukBChtyb2JvdF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYlU4gASgIQo0BwkiJAQqGAQoic3RyaW5nLnJvYm90X2luc3RhbmNlX2lkX2NvbXBvbmVudBIsdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcm9ib3QgaW5zdGFuY2UgaWQaMih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfaW5zdGFuY2UtJykpUhhyb2JvdEluc3RhbmNlSWRDb21wb25lbnQ68wEKHWFzc2V0X2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJZOIAEoCEKTAcJIjwEKjAEKJHN0cmluZy5hc3NldF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIudGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgYXNzZXQgZGVmaW5pdGlvbiBpZBo0KHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9kZWZpbml0aW9uLScpKVIaYXNzZXREZWZpbml0aW9uSWRDb21wb25lbnQ66QEKG2Fzc2V0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiXTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcuYXNzZXRfaW5zdGFuY2VfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBhc3NldCBpbnN0YW5jZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9pbnN0YW5jZS0nKSlSGGFzc2V0SW5zdGFuY2VJZENvbXBvbmVudDrZAQoYZW52aXJvbm1lbnRfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJhOIAEoCEKCAcJIfwp9Ch9zdHJpbmcuZW52aXJvbm1lbnRfaWRfY29tcG9uZW50Eil0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBlbnZpcm9ubWVudCBpZBovKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdlbnZpcm9ubWVudC0nKSlSFmVudmlyb25tZW50SWRDb21wb25lbnQ67gEKHHBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYmU4gASgIQpABwkiMAQqJAQojc3RyaW5nLnBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgZGVmaW5pdGlvbiBpZBozKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwYXJ0X2RlZmluaXRpb24tJykpUhlwYXJ0RGVmaW5pdGlvbklkQ29tcG9uZW50OuQBChpwYXJ0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiaTiABKAhCigHCSIYBCoMBCiFzdHJpbmcucGFydF9pbnN0YW5jZV9pZF9jb21wb25lbnQSK3RoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgaW5zdGFuY2UgaWQaMSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncGFydF9pbnN0YW5jZS0nKSlSF3BhcnRJbnN0YW5jZUlkQ29tcG9uZW50Ou4BChx0b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJtOIAEoCEKQAcJIjAEKiQEKI3N0cmluZy50b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50Ei10aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGRlZmluaXRpb24gaWQaMyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndG9vbF9kZWZpbml0aW9uLScpKVIZdG9vbERlZmluaXRpb25JZENvbXBvbmVudDrPAQoadG9vbF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYnE4gASgIQnbCSHMKcQoYc3RyaW5nLnRvb2xfaWRfY29tcG9uZW50EiJ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGlkGjEodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rvb2xfaW5zdGFuY2UtJykpUhd0b29sSW5zdGFuY2VJZENvbXBvbmVudDq/AQoTbWFya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxidTiABKAhCc8JIcApuChpzdHJpbmcubWFya2VyX2lkX2NvbXBvbmVudBIkdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbWFya2VyIGlkGioodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ21hcmtlci0nKSlSEW1hcmtlcklkQ29tcG9uZW50OsQBChRmaXh0dXJlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxieTiABKAhCdsJIcwpxChtzdHJpbmcuZml4dHVyZV9pZF9jb21wb25lbnQSJXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGZpeHR1cmUgaWQaKyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnZml4dHVyZS0nKSlSEmZpeHR1cmVJZENvbXBvbmVudDrEAQoUc3RhdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYn04gASgIQnbCSHMKcQobc3RyaW5nLnN0YXRpb25faWRfY29tcG9uZW50EiV0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGF0aW9uIGlkGisodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3N0YXRpb24tJykpUhJzdGF0aW9uSWRDb21wb25lbnQ6ugEKEnNraWxsX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxigTiABKAhCcMJIbQprChlzdHJpbmcuc2tpbGxfaWRfY29tcG9uZW50EiN0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBza2lsbCBpZBopKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdza2lsbC0nKSlSEHNraWxsSWRDb21wb25lbnQ62AEKGHByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxihTiABKAhCggHCSH8KfQofc3RyaW5nLnByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIpdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvY2VzcyBydW4gaWQaLyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvY2Vzc19ydW4tJykpUhVwcm9jZXNzUnVuSWRDb21wb25lbnQ63wEKGXNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYok4gASgIQocBwkiDAQqAAQogc3RyaW5nLnNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSKnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHNlcXVlbmNlIHJ1biBpZBowKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdzZXF1ZW5jZV9ydW4tJykpUhZzZXF1ZW5jZVJ1bklkQ29tcG9uZW50OsgBChV0YXNrX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYo04gASgIQnnCSHYKdAocc3RyaW5nLnRhc2tfcnVuX2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBydW4gaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndGFza19ydW4tJykpUhJ0YXNrUnVuSWRDb21wb25lbnQ66QEKG3Byb2Nlc3NfcmVjaXBlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxikTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcucHJvY2Vzc19yZWNpcGVfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBwcm9jZXNzIHJlY2lwZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9jZXNzX3JlY2lwZS0nKSlSGHByb2Nlc3NSZWNpcGVJZENvbXBvbmVudDqCAgogc2VxdWVuY2VfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYpU4gASgIQpwBwkiYAQqVAQonc3RyaW5nLnNlcXVlbmNlX2RlZmluaXRpb25faWRfY29tcG9uZW50EjF0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzZXF1ZW5jZSBkZWZpbml0aW9uIGlkGjcodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3NlcXVlbmNlX2RlZmluaXRpb24tJykpUh1zZXF1ZW5jZURlZmluaXRpb25JZENvbXBvbmVudDruAQocdGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcximTiABKAhCkAHCSIwBCokBCiNzdHJpbmcudGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBItdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBkZWZpbml0aW9uIGlkGjModGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rhc2tfZGVmaW5pdGlvbi0nKSlSGXRhc2tEZWZpbml0aW9uSWRDb21wb25lbnQ6tQEKEWNlbGxfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKdOIAEoCEJtwkhqCmgKGHN0cmluZy5jZWxsX2lkX2NvbXBvbmVudBIidGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgY2VsbCBpZBooKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdjZWxsLScpKVIPY2VsbElkQ29tcG9uZW50OrUBChFsaW5lX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxioTiABKAhCbcJIagpoChhzdHJpbmcubGluZV9pZF9jb21wb25lbnQSInRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGxpbmUgaWQaKCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbGluZS0nKSlSD2xpbmVJZENvbXBvbmVudDqHAgohY29udGFpbmVyX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKlOIAEoCEKfAcJImwEKmAEKKHN0cmluZy5jb250YWluZXJfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSMnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGNvbnRhaW5lciBkZWZpbml0aW9uIGlkGjgodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ2NvbnRhaW5lcl9kZWZpbml0aW9uLScpKVIeY29udGFpbmVyRGVmaW5pdGlvbklkQ29tcG9uZW50OvoBCh9jb250YWluZXJfaW5zdGFuY2VfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLqNBiABKAhClQHCSJEBCo4BCiJzdHJpbmcucm9ib3RfaW5zdGFuY2VfaWRfY29tcG9uZW50EjB0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBjb250YWluZXIgaW5zdGFuY2UgaWQaNih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnY29udGFpbmVyX2luc3RhbmNlLScpKVIcY29udGFpbmVySW5zdGFuY2VJZENvbXBvbmVudDrAAQoTd29ya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi7jQYgASgIQnPCSHAKbgoac3RyaW5nLndvcmtlcl9pZF9jb21wb25lbnQSJHRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHdvcmtlciBpZBoqKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCd3b3JrZXItJykpUhF3b3JrZXJJZENvbXBvbmVudDrFAQoUcHJvZHVjdF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvI0GIAEoCEJ2wkhzCnEKG3N0cmluZy5wcm9kdWN0X2lkX2NvbXBvbmVudBIldGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvZHVjdCBpZBorKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9kdWN0LScpKVIScHJvZHVjdElkQ29tcG9uZW50QrUBChFjb20udmFsaWRhdGlvbi52MUIaUHJlZGVmaW5lZFN0cmluZ1J1bGVzUHJvdG9QAVo/Z2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL3ZhbGlkYXRpb24vdjE7dmFsaWRhdGlvbnYxogIDVlhYygINVmFsaWRhdGlvblxWMeICGVZhbGlkYXRpb25cVjFcR1BCTWV0YWRhdGHqAg5WYWxpZGF0aW9uOjpWMQ", [file_buf_validate_validate]);
14
+ fileDesc("Cit2YWxpZGF0aW9uL3YxL3ByZWRlZmluZWRfc3RyaW5nX3J1bGVzLnByb3RvEg12YWxpZGF0aW9uLnYxOrEBCg5uYW1lX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiQTiABKAhCbsJIawppChVzdHJpbmcubmFtZV9jb21wb25lbnQSKk5hbWUgbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgNjQgY2hhcmFjdGVycxokdGhpcy5zaXplKCkgPiAwICYmIHRoaXMuc2l6ZSgpIDw9IDY0Ug1uYW1lQ29tcG9uZW50OroBChJtb2RlbF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYkU4gASgIQnDCSG0KawoZc3RyaW5nLm1vZGVsX2lkX2NvbXBvbmVudBIjdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbW9kZWwgaWQaKSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbW9kZWwtJykpUhBtb2RlbElkQ29tcG9uZW50OswBChZhcl9jb25maWdfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJJOIAEoCEJ7wkh4CnYKHXN0cmluZy5hcl9jb25maWdfaWRfY29tcG9uZW50EiZ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBBUkNvbmZpZyBpZBotKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhcl9jb25maWctJykpUhNhckNvbmZpZ0lkQ29tcG9uZW50OskBChVwcm9wZXJ0eV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYk04gASgIQnnCSHYKdAocc3RyaW5nLnByb3BlcnR5X2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvcGVydHkgaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvcGVydHktJykpUhNwcm9wZXJ0eUlkQ29tcG9uZW50OvMBCh1yb2JvdF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiUTiABKAhCkwHCSI8BCowBCiRzdHJpbmcucm9ib3RfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHJvYm90IGRlZmluaXRpb24gaWQaNCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfZGVmaW5pdGlvbi0nKSlSGnJvYm90RGVmaW5pdGlvbklkQ29tcG9uZW50OukBChtyb2JvdF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYlU4gASgIQo0BwkiJAQqGAQoic3RyaW5nLnJvYm90X2luc3RhbmNlX2lkX2NvbXBvbmVudBIsdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcm9ib3QgaW5zdGFuY2UgaWQaMih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncm9ib3RfaW5zdGFuY2UtJykpUhhyb2JvdEluc3RhbmNlSWRDb21wb25lbnQ68wEKHWFzc2V0X2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJZOIAEoCEKTAcJIjwEKjAEKJHN0cmluZy5hc3NldF9kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIudGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgYXNzZXQgZGVmaW5pdGlvbiBpZBo0KHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9kZWZpbml0aW9uLScpKVIaYXNzZXREZWZpbml0aW9uSWRDb21wb25lbnQ66QEKG2Fzc2V0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiXTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcuYXNzZXRfaW5zdGFuY2VfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBhc3NldCBpbnN0YW5jZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdhc3NldF9pbnN0YW5jZS0nKSlSGGFzc2V0SW5zdGFuY2VJZENvbXBvbmVudDrZAQoYZW52aXJvbm1lbnRfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJhOIAEoCEKCAcJIfwp9Ch9zdHJpbmcuZW52aXJvbm1lbnRfaWRfY29tcG9uZW50Eil0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBlbnZpcm9ubWVudCBpZBovKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdlbnZpcm9ubWVudC0nKSlSFmVudmlyb25tZW50SWRDb21wb25lbnQ67gEKHHBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYmU4gASgIQpABwkiMAQqJAQojc3RyaW5nLnBhcnRfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSLXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgZGVmaW5pdGlvbiBpZBozKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwYXJ0X2RlZmluaXRpb24tJykpUhlwYXJ0RGVmaW5pdGlvbklkQ29tcG9uZW50OuQBChpwYXJ0X2luc3RhbmNlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxiaTiABKAhCigHCSIYBCoMBCiFzdHJpbmcucGFydF9pbnN0YW5jZV9pZF9jb21wb25lbnQSK3RoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBhcnQgaW5zdGFuY2UgaWQaMSh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncGFydF9pbnN0YW5jZS0nKSlSF3BhcnRJbnN0YW5jZUlkQ29tcG9uZW50Ou4BChx0b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGJtOIAEoCEKQAcJIjAEKiQEKI3N0cmluZy50b29sX2RlZmluaXRpb25faWRfY29tcG9uZW50Ei10aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGRlZmluaXRpb24gaWQaMyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndG9vbF9kZWZpbml0aW9uLScpKVIZdG9vbERlZmluaXRpb25JZENvbXBvbmVudDrPAQoadG9vbF9pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYnE4gASgIQnbCSHMKcQoYc3RyaW5nLnRvb2xfaWRfY29tcG9uZW50EiJ0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSB0b29sIGlkGjEodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rvb2xfaW5zdGFuY2UtJykpUhd0b29sSW5zdGFuY2VJZENvbXBvbmVudDq/AQoTbWFya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxidTiABKAhCc8JIcApuChpzdHJpbmcubWFya2VyX2lkX2NvbXBvbmVudBIkdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgbWFya2VyIGlkGioodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ21hcmtlci0nKSlSEW1hcmtlcklkQ29tcG9uZW50OsQBChRmaXh0dXJlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxieTiABKAhCdsJIcwpxChtzdHJpbmcuZml4dHVyZV9pZF9jb21wb25lbnQSJXRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGZpeHR1cmUgaWQaKyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnZml4dHVyZS0nKSlSEmZpeHR1cmVJZENvbXBvbmVudDrEAQoUc3RhdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYn04gASgIQnbCSHMKcQobc3RyaW5nLnN0YXRpb25faWRfY29tcG9uZW50EiV0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGF0aW9uIGlkGisodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3N0YXRpb24tJykpUhJzdGF0aW9uSWRDb21wb25lbnQ6ugEKEnNraWxsX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxigTiABKAhCcMJIbQprChlzdHJpbmcuc2tpbGxfaWRfY29tcG9uZW50EiN0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBza2lsbCBpZBopKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdza2lsbC0nKSlSEHNraWxsSWRDb21wb25lbnQ62AEKGHByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxihTiABKAhCggHCSH8KfQofc3RyaW5nLnByb2Nlc3NfcnVuX2lkX2NvbXBvbmVudBIpdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvY2VzcyBydW4gaWQaLyh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgncHJvY2Vzc19ydW4tJykpUhVwcm9jZXNzUnVuSWRDb21wb25lbnQ63wEKGXNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYok4gASgIQocBwkiDAQqAAQogc3RyaW5nLnNlcXVlbmNlX3J1bl9pZF9jb21wb25lbnQSKnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHNlcXVlbmNlIHJ1biBpZBowKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdzZXF1ZW5jZV9ydW4tJykpUhZzZXF1ZW5jZVJ1bklkQ29tcG9uZW50OsgBChV0YXNrX3J1bl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYo04gASgIQnnCSHYKdAocc3RyaW5nLnRhc2tfcnVuX2lkX2NvbXBvbmVudBImdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBydW4gaWQaLCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgndGFza19ydW4tJykpUhJ0YXNrUnVuSWRDb21wb25lbnQ66QEKG3Byb2Nlc3NfcmVjaXBlX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxikTiABKAhCjQHCSIkBCoYBCiJzdHJpbmcucHJvY2Vzc19yZWNpcGVfaWRfY29tcG9uZW50Eix0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBwcm9jZXNzIHJlY2lwZSBpZBoyKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9jZXNzX3JlY2lwZS0nKSlSGHByb2Nlc3NSZWNpcGVJZENvbXBvbmVudDqCAgogc2VxdWVuY2VfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYpU4gASgIQpwBwkiYAQqVAQonc3RyaW5nLnNlcXVlbmNlX2RlZmluaXRpb25faWRfY29tcG9uZW50EjF0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzZXF1ZW5jZSBkZWZpbml0aW9uIGlkGjcodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3NlcXVlbmNlX2RlZmluaXRpb24tJykpUh1zZXF1ZW5jZURlZmluaXRpb25JZENvbXBvbmVudDruAQocdGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcximTiABKAhCkAHCSIwBCokBCiNzdHJpbmcudGFza19kZWZpbml0aW9uX2lkX2NvbXBvbmVudBItdGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgdGFzayBkZWZpbml0aW9uIGlkGjModGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ3Rhc2tfZGVmaW5pdGlvbi0nKSlSGXRhc2tEZWZpbml0aW9uSWRDb21wb25lbnQ6tQEKEWNlbGxfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKdOIAEoCEJtwkhqCmgKGHN0cmluZy5jZWxsX2lkX2NvbXBvbmVudBIidGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgY2VsbCBpZBooKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdjZWxsLScpKVIPY2VsbElkQ29tcG9uZW50OrUBChFsaW5lX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxioTiABKAhCbcJIagpoChhzdHJpbmcubGluZV9pZF9jb21wb25lbnQSInRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGxpbmUgaWQaKCh0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnbGluZS0nKSlSD2xpbmVJZENvbXBvbmVudDqHAgohY29udGFpbmVyX2RlZmluaXRpb25faWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGKlOIAEoCEKfAcJImwEKmAEKKHN0cmluZy5jb250YWluZXJfZGVmaW5pdGlvbl9pZF9jb21wb25lbnQSMnRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIGNvbnRhaW5lciBkZWZpbml0aW9uIGlkGjgodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ2NvbnRhaW5lcl9kZWZpbml0aW9uLScpKVIeY29udGFpbmVyRGVmaW5pdGlvbklkQ29tcG9uZW50OvoBCh9jb250YWluZXJfaW5zdGFuY2VfaWRfY29tcG9uZW50EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLqNBiABKAhClQHCSJEBCo4BCiJzdHJpbmcucm9ib3RfaW5zdGFuY2VfaWRfY29tcG9uZW50EjB0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBjb250YWluZXIgaW5zdGFuY2UgaWQaNih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnY29udGFpbmVyX2luc3RhbmNlLScpKVIcY29udGFpbmVySW5zdGFuY2VJZENvbXBvbmVudDrAAQoTd29ya2VyX2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi7jQYgASgIQnPCSHAKbgoac3RyaW5nLndvcmtlcl9pZF9jb21wb25lbnQSJHRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHdvcmtlciBpZBoqKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCd3b3JrZXItJykpUhF3b3JrZXJJZENvbXBvbmVudDrFAQoUcHJvZHVjdF9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvI0GIAEoCEJ2wkhzCnEKG3N0cmluZy5wcm9kdWN0X2lkX2NvbXBvbmVudBIldGhpcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgcHJvZHVjdCBpZBorKHRoaXMgPT0gJycgfHwgdGhpcy5zdGFydHNXaXRoKCdwcm9kdWN0LScpKVIScHJvZHVjdElkQ29tcG9uZW50OvgBCh5hcl9jb25maWdfYmluZGluZ19pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvY0GIAEoCEKWAcJIkgEKjwEKJXN0cmluZy5hcl9jb25maWdfYmluZGluZ19pZF9jb21wb25lbnQSL3RoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIEFSIGNvbmZpZyBiaW5kaW5nIGlkGjUodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ2FyX2NvbmZpZ19iaW5kaW5nLScpKVIaYXJDb25maWdCaW5kaW5nSWRDb21wb25lbnQ6/QEKH2FyX2NvbmZpZ19pbnN0YW5jZV9pZF9jb21wb25lbnQSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvo0GIAEoCEKZAcJIlQEKkgEKJnN0cmluZy5hcl9jb25maWdfaW5zdGFuY2VfaWRfY29tcG9uZW50EjB0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBBUiBjb25maWcgaW5zdGFuY2UgaWQaNih0aGlzID09ICcnIHx8IHRoaXMuc3RhcnRzV2l0aCgnYXJfY29uZmlnX2luc3RhbmNlLScpKVIbYXJDb25maWdJbnN0YW5jZUlkQ29tcG9uZW50OuQBChphcl9pbnB1dF9zbG90X2lkX2NvbXBvbmVudBIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi/jQYgASgIQooBwkiGAQqDAQohc3RyaW5nLmFyX2lucHV0X3Nsb3RfaWRfY29tcG9uZW50Eit0aGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgYSBBUiBpbnB1dCBzbG90IGlkGjEodGhpcyA9PSAnJyB8fCB0aGlzLnN0YXJ0c1dpdGgoJ2FyX2lucHV0X3Nsb3QtJykpUhZhcklucHV0U2xvdElkQ29tcG9uZW50QrUBChFjb20udmFsaWRhdGlvbi52MUIaUHJlZGVmaW5lZFN0cmluZ1J1bGVzUHJvdG9QAVo/Z2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL3ZhbGlkYXRpb24vdjE7dmFsaWRhdGlvbnYxogIDVlhYygINVmFsaWRhdGlvblxWMeICGVZhbGlkYXRpb25cVjFcR1BCTWV0YWRhdGHqAg5WYWxpZGF0aW9uOjpWMQ", [file_buf_validate_validate]);
15
15
 
16
16
  /**
17
17
  * @generated from extension: optional bool name_component = 10000;
@@ -187,3 +187,21 @@ export const worker_id_component: GenExtension<StringRules, boolean> = /*@__PURE
187
187
  export const product_id_component: GenExtension<StringRules, boolean> = /*@__PURE__*/
188
188
  extDesc(file_validation_v1_predefined_string_rules, 28);
189
189
 
190
+ /**
191
+ * @generated from extension: optional bool ar_config_binding_id_component = 100029;
192
+ */
193
+ export const ar_config_binding_id_component: GenExtension<StringRules, boolean> = /*@__PURE__*/
194
+ extDesc(file_validation_v1_predefined_string_rules, 29);
195
+
196
+ /**
197
+ * @generated from extension: optional bool ar_config_instance_id_component = 100030;
198
+ */
199
+ export const ar_config_instance_id_component: GenExtension<StringRules, boolean> = /*@__PURE__*/
200
+ extDesc(file_validation_v1_predefined_string_rules, 30);
201
+
202
+ /**
203
+ * @generated from extension: optional bool ar_input_slot_id_component = 100031;
204
+ */
205
+ export const ar_input_slot_id_component: GenExtension<StringRules, boolean> = /*@__PURE__*/
206
+ extDesc(file_validation_v1_predefined_string_rules, 31);
207
+