@altnovatrail/contracts 0.8.2 → 0.8.4

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.
@@ -11,6 +11,7 @@
11
11
 
12
12
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
13
13
  import type { Message } from "@bufbuild/protobuf";
14
+ import type { LessonRunRef, OpenAttemptRef } from "./learning_pb.js";
14
15
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
16
  import type { OwnKey } from "./attempt_pb.js";
16
17
  import type { Outcome } from "./cause_pb.js";
@@ -147,9 +148,9 @@ export declare type Account = Message<"novatrail.api.v1.Account"> & {
147
148
  export declare const AccountSchema: GenMessage<Account>;
148
149
 
149
150
  /**
150
- * A profile, a learner in the account (concepts 13), as `api` keeps it. Its date of the age given
151
- * and its last activity stay in `api`; its interests come only once the module format gives a
152
- * task a look by interests (concepts 13; R51).
151
+ * A profile, a learner in the account (concepts 13), as `api` keeps it, with its open attempt and
152
+ * its open lesson runs. Its date of the age given and its last activity stay in `api`; its
153
+ * interests come only once the module format gives a task a look by interests (concepts 13; R51).
153
154
  *
154
155
  * @generated from message novatrail.api.v1.Profile
155
156
  */
@@ -235,6 +236,20 @@ export declare type Profile = Message<"novatrail.api.v1.Profile"> & {
235
236
  * @generated from field: bool ask_before_showing = 11;
236
237
  */
237
238
  askBeforeShowing: boolean;
239
+
240
+ /**
241
+ * The profile's open attempt: absent when it has none. A profile has one open attempt at most.
242
+ *
243
+ * @generated from field: novatrail.api.v1.OpenAttemptRef open_attempt = 12;
244
+ */
245
+ openAttempt?: OpenAttemptRef | undefined;
246
+
247
+ /**
248
+ * The profile's open lesson runs, one at most for each lesson.
249
+ *
250
+ * @generated from field: repeated novatrail.api.v1.LessonRunRef open_lesson_runs = 13;
251
+ */
252
+ openLessonRuns: LessonRunRef[];
238
253
  };
239
254
 
240
255
  /**
@@ -1322,11 +1337,12 @@ export declare const OwnKeyCheckSchema: GenEnum<OwnKeyCheck>;
1322
1337
  */
1323
1338
  export declare const AccountService: GenService<{
1324
1339
  /**
1325
- * The account and its profiles, each with its fields, and the consents that have no profile yet.
1326
- * `app` reads it when it starts and after signing in, and erases the databases of the profiles
1327
- * that the list does not hold: only by an answer that came, and for the account the registry of
1328
- * the device names; a failure of the network erases nothing. A user with no account gets
1329
- * `CAUSE_NO_ACCESS`, and `app` asks for an invite code.
1340
+ * The account and its profiles, each with its fields, its open attempt and its open lesson runs,
1341
+ * and the consents that have no profile yet. `app` reads it when it starts and after signing in,
1342
+ * and erases the databases of the profiles that the list does not hold: only by an answer that
1343
+ * came, and for the account the registry of the device names; a failure of the network erases
1344
+ * nothing. By the open attempt and runs a device that keeps no state of them finds them. A user
1345
+ * with no account gets `CAUSE_NO_ACCESS`, and `app` asks for an invite code.
1330
1346
  *
1331
1347
  * @generated from rpc novatrail.api.v1.AccountService.GetAccount
1332
1348
  */
@@ -13,12 +13,13 @@ import { enumDesc, fileDesc, messageDesc, serviceDesc, tsEnum } from "@bufbuild/
13
13
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
14
14
  import { file_novatrail_api_v1_attempt } from "./attempt_pb.js";
15
15
  import { file_novatrail_api_v1_cause } from "./cause_pb.js";
16
+ import { file_novatrail_api_v1_learning } from "./learning_pb.js";
16
17
 
17
18
  /**
18
19
  * Describes the file novatrail/api/v1/account.proto.
19
20
  */
20
21
  export const file_novatrail_api_v1_account = /*@__PURE__*/
21
- fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2FjY291bnQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEiEwoRR2V0QWNjb3VudFJlcXVlc3QiQAoSR2V0QWNjb3VudFJlc3BvbnNlEioKB2FjY291bnQYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkFjY291bnQiQQoUQ3JlYXRlQWNjb3VudFJlcXVlc3QSEwoLaW52aXRlX2NvZGUYASABKAkSFAoMYWR1bHRfc3RhdGVkGAIgASgIIkMKFUNyZWF0ZUFjY291bnRSZXNwb25zZRIqCgdhY2NvdW50GAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5BY2NvdW50IpMBCgdBY2NvdW50EhIKCmFjY291bnRfaWQYASABKAkSDwoHcGluX3NldBgCIAEoCBIrCghwcm9maWxlcxgDIAMoCzIZLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZRI2Cg5jaGlsZF9jb25zZW50cxgEIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuQ2hpbGRDb25zZW50ItcCCgdQcm9maWxlEhIKCnByb2ZpbGVfaWQYASABKAkSDQoFb3duZXIYAiABKAgSEQoJcHNldWRvbnltGAMgASgJEg4KBmF2YXRhchgEIAEoCRIUCgxhZ2VfY2F0ZWdvcnkYBSABKAkSDwoHY291bnRyeRgGIAEoCRI/ChJwcmVzZW50YXRpb25fc3R5bGUYByABKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLlByZXNlbnRhdGlvblN0eWxlEiwKDGRlZmF1bHRfbW9kZRgIIAEoDjIWLm5vdmF0cmFpbC5hcGkudjEuTW9kZRIfChJpbnRlcmZhY2VfbGFuZ3VhZ2UYCSABKAlIAIgBARISCgVncmFkZRgKIAEoBUgBiAEBEhoKEmFza19iZWZvcmVfc2hvd2luZxgLIAEoCEIVChNfaW50ZXJmYWNlX2xhbmd1YWdlQggKBl9ncmFkZSI/ChFQcmVzZW50YXRpb25TdHlsZRIqCgd2b2ljaW5nGAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nIloKB1ZvaWNpbmcSFAoHZW5hYmxlZBgBIAEoCEgAiAEBEi0KBXNwZWVkGAIgASgOMh4ubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nU3BlZWRCCgoIX2VuYWJsZWQivwIKD1Byb2ZpbGVTZXR0aW5ncxIWCglwc2V1ZG9ueW0YASABKAlIAIgBARITCgZhdmF0YXIYAiABKAlIAYgBARIqCgd2b2ljaW5nGAMgASgLMhkubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nEiwKDGRlZmF1bHRfbW9kZRgEIAEoDjIWLm5vdmF0cmFpbC5hcGkudjEuTW9kZRIfChJpbnRlcmZhY2VfbGFuZ3VhZ2UYBSABKAlIAogBARISCgVncmFkZRgGIAEoBUgDiAEBEh8KEmFza19iZWZvcmVfc2hvd2luZxgHIAEoCEgEiAEBQgwKCl9wc2V1ZG9ueW1CCQoHX2F2YXRhckIVChNfaW50ZXJmYWNlX2xhbmd1YWdlQggKBl9ncmFkZUIVChNfYXNrX2JlZm9yZV9zaG93aW5nIngKDENoaWxkQ29uc2VudBISCgpjb25zZW50X2lkGAEgASgJEhQKDGFnZV9jYXRlZ29yeRgCIAEoCRIPCgdjb3VudHJ5GAMgASgJEi0KBXN0YXRlGAQgASgOMh4ubm92YXRyYWlsLmFwaS52MS5Db25zZW50U3RhdGUiNQoNU2V0UGluUmVxdWVzdBILCgNwaW4YASABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJIhAKDlNldFBpblJlc3BvbnNlIjgKEFZlcmlmeVBpblJlcXVlc3QSCwoDcGluGAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCSI+ChFWZXJpZnlQaW5SZXNwb25zZRIpCgVjaGVjaxgBIAEoCzIaLm5vdmF0cmFpbC5hcGkudjEuUGluQ2hlY2siSQoQQ2hhbmdlUGluUmVxdWVzdBILCgNwaW4YASABKAkSDwoHbmV3X3BpbhgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkiPgoRQ2hhbmdlUGluUmVzcG9uc2USKQoFY2hlY2sYASABKAsyGi5ub3ZhdHJhaWwuYXBpLnYxLlBpbkNoZWNrImQKCFBpbkNoZWNrEg8KB21hdGNoZXMYASABKAgSFQoNYXR0ZW1wdHNfbGVmdBgCIAEoBRIwCgxsb2NrZWRfdW50aWwYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjsKD1Jlc2V0UGluUmVxdWVzdBIPCgduZXdfcGluGAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCSISChBSZXNldFBpblJlc3BvbnNlImEKGUNyZWF0ZU93bmVyUHJvZmlsZVJlcXVlc3QSDwoHY291bnRyeRgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkgKGkNyZWF0ZU93bmVyUHJvZmlsZVJlc3BvbnNlEioKB3Byb2ZpbGUYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLlByb2ZpbGUibAoaUmVxdWVzdENoaWxkQ29uc2VudFJlcXVlc3QSFwoPaWRlbXBvdGVuY3lfa2V5GAEgASgJEhYKCWFnZV95ZWFycxgCIAEoBUgAiAEBEg8KB2NvdW50cnkYAyABKAlCDAoKX2FnZV95ZWFycyJOChtSZXF1ZXN0Q2hpbGRDb25zZW50UmVzcG9uc2USLwoHY29uc2VudBgBIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuQ2hpbGRDb25zZW50ImQKGUNyZWF0ZUNoaWxkUHJvZmlsZVJlcXVlc3QSEgoKY29uc2VudF9pZBgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkgKGkNyZWF0ZUNoaWxkUHJvZmlsZVJlc3BvbnNlEioKB3Byb2ZpbGUYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLlByb2ZpbGUiXwoUVXBkYXRlUHJvZmlsZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkMKFVVwZGF0ZVByb2ZpbGVSZXNwb25zZRIqCgdwcm9maWxlGAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5Qcm9maWxlIlMKEVNldFZvaWNpbmdSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSKgoHdm9pY2luZxgCIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuVm9pY2luZyJAChJTZXRWb2ljaW5nUmVzcG9uc2USKgoHcHJvZmlsZRgBIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZSIqChREZWxldGVQcm9maWxlUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJIhcKFURlbGV0ZVByb2ZpbGVSZXNwb25zZSIWChREZWxldGVBY2NvdW50UmVxdWVzdCIXChVEZWxldGVBY2NvdW50UmVzcG9uc2UiKgoURXhwb3J0UHJvZmlsZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCSJEChVFeHBvcnRQcm9maWxlUmVzcG9uc2USDAoEcGFydBgBIAEoDBIdChVleHBvcnRfZm9ybWF0X3ZlcnNpb24YAiABKAkiFgoURXhwb3J0QWNjb3VudFJlcXVlc3QiRAoVRXhwb3J0QWNjb3VudFJlc3BvbnNlEgwKBHBhcnQYASABKAwSHQoVZXhwb3J0X2Zvcm1hdF92ZXJzaW9uGAIgASgJIlMKEkNoZWNrT3duS2V5UmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEikKB293bl9rZXkYAiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleSJvChNDaGVja093bktleVJlc3BvbnNlEiwKBWNoZWNrGAEgASgOMh0ubm92YXRyYWlsLmFwaS52MS5Pd25LZXlDaGVjaxIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lIjAKGkxpc3RPd25LZXlQcm92aWRlcnNSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkiUgobTGlzdE93bktleVByb3ZpZGVyc1Jlc3BvbnNlEjMKCXByb3ZpZGVycxgBIAMoCzIgLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5UHJvdmlkZXIiMAoOT3duS2V5UHJvdmlkZXISEAoIcHJvdmlkZXIYASABKAkSDAoEbmFtZRgCIAEoCSpfCgxWb2ljaW5nU3BlZWQSHQoZVk9JQ0lOR19TUEVFRF9VTlNQRUNJRklFRBAAEhgKFFZPSUNJTkdfU1BFRURfTk9STUFMEAESFgoSVk9JQ0lOR19TUEVFRF9TTE9XEAIqPgoETW9kZRIUChBNT0RFX1VOU1BFQ0lGSUVEEAASEQoNTU9ERV9CWV9TVEVQUxABEg0KCU1PREVfU0VMRhACKmUKDENvbnNlbnRTdGF0ZRIdChlDT05TRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASGQoVQ09OU0VOVF9TVEFURV9XQUlUSU5HEAESGwoXQ09OU0VOVF9TVEFURV9DT05GSVJNRUQQAiqnAQoLT3duS2V5Q2hlY2sSHQoZT1dOX0tFWV9DSEVDS19VTlNQRUNJRklFRBAAEhoKFk9XTl9LRVlfQ0hFQ0tfQUNDRVBURUQQARIZChVPV05fS0VZX0NIRUNLX0lOVkFMSUQQAhIfChtPV05fS0VZX0NIRUNLX05PX1BFUk1JU1NJT04QAxIhCh1PV05fS0VZX0NIRUNLX1BST1ZJREVSX0NMT1NFRBAEMoANCg5BY2NvdW50U2VydmljZRJXCgpHZXRBY2NvdW50EiMubm92YXRyYWlsLmFwaS52MS5HZXRBY2NvdW50UmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuR2V0QWNjb3VudFJlc3BvbnNlEmAKDUNyZWF0ZUFjY291bnQSJi5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0Gicubm92YXRyYWlsLmFwaS52MS5DcmVhdGVBY2NvdW50UmVzcG9uc2USSwoGU2V0UGluEh8ubm92YXRyYWlsLmFwaS52MS5TZXRQaW5SZXF1ZXN0GiAubm92YXRyYWlsLmFwaS52MS5TZXRQaW5SZXNwb25zZRJUCglWZXJpZnlQaW4SIi5ub3ZhdHJhaWwuYXBpLnYxLlZlcmlmeVBpblJlcXVlc3QaIy5ub3ZhdHJhaWwuYXBpLnYxLlZlcmlmeVBpblJlc3BvbnNlElQKCUNoYW5nZVBpbhIiLm5vdmF0cmFpbC5hcGkudjEuQ2hhbmdlUGluUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQ2hhbmdlUGluUmVzcG9uc2USUQoIUmVzZXRQaW4SIS5ub3ZhdHJhaWwuYXBpLnYxLlJlc2V0UGluUmVxdWVzdBoiLm5vdmF0cmFpbC5hcGkudjEuUmVzZXRQaW5SZXNwb25zZRJvChJDcmVhdGVPd25lclByb2ZpbGUSKy5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZU93bmVyUHJvZmlsZVJlcXVlc3QaLC5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZU93bmVyUHJvZmlsZVJlc3BvbnNlEnIKE1JlcXVlc3RDaGlsZENvbnNlbnQSLC5ub3ZhdHJhaWwuYXBpLnYxLlJlcXVlc3RDaGlsZENvbnNlbnRSZXF1ZXN0Gi0ubm92YXRyYWlsLmFwaS52MS5SZXF1ZXN0Q2hpbGRDb25zZW50UmVzcG9uc2USbwoSQ3JlYXRlQ2hpbGRQcm9maWxlEisubm92YXRyYWlsLmFwaS52MS5DcmVhdGVDaGlsZFByb2ZpbGVSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5DcmVhdGVDaGlsZFByb2ZpbGVSZXNwb25zZRJgCg1VcGRhdGVQcm9maWxlEiYubm92YXRyYWlsLmFwaS52MS5VcGRhdGVQcm9maWxlUmVxdWVzdBonLm5vdmF0cmFpbC5hcGkudjEuVXBkYXRlUHJvZmlsZVJlc3BvbnNlElcKClNldFZvaWNpbmcSIy5ub3ZhdHJhaWwuYXBpLnYxLlNldFZvaWNpbmdSZXF1ZXN0GiQubm92YXRyYWlsLmFwaS52MS5TZXRWb2ljaW5nUmVzcG9uc2USYAoNRGVsZXRlUHJvZmlsZRImLm5vdmF0cmFpbC5hcGkudjEuRGVsZXRlUHJvZmlsZVJlcXVlc3QaJy5ub3ZhdHJhaWwuYXBpLnYxLkRlbGV0ZVByb2ZpbGVSZXNwb25zZRJgCg1EZWxldGVBY2NvdW50EiYubm92YXRyYWlsLmFwaS52MS5EZWxldGVBY2NvdW50UmVxdWVzdBonLm5vdmF0cmFpbC5hcGkudjEuRGVsZXRlQWNjb3VudFJlc3BvbnNlEmAKDUV4cG9ydFByb2ZpbGUSJi5ub3ZhdHJhaWwuYXBpLnYxLkV4cG9ydFByb2ZpbGVSZXF1ZXN0Gicubm92YXRyYWlsLmFwaS52MS5FeHBvcnRQcm9maWxlUmVzcG9uc2USYAoNRXhwb3J0QWNjb3VudBImLm5vdmF0cmFpbC5hcGkudjEuRXhwb3J0QWNjb3VudFJlcXVlc3QaJy5ub3ZhdHJhaWwuYXBpLnYxLkV4cG9ydEFjY291bnRSZXNwb25zZRJaCgtDaGVja093bktleRIkLm5vdmF0cmFpbC5hcGkudjEuQ2hlY2tPd25LZXlSZXF1ZXN0GiUubm92YXRyYWlsLmFwaS52MS5DaGVja093bktleVJlc3BvbnNlEnIKE0xpc3RPd25LZXlQcm92aWRlcnMSLC5ub3ZhdHJhaWwuYXBpLnYxLkxpc3RPd25LZXlQcm92aWRlcnNSZXF1ZXN0Gi0ubm92YXRyYWlsLmFwaS52MS5MaXN0T3duS2V5UHJvdmlkZXJzUmVzcG9uc2VCxQEKFGNvbS5ub3ZhdHJhaWwuYXBpLnYxQgxBY2NvdW50UHJvdG9QAVo9Z2l0aHViLmNvbS9hbHRub3ZhdHJhaWwvc3BlYy9jb250cmFjdHMvbm92YXRyYWlsL2FwaS92MTthcGl2MaICA05BWKoCEE5vdmF0cmFpbC5BcGkuVjHKAhBOb3ZhdHJhaWxcQXBpXFYx4gIcTm92YXRyYWlsXEFwaVxWMVxHUEJNZXRhZGF0YeoCEk5vdmF0cmFpbDo6QXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_novatrail_api_v1_attempt, file_novatrail_api_v1_cause]);
22
+ fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2FjY291bnQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEiEwoRR2V0QWNjb3VudFJlcXVlc3QiQAoSR2V0QWNjb3VudFJlc3BvbnNlEioKB2FjY291bnQYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkFjY291bnQiQQoUQ3JlYXRlQWNjb3VudFJlcXVlc3QSEwoLaW52aXRlX2NvZGUYASABKAkSFAoMYWR1bHRfc3RhdGVkGAIgASgIIkMKFUNyZWF0ZUFjY291bnRSZXNwb25zZRIqCgdhY2NvdW50GAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5BY2NvdW50IpMBCgdBY2NvdW50EhIKCmFjY291bnRfaWQYASABKAkSDwoHcGluX3NldBgCIAEoCBIrCghwcm9maWxlcxgDIAMoCzIZLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZRI2Cg5jaGlsZF9jb25zZW50cxgEIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuQ2hpbGRDb25zZW50IskDCgdQcm9maWxlEhIKCnByb2ZpbGVfaWQYASABKAkSDQoFb3duZXIYAiABKAgSEQoJcHNldWRvbnltGAMgASgJEg4KBmF2YXRhchgEIAEoCRIUCgxhZ2VfY2F0ZWdvcnkYBSABKAkSDwoHY291bnRyeRgGIAEoCRI/ChJwcmVzZW50YXRpb25fc3R5bGUYByABKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLlByZXNlbnRhdGlvblN0eWxlEiwKDGRlZmF1bHRfbW9kZRgIIAEoDjIWLm5vdmF0cmFpbC5hcGkudjEuTW9kZRIfChJpbnRlcmZhY2VfbGFuZ3VhZ2UYCSABKAlIAIgBARISCgVncmFkZRgKIAEoBUgBiAEBEhoKEmFza19iZWZvcmVfc2hvd2luZxgLIAEoCBI2CgxvcGVuX2F0dGVtcHQYDCABKAsyIC5ub3ZhdHJhaWwuYXBpLnYxLk9wZW5BdHRlbXB0UmVmEjgKEG9wZW5fbGVzc29uX3J1bnMYDSADKAsyHi5ub3ZhdHJhaWwuYXBpLnYxLkxlc3NvblJ1blJlZkIVChNfaW50ZXJmYWNlX2xhbmd1YWdlQggKBl9ncmFkZSI/ChFQcmVzZW50YXRpb25TdHlsZRIqCgd2b2ljaW5nGAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nIloKB1ZvaWNpbmcSFAoHZW5hYmxlZBgBIAEoCEgAiAEBEi0KBXNwZWVkGAIgASgOMh4ubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nU3BlZWRCCgoIX2VuYWJsZWQivwIKD1Byb2ZpbGVTZXR0aW5ncxIWCglwc2V1ZG9ueW0YASABKAlIAIgBARITCgZhdmF0YXIYAiABKAlIAYgBARIqCgd2b2ljaW5nGAMgASgLMhkubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nEiwKDGRlZmF1bHRfbW9kZRgEIAEoDjIWLm5vdmF0cmFpbC5hcGkudjEuTW9kZRIfChJpbnRlcmZhY2VfbGFuZ3VhZ2UYBSABKAlIAogBARISCgVncmFkZRgGIAEoBUgDiAEBEh8KEmFza19iZWZvcmVfc2hvd2luZxgHIAEoCEgEiAEBQgwKCl9wc2V1ZG9ueW1CCQoHX2F2YXRhckIVChNfaW50ZXJmYWNlX2xhbmd1YWdlQggKBl9ncmFkZUIVChNfYXNrX2JlZm9yZV9zaG93aW5nIngKDENoaWxkQ29uc2VudBISCgpjb25zZW50X2lkGAEgASgJEhQKDGFnZV9jYXRlZ29yeRgCIAEoCRIPCgdjb3VudHJ5GAMgASgJEi0KBXN0YXRlGAQgASgOMh4ubm92YXRyYWlsLmFwaS52MS5Db25zZW50U3RhdGUiNQoNU2V0UGluUmVxdWVzdBILCgNwaW4YASABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJIhAKDlNldFBpblJlc3BvbnNlIjgKEFZlcmlmeVBpblJlcXVlc3QSCwoDcGluGAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCSI+ChFWZXJpZnlQaW5SZXNwb25zZRIpCgVjaGVjaxgBIAEoCzIaLm5vdmF0cmFpbC5hcGkudjEuUGluQ2hlY2siSQoQQ2hhbmdlUGluUmVxdWVzdBILCgNwaW4YASABKAkSDwoHbmV3X3BpbhgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkiPgoRQ2hhbmdlUGluUmVzcG9uc2USKQoFY2hlY2sYASABKAsyGi5ub3ZhdHJhaWwuYXBpLnYxLlBpbkNoZWNrImQKCFBpbkNoZWNrEg8KB21hdGNoZXMYASABKAgSFQoNYXR0ZW1wdHNfbGVmdBgCIAEoBRIwCgxsb2NrZWRfdW50aWwYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjsKD1Jlc2V0UGluUmVxdWVzdBIPCgduZXdfcGluGAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCSISChBSZXNldFBpblJlc3BvbnNlImEKGUNyZWF0ZU93bmVyUHJvZmlsZVJlcXVlc3QSDwoHY291bnRyeRgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkgKGkNyZWF0ZU93bmVyUHJvZmlsZVJlc3BvbnNlEioKB3Byb2ZpbGUYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLlByb2ZpbGUibAoaUmVxdWVzdENoaWxkQ29uc2VudFJlcXVlc3QSFwoPaWRlbXBvdGVuY3lfa2V5GAEgASgJEhYKCWFnZV95ZWFycxgCIAEoBUgAiAEBEg8KB2NvdW50cnkYAyABKAlCDAoKX2FnZV95ZWFycyJOChtSZXF1ZXN0Q2hpbGRDb25zZW50UmVzcG9uc2USLwoHY29uc2VudBgBIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuQ2hpbGRDb25zZW50ImQKGUNyZWF0ZUNoaWxkUHJvZmlsZVJlcXVlc3QSEgoKY29uc2VudF9pZBgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkgKGkNyZWF0ZUNoaWxkUHJvZmlsZVJlc3BvbnNlEioKB3Byb2ZpbGUYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLlByb2ZpbGUiXwoUVXBkYXRlUHJvZmlsZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkMKFVVwZGF0ZVByb2ZpbGVSZXNwb25zZRIqCgdwcm9maWxlGAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5Qcm9maWxlIlMKEVNldFZvaWNpbmdSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSKgoHdm9pY2luZxgCIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuVm9pY2luZyJAChJTZXRWb2ljaW5nUmVzcG9uc2USKgoHcHJvZmlsZRgBIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZSIqChREZWxldGVQcm9maWxlUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJIhcKFURlbGV0ZVByb2ZpbGVSZXNwb25zZSIWChREZWxldGVBY2NvdW50UmVxdWVzdCIXChVEZWxldGVBY2NvdW50UmVzcG9uc2UiKgoURXhwb3J0UHJvZmlsZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCSJEChVFeHBvcnRQcm9maWxlUmVzcG9uc2USDAoEcGFydBgBIAEoDBIdChVleHBvcnRfZm9ybWF0X3ZlcnNpb24YAiABKAkiFgoURXhwb3J0QWNjb3VudFJlcXVlc3QiRAoVRXhwb3J0QWNjb3VudFJlc3BvbnNlEgwKBHBhcnQYASABKAwSHQoVZXhwb3J0X2Zvcm1hdF92ZXJzaW9uGAIgASgJIlMKEkNoZWNrT3duS2V5UmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEikKB293bl9rZXkYAiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleSJvChNDaGVja093bktleVJlc3BvbnNlEiwKBWNoZWNrGAEgASgOMh0ubm92YXRyYWlsLmFwaS52MS5Pd25LZXlDaGVjaxIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lIjAKGkxpc3RPd25LZXlQcm92aWRlcnNSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkiUgobTGlzdE93bktleVByb3ZpZGVyc1Jlc3BvbnNlEjMKCXByb3ZpZGVycxgBIAMoCzIgLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5UHJvdmlkZXIiMAoOT3duS2V5UHJvdmlkZXISEAoIcHJvdmlkZXIYASABKAkSDAoEbmFtZRgCIAEoCSpfCgxWb2ljaW5nU3BlZWQSHQoZVk9JQ0lOR19TUEVFRF9VTlNQRUNJRklFRBAAEhgKFFZPSUNJTkdfU1BFRURfTk9STUFMEAESFgoSVk9JQ0lOR19TUEVFRF9TTE9XEAIqPgoETW9kZRIUChBNT0RFX1VOU1BFQ0lGSUVEEAASEQoNTU9ERV9CWV9TVEVQUxABEg0KCU1PREVfU0VMRhACKmUKDENvbnNlbnRTdGF0ZRIdChlDT05TRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASGQoVQ09OU0VOVF9TVEFURV9XQUlUSU5HEAESGwoXQ09OU0VOVF9TVEFURV9DT05GSVJNRUQQAiqnAQoLT3duS2V5Q2hlY2sSHQoZT1dOX0tFWV9DSEVDS19VTlNQRUNJRklFRBAAEhoKFk9XTl9LRVlfQ0hFQ0tfQUNDRVBURUQQARIZChVPV05fS0VZX0NIRUNLX0lOVkFMSUQQAhIfChtPV05fS0VZX0NIRUNLX05PX1BFUk1JU1NJT04QAxIhCh1PV05fS0VZX0NIRUNLX1BST1ZJREVSX0NMT1NFRBAEMoANCg5BY2NvdW50U2VydmljZRJXCgpHZXRBY2NvdW50EiMubm92YXRyYWlsLmFwaS52MS5HZXRBY2NvdW50UmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuR2V0QWNjb3VudFJlc3BvbnNlEmAKDUNyZWF0ZUFjY291bnQSJi5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0Gicubm92YXRyYWlsLmFwaS52MS5DcmVhdGVBY2NvdW50UmVzcG9uc2USSwoGU2V0UGluEh8ubm92YXRyYWlsLmFwaS52MS5TZXRQaW5SZXF1ZXN0GiAubm92YXRyYWlsLmFwaS52MS5TZXRQaW5SZXNwb25zZRJUCglWZXJpZnlQaW4SIi5ub3ZhdHJhaWwuYXBpLnYxLlZlcmlmeVBpblJlcXVlc3QaIy5ub3ZhdHJhaWwuYXBpLnYxLlZlcmlmeVBpblJlc3BvbnNlElQKCUNoYW5nZVBpbhIiLm5vdmF0cmFpbC5hcGkudjEuQ2hhbmdlUGluUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQ2hhbmdlUGluUmVzcG9uc2USUQoIUmVzZXRQaW4SIS5ub3ZhdHJhaWwuYXBpLnYxLlJlc2V0UGluUmVxdWVzdBoiLm5vdmF0cmFpbC5hcGkudjEuUmVzZXRQaW5SZXNwb25zZRJvChJDcmVhdGVPd25lclByb2ZpbGUSKy5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZU93bmVyUHJvZmlsZVJlcXVlc3QaLC5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZU93bmVyUHJvZmlsZVJlc3BvbnNlEnIKE1JlcXVlc3RDaGlsZENvbnNlbnQSLC5ub3ZhdHJhaWwuYXBpLnYxLlJlcXVlc3RDaGlsZENvbnNlbnRSZXF1ZXN0Gi0ubm92YXRyYWlsLmFwaS52MS5SZXF1ZXN0Q2hpbGRDb25zZW50UmVzcG9uc2USbwoSQ3JlYXRlQ2hpbGRQcm9maWxlEisubm92YXRyYWlsLmFwaS52MS5DcmVhdGVDaGlsZFByb2ZpbGVSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5DcmVhdGVDaGlsZFByb2ZpbGVSZXNwb25zZRJgCg1VcGRhdGVQcm9maWxlEiYubm92YXRyYWlsLmFwaS52MS5VcGRhdGVQcm9maWxlUmVxdWVzdBonLm5vdmF0cmFpbC5hcGkudjEuVXBkYXRlUHJvZmlsZVJlc3BvbnNlElcKClNldFZvaWNpbmcSIy5ub3ZhdHJhaWwuYXBpLnYxLlNldFZvaWNpbmdSZXF1ZXN0GiQubm92YXRyYWlsLmFwaS52MS5TZXRWb2ljaW5nUmVzcG9uc2USYAoNRGVsZXRlUHJvZmlsZRImLm5vdmF0cmFpbC5hcGkudjEuRGVsZXRlUHJvZmlsZVJlcXVlc3QaJy5ub3ZhdHJhaWwuYXBpLnYxLkRlbGV0ZVByb2ZpbGVSZXNwb25zZRJgCg1EZWxldGVBY2NvdW50EiYubm92YXRyYWlsLmFwaS52MS5EZWxldGVBY2NvdW50UmVxdWVzdBonLm5vdmF0cmFpbC5hcGkudjEuRGVsZXRlQWNjb3VudFJlc3BvbnNlEmAKDUV4cG9ydFByb2ZpbGUSJi5ub3ZhdHJhaWwuYXBpLnYxLkV4cG9ydFByb2ZpbGVSZXF1ZXN0Gicubm92YXRyYWlsLmFwaS52MS5FeHBvcnRQcm9maWxlUmVzcG9uc2USYAoNRXhwb3J0QWNjb3VudBImLm5vdmF0cmFpbC5hcGkudjEuRXhwb3J0QWNjb3VudFJlcXVlc3QaJy5ub3ZhdHJhaWwuYXBpLnYxLkV4cG9ydEFjY291bnRSZXNwb25zZRJaCgtDaGVja093bktleRIkLm5vdmF0cmFpbC5hcGkudjEuQ2hlY2tPd25LZXlSZXF1ZXN0GiUubm92YXRyYWlsLmFwaS52MS5DaGVja093bktleVJlc3BvbnNlEnIKE0xpc3RPd25LZXlQcm92aWRlcnMSLC5ub3ZhdHJhaWwuYXBpLnYxLkxpc3RPd25LZXlQcm92aWRlcnNSZXF1ZXN0Gi0ubm92YXRyYWlsLmFwaS52MS5MaXN0T3duS2V5UHJvdmlkZXJzUmVzcG9uc2VCxQEKFGNvbS5ub3ZhdHJhaWwuYXBpLnYxQgxBY2NvdW50UHJvdG9QAVo9Z2l0aHViLmNvbS9hbHRub3ZhdHJhaWwvc3BlYy9jb250cmFjdHMvbm92YXRyYWlsL2FwaS92MTthcGl2MaICA05BWKoCEE5vdmF0cmFpbC5BcGkuVjHKAhBOb3ZhdHJhaWxcQXBpXFYx4gIcTm92YXRyYWlsXEFwaVxWMVxHUEJNZXRhZGF0YeoCEk5vdmF0cmFpbDo6QXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_novatrail_api_v1_attempt, file_novatrail_api_v1_cause, file_novatrail_api_v1_learning]);
22
23
 
23
24
  /**
24
25
  * Describes the message novatrail.api.v1.GetAccountRequest.
@@ -9,7 +9,7 @@
9
9
 
10
10
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
11
11
  import type { Message } from "@bufbuild/protobuf";
12
- import type { CloseReason, Outcome } from "./cause_pb.js";
12
+ import type { CloseReason, EngineChoice, Outcome } from "./cause_pb.js";
13
13
  import type { AnswerSlotPlace, CropBox } from "../../observation/v1/observation_pb.js";
14
14
 
15
15
  /**
@@ -117,6 +117,13 @@ export declare type SubmitWorkResponse = Message<"novatrail.api.v1.SubmitWorkRes
117
117
  * @generated from field: novatrail.api.v1.SolvedTask solved = 4;
118
118
  */
119
119
  solved?: SolvedTask | undefined;
120
+
121
+ /**
122
+ * What comes next, beside `solved`.
123
+ *
124
+ * @generated from field: novatrail.api.v1.Next next = 5;
125
+ */
126
+ next?: Next | undefined;
120
127
  };
121
128
 
122
129
  /**
@@ -288,6 +295,13 @@ export declare type DoneResponse = Message<"novatrail.api.v1.DoneResponse"> & {
288
295
  * @generated from field: novatrail.api.v1.SolvedTask solved = 1;
289
296
  */
290
297
  solved?: SolvedTask | undefined;
298
+
299
+ /**
300
+ * What comes next.
301
+ *
302
+ * @generated from field: novatrail.api.v1.Next next = 2;
303
+ */
304
+ next?: Next | undefined;
291
305
  };
292
306
 
293
307
  /**
@@ -808,6 +822,13 @@ export declare type ShowSolutionResponse = Message<"novatrail.api.v1.ShowSolutio
808
822
  * @generated from field: novatrail.api.v1.SolvedTask solved = 1;
809
823
  */
810
824
  solved?: SolvedTask | undefined;
825
+
826
+ /**
827
+ * What comes next.
828
+ *
829
+ * @generated from field: novatrail.api.v1.Next next = 2;
830
+ */
831
+ next?: Next | undefined;
811
832
  };
812
833
 
813
834
  /**
@@ -1093,6 +1114,53 @@ export declare type SolvedTask = Message<"novatrail.api.v1.SolvedTask"> & {
1093
1114
  */
1094
1115
  export declare const SolvedTaskSchema: GenMessage<SolvedTask>;
1095
1116
 
1117
+ /**
1118
+ * What comes next once an attempt is closed by a correct answer, by the solution shown or by "Done".
1119
+ * A repeat gets the same: of `SubmitWork` and `ShowSolution` with the same idempotency key, and of
1120
+ * `Done` by the state of the attempt.
1121
+ *
1122
+ * @generated from message novatrail.api.v1.Next
1123
+ */
1124
+ export declare type Next = Message<"novatrail.api.v1.Next"> & {
1125
+ /**
1126
+ * In a lesson, the segment that comes next; outside a lesson, the engine's choice.
1127
+ *
1128
+ * @generated from oneof novatrail.api.v1.Next.next
1129
+ */
1130
+ next: {
1131
+ /**
1132
+ * In a lesson: the place of the next segment, from 1.
1133
+ *
1134
+ * @generated from field: int32 segment = 1;
1135
+ */
1136
+ value: number;
1137
+ case: "segment";
1138
+ } | {
1139
+ /**
1140
+ * In a lesson: no segment is left after the one that ended. The lesson run stays open until
1141
+ * "lesson done", `CompleteLesson`, which `app` sends when the learner presses "Continue".
1142
+ *
1143
+ * @generated from field: bool segments_ended = 2;
1144
+ */
1145
+ value: boolean;
1146
+ case: "segmentsEnded";
1147
+ } | {
1148
+ /**
1149
+ * Outside a lesson: the engine's choice.
1150
+ *
1151
+ * @generated from field: novatrail.api.v1.EngineChoice choice = 3;
1152
+ */
1153
+ value: EngineChoice;
1154
+ case: "choice";
1155
+ } | { case: undefined; value?: undefined };
1156
+ };
1157
+
1158
+ /**
1159
+ * Describes the message novatrail.api.v1.Next.
1160
+ * Use `create(NextSchema)` to create a new message.
1161
+ */
1162
+ export declare const NextSchema: GenMessage<Next>;
1163
+
1096
1164
  /**
1097
1165
  * The key of an answer slot.
1098
1166
  *
@@ -1272,7 +1340,9 @@ export declare const MarkKindSchema: GenEnum<MarkKind>;
1272
1340
  * take — gets the code `invalid_argument` with no `Refusal`. Every method carries the token of the
1273
1341
  * sign-in service and may get the refusals of every request with a token, which the comment of
1274
1342
  * `AccountService` names with what `app` does on each; a request of a profile whose consent is not
1275
- * confirmed gets `CAUSE_NO_CONSENT`.
1343
+ * confirmed gets `CAUSE_NO_CONSENT`. An answer that closes the attempt by a correct answer, by the
1344
+ * solution shown or by "Done" says what comes next, `next`: an attempt begins by
1345
+ * `LearningService`.
1276
1346
  *
1277
1347
  * @generated from service novatrail.api.v1.AttemptService
1278
1348
  */
@@ -15,7 +15,7 @@ import { file_novatrail_observation_v1_observation } from "../../observation/v1/
15
15
  * Describes the file novatrail/api/v1/attempt.proto.
16
16
  */
17
17
  export const file_novatrail_api_v1_attempt = /*@__PURE__*/
18
- fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2F0dGVtcHQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEimQIKEVN1Ym1pdFdvcmtSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSJAoEd29yaxgEIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuV29yaxI2Cg50YXBwZWRfY2hvaWNlcxgFIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuVGFwcGVkQ2hvaWNlEikKB293bl9rZXkYBiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgHIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyKzAQoSU3VibWl0V29ya1Jlc3BvbnNlEiwKBWl0ZW1zGAEgAygLMh0ubm92YXRyYWlsLmFwaS52MS5JdGVtVmVyZGljdBIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lEhUKDXdyb25nX2Fuc3dlcnMYAyABKAUSLAoGc29sdmVkGAQgASgLMhwubm92YXRyYWlsLmFwaS52MS5Tb2x2ZWRUYXNrIsoBChJTdWJtaXRFc3NheVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIMCgRjcm9wGAQgASgMEikKB293bl9rZXkYBSABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgGIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyKAAgoTU3VibWl0RXNzYXlSZXNwb25zZRIsCgNlbmQYASABKA4yHy5ub3ZhdHJhaWwuYXBpLnYxLlN1Ym1pc3Npb25FbmQSEQoEdGV4dBgCIAEoCUgAiAEBEg4KBnJlYXNvbhgDIAEoCRIVCghmZWVkYmFjaxgEIAEoCUgBiAEBEioKB291dGNvbWUYBSABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUSLQoGY2xvc2VkGAYgASgOMh0ubm92YXRyYWlsLmFwaS52MS5DbG9zZVJlYXNvbhIQCghyZXBlYXRlZBgHIAEoCEIHCgVfdGV4dEILCglfZmVlZGJhY2siNQoLRG9uZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJIjwKDERvbmVSZXNwb25zZRIsCgZzb2x2ZWQYASABKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlNvbHZlZFRhc2sikQIKE0dldFJ1bmdXb3Jkc1JlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIaCg13cm9uZ19hbnN3ZXJzGAQgASgFSACIAQESJAoEd29yaxgFIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuV29yaxIpCgdvd25fa2V5GAYgASgLMhgubm92YXRyYWlsLmFwaS52MS5Pd25LZXkSIQoUY2xvY2tfb2Zmc2V0X21pbnV0ZXMYByABKAVIAYgBAUIQCg5fd3JvbmdfYW5zd2Vyc0IXChVfY2xvY2tfb2Zmc2V0X21pbnV0ZXMimAEKFEdldFJ1bmdXb3Jkc1Jlc3BvbnNlEgwKBHJ1bmcYASABKAUSDQoFd29yZHMYAiABKAkSJQoFbWFya3MYAyADKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLk1hcmsSKgoHb3V0Y29tZRgEIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuT3V0Y29tZRIQCghyZXBlYXRlZBgFIAEoCCLsAQocR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJEiQKBHdvcmsYBCABKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLldvcmsSKQoHb3duX2tleRgFIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAYgASgFSACIAQFCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzInsKHUdldENvcnJlY3RBbnN3ZXJXb3Jkc1Jlc3BvbnNlEhIKBXdvcmRzGAEgASgJSACIAQESKgoHb3V0Y29tZRgCIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuT3V0Y29tZRIQCghyZXBlYXRlZBgDIAEoCEIICgZfd29yZHMi8QEKGUV4cGxhaW5EaWZmZXJlbnRseVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIpCgdvd25fa2V5GAQgASgLMhgubm92YXRyYWlsLmFwaS52MS5Pd25LZXkSIQoUY2xvY2tfb2Zmc2V0X21pbnV0ZXMYBSABKAVIAIgBARIaCg13cm9uZ19hbnN3ZXJzGAYgASgFSAGIAQFCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzQhAKDl93cm9uZ19hbnN3ZXJzIlcKGkV4cGxhaW5EaWZmZXJlbnRseVJlc3BvbnNlEg0KBXdvcmRzGAEgASgJEioKB291dGNvbWUYAiABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUiOAoOR2V0SGludFJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJInkKD0dldEhpbnRSZXNwb25zZRIyCgp0ZWNobmlxdWVzGAEgASgLMhwubm92YXRyYWlsLmFwaS52MS5UZWNobmlxdWVzSAASKgoEcnVuZxgCIAEoCzIaLm5vdmF0cmFpbC5hcGkudjEuUnVuZ0hpbnRIAEIGCgRoaW50IiMKClRlY2huaXF1ZXMSFQoNdGVjaG5pcXVlX2lkcxgBIAMoCSInCghSdW5nSGludBIMCgRydW5nGAEgASgFEg0KBXdvcmRzGAIgASgJIkgKEEJlZ2luU3RlcFJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEgwKBHN0ZXAYAyABKAUiRQoRQmVnaW5TdGVwUmVzcG9uc2USMAoKdGVjaG5pcXVlcxgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuVGVjaG5pcXVlcyKAAQoTU2hvd1NvbHV0aW9uUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJEigKBmFjdGlvbhgEIAEoDjIYLm5vdmF0cmFpbC5hcGkudjEuQWN0aW9uIkQKFFNob3dTb2x1dGlvblJlc3BvbnNlEiwKBnNvbHZlZBgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuU29sdmVkVGFzayJzCgRXb3JrEiwKBXNoZWV0GAEgASgLMhsubm92YXRyYWlsLmFwaS52MS5TaGVldFdvcmtIABIyCgh3b3JrYm9vaxgCIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuV29ya2Jvb2tXb3JrSABCCQoHc3VyZmFjZSIZCglTaGVldFdvcmsSDAoEY3JvcBgBIAEoDCI4CgxXb3JrYm9va1dvcmsSKAoFYm94ZXMYASADKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkJveENyb3AiVwoHQm94Q3JvcBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDAoEY3JvcBgCIAEoDCJdCgxUYXBwZWRDaG9pY2USPgoLYW5zd2VyX3Nsb3QYASABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlEg0KBXZhbHVlGAIgASgJIicKBk93bktleRIQCghwcm92aWRlchgBIAEoCRILCgNrZXkYAiABKAkiWQoLSXRlbVZlcmRpY3QSDwoHdmVyZGljdBgBIAEoCRI5CgxhbnN3ZXJfc2xvdHMYAiADKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLkFuc3dlclNsb3RWZXJkaWN0IpIBChFBbnN3ZXJTbG90VmVyZGljdBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDwoHdmVyZGljdBgCIAEoCRIOCgZyZWFzb24YAyABKAkSEgoFdmFsdWUYBCABKAlIAIgBAUIICgZfdmFsdWUifgoKU29sdmVkVGFzaxItCgRrZXlzGAEgAygLMh8ubm92YXRyYWlsLmFwaS52MS5BbnN3ZXJTbG90S2V5EhAKCHNvbHV0aW9uGAIgASgMEh0KFW1vZHVsZV9mb3JtYXRfdmVyc2lvbhgDIAEoCRIQCghjcml0ZXJpYRgEIAMoCSJcCg1BbnN3ZXJTbG90S2V5Ej4KC2Fuc3dlcl9zbG90GAEgASgLMikubm92YXRyYWlsLm9ic2VydmF0aW9uLnYxLkFuc3dlclNsb3RQbGFjZRILCgNrZXkYAiABKAkisgEKBE1hcmsSKAoEa2luZBgBIAEoDjIaLm5vdmF0cmFpbC5hcGkudjEuTWFya0tpbmQSQAoLYW5zd2VyX3Nsb3QYAiABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlSAASNQoIY3JvcF9ib3gYAyABKAsyIS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQ3JvcEJveEgAQgcKBXBsYWNlKokBCg1TdWJtaXNzaW9uRW5kEh4KGlNVQk1JU1NJT05fRU5EX1VOU1BFQ0lGSUVEEAASGwoXU1VCTUlTU0lPTl9FTkRfRkVFREJBQ0sQARIdChlTVUJNSVNTSU9OX0VORF9VTlJFQURBQkxFEAISHAoYU1VCTUlTU0lPTl9FTkRfVU5DSEVDS0VEEAMqRwoGQWN0aW9uEhYKEkFDVElPTl9VTlNQRUNJRklFRBAAEhMKD0FDVElPTl9MRUFSTklORxABEhAKDEFDVElPTl9BRFVMVBACKjoKCE1hcmtLaW5kEhkKFU1BUktfS0lORF9VTlNQRUNJRklFRBAAEhMKD01BUktfS0lORF9GUkFNRRABMtsGCg5BdHRlbXB0U2VydmljZRJXCgpTdWJtaXRXb3JrEiMubm92YXRyYWlsLmFwaS52MS5TdWJtaXRXb3JrUmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuU3VibWl0V29ya1Jlc3BvbnNlEloKC1N1Ym1pdEVzc2F5EiQubm92YXRyYWlsLmFwaS52MS5TdWJtaXRFc3NheVJlcXVlc3QaJS5ub3ZhdHJhaWwuYXBpLnYxLlN1Ym1pdEVzc2F5UmVzcG9uc2USRQoERG9uZRIdLm5vdmF0cmFpbC5hcGkudjEuRG9uZVJlcXVlc3QaHi5ub3ZhdHJhaWwuYXBpLnYxLkRvbmVSZXNwb25zZRJdCgxHZXRSdW5nV29yZHMSJS5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1JlcXVlc3QaJi5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1Jlc3BvbnNlEngKFUdldENvcnJlY3RBbnN3ZXJXb3JkcxIuLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVxdWVzdBovLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVzcG9uc2USbwoSRXhwbGFpbkRpZmZlcmVudGx5Eisubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXNwb25zZRJOCgdHZXRIaW50EiAubm92YXRyYWlsLmFwaS52MS5HZXRIaW50UmVxdWVzdBohLm5vdmF0cmFpbC5hcGkudjEuR2V0SGludFJlc3BvbnNlElQKCUJlZ2luU3RlcBIiLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVzcG9uc2USXQoMU2hvd1NvbHV0aW9uEiUubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXF1ZXN0GiYubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXNwb25zZULFAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCDEF0dGVtcHRQcm90b1ABWj1naXRodWIuY29tL2FsdG5vdmF0cmFpbC9zcGVjL2NvbnRyYWN0cy9ub3ZhdHJhaWwvYXBpL3YxO2FwaXYxogIDTkFYqgIQTm92YXRyYWlsLkFwaS5WMcoCEE5vdmF0cmFpbFxBcGlcVjHiAhxOb3ZhdHJhaWxcQXBpXFYxXEdQQk1ldGFkYXRh6gISTm92YXRyYWlsOjpBcGk6OlYxYgZwcm90bzM", [file_novatrail_api_v1_cause, file_novatrail_observation_v1_observation]);
18
+ fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2F0dGVtcHQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEimQIKEVN1Ym1pdFdvcmtSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSJAoEd29yaxgEIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuV29yaxI2Cg50YXBwZWRfY2hvaWNlcxgFIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuVGFwcGVkQ2hvaWNlEikKB293bl9rZXkYBiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgHIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyLZAQoSU3VibWl0V29ya1Jlc3BvbnNlEiwKBWl0ZW1zGAEgAygLMh0ubm92YXRyYWlsLmFwaS52MS5JdGVtVmVyZGljdBIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lEhUKDXdyb25nX2Fuc3dlcnMYAyABKAUSLAoGc29sdmVkGAQgASgLMhwubm92YXRyYWlsLmFwaS52MS5Tb2x2ZWRUYXNrEiQKBG5leHQYBSABKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLk5leHQiygEKElN1Ym1pdEVzc2F5UmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJEgwKBGNyb3AYBCABKAwSKQoHb3duX2tleRgFIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAYgASgFSACIAQFCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzIoACChNTdWJtaXRFc3NheVJlc3BvbnNlEiwKA2VuZBgBIAEoDjIfLm5vdmF0cmFpbC5hcGkudjEuU3VibWlzc2lvbkVuZBIRCgR0ZXh0GAIgASgJSACIAQESDgoGcmVhc29uGAMgASgJEhUKCGZlZWRiYWNrGAQgASgJSAGIAQESKgoHb3V0Y29tZRgFIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuT3V0Y29tZRItCgZjbG9zZWQYBiABKA4yHS5ub3ZhdHJhaWwuYXBpLnYxLkNsb3NlUmVhc29uEhAKCHJlcGVhdGVkGAcgASgIQgcKBV90ZXh0QgsKCV9mZWVkYmFjayI1CgtEb25lUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkiYgoMRG9uZVJlc3BvbnNlEiwKBnNvbHZlZBgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuU29sdmVkVGFzaxIkCgRuZXh0GAIgASgLMhYubm92YXRyYWlsLmFwaS52MS5OZXh0IpECChNHZXRSdW5nV29yZHNSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSGgoNd3JvbmdfYW5zd2VycxgEIAEoBUgAiAEBEiQKBHdvcmsYBSABKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLldvcmsSKQoHb3duX2tleRgGIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAcgASgFSAGIAQFCEAoOX3dyb25nX2Fuc3dlcnNCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzIpgBChRHZXRSdW5nV29yZHNSZXNwb25zZRIMCgRydW5nGAEgASgFEg0KBXdvcmRzGAIgASgJEiUKBW1hcmtzGAMgAygLMhYubm92YXRyYWlsLmFwaS52MS5NYXJrEioKB291dGNvbWUYBCABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUSEAoIcmVwZWF0ZWQYBSABKAgi7AEKHEdldENvcnJlY3RBbnN3ZXJXb3Jkc1JlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIkCgR3b3JrGAQgASgLMhYubm92YXRyYWlsLmFwaS52MS5Xb3JrEikKB293bl9rZXkYBSABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgGIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyJ7Ch1HZXRDb3JyZWN0QW5zd2VyV29yZHNSZXNwb25zZRISCgV3b3JkcxgBIAEoCUgAiAEBEioKB291dGNvbWUYAiABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUSEAoIcmVwZWF0ZWQYAyABKAhCCAoGX3dvcmRzIvEBChlFeHBsYWluRGlmZmVyZW50bHlSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSKQoHb3duX2tleRgEIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAUgASgFSACIAQESGgoNd3JvbmdfYW5zd2VycxgGIAEoBUgBiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlc0IQCg5fd3JvbmdfYW5zd2VycyJXChpFeHBsYWluRGlmZmVyZW50bHlSZXNwb25zZRINCgV3b3JkcxgBIAEoCRIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lIjgKDkdldEhpbnRSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCSJ5Cg9HZXRIaW50UmVzcG9uc2USMgoKdGVjaG5pcXVlcxgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuVGVjaG5pcXVlc0gAEioKBHJ1bmcYAiABKAsyGi5ub3ZhdHJhaWwuYXBpLnYxLlJ1bmdIaW50SABCBgoEaGludCIjCgpUZWNobmlxdWVzEhUKDXRlY2huaXF1ZV9pZHMYASADKAkiJwoIUnVuZ0hpbnQSDAoEcnVuZxgBIAEoBRINCgV3b3JkcxgCIAEoCSJIChBCZWdpblN0ZXBSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIMCgRzdGVwGAMgASgFIkUKEUJlZ2luU3RlcFJlc3BvbnNlEjAKCnRlY2huaXF1ZXMYASABKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlRlY2huaXF1ZXMigAEKE1Nob3dTb2x1dGlvblJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIoCgZhY3Rpb24YBCABKA4yGC5ub3ZhdHJhaWwuYXBpLnYxLkFjdGlvbiJqChRTaG93U29sdXRpb25SZXNwb25zZRIsCgZzb2x2ZWQYASABKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlNvbHZlZFRhc2sSJAoEbmV4dBgCIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuTmV4dCJzCgRXb3JrEiwKBXNoZWV0GAEgASgLMhsubm92YXRyYWlsLmFwaS52MS5TaGVldFdvcmtIABIyCgh3b3JrYm9vaxgCIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuV29ya2Jvb2tXb3JrSABCCQoHc3VyZmFjZSIZCglTaGVldFdvcmsSDAoEY3JvcBgBIAEoDCI4CgxXb3JrYm9va1dvcmsSKAoFYm94ZXMYASADKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkJveENyb3AiVwoHQm94Q3JvcBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDAoEY3JvcBgCIAEoDCJdCgxUYXBwZWRDaG9pY2USPgoLYW5zd2VyX3Nsb3QYASABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlEg0KBXZhbHVlGAIgASgJIicKBk93bktleRIQCghwcm92aWRlchgBIAEoCRILCgNrZXkYAiABKAkiWQoLSXRlbVZlcmRpY3QSDwoHdmVyZGljdBgBIAEoCRI5CgxhbnN3ZXJfc2xvdHMYAiADKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLkFuc3dlclNsb3RWZXJkaWN0IpIBChFBbnN3ZXJTbG90VmVyZGljdBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDwoHdmVyZGljdBgCIAEoCRIOCgZyZWFzb24YAyABKAkSEgoFdmFsdWUYBCABKAlIAIgBAUIICgZfdmFsdWUifgoKU29sdmVkVGFzaxItCgRrZXlzGAEgAygLMh8ubm92YXRyYWlsLmFwaS52MS5BbnN3ZXJTbG90S2V5EhAKCHNvbHV0aW9uGAIgASgMEh0KFW1vZHVsZV9mb3JtYXRfdmVyc2lvbhgDIAEoCRIQCghjcml0ZXJpYRgEIAMoCSJtCgROZXh0EhEKB3NlZ21lbnQYASABKAVIABIYCg5zZWdtZW50c19lbmRlZBgCIAEoCEgAEjAKBmNob2ljZRgDIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuRW5naW5lQ2hvaWNlSABCBgoEbmV4dCJcCg1BbnN3ZXJTbG90S2V5Ej4KC2Fuc3dlcl9zbG90GAEgASgLMikubm92YXRyYWlsLm9ic2VydmF0aW9uLnYxLkFuc3dlclNsb3RQbGFjZRILCgNrZXkYAiABKAkisgEKBE1hcmsSKAoEa2luZBgBIAEoDjIaLm5vdmF0cmFpbC5hcGkudjEuTWFya0tpbmQSQAoLYW5zd2VyX3Nsb3QYAiABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlSAASNQoIY3JvcF9ib3gYAyABKAsyIS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQ3JvcEJveEgAQgcKBXBsYWNlKokBCg1TdWJtaXNzaW9uRW5kEh4KGlNVQk1JU1NJT05fRU5EX1VOU1BFQ0lGSUVEEAASGwoXU1VCTUlTU0lPTl9FTkRfRkVFREJBQ0sQARIdChlTVUJNSVNTSU9OX0VORF9VTlJFQURBQkxFEAISHAoYU1VCTUlTU0lPTl9FTkRfVU5DSEVDS0VEEAMqRwoGQWN0aW9uEhYKEkFDVElPTl9VTlNQRUNJRklFRBAAEhMKD0FDVElPTl9MRUFSTklORxABEhAKDEFDVElPTl9BRFVMVBACKjoKCE1hcmtLaW5kEhkKFU1BUktfS0lORF9VTlNQRUNJRklFRBAAEhMKD01BUktfS0lORF9GUkFNRRABMtsGCg5BdHRlbXB0U2VydmljZRJXCgpTdWJtaXRXb3JrEiMubm92YXRyYWlsLmFwaS52MS5TdWJtaXRXb3JrUmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuU3VibWl0V29ya1Jlc3BvbnNlEloKC1N1Ym1pdEVzc2F5EiQubm92YXRyYWlsLmFwaS52MS5TdWJtaXRFc3NheVJlcXVlc3QaJS5ub3ZhdHJhaWwuYXBpLnYxLlN1Ym1pdEVzc2F5UmVzcG9uc2USRQoERG9uZRIdLm5vdmF0cmFpbC5hcGkudjEuRG9uZVJlcXVlc3QaHi5ub3ZhdHJhaWwuYXBpLnYxLkRvbmVSZXNwb25zZRJdCgxHZXRSdW5nV29yZHMSJS5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1JlcXVlc3QaJi5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1Jlc3BvbnNlEngKFUdldENvcnJlY3RBbnN3ZXJXb3JkcxIuLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVxdWVzdBovLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVzcG9uc2USbwoSRXhwbGFpbkRpZmZlcmVudGx5Eisubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXNwb25zZRJOCgdHZXRIaW50EiAubm92YXRyYWlsLmFwaS52MS5HZXRIaW50UmVxdWVzdBohLm5vdmF0cmFpbC5hcGkudjEuR2V0SGludFJlc3BvbnNlElQKCUJlZ2luU3RlcBIiLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVzcG9uc2USXQoMU2hvd1NvbHV0aW9uEiUubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXF1ZXN0GiYubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXNwb25zZULFAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCDEF0dGVtcHRQcm90b1ABWj1naXRodWIuY29tL2FsdG5vdmF0cmFpbC9zcGVjL2NvbnRyYWN0cy9ub3ZhdHJhaWwvYXBpL3YxO2FwaXYxogIDTkFYqgIQTm92YXRyYWlsLkFwaS5WMcoCEE5vdmF0cmFpbFxBcGlcVjHiAhxOb3ZhdHJhaWxcQXBpXFYxXEdQQk1ldGFkYXRh6gISTm92YXRyYWlsOjpBcGk6OlYxYgZwcm90bzM", [file_novatrail_api_v1_cause, file_novatrail_observation_v1_observation]);
19
19
 
20
20
  /**
21
21
  * Describes the message novatrail.api.v1.SubmitWorkRequest.
@@ -220,19 +220,26 @@ export const AnswerSlotVerdictSchema = /*@__PURE__*/
220
220
  export const SolvedTaskSchema = /*@__PURE__*/
221
221
  messageDesc(file_novatrail_api_v1_attempt, 28);
222
222
 
223
+ /**
224
+ * Describes the message novatrail.api.v1.Next.
225
+ * Use `create(NextSchema)` to create a new message.
226
+ */
227
+ export const NextSchema = /*@__PURE__*/
228
+ messageDesc(file_novatrail_api_v1_attempt, 29);
229
+
223
230
  /**
224
231
  * Describes the message novatrail.api.v1.AnswerSlotKey.
225
232
  * Use `create(AnswerSlotKeySchema)` to create a new message.
226
233
  */
227
234
  export const AnswerSlotKeySchema = /*@__PURE__*/
228
- messageDesc(file_novatrail_api_v1_attempt, 29);
235
+ messageDesc(file_novatrail_api_v1_attempt, 30);
229
236
 
230
237
  /**
231
238
  * Describes the message novatrail.api.v1.Mark.
232
239
  * Use `create(MarkSchema)` to create a new message.
233
240
  */
234
241
  export const MarkSchema = /*@__PURE__*/
235
- messageDesc(file_novatrail_api_v1_attempt, 30);
242
+ messageDesc(file_novatrail_api_v1_attempt, 31);
236
243
 
237
244
  /**
238
245
  * Describes the enum novatrail.api.v1.SubmissionEnd.
@@ -284,7 +291,9 @@ export const MarkKind = /*@__PURE__*/
284
291
  * take — gets the code `invalid_argument` with no `Refusal`. Every method carries the token of the
285
292
  * sign-in service and may get the refusals of every request with a token, which the comment of
286
293
  * `AccountService` names with what `app` does on each; a request of a profile whose consent is not
287
- * confirmed gets `CAUSE_NO_CONSENT`.
294
+ * confirmed gets `CAUSE_NO_CONSENT`. An answer that closes the attempt by a correct answer, by the
295
+ * solution shown or by "Done" says what comes next, `next`: an attempt begins by
296
+ * `LearningService`.
288
297
  *
289
298
  * @generated from service novatrail.api.v1.AttemptService
290
299
  */