music-metadata 10.1.0 → 10.2.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.
@@ -1,231 +1,238 @@
1
- import { DataType } from './types.js';
1
+ import { DataType } from '../ebml/types.js';
2
2
  /**
3
3
  * Elements of document type description
4
4
  * Derived from https://github.com/tungol/EBML/blob/master/doctypes/matroska.dtd
5
5
  * Extended with:
6
6
  * - https://www.matroska.org/technical/specs/index.html
7
7
  */
8
- export const elements = {
9
- 440786851: {
10
- name: 'ebml',
11
- container: {
12
- 17030: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1
13
- 17143: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2
14
- 17138: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3
15
- 17139: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4
16
- 17026: { name: 'docType', value: DataType.string }, // 5.1.5
17
- 17031: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6
18
- 17029: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7
19
- }
20
- },
21
- // Matroska segments
22
- 408125543: {
23
- name: 'segment',
24
- container: {
25
- // Meta Seek Information
26
- 290298740: {
27
- name: 'seekHead',
28
- container: {
29
- 19899: {
30
- name: 'seek',
31
- container: {
32
- 21419: { name: 'seekId', value: DataType.binary },
33
- 21420: { name: 'seekPosition', value: DataType.uint }
8
+ export const matroskaDtd = {
9
+ name: 'dtd',
10
+ container: {
11
+ 0x1a45dfa3: {
12
+ name: 'ebml',
13
+ container: {
14
+ 0x4286: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1
15
+ 0x42f7: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2
16
+ 0x42f2: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3
17
+ 0x42f3: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4
18
+ 0x4282: { name: 'docType', value: DataType.string }, // 5.1.5
19
+ 0x4287: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6
20
+ 0x4285: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7
21
+ }
22
+ },
23
+ // Matroska segments
24
+ 0x18538067: {
25
+ name: 'segment',
26
+ container: {
27
+ // Meta Seek Information (also known as MetaSeek)
28
+ 0x114d9b74: {
29
+ name: 'seekHead',
30
+ container: {
31
+ 0x4dbb: {
32
+ name: 'seek',
33
+ multiple: true,
34
+ container: {
35
+ 0x53ab: { name: 'id', value: DataType.binary },
36
+ 0x53ac: { name: 'position', value: DataType.uint }
37
+ }
34
38
  }
35
39
  }
36
- }
37
- },
38
- // Segment Information
39
- 357149030: {
40
- name: 'info',
41
- container: {
42
- 29604: { name: 'uid', value: DataType.uid },
43
- 29572: { name: 'filename', value: DataType.string },
44
- 3979555: { name: 'prevUID', value: DataType.uid },
45
- 3965867: { name: 'prevFilename', value: DataType.string },
46
- 4110627: { name: 'nextUID', value: DataType.uid },
47
- 4096955: { name: 'nextFilename', value: DataType.string },
48
- 2807729: { name: 'timecodeScale', value: DataType.uint },
49
- 17545: { name: 'duration', value: DataType.float },
50
- 17505: { name: 'dateUTC', value: DataType.uint },
51
- 31657: { name: 'title', value: DataType.string },
52
- 19840: { name: 'muxingApp', value: DataType.string },
53
- 22337: { name: 'writingApp', value: DataType.string }
54
- }
55
- },
56
- // Cluster
57
- 524531317: {
58
- name: 'cluster',
59
- multiple: true,
60
- container: {
61
- 231: { name: 'timecode', value: DataType.uid },
62
- 163: { name: 'unknown', value: DataType.binary },
63
- 167: { name: 'position', value: DataType.uid },
64
- 171: { name: 'prevSize', value: DataType.uid }
65
- }
66
- },
67
- // Track
68
- 374648427: {
69
- name: 'tracks',
70
- container: {
71
- 174: {
72
- name: 'entries',
73
- multiple: true,
74
- container: {
75
- 215: { name: 'trackNumber', value: DataType.uint },
76
- 29637: { name: 'uid', value: DataType.uid },
77
- 131: { name: 'trackType', value: DataType.uint },
78
- 185: { name: 'flagEnabled', value: DataType.bool },
79
- 136: { name: 'flagDefault', value: DataType.bool },
80
- 21930: { name: 'flagForced', value: DataType.bool }, // extended
81
- 156: { name: 'flagLacing', value: DataType.bool },
82
- 28135: { name: 'minCache', value: DataType.uint },
83
- 28136: { name: 'maxCache', value: DataType.uint },
84
- 2352003: { name: 'defaultDuration', value: DataType.uint },
85
- 2306383: { name: 'timecodeScale', value: DataType.float },
86
- 21358: { name: 'name', value: DataType.string },
87
- 2274716: { name: 'language', value: DataType.string },
88
- 134: { name: 'codecID', value: DataType.string },
89
- 25506: { name: 'codecPrivate', value: DataType.binary },
90
- 2459272: { name: 'codecName', value: DataType.string },
91
- 3839639: { name: 'codecSettings', value: DataType.string },
92
- 3883072: { name: 'codecInfoUrl', value: DataType.string },
93
- 2536000: { name: 'codecDownloadUrl', value: DataType.string },
94
- 170: { name: 'codecDecodeAll', value: DataType.bool },
95
- 28587: { name: 'trackOverlay', value: DataType.uint },
96
- // Video
97
- 224: {
98
- name: 'video',
99
- container: {
100
- 154: { name: 'flagInterlaced', value: DataType.bool },
101
- 21432: { name: 'stereoMode', value: DataType.uint },
102
- 176: { name: 'pixelWidth', value: DataType.uint },
103
- 186: { name: 'pixelHeight', value: DataType.uint },
104
- 21680: { name: 'displayWidth', value: DataType.uint },
105
- 21690: { name: 'displayHeight', value: DataType.uint },
106
- 21683: { name: 'aspectRatioType', value: DataType.uint },
107
- 3061028: { name: 'colourSpace', value: DataType.uint },
108
- 3126563: { name: 'gammaValue', value: DataType.float }
109
- }
110
- },
111
- // Audio
112
- 225: {
113
- name: 'audio',
114
- container: {
115
- 181: { name: 'samplingFrequency', value: DataType.float },
116
- 30901: { name: 'outputSamplingFrequency', value: DataType.float },
117
- 159: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html
118
- 148: { name: 'channels', value: DataType.uint },
119
- 32123: { name: 'channelPositions', value: DataType.binary },
120
- 25188: { name: 'bitDepth', value: DataType.uint }
121
- }
122
- },
123
- // Content Encoding
124
- 28032: {
125
- name: 'contentEncodings',
126
- container: {
127
- 25152: {
128
- name: 'contentEncoding',
129
- container: {
130
- 20529: { name: 'order', value: DataType.uint },
131
- 20530: { name: 'scope', value: DataType.bool },
132
- 20531: { name: 'type', value: DataType.uint },
133
- 20532: {
134
- name: 'contentEncoding',
135
- container: {
136
- 16980: { name: 'contentCompAlgo', value: DataType.uint },
137
- 16981: { name: 'contentCompSettings', value: DataType.binary }
138
- }
139
- },
140
- 20533: {
141
- name: 'contentEncoding',
142
- container: {
143
- 18401: { name: 'contentEncAlgo', value: DataType.uint },
144
- 18402: { name: 'contentEncKeyID', value: DataType.binary },
145
- 18403: { name: 'contentSignature ', value: DataType.binary },
146
- 18404: { name: 'ContentSigKeyID ', value: DataType.binary },
147
- 18405: { name: 'contentSigAlgo ', value: DataType.uint },
148
- 18406: { name: 'contentSigHashAlgo ', value: DataType.uint }
149
- }
150
- },
151
- 25188: { name: 'bitDepth', value: DataType.uint }
40
+ },
41
+ // Segment Information
42
+ 0x1549a966: {
43
+ name: 'info',
44
+ container: {
45
+ 0x73a4: { name: 'uid', value: DataType.uid },
46
+ 0x7384: { name: 'filename', value: DataType.string },
47
+ 0x3cb923: { name: 'prevUID', value: DataType.uid },
48
+ 0x3c83ab: { name: 'prevFilename', value: DataType.string },
49
+ 0x3eb923: { name: 'nextUID', value: DataType.uid },
50
+ 0x3e83bb: { name: 'nextFilename', value: DataType.string },
51
+ 0x2ad7b1: { name: 'timecodeScale', value: DataType.uint },
52
+ 0x4489: { name: 'duration', value: DataType.float },
53
+ 0x4461: { name: 'dateUTC', value: DataType.uint },
54
+ 0x7ba9: { name: 'title', value: DataType.string },
55
+ 0x4d80: { name: 'muxingApp', value: DataType.string },
56
+ 0x5741: { name: 'writingApp', value: DataType.string }
57
+ }
58
+ },
59
+ // Cluster
60
+ 0x1f43b675: {
61
+ name: 'cluster',
62
+ multiple: true,
63
+ container: {
64
+ 0xe7: { name: 'timecode', value: DataType.uid },
65
+ 0x58d7: { name: 'silentTracks ', multiple: true },
66
+ 0xa7: { name: 'position', value: DataType.uid },
67
+ 0xab: { name: 'prevSize', value: DataType.uid },
68
+ 0xa0: { name: 'blockGroup' },
69
+ 0xa3: { name: 'simpleBlock' }
70
+ }
71
+ },
72
+ // Track
73
+ 0x1654ae6b: {
74
+ name: 'tracks',
75
+ container: {
76
+ 0xae: {
77
+ name: 'entries',
78
+ multiple: true,
79
+ container: {
80
+ 0xd7: { name: 'trackNumber', value: DataType.uint },
81
+ 0x73c5: { name: 'uid', value: DataType.uid },
82
+ 0x83: { name: 'trackType', value: DataType.uint },
83
+ 0xb9: { name: 'flagEnabled', value: DataType.bool },
84
+ 0x88: { name: 'flagDefault', value: DataType.bool },
85
+ 0x55aa: { name: 'flagForced', value: DataType.bool }, // extended
86
+ 0x9c: { name: 'flagLacing', value: DataType.bool },
87
+ 0x6de7: { name: 'minCache', value: DataType.uint },
88
+ 0x6de8: { name: 'maxCache', value: DataType.uint },
89
+ 0x23e383: { name: 'defaultDuration', value: DataType.uint },
90
+ 0x23314f: { name: 'timecodeScale', value: DataType.float },
91
+ 0x536e: { name: 'name', value: DataType.string },
92
+ 0x22b59c: { name: 'language', value: DataType.string },
93
+ 0x86: { name: 'codecID', value: DataType.string },
94
+ 0x63a2: { name: 'codecPrivate', value: DataType.binary },
95
+ 0x258688: { name: 'codecName', value: DataType.string },
96
+ 0x3a9697: { name: 'codecSettings', value: DataType.string },
97
+ 0x3b4040: { name: 'codecInfoUrl', value: DataType.string },
98
+ 0x26b240: { name: 'codecDownloadUrl', value: DataType.string },
99
+ 0xaa: { name: 'codecDecodeAll', value: DataType.bool },
100
+ 0x6fab: { name: 'trackOverlay', value: DataType.uint },
101
+ // Video
102
+ 0xe0: {
103
+ name: 'video',
104
+ container: {
105
+ 0x9a: { name: 'flagInterlaced', value: DataType.bool },
106
+ 0x53b8: { name: 'stereoMode', value: DataType.uint },
107
+ 0xb0: { name: 'pixelWidth', value: DataType.uint },
108
+ 0xba: { name: 'pixelHeight', value: DataType.uint },
109
+ 0x54b0: { name: 'displayWidth', value: DataType.uint },
110
+ 0x54ba: { name: 'displayHeight', value: DataType.uint },
111
+ 0x54b3: { name: 'aspectRatioType', value: DataType.uint },
112
+ 0x2eb524: { name: 'colourSpace', value: DataType.uint },
113
+ 0x2fb523: { name: 'gammaValue', value: DataType.float }
114
+ }
115
+ },
116
+ // Audio
117
+ 0xe1: {
118
+ name: 'audio',
119
+ container: {
120
+ 0xb5: { name: 'samplingFrequency', value: DataType.float },
121
+ 0x78b5: { name: 'outputSamplingFrequency', value: DataType.float },
122
+ 0x9f: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html
123
+ 0x94: { name: 'channels', value: DataType.uint },
124
+ 0x7d7b: { name: 'channelPositions', value: DataType.binary },
125
+ 0x6264: { name: 'bitDepth', value: DataType.uint }
126
+ }
127
+ },
128
+ // Content Encoding
129
+ 0x6d80: {
130
+ name: 'contentEncodings',
131
+ container: {
132
+ 0x6240: {
133
+ name: 'contentEncoding',
134
+ container: {
135
+ 0x5031: { name: 'order', value: DataType.uint },
136
+ 0x5032: { name: 'scope', value: DataType.bool },
137
+ 0x5033: { name: 'type', value: DataType.uint },
138
+ 0x5034: {
139
+ name: 'contentEncoding',
140
+ container: {
141
+ 0x4254: { name: 'contentCompAlgo', value: DataType.uint },
142
+ 0x4255: { name: 'contentCompSettings', value: DataType.binary }
143
+ }
144
+ },
145
+ 0x5035: {
146
+ name: 'contentEncoding',
147
+ container: {
148
+ 0x47e1: { name: 'contentEncAlgo', value: DataType.uint },
149
+ 0x47e2: { name: 'contentEncKeyID', value: DataType.binary },
150
+ 0x47e3: { name: 'contentSignature ', value: DataType.binary },
151
+ 0x47e4: { name: 'ContentSigKeyID ', value: DataType.binary },
152
+ 0x47e5: { name: 'contentSigAlgo ', value: DataType.uint },
153
+ 0x47e6: { name: 'contentSigHashAlgo ', value: DataType.uint }
154
+ }
155
+ },
156
+ 0x6264: { name: 'bitDepth', value: DataType.uint }
157
+ }
152
158
  }
153
159
  }
154
160
  }
155
161
  }
156
162
  }
157
163
  }
158
- }
159
- },
160
- // Cueing Data
161
- 475249515: {
162
- name: 'cues',
163
- container: {
164
- 187: {
165
- name: 'cuePoint',
166
- container: {
167
- 179: { name: 'cueTime', value: DataType.uid },
168
- 183: {
169
- name: 'positions',
170
- container: {
171
- 247: { name: 'track', value: DataType.uint },
172
- 241: { name: 'clusterPosition', value: DataType.uint },
173
- 21368: { name: 'blockNumber', value: DataType.uint },
174
- 234: { name: 'codecState', value: DataType.uint },
175
- 219: {
176
- name: 'reference', container: {
177
- 150: { name: 'time', value: DataType.uint },
178
- 151: { name: 'cluster', value: DataType.uint },
179
- 21343: { name: 'number', value: DataType.uint },
180
- 235: { name: 'codecState', value: DataType.uint }
181
- }
182
- },
183
- 240: { name: 'relativePosition', value: DataType.uint } // extended
164
+ },
165
+ // Cueing Data
166
+ 0x1c53bb6b: {
167
+ name: 'cues',
168
+ container: {
169
+ 0xbb: {
170
+ name: 'cuePoint',
171
+ container: {
172
+ 0xb3: { name: 'cueTime', value: DataType.uid },
173
+ 0xb7: {
174
+ name: 'positions',
175
+ container: {
176
+ 0xf7: { name: 'track', value: DataType.uint },
177
+ 0xf1: { name: 'clusterPosition', value: DataType.uint },
178
+ 0x5378: { name: 'blockNumber', value: DataType.uint },
179
+ 0xea: { name: 'codecState', value: DataType.uint },
180
+ 0xdb: {
181
+ name: 'reference', container: {
182
+ 0x96: { name: 'time', value: DataType.uint },
183
+ 0x97: { name: 'cluster', value: DataType.uint },
184
+ 0x535f: { name: 'number', value: DataType.uint },
185
+ 0xeb: { name: 'codecState', value: DataType.uint }
186
+ }
187
+ },
188
+ 0xf0: { name: 'relativePosition', value: DataType.uint } // extended
189
+ }
184
190
  }
185
191
  }
186
192
  }
187
193
  }
188
- }
189
- },
190
- // Attachment
191
- 423732329: {
192
- name: 'attachments',
193
- container: {
194
- 24999: {
195
- name: 'attachedFiles',
196
- multiple: true,
197
- container: {
198
- 18046: { name: 'description', value: DataType.string },
199
- 18030: { name: 'name', value: DataType.string },
200
- 18016: { name: 'mimeType', value: DataType.string },
201
- 18012: { name: 'data', value: DataType.binary },
202
- 18094: { name: 'uid', value: DataType.uid }
194
+ },
195
+ // Attachment
196
+ 0x1941a469: {
197
+ name: 'attachments',
198
+ container: {
199
+ 0x61a7: {
200
+ name: 'attachedFiles',
201
+ multiple: true,
202
+ container: {
203
+ 0x467e: { name: 'description', value: DataType.string },
204
+ 0x466e: { name: 'name', value: DataType.string },
205
+ 0x4660: { name: 'mimeType', value: DataType.string },
206
+ 0x465c: { name: 'data', value: DataType.binary },
207
+ 0x46ae: { name: 'uid', value: DataType.uid }
208
+ }
203
209
  }
204
210
  }
205
- }
206
- },
207
- // Chapters
208
- 272869232: {
209
- name: 'chapters',
210
- container: {
211
- 17849: {
212
- name: 'editionEntry',
213
- container: {
214
- 182: {
215
- name: 'chapterAtom',
216
- container: {
217
- 29636: { name: 'uid', value: DataType.uid },
218
- 145: { name: 'timeStart', value: DataType.uint },
219
- 146: { name: 'timeEnd', value: DataType.uid },
220
- 152: { name: 'hidden', value: DataType.bool },
221
- 17816: { name: 'enabled', value: DataType.uid },
222
- 143: { name: 'track', container: {
223
- 137: { name: 'trackNumber', value: DataType.uid },
224
- 128: {
225
- name: 'display', container: {
226
- 133: { name: 'string', value: DataType.string },
227
- 17276: { name: 'language ', value: DataType.string },
228
- 17278: { name: 'country ', value: DataType.string }
211
+ },
212
+ // Chapters
213
+ 0x1043a770: {
214
+ name: 'chapters',
215
+ container: {
216
+ 0x45b9: {
217
+ name: 'editionEntry',
218
+ container: {
219
+ 0xb6: {
220
+ name: 'chapterAtom',
221
+ container: {
222
+ 0x73c4: { name: 'uid', value: DataType.uid },
223
+ 0x91: { name: 'timeStart', value: DataType.uint },
224
+ 0x92: { name: 'timeEnd', value: DataType.uid },
225
+ 0x98: { name: 'hidden', value: DataType.bool },
226
+ 0x4598: { name: 'enabled', value: DataType.uid },
227
+ 0x8f: {
228
+ name: 'track', container: {
229
+ 0x89: { name: 'trackNumber', value: DataType.uid },
230
+ 0x80: {
231
+ name: 'display', container: {
232
+ 0x85: { name: 'string', value: DataType.string },
233
+ 0x437c: { name: 'language ', value: DataType.string },
234
+ 0x437e: { name: 'country ', value: DataType.string }
235
+ }
229
236
  }
230
237
  }
231
238
  }
@@ -234,37 +241,37 @@ export const elements = {
234
241
  }
235
242
  }
236
243
  }
237
- }
238
- },
239
- // Tagging
240
- 307544935: {
241
- name: 'tags',
242
- container: {
243
- 29555: {
244
- name: 'tag',
245
- multiple: true,
246
- container: {
247
- 25536: {
248
- name: 'target',
249
- container: {
250
- 25541: { name: 'tagTrackUID', value: DataType.uid },
251
- 25540: { name: 'tagChapterUID', value: DataType.uint },
252
- 25542: { name: 'tagAttachmentUID', value: DataType.uid },
253
- 25546: { name: 'targetType', value: DataType.string }, // extended
254
- 26826: { name: 'targetTypeValue', value: DataType.uint }, // extended
255
- 25545: { name: 'tagEditionUID', value: DataType.uid } // extended
256
- }
257
- },
258
- 26568: {
259
- name: 'simpleTags',
260
- multiple: true,
261
- container: {
262
- 17827: { name: 'name', value: DataType.string },
263
- 17543: { name: 'string', value: DataType.string },
264
- 17541: { name: 'binary', value: DataType.binary },
265
- 17530: { name: 'language', value: DataType.string }, // extended
266
- 17531: { name: 'languageIETF', value: DataType.string }, // extended
267
- 17540: { name: 'default', value: DataType.bool } // extended
244
+ },
245
+ // Tagging
246
+ 0x1254c367: {
247
+ name: 'tags',
248
+ container: {
249
+ 0x7373: {
250
+ name: 'tag',
251
+ multiple: true,
252
+ container: {
253
+ 0x63c0: {
254
+ name: 'target',
255
+ container: {
256
+ 0x63c5: { name: 'tagTrackUID', value: DataType.uid },
257
+ 0x63c4: { name: 'tagChapterUID', value: DataType.uint },
258
+ 0x63c6: { name: 'tagAttachmentUID', value: DataType.uid },
259
+ 0x63ca: { name: 'targetType', value: DataType.string }, // extended
260
+ 0x68ca: { name: 'targetTypeValue', value: DataType.uint }, // extended
261
+ 0x63c9: { name: 'tagEditionUID', value: DataType.uid } // extended
262
+ }
263
+ },
264
+ 0x67c8: {
265
+ name: 'simpleTags',
266
+ multiple: true,
267
+ container: {
268
+ 0x45a3: { name: 'name', value: DataType.string },
269
+ 0x4487: { name: 'string', value: DataType.string },
270
+ 0x4485: { name: 'binary', value: DataType.binary },
271
+ 0x447a: { name: 'language', value: DataType.string }, // extended
272
+ 0x447b: { name: 'languageIETF', value: DataType.string }, // extended
273
+ 0x4484: { name: 'default', value: DataType.bool } // extended
274
+ }
268
275
  }
269
276
  }
270
277
  }
@@ -1,4 +1,4 @@
1
- import { type ITokenizer } from 'strtok3';
1
+ import type { ITokenizer } from 'strtok3';
2
2
  import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3
3
  import { BasicParser } from '../common/BasicParser.js';
4
4
  import type { IOptions } from '../type.js';
@@ -11,11 +11,13 @@ import type { ITokenParser } from '../ParserFactory.js';
11
11
  * WEBM VP8 AUDIO FILE
12
12
  */
13
13
  export declare class MatroskaParser extends BasicParser {
14
- private padding;
15
- private parserMap;
16
- private ebmlMaxIDLength;
17
- private ebmlMaxSizeLength;
18
- constructor();
14
+ private seekHead;
15
+ private seekHeadOffset;
16
+ /**
17
+ * Use index to skip multiple segment/cluster elements at once.
18
+ * Significant performance impact
19
+ */
20
+ private flagUseIndexToSkipClusters;
19
21
  /**
20
22
  * Initialize parser with output (metadata), input (tokenizer) & parsing options (options).
21
23
  * @param {INativeMetadataCollector} metadata Output
@@ -24,21 +26,5 @@ export declare class MatroskaParser extends BasicParser {
24
26
  */
25
27
  init(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): ITokenParser;
26
28
  parse(): Promise<void>;
27
- private parseContainer;
28
- private readVintData;
29
- private readElement;
30
- private readFloat;
31
- private readFlag;
32
- private readUint;
33
- private readString;
34
- private readBuffer;
35
29
  private addTag;
36
- private static readUIntBE;
37
- /**
38
- * Reeds an unsigned integer from a big endian buffer of length `len`
39
- * @param buf Buffer to decode from
40
- * @param len Number of bytes
41
- * @private
42
- */
43
- private static readUIntBeAsBigInt;
44
30
  }