@dxos/protocols 0.8.0 → 0.8.1-main.013e445

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.
Files changed (88) hide show
  1. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts +104 -1
  2. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  3. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js +44 -19
  4. package/dist/cjs/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  5. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.d.ts +14 -0
  6. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.d.ts.map +1 -1
  7. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.js +11 -6
  8. package/dist/cjs/src/buf/proto/gen/dxos/edge/signal_pb.js.map +1 -1
  9. package/dist/cjs/src/edge-error.d.ts +26 -0
  10. package/dist/cjs/src/edge-error.d.ts.map +1 -0
  11. package/dist/cjs/src/edge-error.js +63 -0
  12. package/dist/cjs/src/edge-error.js.map +1 -0
  13. package/dist/cjs/src/edge.d.ts +25 -25
  14. package/dist/cjs/src/edge.d.ts.map +1 -1
  15. package/dist/cjs/src/edge.js +13 -57
  16. package/dist/cjs/src/edge.js.map +1 -1
  17. package/dist/cjs/src/index.d.ts +2 -0
  18. package/dist/cjs/src/index.d.ts.map +1 -1
  19. package/dist/cjs/src/index.js +2 -0
  20. package/dist/cjs/src/index.js.map +1 -1
  21. package/dist/cjs/src/invitation.d.ts +1 -1
  22. package/dist/cjs/src/invitation.d.ts.map +1 -1
  23. package/dist/cjs/src/invitation.js +6 -5
  24. package/dist/cjs/src/invitation.js.map +1 -1
  25. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts +45 -0
  26. package/dist/cjs/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  27. package/dist/cjs/src/proto/gen/dxos/client/services.js.map +1 -1
  28. package/dist/cjs/src/proto/gen/dxos/edge/signal.d.ts +7 -0
  29. package/dist/cjs/src/proto/gen/dxos/edge/signal.d.ts.map +1 -1
  30. package/dist/cjs/src/proto/gen/index.d.ts +6 -0
  31. package/dist/cjs/src/proto/gen/index.d.ts.map +1 -1
  32. package/dist/cjs/src/proto/gen/index.js +1 -1
  33. package/dist/cjs/src/proto/gen/index.js.map +1 -1
  34. package/dist/cjs/src/space-archive.d.ts +55 -0
  35. package/dist/cjs/src/space-archive.d.ts.map +1 -0
  36. package/dist/cjs/src/space-archive.js +29 -0
  37. package/dist/cjs/src/space-archive.js.map +1 -0
  38. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  39. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts +104 -1
  40. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.d.ts.map +1 -1
  41. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js +42 -17
  42. package/dist/esm/src/buf/proto/gen/dxos/client/services_pb.js.map +1 -1
  43. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.d.ts +14 -0
  44. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.d.ts.map +1 -1
  45. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.js +10 -5
  46. package/dist/esm/src/buf/proto/gen/dxos/edge/signal_pb.js.map +1 -1
  47. package/dist/esm/src/edge-error.d.ts +26 -0
  48. package/dist/esm/src/edge-error.d.ts.map +1 -0
  49. package/dist/esm/src/edge-error.js +62 -0
  50. package/dist/esm/src/edge-error.js.map +1 -0
  51. package/dist/esm/src/edge.d.ts +25 -25
  52. package/dist/esm/src/edge.d.ts.map +1 -1
  53. package/dist/esm/src/edge.js +12 -58
  54. package/dist/esm/src/edge.js.map +1 -1
  55. package/dist/esm/src/index.d.ts +2 -0
  56. package/dist/esm/src/index.d.ts.map +1 -1
  57. package/dist/esm/src/index.js +2 -0
  58. package/dist/esm/src/index.js.map +1 -1
  59. package/dist/esm/src/invitation.d.ts +1 -1
  60. package/dist/esm/src/invitation.d.ts.map +1 -1
  61. package/dist/esm/src/invitation.js +2 -1
  62. package/dist/esm/src/invitation.js.map +1 -1
  63. package/dist/esm/src/proto/gen/dxos/client/services.d.ts +45 -0
  64. package/dist/esm/src/proto/gen/dxos/client/services.d.ts.map +1 -1
  65. package/dist/esm/src/proto/gen/dxos/client/services.js.map +1 -1
  66. package/dist/esm/src/proto/gen/dxos/edge/signal.d.ts +7 -0
  67. package/dist/esm/src/proto/gen/dxos/edge/signal.d.ts.map +1 -1
  68. package/dist/esm/src/proto/gen/index.d.ts +6 -0
  69. package/dist/esm/src/proto/gen/index.d.ts.map +1 -1
  70. package/dist/esm/src/proto/gen/index.js +1 -1
  71. package/dist/esm/src/proto/gen/index.js.map +1 -1
  72. package/dist/esm/src/space-archive.d.ts +55 -0
  73. package/dist/esm/src/space-archive.d.ts.map +1 -0
  74. package/dist/esm/src/space-archive.js +26 -0
  75. package/dist/esm/src/space-archive.js.map +1 -0
  76. package/package.json +12 -8
  77. package/src/buf/proto/gen/dxos/client/services_pb.ts +137 -18
  78. package/src/buf/proto/gen/dxos/edge/signal_pb.ts +22 -5
  79. package/src/edge-error.ts +79 -0
  80. package/src/edge.ts +19 -71
  81. package/src/index.ts +2 -0
  82. package/src/invitation.ts +3 -1
  83. package/src/proto/dxos/client/services.proto +29 -0
  84. package/src/proto/dxos/edge/signal.proto +4 -0
  85. package/src/proto/gen/dxos/client/services.ts +45 -0
  86. package/src/proto/gen/dxos/edge/signal.ts +7 -0
  87. package/src/proto/gen/index.ts +7 -1
  88. package/src/space-archive.ts +66 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/proto/gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAmEhE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AA2lBhD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,gxtHAAgxtH,CAAC,CAAC,CAAC;AACz0tH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAkB,UAAU,EAAE,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/proto/gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAmEhE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAimBhD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,i2uHAAi2uH,CAAC,CAAC,CAAC;AAC15uH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAkB,UAAU,EAAE,aAAa,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { IdentityDid, SpaceId } from '@dxos/keys';
2
+ /**
3
+ * Space archive is a way to export and import spaces.
4
+ *
5
+ * ## Structure
6
+ *
7
+ * A tar archive with files:
8
+ * - metadata.json -- JSON-encoded {@link SpaceArchiveMetadata} file.
9
+ * - documents
10
+ * - <document-id>.bin -- Automerge document.
11
+ */
12
+ /**
13
+ * Space archive version.
14
+ * Used to track changes to the archive format.
15
+ */
16
+ export declare enum SpaceArchiveVersion {
17
+ V1 = 1
18
+ }
19
+ /**
20
+ * Space archive metadata.
21
+ * Stored in the `metadata.json` file.
22
+ */
23
+ export interface SpaceArchiveMetadata {
24
+ /**
25
+ * Archive version.
26
+ */
27
+ version: SpaceArchiveVersion;
28
+ /**
29
+ * Original space ID.
30
+ */
31
+ originalSpaceId?: SpaceId;
32
+ /**
33
+ * Created at timestamp.
34
+ */
35
+ createdAt?: number;
36
+ /**
37
+ * DID of the identity that exported the space.
38
+ */
39
+ exportedBy?: IdentityDid;
40
+ /**
41
+ * ECHO section.
42
+ */
43
+ echo?: {
44
+ /**
45
+ * Current root document in the automerge URL format.
46
+ * @example "automerge:XXXXXXXXXXX"
47
+ */
48
+ currentRootUrl?: string;
49
+ };
50
+ }
51
+ export declare const SpaceArchiveFileStructure: {
52
+ readonly metadata: "metadata.json";
53
+ readonly documents: "documents";
54
+ };
55
+ //# sourceMappingURL=space-archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-archive.d.ts","sourceRoot":"","sources":["../../../src/space-archive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;GASG;AAEH;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,EAAE,IAAI;CACP;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,mBAAmB,CAAC;IAE7B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IAEzB;;OAEG;IACH,IAAI,CAAC,EAAE;QACL;;;WAGG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,eAAO,MAAM,yBAAyB;;;CAG5B,CAAC"}
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+ /**
5
+ * Space archive is a way to export and import spaces.
6
+ *
7
+ * ## Structure
8
+ *
9
+ * A tar archive with files:
10
+ * - metadata.json -- JSON-encoded {@link SpaceArchiveMetadata} file.
11
+ * - documents
12
+ * - <document-id>.bin -- Automerge document.
13
+ */
14
+ /**
15
+ * Space archive version.
16
+ * Used to track changes to the archive format.
17
+ */
18
+ export var SpaceArchiveVersion;
19
+ (function (SpaceArchiveVersion) {
20
+ SpaceArchiveVersion[SpaceArchiveVersion["V1"] = 1] = "V1";
21
+ })(SpaceArchiveVersion || (SpaceArchiveVersion = {}));
22
+ export const SpaceArchiveFileStructure = {
23
+ metadata: 'metadata.json',
24
+ documents: 'documents',
25
+ };
26
+ //# sourceMappingURL=space-archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-archive.js","sourceRoot":"","sources":["../../../src/space-archive.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAIF;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,yDAAM,CAAA;AACR,CAAC,EAFW,mBAAmB,KAAnB,mBAAmB,QAE9B;AAuCD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,WAAW;CACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/protocols",
3
- "version": "0.8.0",
3
+ "version": "0.8.1-main.013e445",
4
4
  "description": "Protobuf definitions for DXOS protocols.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -72,16 +72,20 @@
72
72
  ],
73
73
  "dependencies": {
74
74
  "@bufbuild/protobuf": "^2.1.0",
75
- "@dxos/effect": "0.8.0",
76
- "@dxos/invariant": "0.8.0",
77
- "@dxos/keys": "0.8.0",
78
- "@dxos/timeframe": "0.8.0",
79
- "@dxos/codec-protobuf": "0.8.0",
80
- "@dxos/util": "0.8.0"
75
+ "@dxos/codec-protobuf": "0.8.1-main.013e445",
76
+ "@dxos/keys": "0.8.1-main.013e445",
77
+ "@dxos/invariant": "0.8.1-main.013e445",
78
+ "@dxos/timeframe": "0.8.1-main.013e445",
79
+ "@dxos/util": "0.8.1-main.013e445",
80
+ "@dxos/effect": "0.8.1-main.013e445"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@bufbuild/buf": "^1.43.0",
84
- "@bufbuild/protoc-gen-es": "^2.1.0"
84
+ "@bufbuild/protoc-gen-es": "^2.1.0",
85
+ "effect": "3.13.3"
86
+ },
87
+ "peerDependencies": {
88
+ "effect": "^3.13.3"
85
89
  },
86
90
  "publishConfig": {
87
91
  "access": "public"
@@ -24,7 +24,7 @@ import type { TimeframeVector } from "../echo/timeframe_pb.js";
24
24
  import { file_dxos_echo_timeframe } from "../echo/timeframe_pb.js";
25
25
  import type { PeerSchema, SwarmResponseSchema } from "../edge/messenger_pb.js";
26
26
  import { file_dxos_edge_messenger } from "../edge/messenger_pb.js";
27
- import type { JoinRequestSchema, LeaveRequestSchema, MessageSchema } from "../edge/signal_pb.js";
27
+ import type { JoinRequestSchema, LeaveRequestSchema, MessageSchema, QueryRequestSchema } from "../edge/signal_pb.js";
28
28
  import { file_dxos_edge_signal } from "../edge/signal_pb.js";
29
29
  import type { Error } from "../error_pb.js";
30
30
  import { file_dxos_error } from "../error_pb.js";
@@ -45,7 +45,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
45
45
  * Describes the file dxos/client/services.proto.
46
46
  */
47
47
  export const file_dxos_client_services: GenFile = /*@__PURE__*/
48
- fileDesc("ChpkeG9zL2NsaWVudC9zZXJ2aWNlcy5wcm90bxIUZHhvcy5jbGllbnQuc2VydmljZXMiSQoTVXBkYXRlU3RhdHVzUmVxdWVzdBIyCgZzdGF0dXMYASABKA4yIi5keG9zLmNsaWVudC5zZXJ2aWNlcy5TeXN0ZW1TdGF0dXMiOAoSUXVlcnlTdGF0dXNSZXF1ZXN0EhUKCGludGVydmFsGAEgASgFSACIAQFCCwoJX2ludGVydmFsIkkKE1F1ZXJ5U3RhdHVzUmVzcG9uc2USMgoGc3RhdHVzGAEgASgOMiIuZHhvcy5jbGllbnQuc2VydmljZXMuU3lzdGVtU3RhdHVzIp8BChVHZXREaWFnbm9zdGljc1JlcXVlc3QSSQoEa2V5cxgBIAEoDjI2LmR4b3MuY2xpZW50LnNlcnZpY2VzLkdldERpYWdub3N0aWNzUmVxdWVzdC5LRVlfT1BUSU9OSACIAQEiMgoKS0VZX09QVElPThIICgROT05FEAASDAoIVFJVTkNBVEUQARIMCghIVU1BTklaRRACQgcKBV9rZXlzInUKFkdldERpYWdub3N0aWNzUmVzcG9uc2USLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgtkaWFnbm9zdGljcxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi5AIKCFBsYXRmb3JtEjoKBHR5cGUYASABKA4yLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybS5QTEFURk9STV9UWVBFEhcKCnVzZXJfYWdlbnQYAiABKAlIAIgBARIVCghwbGF0Zm9ybRgDIAEoCUgBiAEBEhEKBGFyY2gYBCABKAlIAogBARIUCgdydW50aW1lGAUgASgJSAOIAQESEwoGdXB0aW1lGAYgASgNSASIAQESLAoGbWVtb3J5GAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBIjkKDVBMQVRGT1JNX1RZUEUSCwoHQlJPV1NFUhAAEhEKDVNIQVJFRF9XT1JLRVIQARIICgROT0RFEAJCDQoLX3VzZXJfYWdlbnRCCwoJX3BsYXRmb3JtQgcKBV9hcmNoQgoKCF9ydW50aW1lQgkKB191cHRpbWVCCQoHX21lbW9yeSLJAQoISWRlbnRpdHkSCwoDZGlkGAQgASgJEioKDGlkZW50aXR5X2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSLAoJc3BhY2Vfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUgAiAEBEjwKB3Byb2ZpbGUYAyABKAsyJi5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJvZmlsZURvY3VtZW50SAGIAQFCDAoKX3NwYWNlX2tleUIKCghfcHJvZmlsZSKPAQogUmVxdWVzdFJlY292ZXJ5Q2hhbGxlbmdlUmVzcG9uc2USKAoKZGV2aWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSLgoQY29udHJvbF9mZWVkX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSEQoJY2hhbGxlbmdlGAMgASgJIqkDChZSZWNvdmVySWRlbnRpdHlSZXF1ZXN0EhcKDXJlY292ZXJ5X2NvZGUYASABKAlIABJSCghleHRlcm5hbBgCIAEoCzI+LmR4b3MuY2xpZW50LnNlcnZpY2VzLlJlY292ZXJJZGVudGl0eVJlcXVlc3QuRXh0ZXJuYWxTaWduYXR1cmVIABqWAgoRRXh0ZXJuYWxTaWduYXR1cmUSKAoKbG9va3VwX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSKAoKZGV2aWNlX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSLgoQY29udHJvbF9mZWVkX2tleRgDIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSEQoJc2lnbmF0dXJlGAQgASgMEh0KEGNsaWVudF9kYXRhX2pzb24YBSABKAxIAIgBARIfChJhdXRoZW50aWNhdG9yX2RhdGEYBiABKAxIAYgBAUITChFfY2xpZW50X2RhdGFfanNvbkIVChNfYXV0aGVudGljYXRvcl9kYXRhQgkKB3JlcXVlc3QigQEKFlJlY292ZXJ5Q3JlZGVudGlhbERhdGESKgoMcmVjb3Zlcnlfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIoCgpsb29rdXBfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIRCglhbGdvcml0aG0YAyABKAkiawofQ3JlYXRlUmVjb3ZlcnlDcmVkZW50aWFsUmVxdWVzdBI/CgRkYXRhGAEgASgLMiwuZHhvcy5jbGllbnQuc2VydmljZXMuUmVjb3ZlcnlDcmVkZW50aWFsRGF0YUgAiAEBQgcKBV9kYXRhIlAKIENyZWF0ZVJlY292ZXJ5Q3JlZGVudGlhbFJlc3BvbnNlEhoKDXJlY292ZXJ5X2NvZGUYASABKAlIAIgBAUIQCg5fcmVjb3ZlcnlfY29kZSJbChVRdWVyeUlkZW50aXR5UmVzcG9uc2USNQoIaWRlbnRpdHkYASABKAsyHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5JZGVudGl0eUgAiAEBQgsKCV9pZGVudGl0eSJyChdTaWduUHJlc2VudGF0aW9uUmVxdWVzdBI5CgxwcmVzZW50YXRpb24YASABKAsyIy5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJlc2VudGF0aW9uEhIKBW5vbmNlGAIgASgMSACIAQFCCAoGX25vbmNlIsUBChVDcmVhdGVJZGVudGl0eVJlcXVlc3QSPAoHcHJvZmlsZRgBIAEoCzImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnRIAIgBARJJCg5kZXZpY2VfcHJvZmlsZRgDIAEoCzIsLmR4b3MuaGFsby5jcmVkZW50aWFscy5EZXZpY2VQcm9maWxlRG9jdW1lbnRIAYgBAUIKCghfcHJvZmlsZUIRCg9fZGV2aWNlX3Byb2ZpbGVKBAgCEAMipwIKBkRldmljZRIoCgpkZXZpY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIuCgRraW5kGAIgASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlS2luZBJCCgdwcm9maWxlGAMgASgLMiwuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkRldmljZVByb2ZpbGVEb2N1bWVudEgAiAEBEjwKCHByZXNlbmNlGAQgASgOMiouZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlLlByZXNlbmNlU3RhdGUiNQoNUHJlc2VuY2VTdGF0ZRILCgdPRkZMSU5FEAASCgoGT05MSU5FEAESCwoHUkVNT1ZFRBACQgoKCF9wcm9maWxlIkUKFFF1ZXJ5RGV2aWNlc1Jlc3BvbnNlEi0KB2RldmljZXMYASADKAsyHC5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2UiqgEKB0NvbnRhY3QSKQoLaWRlbnRpdHlLZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjwKB3Byb2ZpbGUYASABKAsyJi5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJvZmlsZURvY3VtZW50SACIAQESKgoMY29tbW9uU3BhY2VzGAMgAygLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUIKCghfcHJvZmlsZSI+CgtDb250YWN0Qm9vaxIvCghjb250YWN0cxgBIAMoCzIdLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3QilgIKC1NwYWNlTWVtYmVyEjAKCGlkZW50aXR5GAEgASgLMh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSQQoIcHJlc2VuY2UYAiABKA4yLy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZU1lbWJlci5QcmVzZW5jZVN0YXRlEjEKCnBlZXJTdGF0ZXMYAyADKAsyHS5keG9zLm1lc2gucHJlc2VuY2UuUGVlclN0YXRlEjUKBHJvbGUYBCABKA4yJy5keG9zLmhhbG8uY3JlZGVudGlhbHMuU3BhY2VNZW1iZXIuUm9sZSIoCg1QcmVzZW5jZVN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQASLmEgoFU3BhY2USCgoCaWQYBSABKAkSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIvCgVzdGF0ZRgCIAEoDjIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlU3RhdGUSQAoIcGlwZWxpbmUYAyABKAsyKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZS5QaXBlbGluZVN0YXRlSACIAQESJQoFZXJyb3IYBCABKAsyES5keG9zLmVycm9yLkVycm9ySAGIAQESSQoQZWRnZV9yZXBsaWNhdGlvbhgGIAEoDjIqLmR4b3MuZWNoby5tZXRhZGF0YS5FZGdlUmVwbGljYXRpb25TZXR0aW5nSAKIAQESMgoHbWVtYmVycxgKIAMoCzIhLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlTWVtYmVyEioKB2NyZWF0b3IYCyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAOIAQESMgoFY2FjaGUYFCABKAsyHi5keG9zLmVjaG8ubWV0YWRhdGEuU3BhY2VDYWNoZUgEiAEBEjQKB21ldHJpY3MYFSABKAsyIy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZS5NZXRyaWNzGtcDCgdNZXRyaWNzEi0KBG9wZW4YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESPAoTcGlwZWxpbmVfaW5pdF9iZWdpbhgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI/ChZjb250cm9sX3BpcGVsaW5lX3JlYWR5GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEjsKEmRhdGFfcGlwZWxpbmVfb3BlbhgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI8ChNkYXRhX3BpcGVsaW5lX3JlYWR5GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEi4KBXJlYWR5GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQgcKBV9vcGVuQhYKFF9waXBlbGluZV9pbml0X2JlZ2luQhkKF19jb250cm9sX3BpcGVsaW5lX3JlYWR5QhUKE19kYXRhX3BpcGVsaW5lX29wZW5CFgoUX2RhdGFfcGlwZWxpbmVfcmVhZHlCCAoGX3JlYWR5GtwKCg1QaXBlbGluZVN0YXRlEjMKEGNvbnRyb2xfZmVlZF9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SACIAQESMAoNZGF0YV9mZWVkX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAYgBARIrCg1jb250cm9sX2ZlZWRzGBIgAygLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIoCgpkYXRhX2ZlZWRzGBMgAygLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI9Cg1jdXJyZW50X2Vwb2NoGBQgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWxIAogBARI9Cg1hcHBsaWVkX2Vwb2NoGBUgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWxIA4gBARJMChljdXJyZW50X2NvbnRyb2xfdGltZWZyYW1lGAogASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIBIgBARJLChh0YXJnZXRfY29udHJvbF90aW1lZnJhbWUYCyABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgFiAEBEkoKF3RvdGFsX2NvbnRyb2xfdGltZWZyYW1lGA4gASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIBogBARJKChdrbm93bl9jb250cm9sX3RpbWVmcmFtZRgPIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAeIAQESRwoUc3RhcnRfZGF0YV90aW1lZnJhbWUYZCABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgIiAEBEkkKFmN1cnJlbnRfZGF0YV90aW1lZnJhbWUYDCABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgJiAEBEkgKFXRhcmdldF9kYXRhX3RpbWVmcmFtZRgNIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAqIAQESRwoUdG90YWxfZGF0YV90aW1lZnJhbWUYECABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgLiAEBEkcKFGtub3duX2RhdGFfdGltZWZyYW1lGBEgASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIDIgBARIbCg5zcGFjZV9yb290X3VybBgWIAEoCUgNiAEBQhMKEV9jb250cm9sX2ZlZWRfa2V5QhAKDl9kYXRhX2ZlZWRfa2V5QhAKDl9jdXJyZW50X2Vwb2NoQhAKDl9hcHBsaWVkX2Vwb2NoQhwKGl9jdXJyZW50X2NvbnRyb2xfdGltZWZyYW1lQhsKGV90YXJnZXRfY29udHJvbF90aW1lZnJhbWVCGgoYX3RvdGFsX2NvbnRyb2xfdGltZWZyYW1lQhoKGF9rbm93bl9jb250cm9sX3RpbWVmcmFtZUIXChVfc3RhcnRfZGF0YV90aW1lZnJhbWVCGQoXX2N1cnJlbnRfZGF0YV90aW1lZnJhbWVCGAoWX3RhcmdldF9kYXRhX3RpbWVmcmFtZUIXChVfdG90YWxfZGF0YV90aW1lZnJhbWVCFwoVX2tub3duX2RhdGFfdGltZWZyYW1lQhEKD19zcGFjZV9yb290X3VybEILCglfcGlwZWxpbmVCCAoGX2Vycm9yQhMKEV9lZGdlX3JlcGxpY2F0aW9uQgoKCF9jcmVhdG9yQggKBl9jYWNoZSLdAQoSVXBkYXRlU3BhY2VSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNAoFc3RhdGUYAiABKA4yIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZVN0YXRlSACIAQESSQoQZWRnZV9yZXBsaWNhdGlvbhgDIAEoDjIqLmR4b3MuZWNoby5tZXRhZGF0YS5FZGdlUmVwbGljYXRpb25TZXR0aW5nSAGIAQFCCAoGX3N0YXRlQhMKEV9lZGdlX3JlcGxpY2F0aW9uIkIKE1F1ZXJ5U3BhY2VzUmVzcG9uc2USKwoGc3BhY2VzGAEgAygLMhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2UidQoSUG9zdE1lc3NhZ2VSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSDwoHY2hhbm5lbBgCIAEoCRIlCgdtZXNzYWdlGAMgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueSJUChhTdWJzY3JpYmVNZXNzYWdlc1JlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIPCgdjaGFubmVsGAIgASgJInoKF1dyaXRlQ3JlZGVudGlhbHNSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNgoLY3JlZGVudGlhbHMYAiADKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbCJkChdRdWVyeUNyZWRlbnRpYWxzUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EhQKB25vX3RhaWwYAiABKAhIAIgBAUIKCghfbm9fdGFpbCL1AgoSQ3JlYXRlRXBvY2hSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSSgoJbWlncmF0aW9uGAIgASgOMjIuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXF1ZXN0Lk1pZ3JhdGlvbkgAiAEBEh8KEmF1dG9tZXJnZV9yb290X3VybBgDIAEoCUgBiAEBIqMBCglNaWdyYXRpb24SCAoETk9ORRAAEhIKDklOSVRfQVVUT01FUkdFEAESIAocUFJVTkVfQVVUT01FUkdFX1JPT1RfSElTVE9SWRACEhsKF0ZSQUdNRU5UX0FVVE9NRVJHRV9ST09UEAMSGgoWUkVQTEFDRV9BVVRPTUVSR0VfUk9PVBAEEh0KGU1JR1JBVEVfUkVGRVJFTkNFU19UT19EWE4QBUIMCgpfbWlncmF0aW9uQhUKE19hdXRvbWVyZ2Vfcm9vdF91cmwiyAEKE0NyZWF0ZUVwb2NoUmVzcG9uc2USQAoQZXBvY2hfY3JlZGVudGlhbBgBIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsSACIAQESRAoRY29udHJvbF90aW1lZnJhbWUYAiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgBiAEBQhMKEV9lcG9jaF9jcmVkZW50aWFsQhQKEl9jb250cm9sX3RpbWVmcmFtZSKnAQoXVXBkYXRlTWVtYmVyUm9sZVJlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIoCgptZW1iZXJfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI5CghuZXdfcm9sZRgDIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlIqUBChNBZG1pdENvbnRhY3RSZXF1ZXN0Ei4KB2NvbnRhY3QYASABKAsyHS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db250YWN0EjUKBHJvbGUYAiABKA4yJy5keG9zLmhhbG8uY3JlZGVudGlhbHMuU3BhY2VNZW1iZXIuUm9sZRInCglzcGFjZV9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5IkkKEENvbnRhY3RBZG1pc3Npb24SNQoKY3JlZGVudGlhbBgBIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsIj8KEUpvaW5TcGFjZVJlc3BvbnNlEioKBXNwYWNlGAEgASgLMhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2UiQAoVSm9pbkJ5U3BhY2VLZXlSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkirQEKF0FjY2VwdEludml0YXRpb25SZXF1ZXN0EjQKCmludml0YXRpb24YASABKAsyIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uEkkKDmRldmljZV9wcm9maWxlGAIgASgLMiwuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkRldmljZVByb2ZpbGVEb2N1bWVudEgAiAEBQhEKD19kZXZpY2VfcHJvZmlsZSJBChVBdXRoZW50aWNhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCRIRCglhdXRoX2NvZGUYAiABKAkiMAoXQ2FuY2VsSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSKFAQoQSW52aXRhdGlvbk1ldGhvZBIzCgdjcmVhdGVkGAEgASgLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbkgAEjQKCGFjY2VwdGVkGAIgASgLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbkgAQgYKBGtpbmQi4gIKGFF1ZXJ5SW52aXRhdGlvbnNSZXNwb25zZRJFCgZhY3Rpb24YASABKA4yNS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUludml0YXRpb25zUmVzcG9uc2UuQWN0aW9uEkEKBHR5cGUYAiABKA4yMy5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUludml0YXRpb25zUmVzcG9uc2UuVHlwZRI1CgtpbnZpdGF0aW9ucxgDIAMoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24SFQoIZXhpc3RpbmcYBCABKAhIAIgBASI+CgZBY3Rpb24SCQoFQURERUQQABILCgdSRU1PVkVEEAESCQoFU0FWRUQQAhIRCg1MT0FEX0NPTVBMRVRFEAMiIQoEVHlwZRILCgdDUkVBVEVEEAASDAoIQUNDRVBURUQQAUILCglfZXhpc3RpbmciWgohTG9hZFBlcnNpc3RlbnRJbnZpdGF0aW9uc1Jlc3BvbnNlEjUKC2ludml0YXRpb25zGAEgAygLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbiKFAgoNTmV0d29ya1N0YXR1cxI0CgVzd2FybRgBIAEoDjIlLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbm5lY3Rpb25TdGF0ZRI9CglzaWduYWxpbmcYAiADKAsyKi5keG9zLmNsaWVudC5zZXJ2aWNlcy5OZXR3b3JrU3RhdHVzLlNpZ25hbBI3Cg9jb25uZWN0aW9uX2luZm8YAyADKAsyHi5keG9zLmRldnRvb2xzLnN3YXJtLlN3YXJtSW5mbxpGCgZTaWduYWwSDgoGc2VydmVyGAEgASgJEiwKBXN0YXRlGAIgASgOMh0uZHhvcy5tZXNoLnNpZ25hbC5TaWduYWxTdGF0ZSJLChNVcGRhdGVDb25maWdSZXF1ZXN0EjQKBXN3YXJtGAEgASgOMiUuZHhvcy5jbGllbnQuc2VydmljZXMuQ29ubmVjdGlvblN0YXRlIkEKGlN1YnNjcmliZVN3YXJtU3RhdGVSZXF1ZXN0EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleSKTAQoXUXVlcnlFZGdlU3RhdHVzUmVzcG9uc2USSAoGc3RhdHVzGAEgASgOMjguZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlFZGdlU3RhdHVzUmVzcG9uc2UuRWRnZVN0YXR1cyIuCgpFZGdlU3RhdHVzEhEKDU5PVF9DT05ORUNURUQQABINCglDT05ORUNURUQQASKrAQoYUXVlcnlBZ2VudFN0YXR1c1Jlc3BvbnNlEkoKBnN0YXR1cxgBIAEoDjI6LmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5QWdlbnRTdGF0dXNSZXNwb25zZS5BZ2VudFN0YXR1cyJDCgtBZ2VudFN0YXR1cxILCgdVTktOT1dOEAASCgoGQUNUSVZFEAESDAoISU5BQ1RJVkUQAhINCglOT1RfRk9VTkQQAyooCgxTeXN0ZW1TdGF0dXMSDAoISU5BQ1RJVkUQABIKCgZBQ1RJVkUQASomCgpEZXZpY2VLaW5kEgsKB0NVUlJFTlQQABILCgdUUlVTVEVEEAEqKgoPQ29ubmVjdGlvblN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQATLvAwoNU3lzdGVtU2VydmljZRI4CglHZXRDb25maWcSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaEy5keG9zLmNvbmZpZy5Db25maWcSawoOR2V0RGlhZ25vc3RpY3MSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5HZXREaWFnbm9zdGljc1JlcXVlc3QaLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5HZXREaWFnbm9zdGljc1Jlc3BvbnNlElEKDFVwZGF0ZVN0YXR1cxIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZVN0YXR1c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZAoLUXVlcnlTdGF0dXMSKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVN0YXR1c1JlcXVlc3QaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVN0YXR1c1Jlc3BvbnNlMAESNwoFUmVzZXQSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRQoLR2V0UGxhdGZvcm0SFi5nb29nbGUucHJvdG9idWYuRW1wdHkaHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybTK1BgoPSWRlbnRpdHlTZXJ2aWNlEl0KDkNyZWF0ZUlkZW50aXR5EisuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlSWRlbnRpdHlSZXF1ZXN0Gh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSagoYUmVxdWVzdFJlY292ZXJ5Q2hhbGxlbmdlEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GjYuZHhvcy5jbGllbnQuc2VydmljZXMuUmVxdWVzdFJlY292ZXJ5Q2hhbGxlbmdlUmVzcG9uc2USXwoPUmVjb3ZlcklkZW50aXR5EiwuZHhvcy5jbGllbnQuc2VydmljZXMuUmVjb3ZlcklkZW50aXR5UmVxdWVzdBoeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5EokBChhDcmVhdGVSZWNvdmVyeUNyZWRlbnRpYWwSNS5keG9zLmNsaWVudC5zZXJ2aWNlcy5DcmVhdGVSZWNvdmVyeUNyZWRlbnRpYWxSZXF1ZXN0GjYuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlUmVjb3ZlcnlDcmVkZW50aWFsUmVzcG9uc2USVgoNUXVlcnlJZGVudGl0eRIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRorLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5SWRlbnRpdHlSZXNwb25zZTABElcKDVVwZGF0ZVByb2ZpbGUSJi5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJvZmlsZURvY3VtZW50Gh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSZgoQU2lnblByZXNlbnRhdGlvbhItLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNpZ25QcmVzZW50YXRpb25SZXF1ZXN0GiMuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByZXNlbnRhdGlvbhJRChRDcmVhdGVBdXRoQ3JlZGVudGlhbBIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsMsIBCg5EZXZpY2VzU2VydmljZRJaCgxVcGRhdGVEZXZpY2USLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50GhwuZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlElQKDFF1ZXJ5RGV2aWNlcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoqLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5RGV2aWNlc1Jlc3BvbnNlMAEyqQEKD0NvbnRhY3RzU2VydmljZRJICgtHZXRDb250YWN0cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3RCb29rEkwKDVF1ZXJ5Q29udGFjdHMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaIS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db250YWN0Qm9vazABMvcHCg1TcGFjZXNTZXJ2aWNlEkIKC0NyZWF0ZVNwYWNlEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2USTwoLVXBkYXRlU3BhY2USKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5VcGRhdGVTcGFjZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSUgoLUXVlcnlTcGFjZXMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVNwYWNlc1Jlc3BvbnNlMAESWQoQVXBkYXRlTWVtYmVyUm9sZRItLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZU1lbWJlclJvbGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElEKDEFkbWl0Q29udGFjdBIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLkFkbWl0Q29udGFjdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZgoOSm9pbkJ5U3BhY2VLZXkSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5Kb2luQnlTcGFjZUtleVJlcXVlc3QaJy5keG9zLmNsaWVudC5zZXJ2aWNlcy5Kb2luU3BhY2VSZXNwb25zZRJPCgtQb3N0TWVzc2FnZRIoLmR4b3MuY2xpZW50LnNlcnZpY2VzLlBvc3RNZXNzYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJvChFTdWJzY3JpYmVNZXNzYWdlcxIuLmR4b3MuY2xpZW50LnNlcnZpY2VzLlN1YnNjcmliZU1lc3NhZ2VzUmVxdWVzdBooLmR4b3MubWVzaC50ZWxlcG9ydC5nb3NzaXAuR29zc2lwTWVzc2FnZTABElkKEFdyaXRlQ3JlZGVudGlhbHMSLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Xcml0ZUNyZWRlbnRpYWxzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJmChBRdWVyeUNyZWRlbnRpYWxzEi0uZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlDcmVkZW50aWFsc1JlcXVlc3QaIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbDABEmIKC0NyZWF0ZUVwb2NoEiguZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXF1ZXN0GikuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXNwb25zZTLjAwoSSW52aXRhdGlvbnNTZXJ2aWNlElgKEENyZWF0ZUludml0YXRpb24SIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uGiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbjABEmUKEEFjY2VwdEludml0YXRpb24SLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBogLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24wARJTCgxBdXRoZW50aWNhdGUSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5BdXRoZW50aWNhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWQoQQ2FuY2VsSW52aXRhdGlvbhItLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNhbmNlbEludml0YXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElwKEFF1ZXJ5SW52aXRhdGlvbnMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaLi5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUludml0YXRpb25zUmVzcG9uc2UwATK5BAoOTmV0d29ya1NlcnZpY2USUQoMVXBkYXRlQ29uZmlnEikuZHhvcy5jbGllbnQuc2VydmljZXMuVXBkYXRlQ29uZmlnUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJMCgtRdWVyeVN0YXR1cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRojLmR4b3MuY2xpZW50LnNlcnZpY2VzLk5ldHdvcmtTdGF0dXMwARJCCglKb2luU3dhcm0SHS5keG9zLmVkZ2Uuc2lnbmFsLkpvaW5SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkQKCkxlYXZlU3dhcm0SHi5keG9zLmVkZ2Uuc2lnbmFsLkxlYXZlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJtChNTdWJzY3JpYmVTd2FybVN0YXRlEjAuZHhvcy5jbGllbnQuc2VydmljZXMuU3Vic2NyaWJlU3dhcm1TdGF0ZVJlcXVlc3QaIi5keG9zLmVkZ2UubWVzc2VuZ2VyLlN3YXJtUmVzcG9uc2UwARJACgtTZW5kTWVzc2FnZRIZLmR4b3MuZWRnZS5zaWduYWwuTWVzc2FnZRoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJLChFTdWJzY3JpYmVNZXNzYWdlcxIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlchoZLmR4b3MuZWRnZS5zaWduYWwuTWVzc2FnZTABMosCChBFZGdlQWdlbnRTZXJ2aWNlEloKD1F1ZXJ5RWRnZVN0YXR1cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRotLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5RWRnZVN0YXR1c1Jlc3BvbnNlMAESPQoLQ3JlYXRlQWdlbnQSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSXAoQUXVlcnlBZ2VudFN0YXR1cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRouLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5QWdlbnRTdGF0dXNSZXNwb25zZTABYgZwcm90bzM", [file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_config, file_dxos_devtools_swarm, file_dxos_echo_metadata, file_dxos_echo_timeframe, file_dxos_edge_messenger, file_dxos_edge_signal, file_dxos_error, file_dxos_halo_credentials, file_dxos_keys, file_dxos_mesh_signal, file_dxos_mesh_presence, file_dxos_mesh_teleport_gossip, file_dxos_value]);
48
+ fileDesc("ChpkeG9zL2NsaWVudC9zZXJ2aWNlcy5wcm90bxIUZHhvcy5jbGllbnQuc2VydmljZXMiSQoTVXBkYXRlU3RhdHVzUmVxdWVzdBIyCgZzdGF0dXMYASABKA4yIi5keG9zLmNsaWVudC5zZXJ2aWNlcy5TeXN0ZW1TdGF0dXMiOAoSUXVlcnlTdGF0dXNSZXF1ZXN0EhUKCGludGVydmFsGAEgASgFSACIAQFCCwoJX2ludGVydmFsIkkKE1F1ZXJ5U3RhdHVzUmVzcG9uc2USMgoGc3RhdHVzGAEgASgOMiIuZHhvcy5jbGllbnQuc2VydmljZXMuU3lzdGVtU3RhdHVzIp8BChVHZXREaWFnbm9zdGljc1JlcXVlc3QSSQoEa2V5cxgBIAEoDjI2LmR4b3MuY2xpZW50LnNlcnZpY2VzLkdldERpYWdub3N0aWNzUmVxdWVzdC5LRVlfT1BUSU9OSACIAQEiMgoKS0VZX09QVElPThIICgROT05FEAASDAoIVFJVTkNBVEUQARIMCghIVU1BTklaRRACQgcKBV9rZXlzInUKFkdldERpYWdub3N0aWNzUmVzcG9uc2USLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgtkaWFnbm9zdGljcxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi5AIKCFBsYXRmb3JtEjoKBHR5cGUYASABKA4yLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybS5QTEFURk9STV9UWVBFEhcKCnVzZXJfYWdlbnQYAiABKAlIAIgBARIVCghwbGF0Zm9ybRgDIAEoCUgBiAEBEhEKBGFyY2gYBCABKAlIAogBARIUCgdydW50aW1lGAUgASgJSAOIAQESEwoGdXB0aW1lGAYgASgNSASIAQESLAoGbWVtb3J5GAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBIjkKDVBMQVRGT1JNX1RZUEUSCwoHQlJPV1NFUhAAEhEKDVNIQVJFRF9XT1JLRVIQARIICgROT0RFEAJCDQoLX3VzZXJfYWdlbnRCCwoJX3BsYXRmb3JtQgcKBV9hcmNoQgoKCF9ydW50aW1lQgkKB191cHRpbWVCCQoHX21lbW9yeSLJAQoISWRlbnRpdHkSCwoDZGlkGAQgASgJEioKDGlkZW50aXR5X2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSLAoJc3BhY2Vfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUgAiAEBEjwKB3Byb2ZpbGUYAyABKAsyJi5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJvZmlsZURvY3VtZW50SAGIAQFCDAoKX3NwYWNlX2tleUIKCghfcHJvZmlsZSKPAQogUmVxdWVzdFJlY292ZXJ5Q2hhbGxlbmdlUmVzcG9uc2USKAoKZGV2aWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSLgoQY29udHJvbF9mZWVkX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSEQoJY2hhbGxlbmdlGAMgASgJIqkDChZSZWNvdmVySWRlbnRpdHlSZXF1ZXN0EhcKDXJlY292ZXJ5X2NvZGUYASABKAlIABJSCghleHRlcm5hbBgCIAEoCzI+LmR4b3MuY2xpZW50LnNlcnZpY2VzLlJlY292ZXJJZGVudGl0eVJlcXVlc3QuRXh0ZXJuYWxTaWduYXR1cmVIABqWAgoRRXh0ZXJuYWxTaWduYXR1cmUSKAoKbG9va3VwX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSKAoKZGV2aWNlX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSLgoQY29udHJvbF9mZWVkX2tleRgDIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSEQoJc2lnbmF0dXJlGAQgASgMEh0KEGNsaWVudF9kYXRhX2pzb24YBSABKAxIAIgBARIfChJhdXRoZW50aWNhdG9yX2RhdGEYBiABKAxIAYgBAUITChFfY2xpZW50X2RhdGFfanNvbkIVChNfYXV0aGVudGljYXRvcl9kYXRhQgkKB3JlcXVlc3QigQEKFlJlY292ZXJ5Q3JlZGVudGlhbERhdGESKgoMcmVjb3Zlcnlfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIoCgpsb29rdXBfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIRCglhbGdvcml0aG0YAyABKAkiawofQ3JlYXRlUmVjb3ZlcnlDcmVkZW50aWFsUmVxdWVzdBI/CgRkYXRhGAEgASgLMiwuZHhvcy5jbGllbnQuc2VydmljZXMuUmVjb3ZlcnlDcmVkZW50aWFsRGF0YUgAiAEBQgcKBV9kYXRhIlAKIENyZWF0ZVJlY292ZXJ5Q3JlZGVudGlhbFJlc3BvbnNlEhoKDXJlY292ZXJ5X2NvZGUYASABKAlIAIgBAUIQCg5fcmVjb3ZlcnlfY29kZSJbChVRdWVyeUlkZW50aXR5UmVzcG9uc2USNQoIaWRlbnRpdHkYASABKAsyHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5JZGVudGl0eUgAiAEBQgsKCV9pZGVudGl0eSJyChdTaWduUHJlc2VudGF0aW9uUmVxdWVzdBI5CgxwcmVzZW50YXRpb24YASABKAsyIy5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJlc2VudGF0aW9uEhIKBW5vbmNlGAIgASgMSACIAQFCCAoGX25vbmNlIsUBChVDcmVhdGVJZGVudGl0eVJlcXVlc3QSPAoHcHJvZmlsZRgBIAEoCzImLmR4b3MuaGFsby5jcmVkZW50aWFscy5Qcm9maWxlRG9jdW1lbnRIAIgBARJJCg5kZXZpY2VfcHJvZmlsZRgDIAEoCzIsLmR4b3MuaGFsby5jcmVkZW50aWFscy5EZXZpY2VQcm9maWxlRG9jdW1lbnRIAYgBAUIKCghfcHJvZmlsZUIRCg9fZGV2aWNlX3Byb2ZpbGVKBAgCEAMipwIKBkRldmljZRIoCgpkZXZpY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIuCgRraW5kGAIgASgOMiAuZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlS2luZBJCCgdwcm9maWxlGAMgASgLMiwuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkRldmljZVByb2ZpbGVEb2N1bWVudEgAiAEBEjwKCHByZXNlbmNlGAQgASgOMiouZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlLlByZXNlbmNlU3RhdGUiNQoNUHJlc2VuY2VTdGF0ZRILCgdPRkZMSU5FEAASCgoGT05MSU5FEAESCwoHUkVNT1ZFRBACQgoKCF9wcm9maWxlIkUKFFF1ZXJ5RGV2aWNlc1Jlc3BvbnNlEi0KB2RldmljZXMYASADKAsyHC5keG9zLmNsaWVudC5zZXJ2aWNlcy5EZXZpY2UiqgEKB0NvbnRhY3QSKQoLaWRlbnRpdHlLZXkYAiABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EjwKB3Byb2ZpbGUYASABKAsyJi5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJvZmlsZURvY3VtZW50SACIAQESKgoMY29tbW9uU3BhY2VzGAMgAygLMhQuZHhvcy5rZXlzLlB1YmxpY0tleUIKCghfcHJvZmlsZSI+CgtDb250YWN0Qm9vaxIvCghjb250YWN0cxgBIAMoCzIdLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3QilgIKC1NwYWNlTWVtYmVyEjAKCGlkZW50aXR5GAEgASgLMh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSQQoIcHJlc2VuY2UYAiABKA4yLy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZU1lbWJlci5QcmVzZW5jZVN0YXRlEjEKCnBlZXJTdGF0ZXMYAyADKAsyHS5keG9zLm1lc2gucHJlc2VuY2UuUGVlclN0YXRlEjUKBHJvbGUYBCABKA4yJy5keG9zLmhhbG8uY3JlZGVudGlhbHMuU3BhY2VNZW1iZXIuUm9sZSIoCg1QcmVzZW5jZVN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQASLmEgoFU3BhY2USCgoCaWQYBSABKAkSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIvCgVzdGF0ZRgCIAEoDjIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlU3RhdGUSQAoIcGlwZWxpbmUYAyABKAsyKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZS5QaXBlbGluZVN0YXRlSACIAQESJQoFZXJyb3IYBCABKAsyES5keG9zLmVycm9yLkVycm9ySAGIAQESSQoQZWRnZV9yZXBsaWNhdGlvbhgGIAEoDjIqLmR4b3MuZWNoby5tZXRhZGF0YS5FZGdlUmVwbGljYXRpb25TZXR0aW5nSAKIAQESMgoHbWVtYmVycxgKIAMoCzIhLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNwYWNlTWVtYmVyEioKB2NyZWF0b3IYCyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SAOIAQESMgoFY2FjaGUYFCABKAsyHi5keG9zLmVjaG8ubWV0YWRhdGEuU3BhY2VDYWNoZUgEiAEBEjQKB21ldHJpY3MYFSABKAsyIy5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZS5NZXRyaWNzGtcDCgdNZXRyaWNzEi0KBG9wZW4YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESPAoTcGlwZWxpbmVfaW5pdF9iZWdpbhgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI/ChZjb250cm9sX3BpcGVsaW5lX3JlYWR5GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEjsKEmRhdGFfcGlwZWxpbmVfb3BlbhgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI8ChNkYXRhX3BpcGVsaW5lX3JlYWR5GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEi4KBXJlYWR5GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQgcKBV9vcGVuQhYKFF9waXBlbGluZV9pbml0X2JlZ2luQhkKF19jb250cm9sX3BpcGVsaW5lX3JlYWR5QhUKE19kYXRhX3BpcGVsaW5lX29wZW5CFgoUX2RhdGFfcGlwZWxpbmVfcmVhZHlCCAoGX3JlYWR5GtwKCg1QaXBlbGluZVN0YXRlEjMKEGNvbnRyb2xfZmVlZF9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5SACIAQESMAoNZGF0YV9mZWVkX2tleRgCIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXlIAYgBARIrCg1jb250cm9sX2ZlZWRzGBIgAygLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIoCgpkYXRhX2ZlZWRzGBMgAygLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI9Cg1jdXJyZW50X2Vwb2NoGBQgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWxIAogBARI9Cg1hcHBsaWVkX2Vwb2NoGBUgASgLMiEuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkNyZWRlbnRpYWxIA4gBARJMChljdXJyZW50X2NvbnRyb2xfdGltZWZyYW1lGAogASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIBIgBARJLChh0YXJnZXRfY29udHJvbF90aW1lZnJhbWUYCyABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgFiAEBEkoKF3RvdGFsX2NvbnRyb2xfdGltZWZyYW1lGA4gASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIBogBARJKChdrbm93bl9jb250cm9sX3RpbWVmcmFtZRgPIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAeIAQESRwoUc3RhcnRfZGF0YV90aW1lZnJhbWUYZCABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgIiAEBEkkKFmN1cnJlbnRfZGF0YV90aW1lZnJhbWUYDCABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgJiAEBEkgKFXRhcmdldF9kYXRhX3RpbWVmcmFtZRgNIAEoCzIkLmR4b3MuZWNoby50aW1lZnJhbWUuVGltZWZyYW1lVmVjdG9ySAqIAQESRwoUdG90YWxfZGF0YV90aW1lZnJhbWUYECABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgLiAEBEkcKFGtub3duX2RhdGFfdGltZWZyYW1lGBEgASgLMiQuZHhvcy5lY2hvLnRpbWVmcmFtZS5UaW1lZnJhbWVWZWN0b3JIDIgBARIbCg5zcGFjZV9yb290X3VybBgWIAEoCUgNiAEBQhMKEV9jb250cm9sX2ZlZWRfa2V5QhAKDl9kYXRhX2ZlZWRfa2V5QhAKDl9jdXJyZW50X2Vwb2NoQhAKDl9hcHBsaWVkX2Vwb2NoQhwKGl9jdXJyZW50X2NvbnRyb2xfdGltZWZyYW1lQhsKGV90YXJnZXRfY29udHJvbF90aW1lZnJhbWVCGgoYX3RvdGFsX2NvbnRyb2xfdGltZWZyYW1lQhoKGF9rbm93bl9jb250cm9sX3RpbWVmcmFtZUIXChVfc3RhcnRfZGF0YV90aW1lZnJhbWVCGQoXX2N1cnJlbnRfZGF0YV90aW1lZnJhbWVCGAoWX3RhcmdldF9kYXRhX3RpbWVmcmFtZUIXChVfdG90YWxfZGF0YV90aW1lZnJhbWVCFwoVX2tub3duX2RhdGFfdGltZWZyYW1lQhEKD19zcGFjZV9yb290X3VybEILCglfcGlwZWxpbmVCCAoGX2Vycm9yQhMKEV9lZGdlX3JlcGxpY2F0aW9uQgoKCF9jcmVhdG9yQggKBl9jYWNoZSLdAQoSVXBkYXRlU3BhY2VSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNAoFc3RhdGUYAiABKA4yIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZVN0YXRlSACIAQESSQoQZWRnZV9yZXBsaWNhdGlvbhgDIAEoDjIqLmR4b3MuZWNoby5tZXRhZGF0YS5FZGdlUmVwbGljYXRpb25TZXR0aW5nSAGIAQFCCAoGX3N0YXRlQhMKEV9lZGdlX3JlcGxpY2F0aW9uIkIKE1F1ZXJ5U3BhY2VzUmVzcG9uc2USKwoGc3BhY2VzGAEgAygLMhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2UidQoSUG9zdE1lc3NhZ2VSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSDwoHY2hhbm5lbBgCIAEoCRIlCgdtZXNzYWdlGAMgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueSJUChhTdWJzY3JpYmVNZXNzYWdlc1JlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIPCgdjaGFubmVsGAIgASgJInoKF1dyaXRlQ3JlZGVudGlhbHNSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSNgoLY3JlZGVudGlhbHMYAiADKAsyIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbCJkChdRdWVyeUNyZWRlbnRpYWxzUmVxdWVzdBInCglzcGFjZV9rZXkYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EhQKB25vX3RhaWwYAiABKAhIAIgBAUIKCghfbm9fdGFpbCL1AgoSQ3JlYXRlRXBvY2hSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSSgoJbWlncmF0aW9uGAIgASgOMjIuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXF1ZXN0Lk1pZ3JhdGlvbkgAiAEBEh8KEmF1dG9tZXJnZV9yb290X3VybBgDIAEoCUgBiAEBIqMBCglNaWdyYXRpb24SCAoETk9ORRAAEhIKDklOSVRfQVVUT01FUkdFEAESIAocUFJVTkVfQVVUT01FUkdFX1JPT1RfSElTVE9SWRACEhsKF0ZSQUdNRU5UX0FVVE9NRVJHRV9ST09UEAMSGgoWUkVQTEFDRV9BVVRPTUVSR0VfUk9PVBAEEh0KGU1JR1JBVEVfUkVGRVJFTkNFU19UT19EWE4QBUIMCgpfbWlncmF0aW9uQhUKE19hdXRvbWVyZ2Vfcm9vdF91cmwiyAEKE0NyZWF0ZUVwb2NoUmVzcG9uc2USQAoQZXBvY2hfY3JlZGVudGlhbBgBIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsSACIAQESRAoRY29udHJvbF90aW1lZnJhbWUYAiABKAsyJC5keG9zLmVjaG8udGltZWZyYW1lLlRpbWVmcmFtZVZlY3RvckgBiAEBQhMKEV9lcG9jaF9jcmVkZW50aWFsQhQKEl9jb250cm9sX3RpbWVmcmFtZSKnAQoXVXBkYXRlTWVtYmVyUm9sZVJlcXVlc3QSJwoJc3BhY2Vfa2V5GAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRIoCgptZW1iZXJfa2V5GAIgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRI5CghuZXdfcm9sZRgDIAEoDjInLmR4b3MuaGFsby5jcmVkZW50aWFscy5TcGFjZU1lbWJlci5Sb2xlIqUBChNBZG1pdENvbnRhY3RSZXF1ZXN0Ei4KB2NvbnRhY3QYASABKAsyHS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db250YWN0EjUKBHJvbGUYAiABKA4yJy5keG9zLmhhbG8uY3JlZGVudGlhbHMuU3BhY2VNZW1iZXIuUm9sZRInCglzcGFjZV9rZXkYAyABKAsyFC5keG9zLmtleXMuUHVibGljS2V5IkkKEENvbnRhY3RBZG1pc3Npb24SNQoKY3JlZGVudGlhbBgBIAEoCzIhLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsIj8KEUpvaW5TcGFjZVJlc3BvbnNlEioKBXNwYWNlGAEgASgLMhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2UiQAoVSm9pbkJ5U3BhY2VLZXlSZXF1ZXN0EicKCXNwYWNlX2tleRgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkiMgoMU3BhY2VBcmNoaXZlEhAKCGZpbGVuYW1lGAEgASgJEhAKCGNvbnRlbnRzGAIgASgMIiYKEkV4cG9ydFNwYWNlUmVxdWVzdBIQCghzcGFjZV9pZBgBIAEoCSJKChNFeHBvcnRTcGFjZVJlc3BvbnNlEjMKB2FyY2hpdmUYASABKAsyIi5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZUFyY2hpdmUiSQoSSW1wb3J0U3BhY2VSZXF1ZXN0EjMKB2FyY2hpdmUYASABKAsyIi5keG9zLmNsaWVudC5zZXJ2aWNlcy5TcGFjZUFyY2hpdmUiKwoTSW1wb3J0U3BhY2VSZXNwb25zZRIUCgxuZXdfc3BhY2VfaWQYASABKAkirQEKF0FjY2VwdEludml0YXRpb25SZXF1ZXN0EjQKCmludml0YXRpb24YASABKAsyIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uEkkKDmRldmljZV9wcm9maWxlGAIgASgLMiwuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLkRldmljZVByb2ZpbGVEb2N1bWVudEgAiAEBQhEKD19kZXZpY2VfcHJvZmlsZSJBChVBdXRoZW50aWNhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCRIRCglhdXRoX2NvZGUYAiABKAkiMAoXQ2FuY2VsSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSKFAQoQSW52aXRhdGlvbk1ldGhvZBIzCgdjcmVhdGVkGAEgASgLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbkgAEjQKCGFjY2VwdGVkGAIgASgLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbkgAQgYKBGtpbmQi4gIKGFF1ZXJ5SW52aXRhdGlvbnNSZXNwb25zZRJFCgZhY3Rpb24YASABKA4yNS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUludml0YXRpb25zUmVzcG9uc2UuQWN0aW9uEkEKBHR5cGUYAiABKA4yMy5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeUludml0YXRpb25zUmVzcG9uc2UuVHlwZRI1CgtpbnZpdGF0aW9ucxgDIAMoCzIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24SFQoIZXhpc3RpbmcYBCABKAhIAIgBASI+CgZBY3Rpb24SCQoFQURERUQQABILCgdSRU1PVkVEEAESCQoFU0FWRUQQAhIRCg1MT0FEX0NPTVBMRVRFEAMiIQoEVHlwZRILCgdDUkVBVEVEEAASDAoIQUNDRVBURUQQAUILCglfZXhpc3RpbmciWgohTG9hZFBlcnNpc3RlbnRJbnZpdGF0aW9uc1Jlc3BvbnNlEjUKC2ludml0YXRpb25zGAEgAygLMiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbiKFAgoNTmV0d29ya1N0YXR1cxI0CgVzd2FybRgBIAEoDjIlLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbm5lY3Rpb25TdGF0ZRI9CglzaWduYWxpbmcYAiADKAsyKi5keG9zLmNsaWVudC5zZXJ2aWNlcy5OZXR3b3JrU3RhdHVzLlNpZ25hbBI3Cg9jb25uZWN0aW9uX2luZm8YAyADKAsyHi5keG9zLmRldnRvb2xzLnN3YXJtLlN3YXJtSW5mbxpGCgZTaWduYWwSDgoGc2VydmVyGAEgASgJEiwKBXN0YXRlGAIgASgOMh0uZHhvcy5tZXNoLnNpZ25hbC5TaWduYWxTdGF0ZSJLChNVcGRhdGVDb25maWdSZXF1ZXN0EjQKBXN3YXJtGAEgASgOMiUuZHhvcy5jbGllbnQuc2VydmljZXMuQ29ubmVjdGlvblN0YXRlIkEKGlN1YnNjcmliZVN3YXJtU3RhdGVSZXF1ZXN0EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleSKTAQoXUXVlcnlFZGdlU3RhdHVzUmVzcG9uc2USSAoGc3RhdHVzGAEgASgOMjguZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlFZGdlU3RhdHVzUmVzcG9uc2UuRWRnZVN0YXR1cyIuCgpFZGdlU3RhdHVzEhEKDU5PVF9DT05ORUNURUQQABINCglDT05ORUNURUQQASKrAQoYUXVlcnlBZ2VudFN0YXR1c1Jlc3BvbnNlEkoKBnN0YXR1cxgBIAEoDjI6LmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5QWdlbnRTdGF0dXNSZXNwb25zZS5BZ2VudFN0YXR1cyJDCgtBZ2VudFN0YXR1cxILCgdVTktOT1dOEAASCgoGQUNUSVZFEAESDAoISU5BQ1RJVkUQAhINCglOT1RfRk9VTkQQAyooCgxTeXN0ZW1TdGF0dXMSDAoISU5BQ1RJVkUQABIKCgZBQ1RJVkUQASomCgpEZXZpY2VLaW5kEgsKB0NVUlJFTlQQABILCgdUUlVTVEVEEAEqKgoPQ29ubmVjdGlvblN0YXRlEgsKB09GRkxJTkUQABIKCgZPTkxJTkUQATLvAwoNU3lzdGVtU2VydmljZRI4CglHZXRDb25maWcSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaEy5keG9zLmNvbmZpZy5Db25maWcSawoOR2V0RGlhZ25vc3RpY3MSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5HZXREaWFnbm9zdGljc1JlcXVlc3QaLC5keG9zLmNsaWVudC5zZXJ2aWNlcy5HZXREaWFnbm9zdGljc1Jlc3BvbnNlElEKDFVwZGF0ZVN0YXR1cxIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZVN0YXR1c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZAoLUXVlcnlTdGF0dXMSKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVN0YXR1c1JlcXVlc3QaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVN0YXR1c1Jlc3BvbnNlMAESNwoFUmVzZXQSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRQoLR2V0UGxhdGZvcm0SFi5nb29nbGUucHJvdG9idWYuRW1wdHkaHi5keG9zLmNsaWVudC5zZXJ2aWNlcy5QbGF0Zm9ybTK1BgoPSWRlbnRpdHlTZXJ2aWNlEl0KDkNyZWF0ZUlkZW50aXR5EisuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlSWRlbnRpdHlSZXF1ZXN0Gh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSagoYUmVxdWVzdFJlY292ZXJ5Q2hhbGxlbmdlEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GjYuZHhvcy5jbGllbnQuc2VydmljZXMuUmVxdWVzdFJlY292ZXJ5Q2hhbGxlbmdlUmVzcG9uc2USXwoPUmVjb3ZlcklkZW50aXR5EiwuZHhvcy5jbGllbnQuc2VydmljZXMuUmVjb3ZlcklkZW50aXR5UmVxdWVzdBoeLmR4b3MuY2xpZW50LnNlcnZpY2VzLklkZW50aXR5EokBChhDcmVhdGVSZWNvdmVyeUNyZWRlbnRpYWwSNS5keG9zLmNsaWVudC5zZXJ2aWNlcy5DcmVhdGVSZWNvdmVyeUNyZWRlbnRpYWxSZXF1ZXN0GjYuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlUmVjb3ZlcnlDcmVkZW50aWFsUmVzcG9uc2USVgoNUXVlcnlJZGVudGl0eRIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRorLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5SWRlbnRpdHlSZXNwb25zZTABElcKDVVwZGF0ZVByb2ZpbGUSJi5keG9zLmhhbG8uY3JlZGVudGlhbHMuUHJvZmlsZURvY3VtZW50Gh4uZHhvcy5jbGllbnQuc2VydmljZXMuSWRlbnRpdHkSZgoQU2lnblByZXNlbnRhdGlvbhItLmR4b3MuY2xpZW50LnNlcnZpY2VzLlNpZ25QcmVzZW50YXRpb25SZXF1ZXN0GiMuZHhvcy5oYWxvLmNyZWRlbnRpYWxzLlByZXNlbnRhdGlvbhJRChRDcmVhdGVBdXRoQ3JlZGVudGlhbBIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmR4b3MuaGFsby5jcmVkZW50aWFscy5DcmVkZW50aWFsMsIBCg5EZXZpY2VzU2VydmljZRJaCgxVcGRhdGVEZXZpY2USLC5keG9zLmhhbG8uY3JlZGVudGlhbHMuRGV2aWNlUHJvZmlsZURvY3VtZW50GhwuZHhvcy5jbGllbnQuc2VydmljZXMuRGV2aWNlElQKDFF1ZXJ5RGV2aWNlcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoqLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5RGV2aWNlc1Jlc3BvbnNlMAEyqQEKD0NvbnRhY3RzU2VydmljZRJICgtHZXRDb250YWN0cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRohLmR4b3MuY2xpZW50LnNlcnZpY2VzLkNvbnRhY3RCb29rEkwKDVF1ZXJ5Q29udGFjdHMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaIS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Db250YWN0Qm9vazABMr8JCg1TcGFjZXNTZXJ2aWNlEkIKC0NyZWF0ZVNwYWNlEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhsuZHhvcy5jbGllbnQuc2VydmljZXMuU3BhY2USTwoLVXBkYXRlU3BhY2USKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5VcGRhdGVTcGFjZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSUgoLUXVlcnlTcGFjZXMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5RdWVyeVNwYWNlc1Jlc3BvbnNlMAESWQoQVXBkYXRlTWVtYmVyUm9sZRItLmR4b3MuY2xpZW50LnNlcnZpY2VzLlVwZGF0ZU1lbWJlclJvbGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElEKDEFkbWl0Q29udGFjdBIpLmR4b3MuY2xpZW50LnNlcnZpY2VzLkFkbWl0Q29udGFjdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZgoOSm9pbkJ5U3BhY2VLZXkSKy5keG9zLmNsaWVudC5zZXJ2aWNlcy5Kb2luQnlTcGFjZUtleVJlcXVlc3QaJy5keG9zLmNsaWVudC5zZXJ2aWNlcy5Kb2luU3BhY2VSZXNwb25zZRJPCgtQb3N0TWVzc2FnZRIoLmR4b3MuY2xpZW50LnNlcnZpY2VzLlBvc3RNZXNzYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJvChFTdWJzY3JpYmVNZXNzYWdlcxIuLmR4b3MuY2xpZW50LnNlcnZpY2VzLlN1YnNjcmliZU1lc3NhZ2VzUmVxdWVzdBooLmR4b3MubWVzaC50ZWxlcG9ydC5nb3NzaXAuR29zc2lwTWVzc2FnZTABElkKEFdyaXRlQ3JlZGVudGlhbHMSLS5keG9zLmNsaWVudC5zZXJ2aWNlcy5Xcml0ZUNyZWRlbnRpYWxzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJmChBRdWVyeUNyZWRlbnRpYWxzEi0uZHhvcy5jbGllbnQuc2VydmljZXMuUXVlcnlDcmVkZW50aWFsc1JlcXVlc3QaIS5keG9zLmhhbG8uY3JlZGVudGlhbHMuQ3JlZGVudGlhbDABEmIKC0NyZWF0ZUVwb2NoEiguZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXF1ZXN0GikuZHhvcy5jbGllbnQuc2VydmljZXMuQ3JlYXRlRXBvY2hSZXNwb25zZRJiCgtFeHBvcnRTcGFjZRIoLmR4b3MuY2xpZW50LnNlcnZpY2VzLkV4cG9ydFNwYWNlUmVxdWVzdBopLmR4b3MuY2xpZW50LnNlcnZpY2VzLkV4cG9ydFNwYWNlUmVzcG9uc2USYgoLSW1wb3J0U3BhY2USKC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbXBvcnRTcGFjZVJlcXVlc3QaKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbXBvcnRTcGFjZVJlc3BvbnNlMuMDChJJbnZpdGF0aW9uc1NlcnZpY2USWAoQQ3JlYXRlSW52aXRhdGlvbhIgLmR4b3MuY2xpZW50LnNlcnZpY2VzLkludml0YXRpb24aIC5keG9zLmNsaWVudC5zZXJ2aWNlcy5JbnZpdGF0aW9uMAESZQoQQWNjZXB0SW52aXRhdGlvbhItLmR4b3MuY2xpZW50LnNlcnZpY2VzLkFjY2VwdEludml0YXRpb25SZXF1ZXN0GiAuZHhvcy5jbGllbnQuc2VydmljZXMuSW52aXRhdGlvbjABElMKDEF1dGhlbnRpY2F0ZRIrLmR4b3MuY2xpZW50LnNlcnZpY2VzLkF1dGhlbnRpY2F0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJZChBDYW5jZWxJbnZpdGF0aW9uEi0uZHhvcy5jbGllbnQuc2VydmljZXMuQ2FuY2VsSW52aXRhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSXAoQUXVlcnlJbnZpdGF0aW9ucxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRouLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5SW52aXRhdGlvbnNSZXNwb25zZTABMosFCg5OZXR3b3JrU2VydmljZRJRCgxVcGRhdGVDb25maWcSKS5keG9zLmNsaWVudC5zZXJ2aWNlcy5VcGRhdGVDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkwKC1F1ZXJ5U3RhdHVzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiMuZHhvcy5jbGllbnQuc2VydmljZXMuTmV0d29ya1N0YXR1czABEkIKCUpvaW5Td2FybRIdLmR4b3MuZWRnZS5zaWduYWwuSm9pblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRAoKTGVhdmVTd2FybRIeLmR4b3MuZWRnZS5zaWduYWwuTGVhdmVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElAKClF1ZXJ5U3dhcm0SHi5keG9zLmVkZ2Uuc2lnbmFsLlF1ZXJ5UmVxdWVzdBoiLmR4b3MuZWRnZS5tZXNzZW5nZXIuU3dhcm1SZXNwb25zZRJtChNTdWJzY3JpYmVTd2FybVN0YXRlEjAuZHhvcy5jbGllbnQuc2VydmljZXMuU3Vic2NyaWJlU3dhcm1TdGF0ZVJlcXVlc3QaIi5keG9zLmVkZ2UubWVzc2VuZ2VyLlN3YXJtUmVzcG9uc2UwARJACgtTZW5kTWVzc2FnZRIZLmR4b3MuZWRnZS5zaWduYWwuTWVzc2FnZRoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJLChFTdWJzY3JpYmVNZXNzYWdlcxIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlchoZLmR4b3MuZWRnZS5zaWduYWwuTWVzc2FnZTABMosCChBFZGdlQWdlbnRTZXJ2aWNlEloKD1F1ZXJ5RWRnZVN0YXR1cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRotLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5RWRnZVN0YXR1c1Jlc3BvbnNlMAESPQoLQ3JlYXRlQWdlbnQSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSXAoQUXVlcnlBZ2VudFN0YXR1cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRouLmR4b3MuY2xpZW50LnNlcnZpY2VzLlF1ZXJ5QWdlbnRTdGF0dXNSZXNwb25zZTABYgZwcm90bzM", [file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_dxos_client_invitation, file_dxos_config, file_dxos_devtools_swarm, file_dxos_echo_metadata, file_dxos_echo_timeframe, file_dxos_edge_messenger, file_dxos_edge_signal, file_dxos_error, file_dxos_halo_credentials, file_dxos_keys, file_dxos_mesh_signal, file_dxos_mesh_presence, file_dxos_mesh_teleport_gossip, file_dxos_value]);
49
49
 
50
50
  /**
51
51
  * @generated from message dxos.client.services.UpdateStatusRequest
@@ -1265,6 +1265,98 @@ export type JoinBySpaceKeyRequest = Message<"dxos.client.services.JoinBySpaceKey
1265
1265
  export const JoinBySpaceKeyRequestSchema: GenMessage<JoinBySpaceKeyRequest> = /*@__PURE__*/
1266
1266
  messageDesc(file_dxos_client_services, 33);
1267
1267
 
1268
+ /**
1269
+ * @generated from message dxos.client.services.SpaceArchive
1270
+ */
1271
+ export type SpaceArchive = Message<"dxos.client.services.SpaceArchive"> & {
1272
+ /**
1273
+ * @generated from field: string filename = 1;
1274
+ */
1275
+ filename: string;
1276
+
1277
+ /**
1278
+ * @generated from field: bytes contents = 2;
1279
+ */
1280
+ contents: Uint8Array;
1281
+ };
1282
+
1283
+ /**
1284
+ * Describes the message dxos.client.services.SpaceArchive.
1285
+ * Use `create(SpaceArchiveSchema)` to create a new message.
1286
+ */
1287
+ export const SpaceArchiveSchema: GenMessage<SpaceArchive> = /*@__PURE__*/
1288
+ messageDesc(file_dxos_client_services, 34);
1289
+
1290
+ /**
1291
+ * @generated from message dxos.client.services.ExportSpaceRequest
1292
+ */
1293
+ export type ExportSpaceRequest = Message<"dxos.client.services.ExportSpaceRequest"> & {
1294
+ /**
1295
+ * @generated from field: string space_id = 1;
1296
+ */
1297
+ spaceId: string;
1298
+ };
1299
+
1300
+ /**
1301
+ * Describes the message dxos.client.services.ExportSpaceRequest.
1302
+ * Use `create(ExportSpaceRequestSchema)` to create a new message.
1303
+ */
1304
+ export const ExportSpaceRequestSchema: GenMessage<ExportSpaceRequest> = /*@__PURE__*/
1305
+ messageDesc(file_dxos_client_services, 35);
1306
+
1307
+ /**
1308
+ * @generated from message dxos.client.services.ExportSpaceResponse
1309
+ */
1310
+ export type ExportSpaceResponse = Message<"dxos.client.services.ExportSpaceResponse"> & {
1311
+ /**
1312
+ * @generated from field: dxos.client.services.SpaceArchive archive = 1;
1313
+ */
1314
+ archive?: SpaceArchive;
1315
+ };
1316
+
1317
+ /**
1318
+ * Describes the message dxos.client.services.ExportSpaceResponse.
1319
+ * Use `create(ExportSpaceResponseSchema)` to create a new message.
1320
+ */
1321
+ export const ExportSpaceResponseSchema: GenMessage<ExportSpaceResponse> = /*@__PURE__*/
1322
+ messageDesc(file_dxos_client_services, 36);
1323
+
1324
+ /**
1325
+ * @generated from message dxos.client.services.ImportSpaceRequest
1326
+ */
1327
+ export type ImportSpaceRequest = Message<"dxos.client.services.ImportSpaceRequest"> & {
1328
+ /**
1329
+ * @generated from field: dxos.client.services.SpaceArchive archive = 1;
1330
+ */
1331
+ archive?: SpaceArchive;
1332
+ };
1333
+
1334
+ /**
1335
+ * Describes the message dxos.client.services.ImportSpaceRequest.
1336
+ * Use `create(ImportSpaceRequestSchema)` to create a new message.
1337
+ */
1338
+ export const ImportSpaceRequestSchema: GenMessage<ImportSpaceRequest> = /*@__PURE__*/
1339
+ messageDesc(file_dxos_client_services, 37);
1340
+
1341
+ /**
1342
+ * @generated from message dxos.client.services.ImportSpaceResponse
1343
+ */
1344
+ export type ImportSpaceResponse = Message<"dxos.client.services.ImportSpaceResponse"> & {
1345
+ /**
1346
+ * / the ID of the new space.
1347
+ *
1348
+ * @generated from field: string new_space_id = 1;
1349
+ */
1350
+ newSpaceId: string;
1351
+ };
1352
+
1353
+ /**
1354
+ * Describes the message dxos.client.services.ImportSpaceResponse.
1355
+ * Use `create(ImportSpaceResponseSchema)` to create a new message.
1356
+ */
1357
+ export const ImportSpaceResponseSchema: GenMessage<ImportSpaceResponse> = /*@__PURE__*/
1358
+ messageDesc(file_dxos_client_services, 38);
1359
+
1268
1360
  /**
1269
1361
  * @generated from message dxos.client.services.AcceptInvitationRequest
1270
1362
  */
@@ -1285,7 +1377,7 @@ export type AcceptInvitationRequest = Message<"dxos.client.services.AcceptInvita
1285
1377
  * Use `create(AcceptInvitationRequestSchema)` to create a new message.
1286
1378
  */
1287
1379
  export const AcceptInvitationRequestSchema: GenMessage<AcceptInvitationRequest> = /*@__PURE__*/
1288
- messageDesc(file_dxos_client_services, 34);
1380
+ messageDesc(file_dxos_client_services, 39);
1289
1381
 
1290
1382
  /**
1291
1383
  * @generated from message dxos.client.services.AuthenticationRequest
@@ -1307,7 +1399,7 @@ export type AuthenticationRequest = Message<"dxos.client.services.Authentication
1307
1399
  * Use `create(AuthenticationRequestSchema)` to create a new message.
1308
1400
  */
1309
1401
  export const AuthenticationRequestSchema: GenMessage<AuthenticationRequest> = /*@__PURE__*/
1310
- messageDesc(file_dxos_client_services, 35);
1402
+ messageDesc(file_dxos_client_services, 40);
1311
1403
 
1312
1404
  /**
1313
1405
  * @generated from message dxos.client.services.CancelInvitationRequest
@@ -1324,7 +1416,7 @@ export type CancelInvitationRequest = Message<"dxos.client.services.CancelInvita
1324
1416
  * Use `create(CancelInvitationRequestSchema)` to create a new message.
1325
1417
  */
1326
1418
  export const CancelInvitationRequestSchema: GenMessage<CancelInvitationRequest> = /*@__PURE__*/
1327
- messageDesc(file_dxos_client_services, 36);
1419
+ messageDesc(file_dxos_client_services, 41);
1328
1420
 
1329
1421
  /**
1330
1422
  * @generated from message dxos.client.services.InvitationMethod
@@ -1353,7 +1445,7 @@ export type InvitationMethod = Message<"dxos.client.services.InvitationMethod">
1353
1445
  * Use `create(InvitationMethodSchema)` to create a new message.
1354
1446
  */
1355
1447
  export const InvitationMethodSchema: GenMessage<InvitationMethod> = /*@__PURE__*/
1356
- messageDesc(file_dxos_client_services, 37);
1448
+ messageDesc(file_dxos_client_services, 42);
1357
1449
 
1358
1450
  /**
1359
1451
  * @generated from message dxos.client.services.QueryInvitationsResponse
@@ -1387,7 +1479,7 @@ export type QueryInvitationsResponse = Message<"dxos.client.services.QueryInvita
1387
1479
  * Use `create(QueryInvitationsResponseSchema)` to create a new message.
1388
1480
  */
1389
1481
  export const QueryInvitationsResponseSchema: GenMessage<QueryInvitationsResponse> = /*@__PURE__*/
1390
- messageDesc(file_dxos_client_services, 38);
1482
+ messageDesc(file_dxos_client_services, 43);
1391
1483
 
1392
1484
  /**
1393
1485
  * @generated from enum dxos.client.services.QueryInvitationsResponse.Action
@@ -1418,7 +1510,7 @@ export enum QueryInvitationsResponse_Action {
1418
1510
  * Describes the enum dxos.client.services.QueryInvitationsResponse.Action.
1419
1511
  */
1420
1512
  export const QueryInvitationsResponse_ActionSchema: GenEnum<QueryInvitationsResponse_Action> = /*@__PURE__*/
1421
- enumDesc(file_dxos_client_services, 38, 0);
1513
+ enumDesc(file_dxos_client_services, 43, 0);
1422
1514
 
1423
1515
  /**
1424
1516
  * @generated from enum dxos.client.services.QueryInvitationsResponse.Type
@@ -1439,7 +1531,7 @@ export enum QueryInvitationsResponse_Type {
1439
1531
  * Describes the enum dxos.client.services.QueryInvitationsResponse.Type.
1440
1532
  */
1441
1533
  export const QueryInvitationsResponse_TypeSchema: GenEnum<QueryInvitationsResponse_Type> = /*@__PURE__*/
1442
- enumDesc(file_dxos_client_services, 38, 1);
1534
+ enumDesc(file_dxos_client_services, 43, 1);
1443
1535
 
1444
1536
  /**
1445
1537
  * Informational, consumers must share invitations to receive CancellableInvitation
@@ -1458,7 +1550,7 @@ export type LoadPersistentInvitationsResponse = Message<"dxos.client.services.Lo
1458
1550
  * Use `create(LoadPersistentInvitationsResponseSchema)` to create a new message.
1459
1551
  */
1460
1552
  export const LoadPersistentInvitationsResponseSchema: GenMessage<LoadPersistentInvitationsResponse> = /*@__PURE__*/
1461
- messageDesc(file_dxos_client_services, 39);
1553
+ messageDesc(file_dxos_client_services, 44);
1462
1554
 
1463
1555
  /**
1464
1556
  * @generated from message dxos.client.services.NetworkStatus
@@ -1485,7 +1577,7 @@ export type NetworkStatus = Message<"dxos.client.services.NetworkStatus"> & {
1485
1577
  * Use `create(NetworkStatusSchema)` to create a new message.
1486
1578
  */
1487
1579
  export const NetworkStatusSchema: GenMessage<NetworkStatus> = /*@__PURE__*/
1488
- messageDesc(file_dxos_client_services, 40);
1580
+ messageDesc(file_dxos_client_services, 45);
1489
1581
 
1490
1582
  /**
1491
1583
  * @generated from message dxos.client.services.NetworkStatus.Signal
@@ -1509,7 +1601,7 @@ export type NetworkStatus_Signal = Message<"dxos.client.services.NetworkStatus.S
1509
1601
  * Use `create(NetworkStatus_SignalSchema)` to create a new message.
1510
1602
  */
1511
1603
  export const NetworkStatus_SignalSchema: GenMessage<NetworkStatus_Signal> = /*@__PURE__*/
1512
- messageDesc(file_dxos_client_services, 40, 0);
1604
+ messageDesc(file_dxos_client_services, 45, 0);
1513
1605
 
1514
1606
  /**
1515
1607
  * @generated from message dxos.client.services.UpdateConfigRequest
@@ -1526,7 +1618,7 @@ export type UpdateConfigRequest = Message<"dxos.client.services.UpdateConfigRequ
1526
1618
  * Use `create(UpdateConfigRequestSchema)` to create a new message.
1527
1619
  */
1528
1620
  export const UpdateConfigRequestSchema: GenMessage<UpdateConfigRequest> = /*@__PURE__*/
1529
- messageDesc(file_dxos_client_services, 41);
1621
+ messageDesc(file_dxos_client_services, 46);
1530
1622
 
1531
1623
  /**
1532
1624
  * @generated from message dxos.client.services.SubscribeSwarmStateRequest
@@ -1543,7 +1635,7 @@ export type SubscribeSwarmStateRequest = Message<"dxos.client.services.Subscribe
1543
1635
  * Use `create(SubscribeSwarmStateRequestSchema)` to create a new message.
1544
1636
  */
1545
1637
  export const SubscribeSwarmStateRequestSchema: GenMessage<SubscribeSwarmStateRequest> = /*@__PURE__*/
1546
- messageDesc(file_dxos_client_services, 42);
1638
+ messageDesc(file_dxos_client_services, 47);
1547
1639
 
1548
1640
  /**
1549
1641
  * @generated from message dxos.client.services.QueryEdgeStatusResponse
@@ -1560,7 +1652,7 @@ export type QueryEdgeStatusResponse = Message<"dxos.client.services.QueryEdgeSta
1560
1652
  * Use `create(QueryEdgeStatusResponseSchema)` to create a new message.
1561
1653
  */
1562
1654
  export const QueryEdgeStatusResponseSchema: GenMessage<QueryEdgeStatusResponse> = /*@__PURE__*/
1563
- messageDesc(file_dxos_client_services, 43);
1655
+ messageDesc(file_dxos_client_services, 48);
1564
1656
 
1565
1657
  /**
1566
1658
  * @generated from enum dxos.client.services.QueryEdgeStatusResponse.EdgeStatus
@@ -1581,7 +1673,7 @@ export enum QueryEdgeStatusResponse_EdgeStatus {
1581
1673
  * Describes the enum dxos.client.services.QueryEdgeStatusResponse.EdgeStatus.
1582
1674
  */
1583
1675
  export const QueryEdgeStatusResponse_EdgeStatusSchema: GenEnum<QueryEdgeStatusResponse_EdgeStatus> = /*@__PURE__*/
1584
- enumDesc(file_dxos_client_services, 43, 0);
1676
+ enumDesc(file_dxos_client_services, 48, 0);
1585
1677
 
1586
1678
  /**
1587
1679
  * @generated from message dxos.client.services.QueryAgentStatusResponse
@@ -1598,7 +1690,7 @@ export type QueryAgentStatusResponse = Message<"dxos.client.services.QueryAgentS
1598
1690
  * Use `create(QueryAgentStatusResponseSchema)` to create a new message.
1599
1691
  */
1600
1692
  export const QueryAgentStatusResponseSchema: GenMessage<QueryAgentStatusResponse> = /*@__PURE__*/
1601
- messageDesc(file_dxos_client_services, 44);
1693
+ messageDesc(file_dxos_client_services, 49);
1602
1694
 
1603
1695
  /**
1604
1696
  * @generated from enum dxos.client.services.QueryAgentStatusResponse.AgentStatus
@@ -1629,7 +1721,7 @@ export enum QueryAgentStatusResponse_AgentStatus {
1629
1721
  * Describes the enum dxos.client.services.QueryAgentStatusResponse.AgentStatus.
1630
1722
  */
1631
1723
  export const QueryAgentStatusResponse_AgentStatusSchema: GenEnum<QueryAgentStatusResponse_AgentStatus> = /*@__PURE__*/
1632
- enumDesc(file_dxos_client_services, 44, 0);
1724
+ enumDesc(file_dxos_client_services, 49, 0);
1633
1725
 
1634
1726
  /**
1635
1727
  * @generated from enum dxos.client.services.SystemStatus
@@ -1982,6 +2074,22 @@ export const SpacesService: GenService<{
1982
2074
  input: typeof CreateEpochRequestSchema;
1983
2075
  output: typeof CreateEpochResponseSchema;
1984
2076
  },
2077
+ /**
2078
+ * @generated from rpc dxos.client.services.SpacesService.ExportSpace
2079
+ */
2080
+ exportSpace: {
2081
+ methodKind: "unary";
2082
+ input: typeof ExportSpaceRequestSchema;
2083
+ output: typeof ExportSpaceResponseSchema;
2084
+ },
2085
+ /**
2086
+ * @generated from rpc dxos.client.services.SpacesService.ImportSpace
2087
+ */
2088
+ importSpace: {
2089
+ methodKind: "unary";
2090
+ input: typeof ImportSpaceRequestSchema;
2091
+ output: typeof ImportSpaceResponseSchema;
2092
+ },
1985
2093
  }> = /*@__PURE__*/
1986
2094
  serviceDesc(file_dxos_client_services, 4);
1987
2095
 
@@ -2070,6 +2178,17 @@ export const NetworkService: GenService<{
2070
2178
  input: typeof LeaveRequestSchema;
2071
2179
  output: typeof EmptySchema;
2072
2180
  },
2181
+ /**
2182
+ * *
2183
+ * Query the swarm state without joining it.
2184
+ *
2185
+ * @generated from rpc dxos.client.services.NetworkService.QuerySwarm
2186
+ */
2187
+ querySwarm: {
2188
+ methodKind: "unary";
2189
+ input: typeof QueryRequestSchema;
2190
+ output: typeof SwarmResponseSchema;
2191
+ },
2073
2192
  /**
2074
2193
  * @generated from rpc dxos.client.services.NetworkService.SubscribeSwarmState
2075
2194
  */
@@ -20,7 +20,7 @@ import type { Message as Message$1 } from "@bufbuild/protobuf";
20
20
  * Describes the file dxos/edge/signal.proto.
21
21
  */
22
22
  export const file_dxos_edge_signal: GenFile = /*@__PURE__*/
23
- fileDesc("ChZkeG9zL2VkZ2Uvc2lnbmFsLnByb3RvEhBkeG9zLmVkZ2Uuc2lnbmFsIlsKC0pvaW5SZXF1ZXN0EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRInCgRwZWVyGAIgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyIlwKDExlYXZlUmVxdWVzdBIjCgV0b3BpYxgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSJwoEcGVlchgCIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlciKJAQoHTWVzc2FnZRIpCgZhdXRob3IYASABKAsyGS5keG9zLmVkZ2UubWVzc2VuZ2VyLlBlZXISLAoJcmVjaXBpZW50GAIgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyEiUKB3BheWxvYWQYAyABKAsyFC5nb29nbGUucHJvdG9idWYuQW55Is8DCgpTd2FybUV2ZW50EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRJECg5wZWVyX2F2YWlsYWJsZRgCIAEoCzIqLmR4b3MuZWRnZS5zaWduYWwuU3dhcm1FdmVudC5QZWVyQXZhaWxhYmxlSAASOgoJcGVlcl9sZWZ0GAMgASgLMiUuZHhvcy5lZGdlLnNpZ25hbC5Td2FybUV2ZW50LlBlZXJMZWZ0SAAa2wEKDVBlZXJBdmFpbGFibGUSJwoEcGVlchgBIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlchIpCgVzaW5jZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoFdW50aWwYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIgoVYW5ub3VuY2VfYmFja190b19ob3N0GAQgASgMSAGIAQFCCAoGX3VudGlsQhgKFl9hbm5vdW5jZV9iYWNrX3RvX2hvc3QaMwoIUGVlckxlZnQSJwoEcGVlchgBIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlckIHCgVldmVudGIGcHJvdG8z", [file_google_protobuf_any, file_google_protobuf_timestamp, file_dxos_keys, file_dxos_edge_messenger]);
23
+ fileDesc("ChZkeG9zL2VkZ2Uvc2lnbmFsLnByb3RvEhBkeG9zLmVkZ2Uuc2lnbmFsIlsKC0pvaW5SZXF1ZXN0EiMKBXRvcGljGAEgASgLMhQuZHhvcy5rZXlzLlB1YmxpY0tleRInCgRwZWVyGAIgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyIlwKDExlYXZlUmVxdWVzdBIjCgV0b3BpYxgBIAEoCzIULmR4b3Mua2V5cy5QdWJsaWNLZXkSJwoEcGVlchgCIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlciIzCgxRdWVyeVJlcXVlc3QSIwoFdG9waWMYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5IokBCgdNZXNzYWdlEikKBmF1dGhvchgBIAEoCzIZLmR4b3MuZWRnZS5tZXNzZW5nZXIuUGVlchIsCglyZWNpcGllbnQYAiABKAsyGS5keG9zLmVkZ2UubWVzc2VuZ2VyLlBlZXISJQoHcGF5bG9hZBgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkizwMKClN3YXJtRXZlbnQSIwoFdG9waWMYASABKAsyFC5keG9zLmtleXMuUHVibGljS2V5EkQKDnBlZXJfYXZhaWxhYmxlGAIgASgLMiouZHhvcy5lZGdlLnNpZ25hbC5Td2FybUV2ZW50LlBlZXJBdmFpbGFibGVIABI6CglwZWVyX2xlZnQYAyABKAsyJS5keG9zLmVkZ2Uuc2lnbmFsLlN3YXJtRXZlbnQuUGVlckxlZnRIABrbAQoNUGVlckF2YWlsYWJsZRInCgRwZWVyGAEgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgV1bnRpbBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIiChVhbm5vdW5jZV9iYWNrX3RvX2hvc3QYBCABKAxIAYgBAUIICgZfdW50aWxCGAoWX2Fubm91bmNlX2JhY2tfdG9faG9zdBozCghQZWVyTGVmdBInCgRwZWVyGAEgASgLMhkuZHhvcy5lZGdlLm1lc3Nlbmdlci5QZWVyQgcKBWV2ZW50YgZwcm90bzM", [file_google_protobuf_any, file_google_protobuf_timestamp, file_dxos_keys, file_dxos_edge_messenger]);
24
24
 
25
25
  /**
26
26
  * @generated from message dxos.edge.signal.JoinRequest
@@ -66,6 +66,23 @@ export type LeaveRequest = Message$1<"dxos.edge.signal.LeaveRequest"> & {
66
66
  export const LeaveRequestSchema: GenMessage<LeaveRequest> = /*@__PURE__*/
67
67
  messageDesc(file_dxos_edge_signal, 1);
68
68
 
69
+ /**
70
+ * @generated from message dxos.edge.signal.QueryRequest
71
+ */
72
+ export type QueryRequest = Message$1<"dxos.edge.signal.QueryRequest"> & {
73
+ /**
74
+ * @generated from field: dxos.keys.PublicKey topic = 1;
75
+ */
76
+ topic?: PublicKey;
77
+ };
78
+
79
+ /**
80
+ * Describes the message dxos.edge.signal.QueryRequest.
81
+ * Use `create(QueryRequestSchema)` to create a new message.
82
+ */
83
+ export const QueryRequestSchema: GenMessage<QueryRequest> = /*@__PURE__*/
84
+ messageDesc(file_dxos_edge_signal, 2);
85
+
69
86
  /**
70
87
  * @generated from message dxos.edge.signal.Message
71
88
  */
@@ -91,7 +108,7 @@ export type Message = Message$1<"dxos.edge.signal.Message"> & {
91
108
  * Use `create(MessageSchema)` to create a new message.
92
109
  */
93
110
  export const MessageSchema: GenMessage<Message> = /*@__PURE__*/
94
- messageDesc(file_dxos_edge_signal, 2);
111
+ messageDesc(file_dxos_edge_signal, 3);
95
112
 
96
113
  /**
97
114
  * / Goes on Pub/Sub swarm topic and as a Join stream in RPC.
@@ -131,7 +148,7 @@ export type SwarmEvent = Message$1<"dxos.edge.signal.SwarmEvent"> & {
131
148
  * Use `create(SwarmEventSchema)` to create a new message.
132
149
  */
133
150
  export const SwarmEventSchema: GenMessage<SwarmEvent> = /*@__PURE__*/
134
- messageDesc(file_dxos_edge_signal, 3);
151
+ messageDesc(file_dxos_edge_signal, 4);
135
152
 
136
153
  /**
137
154
  * Announce peer available on swarm.
@@ -170,7 +187,7 @@ export type SwarmEvent_PeerAvailable = Message$1<"dxos.edge.signal.SwarmEvent.Pe
170
187
  * Use `create(SwarmEvent_PeerAvailableSchema)` to create a new message.
171
188
  */
172
189
  export const SwarmEvent_PeerAvailableSchema: GenMessage<SwarmEvent_PeerAvailable> = /*@__PURE__*/
173
- messageDesc(file_dxos_edge_signal, 3, 0);
190
+ messageDesc(file_dxos_edge_signal, 4, 0);
174
191
 
175
192
  /**
176
193
  * @generated from message dxos.edge.signal.SwarmEvent.PeerLeft
@@ -187,5 +204,5 @@ export type SwarmEvent_PeerLeft = Message$1<"dxos.edge.signal.SwarmEvent.PeerLef
187
204
  * Use `create(SwarmEvent_PeerLeftSchema)` to create a new message.
188
205
  */
189
206
  export const SwarmEvent_PeerLeftSchema: GenMessage<SwarmEvent_PeerLeft> = /*@__PURE__*/
190
- messageDesc(file_dxos_edge_signal, 3, 1);
207
+ messageDesc(file_dxos_edge_signal, 4, 1);
191
208
 
@@ -0,0 +1,79 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type EdgeErrorData, type EdgeHttpFailure } from './edge';
6
+
7
+ export class EdgeCallFailedError extends Error {
8
+ public static fromProcessingFailureCause(cause: Error) {
9
+ return new EdgeCallFailedError({
10
+ reason: 'Error processing request.',
11
+ isRetryable: true,
12
+ cause,
13
+ });
14
+ }
15
+
16
+ public static fromHttpFailure(response: Response) {
17
+ return new EdgeCallFailedError({
18
+ reason: `HTTP code ${response.status}: ${response.statusText}.`,
19
+ isRetryable: isRetryableCode(response.status),
20
+ retryAfterMs: getRetryAfterMillis(response),
21
+ });
22
+ }
23
+
24
+ public static fromUnsuccessfulResponse(response: Response, body: EdgeHttpFailure) {
25
+ return new EdgeCallFailedError({
26
+ reason: body.reason,
27
+ errorData: body.errorData,
28
+ isRetryable: body.errorData == null && response.headers.has('Retry-After'),
29
+ retryAfterMs: getRetryAfterMillis(response),
30
+ });
31
+ }
32
+
33
+ readonly reason: string;
34
+ readonly errorData?: EdgeErrorData;
35
+ readonly isRetryable?: boolean;
36
+ readonly retryAfterMs?: number;
37
+
38
+ constructor(args: {
39
+ reason: string;
40
+ isRetryable?: boolean;
41
+ errorData?: EdgeErrorData;
42
+ retryAfterMs?: number;
43
+ cause?: Error;
44
+ }) {
45
+ super(args.reason, { cause: args.cause });
46
+ this.reason = args.reason;
47
+ this.errorData = args.errorData;
48
+ this.retryAfterMs = args.retryAfterMs;
49
+ this.isRetryable = Boolean(args.isRetryable);
50
+ }
51
+ }
52
+
53
+ export class EdgeAuthChallengeError extends EdgeCallFailedError {
54
+ constructor(
55
+ public readonly challenge: string,
56
+ errorData: EdgeErrorData,
57
+ ) {
58
+ super({ reason: 'Auth challenge.', errorData, isRetryable: false });
59
+ }
60
+ }
61
+
62
+ const getRetryAfterMillis = (response: Response) => {
63
+ const retryAfter = Number(response.headers.get('Retry-After'));
64
+ return Number.isNaN(retryAfter) || retryAfter === 0 ? undefined : retryAfter * 1000;
65
+ };
66
+
67
+ export const createRetryableHttpFailure = (args: { reason: any; retryAfterSeconds: number }) => {
68
+ return new Response(JSON.stringify({ success: false, reason: args.reason }), {
69
+ headers: { 'Retry-After': String(args.retryAfterSeconds) },
70
+ });
71
+ };
72
+
73
+ const isRetryableCode = (status: number) => {
74
+ if (status === 501) {
75
+ // Not Implemented
76
+ return false;
77
+ }
78
+ return !(status >= 400 && status < 500);
79
+ };