@norskvideo/moq-net 0.1.0

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 (274) hide show
  1. package/README.md +70 -0
  2. package/announced.d.ts +45 -0
  3. package/announced.d.ts.map +1 -0
  4. package/announced.js +70 -0
  5. package/announced.js.map +1 -0
  6. package/bandwidth.d.ts +11 -0
  7. package/bandwidth.d.ts.map +1 -0
  8. package/bandwidth.js +7 -0
  9. package/bandwidth.js.map +1 -0
  10. package/broadcast.d.ts +39 -0
  11. package/broadcast.d.ts.map +1 -0
  12. package/broadcast.js +76 -0
  13. package/broadcast.js.map +1 -0
  14. package/connection/accept.d.ts +15 -0
  15. package/connection/accept.d.ts.map +1 -0
  16. package/connection/accept.js +137 -0
  17. package/connection/accept.js.map +1 -0
  18. package/connection/cert.test.d.ts +2 -0
  19. package/connection/cert.test.d.ts.map +1 -0
  20. package/connection/cert.test.js +26 -0
  21. package/connection/cert.test.js.map +1 -0
  22. package/connection/connect.d.ts +37 -0
  23. package/connection/connect.d.ts.map +1 -0
  24. package/connection/connect.js +348 -0
  25. package/connection/connect.js.map +1 -0
  26. package/connection/established.d.ts +30 -0
  27. package/connection/established.d.ts.map +1 -0
  28. package/connection/established.js +3 -0
  29. package/connection/established.js.map +1 -0
  30. package/connection/handshake.d.ts +10 -0
  31. package/connection/handshake.d.ts.map +1 -0
  32. package/connection/handshake.js +48 -0
  33. package/connection/handshake.js.map +1 -0
  34. package/connection/index.d.ts +5 -0
  35. package/connection/index.d.ts.map +1 -0
  36. package/connection/index.js +6 -0
  37. package/connection/index.js.map +1 -0
  38. package/connection/reload.d.ts +47 -0
  39. package/connection/reload.d.ts.map +1 -0
  40. package/connection/reload.js +137 -0
  41. package/connection/reload.js.map +1 -0
  42. package/group.d.ts +66 -0
  43. package/group.d.ts.map +1 -0
  44. package/group.js +135 -0
  45. package/group.js.map +1 -0
  46. package/group.test.d.ts +2 -0
  47. package/group.test.d.ts.map +1 -0
  48. package/group.test.js +66 -0
  49. package/group.test.js.map +1 -0
  50. package/ietf/adapter.d.ts +65 -0
  51. package/ietf/adapter.d.ts.map +1 -0
  52. package/ietf/adapter.js +626 -0
  53. package/ietf/adapter.js.map +1 -0
  54. package/ietf/connection.d.ts +65 -0
  55. package/ietf/connection.d.ts.map +1 -0
  56. package/ietf/connection.js +248 -0
  57. package/ietf/connection.js.map +1 -0
  58. package/ietf/control.d.ts +135 -0
  59. package/ietf/control.d.ts.map +1 -0
  60. package/ietf/control.js +242 -0
  61. package/ietf/control.js.map +1 -0
  62. package/ietf/fetch.d.ts +64 -0
  63. package/ietf/fetch.d.ts.map +1 -0
  64. package/ietf/fetch.js +100 -0
  65. package/ietf/fetch.js.map +1 -0
  66. package/ietf/goaway.d.ts +15 -0
  67. package/ietf/goaway.d.ts.map +1 -0
  68. package/ietf/goaway.js +34 -0
  69. package/ietf/goaway.js.map +1 -0
  70. package/ietf/ietf.test.d.ts +2 -0
  71. package/ietf/ietf.test.d.ts.map +1 -0
  72. package/ietf/ietf.test.js +873 -0
  73. package/ietf/ietf.test.js.map +1 -0
  74. package/ietf/index.d.ts +18 -0
  75. package/ietf/index.d.ts.map +1 -0
  76. package/ietf/index.js +19 -0
  77. package/ietf/index.js.map +1 -0
  78. package/ietf/message.d.ts +4 -0
  79. package/ietf/message.d.ts.map +1 -0
  80. package/ietf/message.js +54 -0
  81. package/ietf/message.js.map +1 -0
  82. package/ietf/namespace.d.ts +5 -0
  83. package/ietf/namespace.d.ts.map +1 -0
  84. package/ietf/namespace.js +27 -0
  85. package/ietf/namespace.js.map +1 -0
  86. package/ietf/object.d.ts +40 -0
  87. package/ietf/object.d.ts.map +1 -0
  88. package/ietf/object.js +160 -0
  89. package/ietf/object.js.map +1 -0
  90. package/ietf/parameters.d.ts +56 -0
  91. package/ietf/parameters.d.ts.map +1 -0
  92. package/ietf/parameters.js +337 -0
  93. package/ietf/parameters.js.map +1 -0
  94. package/ietf/properties.d.ts +4 -0
  95. package/ietf/properties.d.ts.map +1 -0
  96. package/ietf/properties.js +33 -0
  97. package/ietf/properties.js.map +1 -0
  98. package/ietf/publish.d.ts +68 -0
  99. package/ietf/publish.d.ts.map +1 -0
  100. package/ietf/publish.js +192 -0
  101. package/ietf/publish.js.map +1 -0
  102. package/ietf/publish_namespace.d.ts +68 -0
  103. package/ietf/publish_namespace.d.ts.map +1 -0
  104. package/ietf/publish_namespace.js +176 -0
  105. package/ietf/publish_namespace.js.map +1 -0
  106. package/ietf/publisher.d.ts +50 -0
  107. package/ietf/publisher.d.ts.map +1 -0
  108. package/ietf/publisher.js +330 -0
  109. package/ietf/publisher.js.map +1 -0
  110. package/ietf/request.d.ts +52 -0
  111. package/ietf/request.d.ts.map +1 -0
  112. package/ietf/request.js +119 -0
  113. package/ietf/request.js.map +1 -0
  114. package/ietf/setup.d.ts +38 -0
  115. package/ietf/setup.d.ts.map +1 -0
  116. package/ietf/setup.js +129 -0
  117. package/ietf/setup.js.map +1 -0
  118. package/ietf/subscribe.d.ts +66 -0
  119. package/ietf/subscribe.d.ts.map +1 -0
  120. package/ietf/subscribe.js +276 -0
  121. package/ietf/subscribe.js.map +1 -0
  122. package/ietf/subscribe_namespace.d.ts +101 -0
  123. package/ietf/subscribe_namespace.d.ts.map +1 -0
  124. package/ietf/subscribe_namespace.js +256 -0
  125. package/ietf/subscribe_namespace.js.map +1 -0
  126. package/ietf/subscriber.d.ts +53 -0
  127. package/ietf/subscriber.d.ts.map +1 -0
  128. package/ietf/subscriber.js +404 -0
  129. package/ietf/subscriber.js.map +1 -0
  130. package/ietf/track.d.ts +40 -0
  131. package/ietf/track.d.ts.map +1 -0
  132. package/ietf/track.js +108 -0
  133. package/ietf/track.js.map +1 -0
  134. package/ietf/version.d.ts +56 -0
  135. package/ietf/version.d.ts.map +1 -0
  136. package/ietf/version.js +63 -0
  137. package/ietf/version.js.map +1 -0
  138. package/index.d.ts +22 -0
  139. package/index.d.ts.map +1 -0
  140. package/index.js +23 -0
  141. package/index.js.map +1 -0
  142. package/integration.test.d.ts +2 -0
  143. package/integration.test.d.ts.map +1 -0
  144. package/integration.test.js +90 -0
  145. package/integration.test.js.map +1 -0
  146. package/lite/announce.d.ts +35 -0
  147. package/lite/announce.d.ts.map +1 -0
  148. package/lite/announce.js +166 -0
  149. package/lite/announce.js.map +1 -0
  150. package/lite/connection.d.ts +47 -0
  151. package/lite/connection.d.ts.map +1 -0
  152. package/lite/connection.js +247 -0
  153. package/lite/connection.js.map +1 -0
  154. package/lite/fetch.d.ts +14 -0
  155. package/lite/fetch.d.ts.map +1 -0
  156. package/lite/fetch.js +47 -0
  157. package/lite/fetch.js.map +1 -0
  158. package/lite/goaway.d.ts +10 -0
  159. package/lite/goaway.d.ts.map +1 -0
  160. package/lite/goaway.js +37 -0
  161. package/lite/goaway.js.map +1 -0
  162. package/lite/group.d.ts +18 -0
  163. package/lite/group.d.ts.map +1 -0
  164. package/lite/group.js +46 -0
  165. package/lite/group.js.map +1 -0
  166. package/lite/index.d.ts +11 -0
  167. package/lite/index.d.ts.map +1 -0
  168. package/lite/index.js +12 -0
  169. package/lite/index.js.map +1 -0
  170. package/lite/message.d.ts +5 -0
  171. package/lite/message.d.ts.map +1 -0
  172. package/lite/message.js +51 -0
  173. package/lite/message.js.map +1 -0
  174. package/lite/origin.d.ts +25 -0
  175. package/lite/origin.d.ts.map +1 -0
  176. package/lite/origin.js +35 -0
  177. package/lite/origin.js.map +1 -0
  178. package/lite/probe.d.ts +12 -0
  179. package/lite/probe.d.ts.map +1 -0
  180. package/lite/probe.js +60 -0
  181. package/lite/probe.js.map +1 -0
  182. package/lite/publisher.d.ts +63 -0
  183. package/lite/publisher.d.ts.map +1 -0
  184. package/lite/publisher.js +350 -0
  185. package/lite/publisher.js.map +1 -0
  186. package/lite/session.d.ts +36 -0
  187. package/lite/session.d.ts.map +1 -0
  188. package/lite/session.js +130 -0
  189. package/lite/session.js.map +1 -0
  190. package/lite/setup.d.ts +18 -0
  191. package/lite/setup.d.ts.map +1 -0
  192. package/lite/setup.js +55 -0
  193. package/lite/setup.js.map +1 -0
  194. package/lite/stream.d.ts +23 -0
  195. package/lite/stream.d.ts.map +1 -0
  196. package/lite/stream.js +20 -0
  197. package/lite/stream.js.map +1 -0
  198. package/lite/subscribe.d.ts +111 -0
  199. package/lite/subscribe.d.ts.map +1 -0
  200. package/lite/subscribe.js +341 -0
  201. package/lite/subscribe.js.map +1 -0
  202. package/lite/subscriber.d.ts +80 -0
  203. package/lite/subscriber.d.ts.map +1 -0
  204. package/lite/subscriber.js +316 -0
  205. package/lite/subscriber.js.map +1 -0
  206. package/lite/track.d.ts +38 -0
  207. package/lite/track.d.ts.map +1 -0
  208. package/lite/track.js +81 -0
  209. package/lite/track.js.map +1 -0
  210. package/lite/track.test.d.ts +2 -0
  211. package/lite/track.test.d.ts.map +1 -0
  212. package/lite/track.test.js +53 -0
  213. package/lite/track.test.js.map +1 -0
  214. package/lite/version.d.ts +16 -0
  215. package/lite/version.d.ts.map +1 -0
  216. package/lite/version.js +41 -0
  217. package/lite/version.js.map +1 -0
  218. package/mock.d.ts +16 -0
  219. package/mock.d.ts.map +1 -0
  220. package/mock.js +154 -0
  221. package/mock.js.map +1 -0
  222. package/package.json +27 -0
  223. package/path.d.ts +111 -0
  224. package/path.d.ts.map +1 -0
  225. package/path.js +133 -0
  226. package/path.js.map +1 -0
  227. package/path.test.d.ts +2 -0
  228. package/path.test.d.ts.map +1 -0
  229. package/path.test.js +169 -0
  230. package/path.test.js.map +1 -0
  231. package/stream.d.ts +57 -0
  232. package/stream.d.ts.map +1 -0
  233. package/stream.js +326 -0
  234. package/stream.js.map +1 -0
  235. package/stream.test.d.ts +2 -0
  236. package/stream.test.d.ts.map +1 -0
  237. package/stream.test.js +210 -0
  238. package/stream.test.js.map +1 -0
  239. package/time.d.ts +109 -0
  240. package/time.d.ts.map +1 -0
  241. package/time.js +94 -0
  242. package/time.js.map +1 -0
  243. package/track.d.ts +85 -0
  244. package/track.d.ts.map +1 -0
  245. package/track.js +227 -0
  246. package/track.js.map +1 -0
  247. package/track.test.d.ts +2 -0
  248. package/track.test.d.ts.map +1 -0
  249. package/track.test.js +56 -0
  250. package/track.test.js.map +1 -0
  251. package/util/error.d.ts +3 -0
  252. package/util/error.d.ts.map +1 -0
  253. package/util/error.js +9 -0
  254. package/util/error.js.map +1 -0
  255. package/util/hex.d.ts +3 -0
  256. package/util/hex.d.ts.map +1 -0
  257. package/util/hex.js +16 -0
  258. package/util/hex.js.map +1 -0
  259. package/util/index.d.ts +2 -0
  260. package/util/index.d.ts.map +1 -0
  261. package/util/index.js +3 -0
  262. package/util/index.js.map +1 -0
  263. package/varint.d.ts +36 -0
  264. package/varint.d.ts.map +1 -0
  265. package/varint.js +288 -0
  266. package/varint.js.map +1 -0
  267. package/varint.test.d.ts +2 -0
  268. package/varint.test.d.ts.map +1 -0
  269. package/varint.test.js +106 -0
  270. package/varint.test.js.map +1 -0
  271. package/zod.d.ts +13 -0
  272. package/zod.d.ts.map +1 -0
  273. package/zod.js +19 -0
  274. package/zod.js.map +1 -0
@@ -0,0 +1,341 @@
1
+ /* @ts-self-types="./subscribe.d.ts" */
2
+ import * as Path from "../path.js";
3
+ import * as Message from "./message.js";
4
+ import { Version } from "./version.js";
5
+ export class SubscribeUpdate {
6
+ priority;
7
+ ordered;
8
+ maxLatency;
9
+ startGroup;
10
+ endGroup;
11
+ constructor(props) {
12
+ this.priority = props.priority;
13
+ this.ordered = props.ordered ?? true;
14
+ this.maxLatency = props.maxLatency ?? 0;
15
+ this.startGroup = props.startGroup;
16
+ this.endGroup = props.endGroup;
17
+ }
18
+ async #encode(w, version) {
19
+ switch (version) {
20
+ case Version.DRAFT_01:
21
+ case Version.DRAFT_02:
22
+ await w.u8(this.priority);
23
+ break;
24
+ default:
25
+ await w.u8(this.priority);
26
+ await w.bool(this.ordered);
27
+ await w.u53(this.maxLatency);
28
+ await w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);
29
+ await w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);
30
+ break;
31
+ }
32
+ }
33
+ static async #decode(r, version) {
34
+ switch (version) {
35
+ case Version.DRAFT_01:
36
+ case Version.DRAFT_02:
37
+ return new SubscribeUpdate({ priority: await r.u8() });
38
+ default: {
39
+ const priority = await r.u8();
40
+ const ordered = await r.bool();
41
+ const maxLatency = await r.u53();
42
+ const startGroup = await r.u53();
43
+ const endGroup = await r.u53();
44
+ return new SubscribeUpdate({
45
+ priority,
46
+ ordered,
47
+ maxLatency,
48
+ startGroup: startGroup > 0 ? startGroup - 1 : undefined,
49
+ endGroup: endGroup > 0 ? endGroup - 1 : undefined,
50
+ });
51
+ }
52
+ }
53
+ }
54
+ async encode(w, version) {
55
+ return Message.encode(w, (w) => this.#encode(w, version));
56
+ }
57
+ static async decode(r, version) {
58
+ return Message.decode(r, (r) => SubscribeUpdate.#decode(r, version));
59
+ }
60
+ static async decodeMaybe(r, version) {
61
+ return Message.decodeMaybe(r, (r) => SubscribeUpdate.#decode(r, version));
62
+ }
63
+ }
64
+ export class Subscribe {
65
+ id;
66
+ broadcast;
67
+ track;
68
+ priority;
69
+ ordered;
70
+ maxLatency;
71
+ startGroup;
72
+ endGroup;
73
+ constructor(props) {
74
+ this.id = props.id;
75
+ this.broadcast = props.broadcast;
76
+ this.track = props.track;
77
+ this.priority = props.priority;
78
+ this.ordered = props.ordered ?? false;
79
+ this.maxLatency = props.maxLatency ?? 0;
80
+ this.startGroup = props.startGroup;
81
+ this.endGroup = props.endGroup;
82
+ }
83
+ async #encode(w, version) {
84
+ await w.u62(this.id);
85
+ await w.string(Path.encode(this.broadcast));
86
+ await w.string(this.track);
87
+ await w.u8(this.priority);
88
+ switch (version) {
89
+ case Version.DRAFT_01:
90
+ case Version.DRAFT_02:
91
+ break;
92
+ default:
93
+ await w.bool(this.ordered);
94
+ await w.u53(this.maxLatency);
95
+ await w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);
96
+ await w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);
97
+ break;
98
+ }
99
+ }
100
+ static async #decode(r, version) {
101
+ const id = await r.u62();
102
+ const broadcast = Path.decode(await r.string());
103
+ const track = await r.string();
104
+ const priority = await r.u8();
105
+ switch (version) {
106
+ case Version.DRAFT_01:
107
+ case Version.DRAFT_02:
108
+ return new Subscribe({ id, broadcast, track, priority });
109
+ default: {
110
+ const ordered = await r.bool();
111
+ const maxLatency = await r.u53();
112
+ const startGroup = await r.u53();
113
+ const endGroup = await r.u53();
114
+ return new Subscribe({
115
+ id,
116
+ broadcast,
117
+ track,
118
+ priority,
119
+ ordered,
120
+ maxLatency,
121
+ startGroup: startGroup > 0 ? startGroup - 1 : undefined,
122
+ endGroup: endGroup > 0 ? endGroup - 1 : undefined,
123
+ });
124
+ }
125
+ }
126
+ }
127
+ async encode(w, version) {
128
+ return Message.encode(w, (w) => this.#encode(w, version));
129
+ }
130
+ static async decode(r, version) {
131
+ return Message.decode(r, (r) => Subscribe.#decode(r, version));
132
+ }
133
+ }
134
+ export class SubscribeOk {
135
+ priority;
136
+ ordered;
137
+ maxLatency;
138
+ startGroup;
139
+ endGroup;
140
+ constructor({ priority = 0, ordered = true, maxLatency = 0, startGroup = undefined, endGroup = undefined, }) {
141
+ this.priority = priority;
142
+ this.ordered = ordered;
143
+ this.maxLatency = maxLatency;
144
+ this.startGroup = startGroup;
145
+ this.endGroup = endGroup;
146
+ }
147
+ async #encode(w, version) {
148
+ switch (version) {
149
+ case Version.DRAFT_02:
150
+ // noop
151
+ break;
152
+ case Version.DRAFT_01:
153
+ await w.u8(this.priority ?? 0);
154
+ break;
155
+ case Version.DRAFT_05_WIP:
156
+ // moq-lite-05+: just the resolved absolute start group (raw, 0 is valid).
157
+ await w.u53(this.startGroup ?? 0);
158
+ break;
159
+ default:
160
+ await w.u8(this.priority);
161
+ await w.bool(this.ordered);
162
+ await w.u53(this.maxLatency);
163
+ await w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);
164
+ await w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);
165
+ break;
166
+ }
167
+ }
168
+ static async #decode(version, r) {
169
+ let priority;
170
+ let ordered;
171
+ let maxLatency;
172
+ let startGroup;
173
+ let endGroup;
174
+ switch (version) {
175
+ case Version.DRAFT_02:
176
+ // noop
177
+ break;
178
+ case Version.DRAFT_01:
179
+ priority = await r.u8();
180
+ break;
181
+ case Version.DRAFT_05_WIP:
182
+ // moq-lite-05+: just the resolved absolute start group (raw).
183
+ return new SubscribeOk({ startGroup: await r.u53() });
184
+ default:
185
+ priority = await r.u8();
186
+ ordered = await r.bool();
187
+ maxLatency = await r.u53();
188
+ startGroup = await r.u53();
189
+ endGroup = await r.u53();
190
+ break;
191
+ }
192
+ return new SubscribeOk({
193
+ priority,
194
+ ordered,
195
+ maxLatency,
196
+ startGroup: startGroup !== undefined && startGroup > 0 ? startGroup - 1 : undefined,
197
+ endGroup: endGroup !== undefined && endGroup > 0 ? endGroup - 1 : undefined,
198
+ });
199
+ }
200
+ async encode(w, version) {
201
+ return Message.encode(w, (w) => this.#encode(w, version));
202
+ }
203
+ static async decode(r, version) {
204
+ return Message.decode(r, SubscribeOk.#decode.bind(SubscribeOk, version));
205
+ }
206
+ }
207
+ /// Indicates that one or more groups have been dropped.
208
+ ///
209
+ /// Draft03+ only.
210
+ export class SubscribeDrop {
211
+ start;
212
+ end;
213
+ error;
214
+ constructor(props) {
215
+ this.start = props.start;
216
+ this.end = props.end;
217
+ this.error = props.error;
218
+ }
219
+ async #encode(w) {
220
+ await w.u53(this.start);
221
+ await w.u53(this.end);
222
+ await w.u53(this.error);
223
+ }
224
+ static async #decode(r) {
225
+ return new SubscribeDrop({ start: await r.u53(), end: await r.u53(), error: await r.u53() });
226
+ }
227
+ async encode(w) {
228
+ return Message.encode(w, this.#encode.bind(this));
229
+ }
230
+ static async decode(r) {
231
+ return Message.decode(r, SubscribeDrop.#decode);
232
+ }
233
+ }
234
+ /**
235
+ * Signals that no group after a given sequence will be produced.
236
+ *
237
+ * moq-lite-05+ only.
238
+ */
239
+ export class SubscribeEnd {
240
+ group;
241
+ constructor(props) {
242
+ this.group = props.group;
243
+ }
244
+ async #encode(w) {
245
+ await w.u53(this.group);
246
+ }
247
+ static async #decode(r) {
248
+ return new SubscribeEnd({ group: await r.u53() });
249
+ }
250
+ async encode(w) {
251
+ return Message.encode(w, this.#encode.bind(this));
252
+ }
253
+ static async decode(r) {
254
+ return Message.decode(r, SubscribeEnd.#decode);
255
+ }
256
+ }
257
+ /** Encode a subscribe-stream response (OK / END / DROP) for the negotiated moq-lite version. */
258
+ export async function encodeSubscribeResponse(w, resp, version) {
259
+ switch (version) {
260
+ case Version.DRAFT_01:
261
+ case Version.DRAFT_02:
262
+ if ("ok" in resp) {
263
+ await resp.ok.encode(w, version);
264
+ }
265
+ else {
266
+ throw new Error("only SUBSCRIBE_OK is supported for this version");
267
+ }
268
+ break;
269
+ case Version.DRAFT_05_WIP:
270
+ // moq-lite-05+: 0x0 OK, 0x1 END, 0x2 DROP.
271
+ if ("ok" in resp) {
272
+ await w.u53(0x0);
273
+ await resp.ok.encode(w, version);
274
+ }
275
+ else if ("end" in resp) {
276
+ await w.u53(0x1);
277
+ await resp.end.encode(w);
278
+ }
279
+ else {
280
+ await w.u53(0x2);
281
+ await resp.drop.encode(w);
282
+ }
283
+ break;
284
+ default:
285
+ // Draft03/04: 0x0 OK, 0x1 DROP; no SUBSCRIBE_END.
286
+ if ("ok" in resp) {
287
+ await w.u53(0x0);
288
+ await resp.ok.encode(w, version);
289
+ }
290
+ else if ("drop" in resp) {
291
+ await w.u53(0x1);
292
+ await resp.drop.encode(w);
293
+ }
294
+ else {
295
+ throw new Error("SUBSCRIBE_END is not supported for this version");
296
+ }
297
+ break;
298
+ }
299
+ }
300
+ async function decodeResponse(r, version) {
301
+ switch (version) {
302
+ case Version.DRAFT_01:
303
+ case Version.DRAFT_02:
304
+ return { ok: await SubscribeOk.decode(r, version) };
305
+ case Version.DRAFT_05_WIP: {
306
+ const typ = await r.u53();
307
+ switch (typ) {
308
+ case 0x0:
309
+ return { ok: await SubscribeOk.decode(r, version) };
310
+ case 0x1:
311
+ return { end: await SubscribeEnd.decode(r) };
312
+ case 0x2:
313
+ return { drop: await SubscribeDrop.decode(r) };
314
+ default:
315
+ throw new Error(`unknown subscribe response type: ${typ}`);
316
+ }
317
+ }
318
+ default: {
319
+ const typ = await r.u53();
320
+ switch (typ) {
321
+ case 0x0:
322
+ return { ok: await SubscribeOk.decode(r, version) };
323
+ case 0x1:
324
+ return { drop: await SubscribeDrop.decode(r) };
325
+ default:
326
+ throw new Error(`unknown subscribe response type: ${typ}`);
327
+ }
328
+ }
329
+ }
330
+ }
331
+ /** Decode the next subscribe-stream response for the negotiated moq-lite version. */
332
+ export async function decodeSubscribeResponse(r, version) {
333
+ return decodeResponse(r, version);
334
+ }
335
+ /** Like {@link decodeSubscribeResponse} but returns `undefined` at a clean stream end (FIN). */
336
+ export async function decodeSubscribeResponseMaybe(r, version) {
337
+ if (await r.done())
338
+ return undefined;
339
+ return decodeResponse(r, version);
340
+ }
341
+ //# sourceMappingURL=subscribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/lite/subscribe.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Path from \"../path.ts\";\nimport type { Reader, Writer } from \"../stream.ts\";\nimport * as Message from \"./message.ts\";\nimport { Version } from \"./version.ts\";\n\nexport class SubscribeUpdate {\n\tpriority: number;\n\tordered: boolean;\n\tmaxLatency: number;\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor(props: {\n\t\tpriority: number;\n\t\tordered?: boolean;\n\t\tmaxLatency?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.priority = props.priority;\n\t\tthis.ordered = props.ordered ?? true;\n\t\tthis.maxLatency = props.maxLatency ?? 0;\n\t\tthis.startGroup = props.startGroup;\n\t\tthis.endGroup = props.endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tawait w.bool(this.ordered);\n\t\t\t\tawait w.u53(this.maxLatency);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(r: Reader, version: Version): Promise<SubscribeUpdate> {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\treturn new SubscribeUpdate({ priority: await r.u8() });\n\t\t\tdefault: {\n\t\t\t\tconst priority = await r.u8();\n\t\t\t\tconst ordered = await r.bool();\n\t\t\t\tconst maxLatency = await r.u53();\n\t\t\t\tconst startGroup = await r.u53();\n\t\t\t\tconst endGroup = await r.u53();\n\t\t\t\treturn new SubscribeUpdate({\n\t\t\t\t\tpriority,\n\t\t\t\t\tordered,\n\t\t\t\t\tmaxLatency,\n\t\t\t\t\tstartGroup: startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\t\t\tendGroup: endGroup > 0 ? endGroup - 1 : undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeUpdate> {\n\t\treturn Message.decode(r, (r) => SubscribeUpdate.#decode(r, version));\n\t}\n\n\tstatic async decodeMaybe(r: Reader, version: Version): Promise<SubscribeUpdate | undefined> {\n\t\treturn Message.decodeMaybe(r, (r) => SubscribeUpdate.#decode(r, version));\n\t}\n}\n\nexport class Subscribe {\n\tid: bigint;\n\tbroadcast: Path.Valid;\n\ttrack: string;\n\tpriority: number;\n\tordered: boolean;\n\tmaxLatency: number;\n\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor(props: {\n\t\tid: bigint;\n\t\tbroadcast: Path.Valid;\n\t\ttrack: string;\n\t\tpriority: number;\n\t\tordered?: boolean;\n\t\tmaxLatency?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.id = props.id;\n\t\tthis.broadcast = props.broadcast;\n\t\tthis.track = props.track;\n\t\tthis.priority = props.priority;\n\t\tthis.ordered = props.ordered ?? false;\n\t\tthis.maxLatency = props.maxLatency ?? 0;\n\t\tthis.startGroup = props.startGroup;\n\t\tthis.endGroup = props.endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tawait w.u62(this.id);\n\t\tawait w.string(Path.encode(this.broadcast));\n\t\tawait w.string(this.track);\n\t\tawait w.u8(this.priority);\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait w.bool(this.ordered);\n\t\t\t\tawait w.u53(this.maxLatency);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(r: Reader, version: Version): Promise<Subscribe> {\n\t\tconst id = await r.u62();\n\t\tconst broadcast = Path.decode(await r.string());\n\t\tconst track = await r.string();\n\t\tconst priority = await r.u8();\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\treturn new Subscribe({ id, broadcast, track, priority });\n\t\t\tdefault: {\n\t\t\t\tconst ordered = await r.bool();\n\t\t\t\tconst maxLatency = await r.u53();\n\t\t\t\tconst startGroup = await r.u53();\n\t\t\t\tconst endGroup = await r.u53();\n\t\t\t\treturn new Subscribe({\n\t\t\t\t\tid,\n\t\t\t\t\tbroadcast,\n\t\t\t\t\ttrack,\n\t\t\t\t\tpriority,\n\t\t\t\t\tordered,\n\t\t\t\t\tmaxLatency,\n\t\t\t\t\tstartGroup: startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\t\t\tendGroup: endGroup > 0 ? endGroup - 1 : undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<Subscribe> {\n\t\treturn Message.decode(r, (r) => Subscribe.#decode(r, version));\n\t}\n}\n\nexport class SubscribeOk {\n\tpriority: number;\n\tordered: boolean;\n\tmaxLatency: number;\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor({\n\t\tpriority = 0,\n\t\tordered = true,\n\t\tmaxLatency = 0,\n\t\tstartGroup = undefined,\n\t\tendGroup = undefined,\n\t}: {\n\t\tpriority?: number;\n\t\tordered?: boolean;\n\t\tmaxLatency?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.priority = priority;\n\t\tthis.ordered = ordered;\n\t\tthis.maxLatency = maxLatency;\n\t\tthis.startGroup = startGroup;\n\t\tthis.endGroup = endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\t// noop\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_01:\n\t\t\t\tawait w.u8(this.priority ?? 0);\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_05_WIP:\n\t\t\t\t// moq-lite-05+: just the resolved absolute start group (raw, 0 is valid).\n\t\t\t\tawait w.u53(this.startGroup ?? 0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tawait w.bool(this.ordered);\n\t\t\t\tawait w.u53(this.maxLatency);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(version: Version, r: Reader): Promise<SubscribeOk> {\n\t\tlet priority: number | undefined;\n\t\tlet ordered: boolean | undefined;\n\t\tlet maxLatency: number | undefined;\n\t\tlet startGroup: number | undefined;\n\t\tlet endGroup: number | undefined;\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\t// noop\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_01:\n\t\t\t\tpriority = await r.u8();\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_05_WIP:\n\t\t\t\t// moq-lite-05+: just the resolved absolute start group (raw).\n\t\t\t\treturn new SubscribeOk({ startGroup: await r.u53() });\n\t\t\tdefault:\n\t\t\t\tpriority = await r.u8();\n\t\t\t\tordered = await r.bool();\n\t\t\t\tmaxLatency = await r.u53();\n\t\t\t\tstartGroup = await r.u53();\n\t\t\t\tendGroup = await r.u53();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn new SubscribeOk({\n\t\t\tpriority,\n\t\t\tordered,\n\t\t\tmaxLatency,\n\t\t\tstartGroup: startGroup !== undefined && startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\tendGroup: endGroup !== undefined && endGroup > 0 ? endGroup - 1 : undefined,\n\t\t});\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeOk> {\n\t\treturn Message.decode(r, SubscribeOk.#decode.bind(SubscribeOk, version));\n\t}\n}\n\n/// Indicates that one or more groups have been dropped.\n///\n/// Draft03+ only.\nexport class SubscribeDrop {\n\tstart: number;\n\tend: number;\n\terror: number;\n\n\tconstructor(props: { start: number; end: number; error: number }) {\n\t\tthis.start = props.start;\n\t\tthis.end = props.end;\n\t\tthis.error = props.error;\n\t}\n\n\tasync #encode(w: Writer) {\n\t\tawait w.u53(this.start);\n\t\tawait w.u53(this.end);\n\t\tawait w.u53(this.error);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeDrop> {\n\t\treturn new SubscribeDrop({ start: await r.u53(), end: await r.u53(), error: await r.u53() });\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeDrop> {\n\t\treturn Message.decode(r, SubscribeDrop.#decode);\n\t}\n}\n\n/**\n * Signals that no group after a given sequence will be produced.\n *\n * moq-lite-05+ only.\n */\nexport class SubscribeEnd {\n\tgroup: number;\n\n\tconstructor(props: { group: number }) {\n\t\tthis.group = props.group;\n\t}\n\n\tasync #encode(w: Writer) {\n\t\tawait w.u53(this.group);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeEnd> {\n\t\treturn new SubscribeEnd({ group: await r.u53() });\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeEnd> {\n\t\treturn Message.decode(r, SubscribeEnd.#decode);\n\t}\n}\n\n/**\n * A response message on the subscribe stream.\n *\n * In Draft03/04 each response is prefixed with a type discriminator: 0x0 SUBSCRIBE_OK,\n * 0x1 SUBSCRIBE_DROP. In Draft05 end-of-subscription splits out, so the discriminators\n * become 0x0 SUBSCRIBE_OK, 0x1 SUBSCRIBE_END, 0x2 SUBSCRIBE_DROP.\n *\n * SUBSCRIBE_OK is normally the first message on the response stream.\n */\nexport type SubscribeResponse = { ok: SubscribeOk } | { end: SubscribeEnd } | { drop: SubscribeDrop };\n\n/** Encode a subscribe-stream response (OK / END / DROP) for the negotiated moq-lite version. */\nexport async function encodeSubscribeResponse(w: Writer, resp: SubscribeResponse, version: Version): Promise<void> {\n\tswitch (version) {\n\t\tcase Version.DRAFT_01:\n\t\tcase Version.DRAFT_02:\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"only SUBSCRIBE_OK is supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t\tcase Version.DRAFT_05_WIP:\n\t\t\t// moq-lite-05+: 0x0 OK, 0x1 END, 0x2 DROP.\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait w.u53(0x0);\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else if (\"end\" in resp) {\n\t\t\t\tawait w.u53(0x1);\n\t\t\t\tawait resp.end.encode(w);\n\t\t\t} else {\n\t\t\t\tawait w.u53(0x2);\n\t\t\t\tawait resp.drop.encode(w);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Draft03/04: 0x0 OK, 0x1 DROP; no SUBSCRIBE_END.\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait w.u53(0x0);\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else if (\"drop\" in resp) {\n\t\t\t\tawait w.u53(0x1);\n\t\t\t\tawait resp.drop.encode(w);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"SUBSCRIBE_END is not supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nasync function decodeResponse(r: Reader, version: Version): Promise<SubscribeResponse> {\n\tswitch (version) {\n\t\tcase Version.DRAFT_01:\n\t\tcase Version.DRAFT_02:\n\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\tcase Version.DRAFT_05_WIP: {\n\t\t\tconst typ = await r.u53();\n\t\t\tswitch (typ) {\n\t\t\t\tcase 0x0:\n\t\t\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\t\t\tcase 0x1:\n\t\t\t\t\treturn { end: await SubscribeEnd.decode(r) };\n\t\t\t\tcase 0x2:\n\t\t\t\t\treturn { drop: await SubscribeDrop.decode(r) };\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t}\n\t\t}\n\t\tdefault: {\n\t\t\tconst typ = await r.u53();\n\t\t\tswitch (typ) {\n\t\t\t\tcase 0x0:\n\t\t\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\t\t\tcase 0x1:\n\t\t\t\t\treturn { drop: await SubscribeDrop.decode(r) };\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Decode the next subscribe-stream response for the negotiated moq-lite version. */\nexport async function decodeSubscribeResponse(r: Reader, version: Version): Promise<SubscribeResponse> {\n\treturn decodeResponse(r, version);\n}\n\n/** Like {@link decodeSubscribeResponse} but returns `undefined` at a clean stream end (FIN). */\nexport async function decodeSubscribeResponseMaybe(\n\tr: Reader,\n\tversion: Version,\n): Promise<SubscribeResponse | undefined> {\n\tif (await r.done()) return undefined;\n\treturn decodeResponse(r, version);\n}\n"]}
@@ -0,0 +1,80 @@
1
+ import type { Signal } from "@norskvideo/moq-signals";
2
+ import { Announced } from "../announced";
3
+ import type { Bandwidth } from "../bandwidth";
4
+ import { Broadcast } from "../broadcast";
5
+ import * as Path from "../path";
6
+ import { type Reader } from "../stream";
7
+ import type * as Time from "../time";
8
+ import type { Group as GroupMessage } from "./group";
9
+ import type { Origin } from "./origin";
10
+ import { Version } from "./version";
11
+ /**
12
+ * Options accepted by {@link Subscriber.announced}.
13
+ */
14
+ export interface AnnouncedOptions {
15
+ /**
16
+ * If true, skip announcements whose hop chain contains this connection's
17
+ * own origin id — useful for meshes that reflect announces back. Defaults
18
+ * to false for backwards compatibility: existing code (notably hang.live)
19
+ * relies on seeing its own publishes as the signal that a namespace
20
+ * published successfully.
21
+ */
22
+ ignoreSelf?: boolean;
23
+ }
24
+ /**
25
+ * Handles subscribing to broadcasts and managing their lifecycle.
26
+ *
27
+ * @internal
28
+ */
29
+ export declare class Subscriber {
30
+ #private;
31
+ readonly version: Version;
32
+ readonly origin: Origin;
33
+ /**
34
+ * Creates a new Subscriber instance.
35
+ * @param quic - The WebTransport session to use
36
+ * @param version - The protocol version
37
+ * @param origin - Origin id shared with the Publisher
38
+ * @param recvBandwidth - Optional bandwidth producer for PROBE
39
+ * @param rtt - Optional RTT signal for PROBE
40
+ *
41
+ * @internal
42
+ */
43
+ constructor(quic: WebTransport, version: Version, origin: Origin, recvBandwidth?: Bandwidth, rtt?: Signal<Time.Milli | undefined>);
44
+ /**
45
+ * Subscribe to broadcast announcements under `prefix`.
46
+ *
47
+ * Pass `{ ignoreSelf: true }` to skip announces that have already traversed
48
+ * this connection's {@link origin}.
49
+ */
50
+ announced(prefix?: Path.Valid, options?: AnnouncedOptions): Announced;
51
+ /**
52
+ * Consumes a broadcast from the connection.
53
+ *
54
+ * @param name - The name of the broadcast to consume
55
+ * @returns A Broadcast instance
56
+ */
57
+ consume(path: Path.Valid): Broadcast;
58
+ /**
59
+ * Handles a group message.
60
+ * @param group - The group message
61
+ * @param stream - The stream to read frames from
62
+ *
63
+ * @internal
64
+ */
65
+ runGroup(group: GroupMessage, stream: Reader): Promise<void>;
66
+ /**
67
+ * Opens a PROBE bidi stream to receive bandwidth estimates from the publisher.
68
+ * Returns immediately if recv bandwidth is not supported.
69
+ *
70
+ * Probe is best-effort telemetry: a stream-level failure (peer reset, FIN,
71
+ * missing peer support, transport hiccup) is caught and logged, never
72
+ * propagated to the connection. On exit the bandwidth/RTT signals are
73
+ * cleared so consumers see them as stale.
74
+ *
75
+ * @internal
76
+ */
77
+ runProbe(): Promise<void>;
78
+ close(): void;
79
+ }
80
+ //# sourceMappingURL=subscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../src/lite/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,KAAK,IAAI,MAAM,YAAY,CAAC;AAIxC,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAkB,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,UAAU;;IAItB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAI1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAYxB;;;;;;;;;OASG;IACH,YACC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,SAAS,EACzB,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAOpC;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAM,aAAe,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAI1E;IA6DD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAYnC;IAmHD;;;;;;OAMG;IACG,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAsCjD;IAED;;;;;;;;;;OAUG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB9B;IAED,KAAK,SAMJ;CACD"}