@dan-uni/dan-any 0.2.4 → 0.4.7
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.
- package/README.md +9 -2
- package/dist/index.js +1158 -410
- package/dist/index.umd.min.js +4880 -4357
- package/dist/index.umd.min.js.LICENSE.txt +3 -1
- package/dist/src/ass-gen/ass/create.d.ts +2 -1
- package/dist/src/ass-gen/ass/raw.d.ts +6 -2
- package/dist/src/ass-gen/index.d.ts +2 -0
- package/dist/src/index.d.ts +72 -14
- package/dist/src/proto/gen/bili/dm_pb.d.ts +1 -1
- package/dist/src/proto/gen/danuni_pb.d.ts +35 -8
- package/dist/src/utils/dm-gen.d.ts +32 -46
- package/dist/src/utils/id-gen.d.ts +8 -32
- package/dist/src/utils/platform.d.ts +24 -0
- package/package.json +12 -9
- package/src/ass-gen/__tests__/898651903.xml.ass +1 -1
- package/src/ass-gen/ass/create.ts +12 -2
- package/src/ass-gen/ass/raw.ts +14 -5
- package/src/ass-gen/index.ts +12 -4
- package/src/ass-gen/util/danconvert.ts +2 -2
- package/src/index.ts +175 -42
- package/src/proto/gen/bili/dm_pb.ts +3 -3
- package/src/proto/gen/danuni_pb.ts +46 -14
- package/src/proto/src/danuni.proto +11 -3
- package/src/utils/dm-gen.test.ts +62 -2
- package/src/utils/dm-gen.ts +118 -62
- package/src/utils/id-gen.ts +15 -62
- package/src/utils/platform.ts +38 -0
- package/tsconfig.json +12 -16
package/dist/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { XMLParser } from "fast-xml-parser";
|
|
2
|
+
import hh_mm_ss from "hh-mm-ss";
|
|
3
|
+
import jssha from "jssha";
|
|
4
|
+
import { createCanvas } from "canvas";
|
|
5
|
+
import { brotliCompressSync, brotliDecompressSync, gunzipSync, gzipSync } from "node:zlib";
|
|
6
|
+
import { decode, encode as external_base16384_encode } from "base16384";
|
|
6
7
|
var __webpack_require__ = {};
|
|
7
8
|
(()=>{
|
|
8
|
-
__webpack_require__.d =
|
|
9
|
+
__webpack_require__.d = (exports, definition)=>{
|
|
9
10
|
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
|
|
10
11
|
enumerable: true,
|
|
11
12
|
get: definition[key]
|
|
@@ -13,12 +14,10 @@ var __webpack_require__ = {};
|
|
|
13
14
|
};
|
|
14
15
|
})();
|
|
15
16
|
(()=>{
|
|
16
|
-
__webpack_require__.o =
|
|
17
|
-
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
18
|
-
};
|
|
17
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
19
18
|
})();
|
|
20
19
|
(()=>{
|
|
21
|
-
__webpack_require__.r =
|
|
20
|
+
__webpack_require__.r = (exports)=>{
|
|
22
21
|
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports, Symbol.toStringTag, {
|
|
23
22
|
value: 'Module'
|
|
24
23
|
});
|
|
@@ -27,13 +26,23 @@ var __webpack_require__ = {};
|
|
|
27
26
|
});
|
|
28
27
|
};
|
|
29
28
|
})();
|
|
29
|
+
var platform_namespaceObject = {};
|
|
30
|
+
__webpack_require__.r(platform_namespaceObject);
|
|
31
|
+
__webpack_require__.d(platform_namespaceObject, {
|
|
32
|
+
PlatformDanmakuOnlySource: ()=>platform_PlatformDanmakuOnlySource,
|
|
33
|
+
PlatformDanmakuOnlySources: ()=>PlatformDanmakuOnlySources,
|
|
34
|
+
PlatformDanmakuSources: ()=>PlatformDanmakuSources,
|
|
35
|
+
PlatformInfoSource: ()=>platform_PlatformInfoSource,
|
|
36
|
+
PlatformInfoSources: ()=>PlatformInfoSources,
|
|
37
|
+
PlatformSources: ()=>PlatformSources,
|
|
38
|
+
PlatformVideoSource: ()=>platform_PlatformVideoSource,
|
|
39
|
+
PlatformVideoSources: ()=>PlatformVideoSources
|
|
40
|
+
});
|
|
30
41
|
var id_gen_namespaceObject = {};
|
|
31
42
|
__webpack_require__.r(id_gen_namespaceObject);
|
|
32
43
|
__webpack_require__.d(id_gen_namespaceObject, {
|
|
33
44
|
UniID: ()=>UniID,
|
|
34
|
-
createDMID: ()=>createDMID
|
|
35
|
-
domainPreset: ()=>domainPreset,
|
|
36
|
-
platforms: ()=>platforms
|
|
45
|
+
createDMID: ()=>createDMID
|
|
37
46
|
});
|
|
38
47
|
var dm_gen_namespaceObject = {};
|
|
39
48
|
__webpack_require__.r(dm_gen_namespaceObject);
|
|
@@ -243,7 +252,10 @@ function makeInt64Support() {
|
|
|
243
252
|
const dv = new DataView(new ArrayBuffer(8));
|
|
244
253
|
const ok = "function" == typeof BigInt && "function" == typeof dv.getBigInt64 && "function" == typeof dv.getBigUint64 && "function" == typeof dv.setBigInt64 && "function" == typeof dv.setBigUint64 && ("object" != typeof process || "object" != typeof process.env || "1" !== process.env.BUF_BIGINT_DISABLE);
|
|
245
254
|
if (ok) {
|
|
246
|
-
const MIN = BigInt("-9223372036854775808")
|
|
255
|
+
const MIN = BigInt("-9223372036854775808");
|
|
256
|
+
const MAX = BigInt("9223372036854775807");
|
|
257
|
+
const UMIN = BigInt("0");
|
|
258
|
+
const UMAX = BigInt("18446744073709551615");
|
|
247
259
|
return {
|
|
248
260
|
zero: BigInt(0),
|
|
249
261
|
supported: true,
|
|
@@ -326,8 +338,6 @@ function scalarZeroValue(type, longAsString) {
|
|
|
326
338
|
return "";
|
|
327
339
|
case descriptors_ScalarType.BOOL:
|
|
328
340
|
return false;
|
|
329
|
-
default:
|
|
330
|
-
return 0;
|
|
331
341
|
case descriptors_ScalarType.DOUBLE:
|
|
332
342
|
case descriptors_ScalarType.FLOAT:
|
|
333
343
|
return 0.0;
|
|
@@ -339,6 +349,8 @@ function scalarZeroValue(type, longAsString) {
|
|
|
339
349
|
return longAsString ? "0" : protoInt64.zero;
|
|
340
350
|
case descriptors_ScalarType.BYTES:
|
|
341
351
|
return new Uint8Array(0);
|
|
352
|
+
default:
|
|
353
|
+
return 0;
|
|
342
354
|
}
|
|
343
355
|
}
|
|
344
356
|
function isScalarZeroValue(type, value) {
|
|
@@ -437,8 +449,9 @@ function isReflectList(arg, field) {
|
|
|
437
449
|
var _a, _b, _c, _d;
|
|
438
450
|
if (isObject(arg) && unsafeLocal in arg && "add" in arg && "field" in arg && "function" == typeof arg.field) {
|
|
439
451
|
if (void 0 !== field) {
|
|
440
|
-
const a = field
|
|
441
|
-
|
|
452
|
+
const a = field;
|
|
453
|
+
const b = arg.field();
|
|
454
|
+
return a.listKind == b.listKind && a.scalar === b.scalar && (null == (_a = a.message) ? void 0 : _a.typeName) === (null == (_b = b.message) ? void 0 : _b.typeName) && (null == (_c = a.enum) ? void 0 : _c.typeName) === (null == (_d = b.enum) ? void 0 : _d.typeName);
|
|
442
455
|
}
|
|
443
456
|
return true;
|
|
444
457
|
}
|
|
@@ -449,7 +462,7 @@ function isReflectMap(arg, field) {
|
|
|
449
462
|
if (isObject(arg) && unsafeLocal in arg && "has" in arg && "field" in arg && "function" == typeof arg.field) {
|
|
450
463
|
if (void 0 !== field) {
|
|
451
464
|
const a = field, b = arg.field();
|
|
452
|
-
return a.mapKey === b.mapKey && a.mapKind == b.mapKind && a.scalar === b.scalar && (null
|
|
465
|
+
return a.mapKey === b.mapKey && a.mapKind == b.mapKind && a.scalar === b.scalar && (null == (_a = a.message) ? void 0 : _a.typeName) === (null == (_b = b.message) ? void 0 : _b.typeName) && (null == (_c = a.enum) ? void 0 : _c.typeName) === (null == (_d = b.enum) ? void 0 : _d.typeName);
|
|
453
466
|
}
|
|
454
467
|
return true;
|
|
455
468
|
}
|
|
@@ -474,7 +487,7 @@ function getTextEncoding() {
|
|
|
474
487
|
try {
|
|
475
488
|
encodeURIComponent(text);
|
|
476
489
|
return true;
|
|
477
|
-
} catch (
|
|
490
|
+
} catch (_) {
|
|
478
491
|
return false;
|
|
479
492
|
}
|
|
480
493
|
}
|
|
@@ -492,7 +505,7 @@ var binary_encoding_WireType;
|
|
|
492
505
|
WireType[WireType["Bit32"] = 5] = "Bit32";
|
|
493
506
|
})(binary_encoding_WireType || (binary_encoding_WireType = {}));
|
|
494
507
|
const FLOAT32_MAX = 3.4028234663852886e38;
|
|
495
|
-
const FLOAT32_MIN = -
|
|
508
|
+
const FLOAT32_MIN = -3.4028234663852886e+38;
|
|
496
509
|
const UINT32_MAX = 0xffffffff;
|
|
497
510
|
const INT32_MAX = 0x7fffffff;
|
|
498
511
|
const INT32_MIN = -2147483648;
|
|
@@ -622,12 +635,12 @@ class BinaryWriter {
|
|
|
622
635
|
return this;
|
|
623
636
|
}
|
|
624
637
|
sint64(value) {
|
|
625
|
-
|
|
638
|
+
const tc = protoInt64.enc(value), sign = tc.hi >> 31, lo = tc.lo << 1 ^ sign, hi = (tc.hi << 1 | tc.lo >>> 31) ^ sign;
|
|
626
639
|
varint64write(lo, hi, this.buf);
|
|
627
640
|
return this;
|
|
628
641
|
}
|
|
629
642
|
uint64(value) {
|
|
630
|
-
|
|
643
|
+
const tc = protoInt64.uEnc(value);
|
|
631
644
|
varint64write(tc.lo, tc.hi, this.buf);
|
|
632
645
|
return this;
|
|
633
646
|
}
|
|
@@ -750,7 +763,7 @@ function assertFloat32(arg) {
|
|
|
750
763
|
if ("string" == typeof arg) {
|
|
751
764
|
const o = arg;
|
|
752
765
|
arg = Number(arg);
|
|
753
|
-
if (isNaN(arg) && "NaN" !== o) throw new Error("invalid float32: " + o);
|
|
766
|
+
if (Number.isNaN(arg) && "NaN" !== o) throw new Error("invalid float32: " + o);
|
|
754
767
|
} else if ("number" != typeof arg) throw new Error("invalid float32: " + typeof arg);
|
|
755
768
|
if (Number.isFinite(arg) && (arg > FLOAT32_MAX || arg < FLOAT32_MIN)) throw new Error("invalid float32: " + arg);
|
|
756
769
|
}
|
|
@@ -820,22 +833,22 @@ function checkScalarValue(value, scalar) {
|
|
|
820
833
|
case descriptors_ScalarType.INT64:
|
|
821
834
|
case descriptors_ScalarType.SFIXED64:
|
|
822
835
|
case descriptors_ScalarType.SINT64:
|
|
823
|
-
if ("
|
|
824
|
-
try {
|
|
836
|
+
if ("bigint" == typeof value || "number" == typeof value || "string" == typeof value && value.length > 0) try {
|
|
825
837
|
protoInt64.parse(value);
|
|
826
|
-
|
|
838
|
+
return true;
|
|
839
|
+
} catch (_) {
|
|
827
840
|
return `${value} out of range`;
|
|
828
841
|
}
|
|
829
|
-
return
|
|
842
|
+
return false;
|
|
830
843
|
case descriptors_ScalarType.FIXED64:
|
|
831
844
|
case descriptors_ScalarType.UINT64:
|
|
832
|
-
if ("
|
|
833
|
-
try {
|
|
845
|
+
if ("bigint" == typeof value || "number" == typeof value || "string" == typeof value && value.length > 0) try {
|
|
834
846
|
protoInt64.uParse(value);
|
|
835
|
-
|
|
847
|
+
return true;
|
|
848
|
+
} catch (_) {
|
|
836
849
|
return `${value} out of range`;
|
|
837
850
|
}
|
|
838
|
-
return
|
|
851
|
+
return false;
|
|
839
852
|
}
|
|
840
853
|
}
|
|
841
854
|
function reasonSingular(field, val, details) {
|
|
@@ -1083,7 +1096,7 @@ function reflect_reflect(messageDesc, message, check = true) {
|
|
|
1083
1096
|
class ReflectMessageImpl {
|
|
1084
1097
|
get sortedFields() {
|
|
1085
1098
|
var _a;
|
|
1086
|
-
return null
|
|
1099
|
+
return null != (_a = this._sortedFields) ? _a : this._sortedFields = this.desc.fields.concat().sort((a, b)=>a.number - b.number);
|
|
1087
1100
|
}
|
|
1088
1101
|
constructor(messageDesc, message, check = true){
|
|
1089
1102
|
this.lists = new Map();
|
|
@@ -1452,8 +1465,9 @@ function fromBinary(schema, bytes, options) {
|
|
|
1452
1465
|
function readMessage(message, reader, options, delimited, lengthOrDelimitedFieldNo) {
|
|
1453
1466
|
var _a;
|
|
1454
1467
|
const end = delimited ? reader.len : reader.pos + lengthOrDelimitedFieldNo;
|
|
1455
|
-
let fieldNo
|
|
1456
|
-
|
|
1468
|
+
let fieldNo;
|
|
1469
|
+
let wireType;
|
|
1470
|
+
const unknownFields = null != (_a = message.getUnknown()) ? _a : [];
|
|
1457
1471
|
while(reader.pos < end){
|
|
1458
1472
|
[fieldNo, wireType] = reader.tag();
|
|
1459
1473
|
if (delimited && wireType == binary_encoding_WireType.EndGroup) break;
|
|
@@ -1495,7 +1509,8 @@ function readField(message, reader, field, wireType, options) {
|
|
|
1495
1509
|
}
|
|
1496
1510
|
function readMapEntry(reader, map, options) {
|
|
1497
1511
|
const field = map.field();
|
|
1498
|
-
let key
|
|
1512
|
+
let key;
|
|
1513
|
+
let val;
|
|
1499
1514
|
const end = reader.pos + reader.uint32();
|
|
1500
1515
|
while(reader.pos < end){
|
|
1501
1516
|
const [fieldNo] = reader.tag();
|
|
@@ -1535,16 +1550,10 @@ function readMapEntry(reader, map, options) {
|
|
|
1535
1550
|
function readListField(reader, wireType, list, options) {
|
|
1536
1551
|
var _a;
|
|
1537
1552
|
const field = list.field();
|
|
1538
|
-
if ("message" === field.listKind)
|
|
1539
|
-
|
|
1540
|
-
return;
|
|
1541
|
-
}
|
|
1542
|
-
const scalarType = null !== (_a = field.scalar) && void 0 !== _a ? _a : descriptors_ScalarType.INT32;
|
|
1553
|
+
if ("message" === field.listKind) return void list.add(readMessageField(reader, options, field));
|
|
1554
|
+
const scalarType = null != (_a = field.scalar) ? _a : descriptors_ScalarType.INT32;
|
|
1543
1555
|
const packed = wireType == binary_encoding_WireType.LengthDelimited && scalarType != descriptors_ScalarType.STRING && scalarType != descriptors_ScalarType.BYTES;
|
|
1544
|
-
if (!packed)
|
|
1545
|
-
list.add(readScalar(reader, scalarType));
|
|
1546
|
-
return;
|
|
1547
|
-
}
|
|
1556
|
+
if (!packed) return void list.add(readScalar(reader, scalarType));
|
|
1548
1557
|
const e = reader.uint32() + reader.pos;
|
|
1549
1558
|
while(reader.pos < e)list.add(readScalar(reader, scalarType));
|
|
1550
1559
|
}
|
|
@@ -1602,12 +1611,12 @@ function writeFields(writer, opts, msg) {
|
|
|
1602
1611
|
var _a;
|
|
1603
1612
|
for (const f of msg.sortedFields){
|
|
1604
1613
|
if (!msg.isSet(f)) {
|
|
1605
|
-
if (f.presence == LEGACY_REQUIRED) throw new Error(`cannot encode
|
|
1614
|
+
if (f.presence == LEGACY_REQUIRED) throw new Error(`cannot encode ${f} to binary: required field not set`);
|
|
1606
1615
|
continue;
|
|
1607
1616
|
}
|
|
1608
1617
|
writeField(writer, opts, msg, f);
|
|
1609
1618
|
}
|
|
1610
|
-
if (opts.writeUnknownFields) for (const { no, wireType, data } of null
|
|
1619
|
+
if (opts.writeUnknownFields) for (const { no, wireType, data } of null != (_a = msg.getUnknown()) ? _a : [])writer.tag(no, wireType).raw(data);
|
|
1611
1620
|
return writer;
|
|
1612
1621
|
}
|
|
1613
1622
|
function writeField(writer, opts, msg, field) {
|
|
@@ -1615,7 +1624,7 @@ function writeField(writer, opts, msg, field) {
|
|
|
1615
1624
|
switch(field.fieldKind){
|
|
1616
1625
|
case "scalar":
|
|
1617
1626
|
case "enum":
|
|
1618
|
-
writeScalar(writer, null
|
|
1627
|
+
writeScalar(writer, msg.desc.typeName, field.name, null != (_a = field.scalar) ? _a : descriptors_ScalarType.INT32, field.number, msg.get(field));
|
|
1619
1628
|
break;
|
|
1620
1629
|
case "list":
|
|
1621
1630
|
writeListField(writer, opts, field, msg.get(field));
|
|
@@ -1628,8 +1637,8 @@ function writeField(writer, opts, msg, field) {
|
|
|
1628
1637
|
break;
|
|
1629
1638
|
}
|
|
1630
1639
|
}
|
|
1631
|
-
function writeScalar(writer, scalarType, fieldNo, value) {
|
|
1632
|
-
writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), scalarType, value);
|
|
1640
|
+
function writeScalar(writer, msgName, fieldName, scalarType, fieldNo, value) {
|
|
1641
|
+
writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), msgName, fieldName, scalarType, value);
|
|
1633
1642
|
}
|
|
1634
1643
|
function writeMessageField(writer, opts, field, message) {
|
|
1635
1644
|
if (field.delimitedEncoding) writeFields(writer.tag(field.number, binary_encoding_WireType.StartGroup), opts, message).tag(field.number, binary_encoding_WireType.EndGroup);
|
|
@@ -1641,24 +1650,24 @@ function writeListField(writer, opts, field, list) {
|
|
|
1641
1650
|
for (const item of list)writeMessageField(writer, opts, field, item);
|
|
1642
1651
|
return;
|
|
1643
1652
|
}
|
|
1644
|
-
const scalarType = null
|
|
1653
|
+
const scalarType = null != (_a = field.scalar) ? _a : descriptors_ScalarType.INT32;
|
|
1645
1654
|
if (field.packed) {
|
|
1646
1655
|
if (!list.size) return;
|
|
1647
1656
|
writer.tag(field.number, binary_encoding_WireType.LengthDelimited).fork();
|
|
1648
|
-
for (const item of list)writeScalarValue(writer, scalarType, item);
|
|
1657
|
+
for (const item of list)writeScalarValue(writer, field.parent.typeName, field.name, scalarType, item);
|
|
1649
1658
|
writer.join();
|
|
1650
1659
|
return;
|
|
1651
1660
|
}
|
|
1652
|
-
for (const item of list)writeScalar(writer, scalarType, field.number, item);
|
|
1661
|
+
for (const item of list)writeScalar(writer, field.parent.typeName, field.name, scalarType, field.number, item);
|
|
1653
1662
|
}
|
|
1654
1663
|
function writeMapEntry(writer, opts, field, key, value) {
|
|
1655
1664
|
var _a;
|
|
1656
1665
|
writer.tag(field.number, binary_encoding_WireType.LengthDelimited).fork();
|
|
1657
|
-
writeScalar(writer, field.mapKey, 1, key);
|
|
1666
|
+
writeScalar(writer, field.parent.typeName, field.name, field.mapKey, 1, key);
|
|
1658
1667
|
switch(field.mapKind){
|
|
1659
1668
|
case "scalar":
|
|
1660
1669
|
case "enum":
|
|
1661
|
-
writeScalar(writer, null
|
|
1670
|
+
writeScalar(writer, field.parent.typeName, field.name, null != (_a = field.scalar) ? _a : descriptors_ScalarType.INT32, 2, value);
|
|
1662
1671
|
break;
|
|
1663
1672
|
case "message":
|
|
1664
1673
|
writeFields(writer.tag(2, binary_encoding_WireType.LengthDelimited).fork(), opts, value).join();
|
|
@@ -1666,53 +1675,58 @@ function writeMapEntry(writer, opts, field, key, value) {
|
|
|
1666
1675
|
}
|
|
1667
1676
|
writer.join();
|
|
1668
1677
|
}
|
|
1669
|
-
function writeScalarValue(writer, type, value) {
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1678
|
+
function writeScalarValue(writer, msgName, fieldName, type, value) {
|
|
1679
|
+
try {
|
|
1680
|
+
switch(type){
|
|
1681
|
+
case descriptors_ScalarType.STRING:
|
|
1682
|
+
writer.string(value);
|
|
1683
|
+
break;
|
|
1684
|
+
case descriptors_ScalarType.BOOL:
|
|
1685
|
+
writer.bool(value);
|
|
1686
|
+
break;
|
|
1687
|
+
case descriptors_ScalarType.DOUBLE:
|
|
1688
|
+
writer.double(value);
|
|
1689
|
+
break;
|
|
1690
|
+
case descriptors_ScalarType.FLOAT:
|
|
1691
|
+
writer.float(value);
|
|
1692
|
+
break;
|
|
1693
|
+
case descriptors_ScalarType.INT32:
|
|
1694
|
+
writer.int32(value);
|
|
1695
|
+
break;
|
|
1696
|
+
case descriptors_ScalarType.INT64:
|
|
1697
|
+
writer.int64(value);
|
|
1698
|
+
break;
|
|
1699
|
+
case descriptors_ScalarType.UINT64:
|
|
1700
|
+
writer.uint64(value);
|
|
1701
|
+
break;
|
|
1702
|
+
case descriptors_ScalarType.FIXED64:
|
|
1703
|
+
writer.fixed64(value);
|
|
1704
|
+
break;
|
|
1705
|
+
case descriptors_ScalarType.BYTES:
|
|
1706
|
+
writer.bytes(value);
|
|
1707
|
+
break;
|
|
1708
|
+
case descriptors_ScalarType.FIXED32:
|
|
1709
|
+
writer.fixed32(value);
|
|
1710
|
+
break;
|
|
1711
|
+
case descriptors_ScalarType.SFIXED32:
|
|
1712
|
+
writer.sfixed32(value);
|
|
1713
|
+
break;
|
|
1714
|
+
case descriptors_ScalarType.SFIXED64:
|
|
1715
|
+
writer.sfixed64(value);
|
|
1716
|
+
break;
|
|
1717
|
+
case descriptors_ScalarType.SINT64:
|
|
1718
|
+
writer.sint64(value);
|
|
1719
|
+
break;
|
|
1720
|
+
case descriptors_ScalarType.UINT32:
|
|
1721
|
+
writer.uint32(value);
|
|
1722
|
+
break;
|
|
1723
|
+
case descriptors_ScalarType.SINT32:
|
|
1724
|
+
writer.sint32(value);
|
|
1725
|
+
break;
|
|
1726
|
+
}
|
|
1727
|
+
} catch (e) {
|
|
1728
|
+
if (e instanceof Error) throw new Error(`cannot encode field ${msgName}.${fieldName} to binary: ${e.message}`);
|
|
1729
|
+
throw e;
|
|
1716
1730
|
}
|
|
1717
1731
|
}
|
|
1718
1732
|
function writeTypeOfScalar(type) {
|
|
@@ -1867,11 +1881,11 @@ function parseTextFormatScalarValue(type, value) {
|
|
|
1867
1881
|
case descriptors_ScalarType.FLOAT:
|
|
1868
1882
|
switch(value){
|
|
1869
1883
|
case "inf":
|
|
1870
|
-
return
|
|
1884
|
+
return 1 / 0;
|
|
1871
1885
|
case "-inf":
|
|
1872
|
-
return
|
|
1886
|
+
return -1 / 0;
|
|
1873
1887
|
case "nan":
|
|
1874
|
-
return
|
|
1888
|
+
return NaN;
|
|
1875
1889
|
default:
|
|
1876
1890
|
return parseFloat(value);
|
|
1877
1891
|
}
|
|
@@ -1942,7 +1956,7 @@ function unescapeBytesDefaultValue(str) {
|
|
|
1942
1956
|
const t = input.take(2);
|
|
1943
1957
|
if (false === t) return false;
|
|
1944
1958
|
const n = parseInt(s + t, 8);
|
|
1945
|
-
if (isNaN(n)) return false;
|
|
1959
|
+
if (Number.isNaN(n)) return false;
|
|
1946
1960
|
b.push(n);
|
|
1947
1961
|
break;
|
|
1948
1962
|
}
|
|
@@ -1952,7 +1966,7 @@ function unescapeBytesDefaultValue(str) {
|
|
|
1952
1966
|
const t = input.take(2);
|
|
1953
1967
|
if (false === t) return false;
|
|
1954
1968
|
const n = parseInt(s + t, 16);
|
|
1955
|
-
if (isNaN(n)) return false;
|
|
1969
|
+
if (Number.isNaN(n)) return false;
|
|
1956
1970
|
b.push(n);
|
|
1957
1971
|
break;
|
|
1958
1972
|
}
|
|
@@ -1962,7 +1976,7 @@ function unescapeBytesDefaultValue(str) {
|
|
|
1962
1976
|
const t = input.take(4);
|
|
1963
1977
|
if (false === t) return false;
|
|
1964
1978
|
const n = parseInt(s + t, 16);
|
|
1965
|
-
if (isNaN(n)) return false;
|
|
1979
|
+
if (Number.isNaN(n)) return false;
|
|
1966
1980
|
const chunk = new Uint8Array(4);
|
|
1967
1981
|
const view = new DataView(chunk.buffer);
|
|
1968
1982
|
view.setInt32(0, n, true);
|
|
@@ -2090,7 +2104,7 @@ function createBaseRegistry() {
|
|
|
2090
2104
|
},
|
|
2091
2105
|
getExtensionFor (extendee, no) {
|
|
2092
2106
|
var _a;
|
|
2093
|
-
return null
|
|
2107
|
+
return null == (_a = extendees.get(extendee.typeName)) ? void 0 : _a.get(no);
|
|
2094
2108
|
},
|
|
2095
2109
|
getService (typeName) {
|
|
2096
2110
|
const t = types.get(typeName);
|
|
@@ -2122,7 +2136,8 @@ const featureDefaults = {
|
|
|
2122
2136
|
repeatedFieldEncoding: 2,
|
|
2123
2137
|
utf8Validation: 3,
|
|
2124
2138
|
messageEncoding: 1,
|
|
2125
|
-
jsonFormat: 2
|
|
2139
|
+
jsonFormat: 2,
|
|
2140
|
+
enforceNamingStyle: 2
|
|
2126
2141
|
},
|
|
2127
2142
|
999: {
|
|
2128
2143
|
fieldPresence: 2,
|
|
@@ -2130,7 +2145,8 @@ const featureDefaults = {
|
|
|
2130
2145
|
repeatedFieldEncoding: 1,
|
|
2131
2146
|
utf8Validation: 2,
|
|
2132
2147
|
messageEncoding: 1,
|
|
2133
|
-
jsonFormat: 1
|
|
2148
|
+
jsonFormat: 1,
|
|
2149
|
+
enforceNamingStyle: 2
|
|
2134
2150
|
},
|
|
2135
2151
|
1000: {
|
|
2136
2152
|
fieldPresence: 1,
|
|
@@ -2138,7 +2154,8 @@ const featureDefaults = {
|
|
|
2138
2154
|
repeatedFieldEncoding: 1,
|
|
2139
2155
|
utf8Validation: 2,
|
|
2140
2156
|
messageEncoding: 1,
|
|
2141
|
-
jsonFormat: 1
|
|
2157
|
+
jsonFormat: 1,
|
|
2158
|
+
enforceNamingStyle: 2
|
|
2142
2159
|
}
|
|
2143
2160
|
};
|
|
2144
2161
|
function addFile(proto, reg) {
|
|
@@ -2146,7 +2163,7 @@ function addFile(proto, reg) {
|
|
|
2146
2163
|
const file = {
|
|
2147
2164
|
kind: "file",
|
|
2148
2165
|
proto,
|
|
2149
|
-
deprecated: null
|
|
2166
|
+
deprecated: null != (_b = null == (_a = proto.options) ? void 0 : _a.deprecated) ? _b : false,
|
|
2150
2167
|
edition: getFileEdition(proto),
|
|
2151
2168
|
name: proto.name.replace(/\.proto$/, ""),
|
|
2152
2169
|
dependencies: findFileDependencies(proto, reg),
|
|
@@ -2165,7 +2182,7 @@ function addFile(proto, reg) {
|
|
|
2165
2182
|
},
|
|
2166
2183
|
add (desc) {
|
|
2167
2184
|
var _a;
|
|
2168
|
-
assert((null
|
|
2185
|
+
assert((null == (_a = desc.proto.options) ? void 0 : _a.mapEntry) === true);
|
|
2169
2186
|
mapEntriesStore.set(desc.typeName, desc);
|
|
2170
2187
|
}
|
|
2171
2188
|
};
|
|
@@ -2220,12 +2237,12 @@ function addFields(message, reg, mapEntries) {
|
|
|
2220
2237
|
for (const child of message.nestedMessages)addFields(child, reg, mapEntries);
|
|
2221
2238
|
}
|
|
2222
2239
|
function addEnum(proto, file, parent, reg) {
|
|
2223
|
-
var _a, _b, _c;
|
|
2240
|
+
var _a, _b, _c, _d, _e;
|
|
2224
2241
|
const sharedPrefix = findEnumSharedPrefix(proto.name, proto.value);
|
|
2225
2242
|
const desc = {
|
|
2226
2243
|
kind: "enum",
|
|
2227
2244
|
proto,
|
|
2228
|
-
deprecated: null
|
|
2245
|
+
deprecated: null != (_b = null == (_a = proto.options) ? void 0 : _a.deprecated) ? _b : false,
|
|
2229
2246
|
file,
|
|
2230
2247
|
parent,
|
|
2231
2248
|
open: true,
|
|
@@ -2240,30 +2257,29 @@ function addEnum(proto, file, parent, reg) {
|
|
|
2240
2257
|
};
|
|
2241
2258
|
desc.open = isEnumOpen(desc);
|
|
2242
2259
|
reg.add(desc);
|
|
2243
|
-
proto.value
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
desc.values.push(desc.value[proto.number] = {
|
|
2260
|
+
for (const p of proto.value){
|
|
2261
|
+
const name = p.name;
|
|
2262
|
+
desc.values.push(desc.value[p.number] = {
|
|
2247
2263
|
kind: "enum_value",
|
|
2248
|
-
proto,
|
|
2249
|
-
deprecated: null
|
|
2264
|
+
proto: p,
|
|
2265
|
+
deprecated: null != (_d = null == (_c = p.options) ? void 0 : _c.deprecated) ? _d : false,
|
|
2250
2266
|
parent: desc,
|
|
2251
2267
|
name,
|
|
2252
2268
|
localName: safeObjectProperty(void 0 == sharedPrefix ? name : name.substring(sharedPrefix.length)),
|
|
2253
|
-
number:
|
|
2269
|
+
number: p.number,
|
|
2254
2270
|
toString () {
|
|
2255
2271
|
return `enum value ${desc.typeName}.${name}`;
|
|
2256
2272
|
}
|
|
2257
2273
|
});
|
|
2258
|
-
}
|
|
2259
|
-
(null
|
|
2274
|
+
}
|
|
2275
|
+
(null != (_e = null == parent ? void 0 : parent.nestedEnums) ? _e : file.enums).push(desc);
|
|
2260
2276
|
}
|
|
2261
2277
|
function addMessage(proto, file, parent, reg, mapEntries) {
|
|
2262
2278
|
var _a, _b, _c, _d;
|
|
2263
2279
|
const desc = {
|
|
2264
2280
|
kind: "message",
|
|
2265
2281
|
proto,
|
|
2266
|
-
deprecated: null
|
|
2282
|
+
deprecated: null != (_b = null == (_a = proto.options) ? void 0 : _a.deprecated) ? _b : false,
|
|
2267
2283
|
file,
|
|
2268
2284
|
parent,
|
|
2269
2285
|
name: proto.name,
|
|
@@ -2279,9 +2295,9 @@ function addMessage(proto, file, parent, reg, mapEntries) {
|
|
|
2279
2295
|
return `message ${this.typeName}`;
|
|
2280
2296
|
}
|
|
2281
2297
|
};
|
|
2282
|
-
if ((null
|
|
2298
|
+
if ((null == (_c = proto.options) ? void 0 : _c.mapEntry) === true) mapEntries.add(desc);
|
|
2283
2299
|
else {
|
|
2284
|
-
(null
|
|
2300
|
+
(null != (_d = null == parent ? void 0 : parent.nestedMessages) ? _d : file.messages).push(desc);
|
|
2285
2301
|
reg.add(desc);
|
|
2286
2302
|
}
|
|
2287
2303
|
for (const enumProto of proto.enumType)addEnum(enumProto, file, desc, reg);
|
|
@@ -2292,7 +2308,7 @@ function addService(proto, file, reg) {
|
|
|
2292
2308
|
const desc = {
|
|
2293
2309
|
kind: "service",
|
|
2294
2310
|
proto,
|
|
2295
|
-
deprecated: null
|
|
2311
|
+
deprecated: null != (_b = null == (_a = proto.options) ? void 0 : _a.deprecated) ? _b : false,
|
|
2296
2312
|
file,
|
|
2297
2313
|
name: proto.name,
|
|
2298
2314
|
typeName: makeTypeName(proto, void 0, file),
|
|
@@ -2322,14 +2338,14 @@ function newMethod(proto, parent, reg) {
|
|
|
2322
2338
|
return {
|
|
2323
2339
|
kind: "rpc",
|
|
2324
2340
|
proto,
|
|
2325
|
-
deprecated: null
|
|
2341
|
+
deprecated: null != (_b = null == (_a = proto.options) ? void 0 : _a.deprecated) ? _b : false,
|
|
2326
2342
|
parent,
|
|
2327
2343
|
name,
|
|
2328
2344
|
localName: safeObjectProperty(name.length ? safeObjectProperty(name[0].toLowerCase() + name.substring(1)) : name),
|
|
2329
2345
|
methodKind,
|
|
2330
2346
|
input,
|
|
2331
2347
|
output,
|
|
2332
|
-
idempotency: null
|
|
2348
|
+
idempotency: null != (_d = null == (_c = proto.options) ? void 0 : _c.idempotencyLevel) ? _d : IDEMPOTENCY_UNKNOWN,
|
|
2333
2349
|
toString () {
|
|
2334
2350
|
return `rpc ${parent.typeName}.${name}`;
|
|
2335
2351
|
}
|
|
@@ -2355,7 +2371,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
|
2355
2371
|
const field = {
|
|
2356
2372
|
kind: "field",
|
|
2357
2373
|
proto,
|
|
2358
|
-
deprecated: null
|
|
2374
|
+
deprecated: null != (_b = null == (_a = proto.options) ? void 0 : _a.deprecated) ? _b : false,
|
|
2359
2375
|
name: proto.name,
|
|
2360
2376
|
number: proto.number,
|
|
2361
2377
|
scalar: void 0,
|
|
@@ -2395,7 +2411,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
|
2395
2411
|
}
|
|
2396
2412
|
const label = proto.label;
|
|
2397
2413
|
const type = proto.type;
|
|
2398
|
-
const jstype = null
|
|
2414
|
+
const jstype = null == (_c = proto.options) ? void 0 : _c.jstype;
|
|
2399
2415
|
if (label === LABEL_REPEATED) {
|
|
2400
2416
|
const mapEntry = type == TYPE_MESSAGE ? null == mapEntries ? void 0 : mapEntries.get(trimLeadingDot(proto.typeName)) : void 0;
|
|
2401
2417
|
if (mapEntry) {
|
|
@@ -2512,12 +2528,13 @@ function getFieldPresence(proto, oneof, isExtension, parent) {
|
|
|
2512
2528
|
if (proto.label == LABEL_REQUIRED) return registry_LEGACY_REQUIRED;
|
|
2513
2529
|
if (proto.label == LABEL_REPEATED) return registry_IMPLICIT;
|
|
2514
2530
|
if (!!oneof || proto.proto3Optional) return EXPLICIT;
|
|
2515
|
-
if (proto.type == TYPE_MESSAGE) return EXPLICIT;
|
|
2516
2531
|
if (isExtension) return EXPLICIT;
|
|
2517
|
-
|
|
2532
|
+
const resolved = resolveFeature("fieldPresence", {
|
|
2518
2533
|
proto,
|
|
2519
2534
|
parent
|
|
2520
2535
|
});
|
|
2536
|
+
if (resolved == registry_IMPLICIT && (proto.type == TYPE_MESSAGE || proto.type == TYPE_GROUP)) return EXPLICIT;
|
|
2537
|
+
return resolved;
|
|
2521
2538
|
}
|
|
2522
2539
|
function isPackedField(proto, parent) {
|
|
2523
2540
|
if (proto.label != LABEL_REPEATED) return false;
|
|
@@ -2548,7 +2565,7 @@ function isEnumOpen(desc) {
|
|
|
2548
2565
|
var _a;
|
|
2549
2566
|
return OPEN == resolveFeature("enumType", {
|
|
2550
2567
|
proto: desc.proto,
|
|
2551
|
-
parent: null
|
|
2568
|
+
parent: null != (_a = desc.parent) ? _a : desc.file
|
|
2552
2569
|
});
|
|
2553
2570
|
}
|
|
2554
2571
|
function isDelimitedEncoding(proto, parent) {
|
|
@@ -2560,13 +2577,13 @@ function isDelimitedEncoding(proto, parent) {
|
|
|
2560
2577
|
}
|
|
2561
2578
|
function resolveFeature(name, ref) {
|
|
2562
2579
|
var _a, _b;
|
|
2563
|
-
const featureSet = null
|
|
2580
|
+
const featureSet = null == (_a = ref.proto.options) ? void 0 : _a.features;
|
|
2564
2581
|
if (featureSet) {
|
|
2565
2582
|
const val = featureSet[name];
|
|
2566
2583
|
if (0 != val) return val;
|
|
2567
2584
|
}
|
|
2568
2585
|
if ("kind" in ref) {
|
|
2569
|
-
if ("message" == ref.kind) return resolveFeature(name, null
|
|
2586
|
+
if ("message" == ref.kind) return resolveFeature(name, null != (_b = ref.parent) ? _b : ref.file);
|
|
2570
2587
|
const editionDefaults = featureDefaults[ref.edition];
|
|
2571
2588
|
if (!editionDefaults) throw new Error(`feature default for edition ${ref.edition} not found`);
|
|
2572
2589
|
return editionDefaults[name];
|
|
@@ -2604,13 +2621,13 @@ function bootDescriptorProto(init) {
|
|
|
2604
2621
|
return {
|
|
2605
2622
|
$typeName: "google.protobuf.DescriptorProto",
|
|
2606
2623
|
name: init.name,
|
|
2607
|
-
field: null
|
|
2624
|
+
field: null != (_b = null == (_a = init.field) ? void 0 : _a.map(bootFieldDescriptorProto)) ? _b : [],
|
|
2608
2625
|
extension: [],
|
|
2609
|
-
nestedType: null
|
|
2610
|
-
enumType: null
|
|
2611
|
-
extensionRange: null
|
|
2626
|
+
nestedType: null != (_d = null == (_c = init.nestedType) ? void 0 : _c.map(bootDescriptorProto)) ? _d : [],
|
|
2627
|
+
enumType: null != (_f = null == (_e = init.enumType) ? void 0 : _e.map(bootEnumDescriptorProto)) ? _f : [],
|
|
2628
|
+
extensionRange: null != (_h = null == (_g = init.extensionRange) ? void 0 : _g.map((e)=>Object.assign({
|
|
2612
2629
|
$typeName: "google.protobuf.DescriptorProto.ExtensionRange"
|
|
2613
|
-
}, e)))
|
|
2630
|
+
}, e))) ? _h : [],
|
|
2614
2631
|
oneofDecl: [],
|
|
2615
2632
|
reservedRange: [],
|
|
2616
2633
|
reservedName: []
|
|
@@ -2648,10 +2665,10 @@ function bootFieldOptions(init) {
|
|
|
2648
2665
|
return Object.assign(proto, Object.assign(Object.assign({
|
|
2649
2666
|
$typeName: "google.protobuf.FieldOptions"
|
|
2650
2667
|
}, init), {
|
|
2651
|
-
targets: null
|
|
2652
|
-
editionDefaults: null
|
|
2668
|
+
targets: null != (_a = init.targets) ? _a : [],
|
|
2669
|
+
editionDefaults: null != (_c = null == (_b = init.editionDefaults) ? void 0 : _b.map((e)=>Object.assign({
|
|
2653
2670
|
$typeName: "google.protobuf.FieldOptions.EditionDefault"
|
|
2654
|
-
}, e)))
|
|
2671
|
+
}, e))) ? _c : [],
|
|
2655
2672
|
uninterpretedOption: []
|
|
2656
2673
|
}));
|
|
2657
2674
|
}
|
|
@@ -2683,6 +2700,12 @@ const file_google_protobuf_descriptor = /*@__PURE__*/ boot_boot({
|
|
|
2683
2700
|
label: 3,
|
|
2684
2701
|
typeName: ".google.protobuf.FileDescriptorProto"
|
|
2685
2702
|
}
|
|
2703
|
+
],
|
|
2704
|
+
extensionRange: [
|
|
2705
|
+
{
|
|
2706
|
+
start: 536000000,
|
|
2707
|
+
end: 536000001
|
|
2708
|
+
}
|
|
2686
2709
|
]
|
|
2687
2710
|
},
|
|
2688
2711
|
{
|
|
@@ -4241,6 +4264,37 @@ const file_google_protobuf_descriptor = /*@__PURE__*/ boot_boot({
|
|
|
4241
4264
|
}
|
|
4242
4265
|
]
|
|
4243
4266
|
}
|
|
4267
|
+
},
|
|
4268
|
+
{
|
|
4269
|
+
name: "enforce_naming_style",
|
|
4270
|
+
number: 7,
|
|
4271
|
+
type: 14,
|
|
4272
|
+
label: 1,
|
|
4273
|
+
typeName: ".google.protobuf.FeatureSet.EnforceNamingStyle",
|
|
4274
|
+
options: {
|
|
4275
|
+
retention: 2,
|
|
4276
|
+
targets: [
|
|
4277
|
+
1,
|
|
4278
|
+
2,
|
|
4279
|
+
3,
|
|
4280
|
+
4,
|
|
4281
|
+
5,
|
|
4282
|
+
6,
|
|
4283
|
+
7,
|
|
4284
|
+
8,
|
|
4285
|
+
9
|
|
4286
|
+
],
|
|
4287
|
+
editionDefaults: [
|
|
4288
|
+
{
|
|
4289
|
+
value: "STYLE_LEGACY",
|
|
4290
|
+
edition: 900
|
|
4291
|
+
},
|
|
4292
|
+
{
|
|
4293
|
+
value: "STYLE2024",
|
|
4294
|
+
edition: 1001
|
|
4295
|
+
}
|
|
4296
|
+
]
|
|
4297
|
+
}
|
|
4244
4298
|
}
|
|
4245
4299
|
],
|
|
4246
4300
|
enumType: [
|
|
@@ -4349,6 +4403,23 @@ const file_google_protobuf_descriptor = /*@__PURE__*/ boot_boot({
|
|
|
4349
4403
|
number: 2
|
|
4350
4404
|
}
|
|
4351
4405
|
]
|
|
4406
|
+
},
|
|
4407
|
+
{
|
|
4408
|
+
name: "EnforceNamingStyle",
|
|
4409
|
+
value: [
|
|
4410
|
+
{
|
|
4411
|
+
name: "ENFORCE_NAMING_STYLE_UNKNOWN",
|
|
4412
|
+
number: 0
|
|
4413
|
+
},
|
|
4414
|
+
{
|
|
4415
|
+
name: "STYLE2024",
|
|
4416
|
+
number: 1
|
|
4417
|
+
},
|
|
4418
|
+
{
|
|
4419
|
+
name: "STYLE_LEGACY",
|
|
4420
|
+
number: 2
|
|
4421
|
+
}
|
|
4422
|
+
]
|
|
4352
4423
|
}
|
|
4353
4424
|
],
|
|
4354
4425
|
extensionRange: [
|
|
@@ -4473,6 +4544,12 @@ const file_google_protobuf_descriptor = /*@__PURE__*/ boot_boot({
|
|
|
4473
4544
|
}
|
|
4474
4545
|
]
|
|
4475
4546
|
}
|
|
4547
|
+
],
|
|
4548
|
+
extensionRange: [
|
|
4549
|
+
{
|
|
4550
|
+
start: 536000000,
|
|
4551
|
+
end: 536000001
|
|
4552
|
+
}
|
|
4476
4553
|
]
|
|
4477
4554
|
},
|
|
4478
4555
|
{
|
|
@@ -4717,6 +4794,12 @@ var descriptor_pb_FeatureSet_JsonFormat;
|
|
|
4717
4794
|
FeatureSet_JsonFormat[FeatureSet_JsonFormat["ALLOW"] = 1] = "ALLOW";
|
|
4718
4795
|
FeatureSet_JsonFormat[FeatureSet_JsonFormat["LEGACY_BEST_EFFORT"] = 2] = "LEGACY_BEST_EFFORT";
|
|
4719
4796
|
})(descriptor_pb_FeatureSet_JsonFormat || (descriptor_pb_FeatureSet_JsonFormat = {}));
|
|
4797
|
+
var descriptor_pb_FeatureSet_EnforceNamingStyle;
|
|
4798
|
+
(function(FeatureSet_EnforceNamingStyle) {
|
|
4799
|
+
FeatureSet_EnforceNamingStyle[FeatureSet_EnforceNamingStyle["ENFORCE_NAMING_STYLE_UNKNOWN"] = 0] = "ENFORCE_NAMING_STYLE_UNKNOWN";
|
|
4800
|
+
FeatureSet_EnforceNamingStyle[FeatureSet_EnforceNamingStyle["STYLE2024"] = 1] = "STYLE2024";
|
|
4801
|
+
FeatureSet_EnforceNamingStyle[FeatureSet_EnforceNamingStyle["STYLE_LEGACY"] = 2] = "STYLE_LEGACY";
|
|
4802
|
+
})(descriptor_pb_FeatureSet_EnforceNamingStyle || (descriptor_pb_FeatureSet_EnforceNamingStyle = {}));
|
|
4720
4803
|
var descriptor_pb_GeneratedCodeInfo_Annotation_Semantic;
|
|
4721
4804
|
(function(GeneratedCodeInfo_Annotation_Semantic) {
|
|
4722
4805
|
GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic["NONE"] = 0] = "NONE";
|
|
@@ -4742,7 +4825,7 @@ function fileDesc(b64, imports) {
|
|
|
4742
4825
|
var _a;
|
|
4743
4826
|
const root = fromBinary(FileDescriptorProtoSchema, base64Decode(b64));
|
|
4744
4827
|
root.messageType.forEach(restoreJsonNames);
|
|
4745
|
-
root.dependency = null
|
|
4828
|
+
root.dependency = null != (_a = null == imports ? void 0 : imports.map((f)=>f.proto.name)) ? _a : [];
|
|
4746
4829
|
const reg = createFileRegistry(root, (protoFileName)=>null == imports ? void 0 : imports.find((f)=>f.proto.name === protoFileName));
|
|
4747
4830
|
return reg.getFile(root.name);
|
|
4748
4831
|
}
|
|
@@ -4758,70 +4841,53 @@ function timestampDate(timestamp) {
|
|
|
4758
4841
|
return new Date(timestamp_timestampMs(timestamp));
|
|
4759
4842
|
}
|
|
4760
4843
|
function timestampFromMs(timestampMs) {
|
|
4844
|
+
const seconds = Math.floor(timestampMs / 1000);
|
|
4761
4845
|
return create(TimestampSchema, {
|
|
4762
|
-
seconds: protoInt64.parse(
|
|
4763
|
-
nanos: timestampMs
|
|
4846
|
+
seconds: protoInt64.parse(seconds),
|
|
4847
|
+
nanos: (timestampMs - 1000 * seconds) * 1000000
|
|
4764
4848
|
});
|
|
4765
4849
|
}
|
|
4766
4850
|
function timestamp_timestampMs(timestamp) {
|
|
4767
4851
|
return 1000 * Number(timestamp.seconds) + Math.ceil(timestamp.nanos / 1000000);
|
|
4768
4852
|
}
|
|
4769
|
-
const color_pad = (s)=>s.length < 2 ? `0${s}` : s;
|
|
4770
|
-
const
|
|
4771
|
-
const
|
|
4772
|
-
const
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
const
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
BOTTOM: 2,
|
|
4808
|
-
TOP: 3
|
|
4809
|
-
};
|
|
4810
|
-
const FontSize = {
|
|
4811
|
-
SMALL: 0,
|
|
4812
|
-
NORMAL: 1,
|
|
4813
|
-
LARGE: 2
|
|
4814
|
-
};
|
|
4815
|
-
const domainPreset = {
|
|
4816
|
-
acfun: 'acfun',
|
|
4817
|
-
baha: 'baha',
|
|
4818
|
-
bgm: 'bgm',
|
|
4819
|
-
bili: 'bili',
|
|
4820
|
-
bglobal: 'bglobal',
|
|
4821
|
-
ddplay: 'ddplay',
|
|
4822
|
-
tucao: 'tucao'
|
|
4823
|
-
};
|
|
4824
|
-
const platforms = Object.keys(domainPreset);
|
|
4853
|
+
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
4854
|
+
const DmSegMobileReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 30);
|
|
4855
|
+
const DmWebViewReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 39);
|
|
4856
|
+
const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLCAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSEAoIcGxhdGZvcm0YDSABKAkSEgoFZXh0cmEYDiABKAlIAIgBAUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
|
|
4857
|
+
file_google_protobuf_timestamp
|
|
4858
|
+
]);
|
|
4859
|
+
const DanmakuReplySchema = /*@__PURE__*/ message_messageDesc(file_danuni, 2);
|
|
4860
|
+
var platform_PlatformInfoSource = /*#__PURE__*/ function(PlatformInfoSource) {
|
|
4861
|
+
PlatformInfoSource["Bangumi"] = "bgm";
|
|
4862
|
+
PlatformInfoSource["TMDB"] = "tmdb";
|
|
4863
|
+
return PlatformInfoSource;
|
|
4864
|
+
}({});
|
|
4865
|
+
const PlatformInfoSources = Object.values(platform_PlatformInfoSource);
|
|
4866
|
+
var platform_PlatformVideoSource = /*#__PURE__*/ function(PlatformVideoSource) {
|
|
4867
|
+
PlatformVideoSource["Acfun"] = "acfun";
|
|
4868
|
+
PlatformVideoSource["Baha"] = "baha";
|
|
4869
|
+
PlatformVideoSource["Bilibili"] = "bili";
|
|
4870
|
+
PlatformVideoSource["BilibiliGlobal"] = "bglobal";
|
|
4871
|
+
PlatformVideoSource["Iqiyi"] = "iqiyi";
|
|
4872
|
+
PlatformVideoSource["Tencent"] = "tencent";
|
|
4873
|
+
PlatformVideoSource["Youku"] = "youku";
|
|
4874
|
+
return PlatformVideoSource;
|
|
4875
|
+
}({});
|
|
4876
|
+
const PlatformVideoSources = Object.values(platform_PlatformVideoSource);
|
|
4877
|
+
var platform_PlatformDanmakuOnlySource = /*#__PURE__*/ function(PlatformDanmakuOnlySource) {
|
|
4878
|
+
PlatformDanmakuOnlySource["DanDanPlay"] = "ddplay";
|
|
4879
|
+
PlatformDanmakuOnlySource["TuCao"] = "tucao";
|
|
4880
|
+
return PlatformDanmakuOnlySource;
|
|
4881
|
+
}({});
|
|
4882
|
+
const PlatformDanmakuOnlySources = Object.values(platform_PlatformDanmakuOnlySource);
|
|
4883
|
+
const PlatformDanmakuSources = [
|
|
4884
|
+
...PlatformVideoSources,
|
|
4885
|
+
...PlatformDanmakuOnlySources
|
|
4886
|
+
];
|
|
4887
|
+
const PlatformSources = [
|
|
4888
|
+
...PlatformInfoSources,
|
|
4889
|
+
...PlatformDanmakuSources
|
|
4890
|
+
];
|
|
4825
4891
|
class UniID {
|
|
4826
4892
|
id;
|
|
4827
4893
|
domain;
|
|
@@ -4833,13 +4899,13 @@ class UniID {
|
|
|
4833
4899
|
return `${this.id}@${this.domain}`;
|
|
4834
4900
|
}
|
|
4835
4901
|
static fromNull(domain) {
|
|
4836
|
-
return new UniID('anonymous', domain || 'danuni');
|
|
4902
|
+
return new UniID('runtime' === domain ? 'runtime' : 'anonymous', domain || 'danuni');
|
|
4837
4903
|
}
|
|
4838
4904
|
static fromBili({ cid, mid, midHash }) {
|
|
4839
|
-
if (cid) return new UniID(cid.toString(),
|
|
4840
|
-
if (mid) return new UniID(mid.toString(),
|
|
4841
|
-
if (midHash) return new UniID(midHash,
|
|
4842
|
-
return this.fromNull(
|
|
4905
|
+
if (cid) return new UniID(cid.toString(), platform_PlatformVideoSource.Bilibili);
|
|
4906
|
+
if (mid) return new UniID(mid.toString(), platform_PlatformVideoSource.Bilibili);
|
|
4907
|
+
if (midHash) return new UniID(midHash, platform_PlatformVideoSource.Bilibili);
|
|
4908
|
+
return this.fromNull(platform_PlatformVideoSource.Bilibili);
|
|
4843
4909
|
}
|
|
4844
4910
|
static fromUnknown(id, domain) {
|
|
4845
4911
|
if (id) return new UniID(id, domain);
|
|
@@ -4847,7 +4913,7 @@ class UniID {
|
|
|
4847
4913
|
}
|
|
4848
4914
|
}
|
|
4849
4915
|
function createDMID(content = '', senderID, ctime, slice = 8) {
|
|
4850
|
-
return new
|
|
4916
|
+
return new jssha('SHA3-256', 'TEXT').update(content + senderID + UniDM.transCtime(ctime).toISOString()).getHash('HEX').slice(0, slice);
|
|
4851
4917
|
}
|
|
4852
4918
|
const BigIntSerializer = (k, v)=>'bigint' == typeof v ? v.toString() : v;
|
|
4853
4919
|
function cleanEmptyObjects(obj) {
|
|
@@ -4856,7 +4922,7 @@ function cleanEmptyObjects(obj) {
|
|
|
4856
4922
|
const cleaned = {};
|
|
4857
4923
|
for (const [key, value] of Object.entries(obj)){
|
|
4858
4924
|
const cleanedValue = cleanEmptyObjects(value);
|
|
4859
|
-
if (void 0 !== cleanedValue &&
|
|
4925
|
+
if (void 0 !== cleanedValue && ('object' != typeof cleanedValue || 0 !== Object.keys(cleanedValue).length)) cleaned[key] = cleanedValue;
|
|
4860
4926
|
}
|
|
4861
4927
|
return Object.keys(cleaned).length > 0 ? cleaned : {};
|
|
4862
4928
|
}
|
|
@@ -4908,11 +4974,25 @@ var dm_gen_ExtraDanUniChapterType = /*#__PURE__*/ function(ExtraDanUniChapterTyp
|
|
|
4908
4974
|
ExtraDanUniChapterType["ED"] = "ed";
|
|
4909
4975
|
ExtraDanUniChapterType["Preview"] = "prvw";
|
|
4910
4976
|
ExtraDanUniChapterType["Cut"] = "cut";
|
|
4911
|
-
ExtraDanUniChapterType["
|
|
4977
|
+
ExtraDanUniChapterType["Duplicate"] = "dup";
|
|
4912
4978
|
ExtraDanUniChapterType["AdBiz"] = "biz";
|
|
4913
4979
|
ExtraDanUniChapterType["AdUnpaid"] = "promo";
|
|
4914
4980
|
return ExtraDanUniChapterType;
|
|
4915
4981
|
}({});
|
|
4982
|
+
const ExtraDanUniChapterTypeDict = {
|
|
4983
|
+
chs: {
|
|
4984
|
+
ch: "\u5176\u5B83\u7247\u6BB5",
|
|
4985
|
+
rev: "\u56DE\u987E",
|
|
4986
|
+
op: "\u7247\u5934",
|
|
4987
|
+
int: "\u4E2D\u573A",
|
|
4988
|
+
ed: "\u7247\u5C3E",
|
|
4989
|
+
prvw: "\u9884\u544A",
|
|
4990
|
+
cut: "\u5220\u51CF",
|
|
4991
|
+
dup: "\u8865\u6863",
|
|
4992
|
+
biz: "\u5546\u4E1A\u5E7F\u544A",
|
|
4993
|
+
promo: "\u63A8\u5E7F"
|
|
4994
|
+
}
|
|
4995
|
+
};
|
|
4916
4996
|
var dm_gen_ExtraDanUniChapterAction = /*#__PURE__*/ function(ExtraDanUniChapterAction) {
|
|
4917
4997
|
ExtraDanUniChapterAction[ExtraDanUniChapterAction["Disabled"] = -1] = "Disabled";
|
|
4918
4998
|
ExtraDanUniChapterAction[ExtraDanUniChapterAction["ShowOverlay"] = 0] = "ShowOverlay";
|
|
@@ -4936,7 +5016,7 @@ var dm_gen_Pools = /*#__PURE__*/ function(Pools) {
|
|
|
4936
5016
|
return Pools;
|
|
4937
5017
|
}({});
|
|
4938
5018
|
class UniDM {
|
|
4939
|
-
|
|
5019
|
+
SOID;
|
|
4940
5020
|
progress;
|
|
4941
5021
|
mode;
|
|
4942
5022
|
fontsize;
|
|
@@ -4948,11 +5028,10 @@ class UniDM {
|
|
|
4948
5028
|
pool;
|
|
4949
5029
|
attr;
|
|
4950
5030
|
platform;
|
|
4951
|
-
SPMO;
|
|
4952
5031
|
extraStr;
|
|
4953
5032
|
DMID;
|
|
4954
|
-
constructor(
|
|
4955
|
-
this.
|
|
5033
|
+
constructor(SOID, progress = 0, mode = 0, fontsize = 25, color = 16777215, senderID = UniID.fromNull().toString(), content = '', ctime = new Date(), weight = 0, pool = 0, attr = [], platform, extraStr, DMID){
|
|
5034
|
+
this.SOID = SOID;
|
|
4956
5035
|
this.progress = progress;
|
|
4957
5036
|
this.mode = mode;
|
|
4958
5037
|
this.fontsize = fontsize;
|
|
@@ -4964,14 +5043,13 @@ class UniDM {
|
|
|
4964
5043
|
this.pool = pool;
|
|
4965
5044
|
this.attr = attr;
|
|
4966
5045
|
this.platform = platform;
|
|
4967
|
-
this.SPMO = SPMO;
|
|
4968
5046
|
this.extraStr = extraStr;
|
|
4969
5047
|
this.DMID = DMID;
|
|
4970
5048
|
if (progress < 0) this.progress = 0;
|
|
4971
5049
|
if (mode < 0 || mode > 4) this.mode = 0;
|
|
4972
5050
|
if (fontsize <= 0) this.fontsize = 25;
|
|
4973
5051
|
if (color <= 0) this.color = 16777215;
|
|
4974
|
-
if (weight
|
|
5052
|
+
if (weight < 0 || weight > 10) this.weight = 5;
|
|
4975
5053
|
if (pool < 0 || pool > 3) this.pool = 0;
|
|
4976
5054
|
if (!DMID) DMID = this.toDMID();
|
|
4977
5055
|
this.progress = Number.parseFloat(progress.toFixed(3));
|
|
@@ -4979,14 +5057,14 @@ class UniDM {
|
|
|
4979
5057
|
if ('{}' === extraStr) this.extraStr = void 0;
|
|
4980
5058
|
}
|
|
4981
5059
|
static create(args) {
|
|
4982
|
-
return args ? new UniDM(args.
|
|
5060
|
+
return args ? new UniDM(args.SOID || UniID.fromNull().toString(), args.progress, args.mode, args.fontsize, args.color, args.senderID, args.content, args.ctime, args.weight, args.pool, args.attr, args.platform, 'object' == typeof args.extra ? JSON.stringify(args.extra) : args.extra || args.extraStr, args.DMID) : new UniDM(UniID.fromNull().toString());
|
|
4983
5061
|
}
|
|
4984
5062
|
get extra() {
|
|
4985
5063
|
const extra = JSON.parse(this.extraStr || '{}');
|
|
4986
5064
|
return extra;
|
|
4987
5065
|
}
|
|
4988
5066
|
get isFrom3rdPlatform() {
|
|
4989
|
-
if (this.platform &&
|
|
5067
|
+
if (this.platform && PlatformDanmakuSources.includes(this.platform)) return true;
|
|
4990
5068
|
return false;
|
|
4991
5069
|
}
|
|
4992
5070
|
toDMID() {
|
|
@@ -4994,12 +5072,11 @@ class UniDM {
|
|
|
4994
5072
|
}
|
|
4995
5073
|
isSameAs(dan, _check2 = false) {
|
|
4996
5074
|
const isSame = (k)=>this[k] === dan[k], checks = [
|
|
4997
|
-
'
|
|
5075
|
+
'SOID',
|
|
4998
5076
|
'content',
|
|
4999
5077
|
'mode',
|
|
5000
5078
|
'platform',
|
|
5001
|
-
'pool'
|
|
5002
|
-
'SPMO'
|
|
5079
|
+
'pool'
|
|
5003
5080
|
].every((k)=>isSame(k));
|
|
5004
5081
|
if ('{}' === JSON.stringify(this.extra) && '{}' === JSON.stringify(dan.extra)) return checks;
|
|
5005
5082
|
const thisHasOnlyMerge = this.extra.danuni?.merge && !this.extra.artplayer && !this.extra.bili && !this.extra.danuni.chapter;
|
|
@@ -5026,20 +5103,51 @@ class UniDM {
|
|
|
5026
5103
|
const def = UniDM.create(), dan = UniDM.create(this);
|
|
5027
5104
|
for(const key in dan){
|
|
5028
5105
|
const k = key, v = dan[k];
|
|
5029
|
-
if ('
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
if ('attr' === k && Array.isArray(v) && 0 === v.length) delete dan[k];
|
|
5034
|
-
if ('extraStr' === k && '{}' === v) delete dan[k];
|
|
5035
|
-
}
|
|
5036
|
-
} else delete dan[k];
|
|
5106
|
+
if ('SOID' !== key) if (v) if (v === def[k]) delete dan[k];
|
|
5107
|
+
else {
|
|
5108
|
+
if ('attr' === k && Array.isArray(v) && 0 === v.length) delete dan[k];
|
|
5109
|
+
if ('extraStr' === k && '{}' === v) delete dan[k];
|
|
5037
5110
|
}
|
|
5111
|
+
else delete dan[k];
|
|
5038
5112
|
}
|
|
5039
5113
|
return JSON.parse(JSON.stringify(dan));
|
|
5040
5114
|
}
|
|
5041
|
-
downgradeAdvcancedDan(
|
|
5115
|
+
downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {
|
|
5116
|
+
include: [],
|
|
5117
|
+
exclude: []
|
|
5118
|
+
}) {
|
|
5042
5119
|
if (!this.extra) return this;
|
|
5120
|
+
{
|
|
5121
|
+
if (!include) include = [];
|
|
5122
|
+
if (!exclude) exclude = [];
|
|
5123
|
+
const check = (k)=>include?.includes(k) || !exclude?.includes(k);
|
|
5124
|
+
const clone = UniDM.create(this);
|
|
5125
|
+
clone.mode = 2;
|
|
5126
|
+
if (check('danuni') && clone.extra.danuni) {
|
|
5127
|
+
const danuni = clone.extra.danuni;
|
|
5128
|
+
if (danuni.merge) {
|
|
5129
|
+
const merge = danuni.merge;
|
|
5130
|
+
clone.content = `${this.content} x${merge.count}`;
|
|
5131
|
+
} else if (danuni.chapter) {
|
|
5132
|
+
const chapter = danuni.chapter;
|
|
5133
|
+
if ("cut" === chapter.type) clone.content = `[\u{63D0}\u{793A}]${clone.platform}\u{6E90}${ExtraDanUniChapterTypeDict.chs[chapter.type]}\u{4E86}${chapter.duration}\u{79D2}`;
|
|
5134
|
+
else if ("dup" === chapter.type) clone.content = `[\u{63D0}\u{793A}(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}\u{6E90}-${chapter.duration}\u{79D2}`;
|
|
5135
|
+
else clone.content = `[\u{7A7A}\u{964D}(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss.fromS(clone.progress + chapter.duration)}`;
|
|
5136
|
+
}
|
|
5137
|
+
} else if (check('bili') && clone.extra.bili) {
|
|
5138
|
+
const bili = clone.extra.bili;
|
|
5139
|
+
if (7 === bili.mode && bili.adv) clone.content = `[B\u{7AD9}\u{9AD8}\u{7EA7}\u{5F39}\u{5E55}]${JSON.parse(bili.adv)[4] || ''}`;
|
|
5140
|
+
else if (bili.command) {
|
|
5141
|
+
const command = bili.command;
|
|
5142
|
+
clone.content = `[B\u{7AD9}\u{6307}\u{4EE4}\u{5F39}\u{5E55}]${command.content}`;
|
|
5143
|
+
clone.fontsize = 36;
|
|
5144
|
+
}
|
|
5145
|
+
}
|
|
5146
|
+
clone.senderID = 'compat[bot]@dan-any';
|
|
5147
|
+
clone.attr.push('Compatible');
|
|
5148
|
+
if (cleanExtra) clone.extraStr = void 0;
|
|
5149
|
+
return clone;
|
|
5150
|
+
}
|
|
5043
5151
|
}
|
|
5044
5152
|
static transCtime(oriCtime, tsUnit) {
|
|
5045
5153
|
function isMsTs(ts) {
|
|
@@ -5047,10 +5155,8 @@ class UniDM {
|
|
|
5047
5155
|
if ('s' === tsUnit) return false;
|
|
5048
5156
|
return ts < 100000000;
|
|
5049
5157
|
}
|
|
5050
|
-
if ('number' == typeof oriCtime || 'bigint' == typeof oriCtime)
|
|
5051
|
-
|
|
5052
|
-
return new Date(1000 * Number(oriCtime));
|
|
5053
|
-
}
|
|
5158
|
+
if ('number' == typeof oriCtime || 'bigint' == typeof oriCtime) if (isMsTs(oriCtime)) return new Date(Number(oriCtime));
|
|
5159
|
+
else return new Date(1000 * Number(oriCtime));
|
|
5054
5160
|
if ('string' != typeof oriCtime) return oriCtime;
|
|
5055
5161
|
if (/^\d+n$/.test(oriCtime)) return new Date(Number(oriCtime.slice(0, -1)));
|
|
5056
5162
|
return new Date(oriCtime);
|
|
@@ -5097,11 +5203,11 @@ class UniDM {
|
|
|
5097
5203
|
}
|
|
5098
5204
|
return mode;
|
|
5099
5205
|
}
|
|
5100
|
-
static fromBili(args,
|
|
5206
|
+
static fromBili(args, cid) {
|
|
5101
5207
|
if (args.oid && !cid) cid = args.oid;
|
|
5102
|
-
const
|
|
5208
|
+
const SOID = `def::${UniID.fromBili({
|
|
5103
5209
|
cid
|
|
5104
|
-
})
|
|
5210
|
+
})}`, senderID = UniID.fromBili({
|
|
5105
5211
|
midHash: args.midHash
|
|
5106
5212
|
});
|
|
5107
5213
|
let mode = 0;
|
|
@@ -5139,28 +5245,27 @@ class UniDM {
|
|
|
5139
5245
|
}
|
|
5140
5246
|
return this.create({
|
|
5141
5247
|
...args,
|
|
5142
|
-
|
|
5248
|
+
SOID: SOID.toString(),
|
|
5143
5249
|
mode,
|
|
5144
5250
|
senderID: senderID.toString(),
|
|
5145
5251
|
ctime: this.transCtime(args.ctime, 's'),
|
|
5146
5252
|
weight: args.weight ? args.weight : 3 === pool ? 1 : 0,
|
|
5147
5253
|
pool,
|
|
5148
|
-
attr: DMAttrUtils.fromBin(args.attr,
|
|
5149
|
-
platform:
|
|
5150
|
-
SPMO,
|
|
5254
|
+
attr: DMAttrUtils.fromBin(args.attr, platform_PlatformVideoSource.Bilibili),
|
|
5255
|
+
platform: platform_PlatformVideoSource.Bilibili,
|
|
5151
5256
|
extra: args.mode >= 7 ? JSON.stringify(extra, BigIntSerializer) : void 0
|
|
5152
5257
|
});
|
|
5153
5258
|
}
|
|
5154
|
-
static fromBiliCommand(args,
|
|
5259
|
+
static fromBiliCommand(args, cid) {
|
|
5155
5260
|
if (args.oid && !cid) cid = args.oid;
|
|
5156
|
-
const
|
|
5261
|
+
const SOID = UniID.fromBili({
|
|
5157
5262
|
cid
|
|
5158
5263
|
}), senderID = UniID.fromBili({
|
|
5159
5264
|
mid: args.mid
|
|
5160
5265
|
});
|
|
5161
5266
|
return this.create({
|
|
5162
5267
|
...args,
|
|
5163
|
-
|
|
5268
|
+
SOID: SOID.toString(),
|
|
5164
5269
|
mode: 4,
|
|
5165
5270
|
senderID: senderID.toString(),
|
|
5166
5271
|
ctime: new Date(`${args.ctime} GMT+0800`),
|
|
@@ -5169,8 +5274,7 @@ class UniDM {
|
|
|
5169
5274
|
attr: [
|
|
5170
5275
|
'Protect'
|
|
5171
5276
|
],
|
|
5172
|
-
platform:
|
|
5173
|
-
SPMO,
|
|
5277
|
+
platform: platform_PlatformVideoSource.Bilibili,
|
|
5174
5278
|
extra: JSON.stringify({
|
|
5175
5279
|
bili: {
|
|
5176
5280
|
command: args
|
|
@@ -5179,10 +5283,10 @@ class UniDM {
|
|
|
5179
5283
|
});
|
|
5180
5284
|
}
|
|
5181
5285
|
static fromDplayer(args, playerID, domain) {
|
|
5182
|
-
const
|
|
5286
|
+
const SOID = UniID.fromUnknown(playerID, domain), senderID = UniID.fromUnknown(args.midHash, domain);
|
|
5183
5287
|
return this.create({
|
|
5184
5288
|
...args,
|
|
5185
|
-
|
|
5289
|
+
SOID: SOID.toString(),
|
|
5186
5290
|
mode: this.transMode(args.mode, 'dplayer'),
|
|
5187
5291
|
senderID: senderID.toString(),
|
|
5188
5292
|
platform: domain
|
|
@@ -5201,7 +5305,7 @@ class UniDM {
|
|
|
5201
5305
|
};
|
|
5202
5306
|
}
|
|
5203
5307
|
static fromArtplayer(args, playerID, domain) {
|
|
5204
|
-
const
|
|
5308
|
+
const SOID = UniID.fromUnknown(playerID, domain), senderID = UniID.fromUnknown('', domain);
|
|
5205
5309
|
let extra = args.border ? {
|
|
5206
5310
|
artplayer: {
|
|
5207
5311
|
border: args.border,
|
|
@@ -5221,7 +5325,7 @@ class UniDM {
|
|
|
5221
5325
|
};
|
|
5222
5326
|
return this.create({
|
|
5223
5327
|
...args,
|
|
5224
|
-
|
|
5328
|
+
SOID: SOID.toString(),
|
|
5225
5329
|
mode: this.transMode(args.mode, 'artplayer'),
|
|
5226
5330
|
senderID: senderID.toString(),
|
|
5227
5331
|
platform: domain,
|
|
@@ -5240,11 +5344,11 @@ class UniDM {
|
|
|
5240
5344
|
style: this.extra.artplayer?.style
|
|
5241
5345
|
};
|
|
5242
5346
|
}
|
|
5243
|
-
static fromDDplay(args, episodeId, domain =
|
|
5244
|
-
const
|
|
5347
|
+
static fromDDplay(args, episodeId, domain = platform_PlatformDanmakuOnlySource.DanDanPlay) {
|
|
5348
|
+
const SOID = UniID.fromUnknown(`def::${episodeId}`, domain);
|
|
5245
5349
|
return this.create({
|
|
5246
5350
|
...args,
|
|
5247
|
-
|
|
5351
|
+
SOID: SOID.toString(),
|
|
5248
5352
|
mode: this.transMode(args.mode, 'ddplay'),
|
|
5249
5353
|
senderID: args.uid,
|
|
5250
5354
|
content: args.m,
|
|
@@ -5266,85 +5370,583 @@ class UniDM {
|
|
|
5266
5370
|
};
|
|
5267
5371
|
}
|
|
5268
5372
|
}
|
|
5269
|
-
|
|
5270
|
-
|
|
5271
|
-
|
|
5272
|
-
|
|
5273
|
-
|
|
5274
|
-
|
|
5275
|
-
|
|
5276
|
-
|
|
5277
|
-
}
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
|
|
5281
|
-
|
|
5282
|
-
|
|
5283
|
-
|
|
5284
|
-
|
|
5373
|
+
class UniPool {
|
|
5374
|
+
dans;
|
|
5375
|
+
options;
|
|
5376
|
+
constructor(dans, options = {}){
|
|
5377
|
+
this.dans = dans;
|
|
5378
|
+
this.options = options;
|
|
5379
|
+
if (false !== options.dedupe) options.dedupe = true;
|
|
5380
|
+
if (this.options.dedupe) this.dedupe();
|
|
5381
|
+
}
|
|
5382
|
+
async pipe(fn) {
|
|
5383
|
+
return fn(this);
|
|
5384
|
+
}
|
|
5385
|
+
pipeSync(fn) {
|
|
5386
|
+
return fn(this);
|
|
5387
|
+
}
|
|
5388
|
+
get shared() {
|
|
5389
|
+
const isShared = (key)=>this.dans.every((d)=>d[key]);
|
|
5285
5390
|
return {
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5289
|
-
|
|
5290
|
-
|
|
5291
|
-
|
|
5391
|
+
SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
|
|
5392
|
+
senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
|
|
5393
|
+
platform: isShared('platform') ? this.dans[0].platform : void 0,
|
|
5394
|
+
pool: isShared('pool') ? this.dans[0].pool : void 0,
|
|
5395
|
+
mode: isShared('mode') ? this.dans[0].mode : void 0,
|
|
5396
|
+
color: isShared('color') ? this.dans[0].color : void 0
|
|
5292
5397
|
};
|
|
5293
|
-
}
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
}
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
|
|
5322
|
-
|
|
5323
|
-
|
|
5324
|
-
|
|
5325
|
-
|
|
5326
|
-
|
|
5327
|
-
|
|
5328
|
-
|
|
5329
|
-
|
|
5330
|
-
|
|
5331
|
-
|
|
5332
|
-
|
|
5333
|
-
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
}
|
|
5341
|
-
|
|
5342
|
-
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
const
|
|
5346
|
-
|
|
5347
|
-
|
|
5398
|
+
}
|
|
5399
|
+
get stat() {
|
|
5400
|
+
const default_stat = {
|
|
5401
|
+
SOID: [],
|
|
5402
|
+
mode: [
|
|
5403
|
+
{
|
|
5404
|
+
val: dm_gen_Modes.Normal,
|
|
5405
|
+
count: 0
|
|
5406
|
+
},
|
|
5407
|
+
{
|
|
5408
|
+
val: dm_gen_Modes.Bottom,
|
|
5409
|
+
count: 0
|
|
5410
|
+
},
|
|
5411
|
+
{
|
|
5412
|
+
val: dm_gen_Modes.Top,
|
|
5413
|
+
count: 0
|
|
5414
|
+
},
|
|
5415
|
+
{
|
|
5416
|
+
val: dm_gen_Modes.Reverse,
|
|
5417
|
+
count: 0
|
|
5418
|
+
},
|
|
5419
|
+
{
|
|
5420
|
+
val: dm_gen_Modes.Ext,
|
|
5421
|
+
count: 0
|
|
5422
|
+
}
|
|
5423
|
+
],
|
|
5424
|
+
fontsize: [],
|
|
5425
|
+
color: [],
|
|
5426
|
+
senderID: [],
|
|
5427
|
+
content: [],
|
|
5428
|
+
weight: [],
|
|
5429
|
+
pool: [
|
|
5430
|
+
{
|
|
5431
|
+
val: dm_gen_Pools.Def,
|
|
5432
|
+
count: 0
|
|
5433
|
+
},
|
|
5434
|
+
{
|
|
5435
|
+
val: dm_gen_Pools.Sub,
|
|
5436
|
+
count: 0
|
|
5437
|
+
},
|
|
5438
|
+
{
|
|
5439
|
+
val: dm_gen_Pools.Adv,
|
|
5440
|
+
count: 0
|
|
5441
|
+
},
|
|
5442
|
+
{
|
|
5443
|
+
val: dm_gen_Pools.Ix,
|
|
5444
|
+
count: 0
|
|
5445
|
+
}
|
|
5446
|
+
],
|
|
5447
|
+
platform: []
|
|
5448
|
+
};
|
|
5449
|
+
const stat = this.dans.reduce((s, d)=>{
|
|
5450
|
+
const SOID = s.SOID.find((i)=>i.val === d.SOID);
|
|
5451
|
+
if (SOID) SOID.count++;
|
|
5452
|
+
else s.SOID.push({
|
|
5453
|
+
val: d.SOID,
|
|
5454
|
+
count: 1
|
|
5455
|
+
});
|
|
5456
|
+
const mode = s.mode.find((i)=>i.val === d.mode);
|
|
5457
|
+
if (mode) mode.count++;
|
|
5458
|
+
else s.mode.push({
|
|
5459
|
+
val: d.mode,
|
|
5460
|
+
count: 1
|
|
5461
|
+
});
|
|
5462
|
+
const fontsize = s.fontsize.find((i)=>i.val === d.fontsize);
|
|
5463
|
+
if (fontsize) fontsize.count++;
|
|
5464
|
+
else s.fontsize.push({
|
|
5465
|
+
val: d.fontsize,
|
|
5466
|
+
count: 1
|
|
5467
|
+
});
|
|
5468
|
+
const color = s.color.find((i)=>i.val === d.color);
|
|
5469
|
+
if (color) color.count++;
|
|
5470
|
+
else s.color.push({
|
|
5471
|
+
val: d.color,
|
|
5472
|
+
count: 1
|
|
5473
|
+
});
|
|
5474
|
+
const senderID = s.senderID.find((i)=>i.val === d.senderID);
|
|
5475
|
+
if (senderID) senderID.count++;
|
|
5476
|
+
else s.senderID.push({
|
|
5477
|
+
val: d.senderID,
|
|
5478
|
+
count: 1
|
|
5479
|
+
});
|
|
5480
|
+
const content = s.content.find((i)=>i.val === d.content);
|
|
5481
|
+
if (content) content.count++;
|
|
5482
|
+
else s.content.push({
|
|
5483
|
+
val: d.content,
|
|
5484
|
+
count: 1
|
|
5485
|
+
});
|
|
5486
|
+
const weight = s.weight.find((i)=>i.val === d.weight);
|
|
5487
|
+
if (weight) weight.count++;
|
|
5488
|
+
else s.weight.push({
|
|
5489
|
+
val: d.weight,
|
|
5490
|
+
count: 1
|
|
5491
|
+
});
|
|
5492
|
+
const pool = s.pool.find((i)=>i.val === d.pool);
|
|
5493
|
+
if (pool) pool.count++;
|
|
5494
|
+
else s.pool.push({
|
|
5495
|
+
val: d.pool,
|
|
5496
|
+
count: 1
|
|
5497
|
+
});
|
|
5498
|
+
const platform = s.platform.find((i)=>i.val === d.platform);
|
|
5499
|
+
if (platform) platform.count++;
|
|
5500
|
+
else s.platform.push({
|
|
5501
|
+
val: d.platform,
|
|
5502
|
+
count: 1
|
|
5503
|
+
});
|
|
5504
|
+
return s;
|
|
5505
|
+
}, default_stat);
|
|
5506
|
+
return stat;
|
|
5507
|
+
}
|
|
5508
|
+
get most() {
|
|
5509
|
+
const s = this.stat;
|
|
5510
|
+
return {
|
|
5511
|
+
mode: s.mode.sort((a, b)=>b.count - a.count)[0].val,
|
|
5512
|
+
fontsize: s.fontsize.sort((a, b)=>b.count - a.count)[0].val,
|
|
5513
|
+
color: s.color.sort((a, b)=>b.count - a.count)[0].val,
|
|
5514
|
+
senderID: s.senderID.sort((a, b)=>b.count - a.count)[0].val,
|
|
5515
|
+
content: s.content.sort((a, b)=>b.count - a.count)[0].val,
|
|
5516
|
+
weight: s.weight.sort((a, b)=>b.count - a.count)[0].val,
|
|
5517
|
+
pool: s.pool.sort((a, b)=>b.count - a.count)[0].val,
|
|
5518
|
+
platform: s.platform.sort((a, b)=>b.count - a.count)[0].val
|
|
5519
|
+
};
|
|
5520
|
+
}
|
|
5521
|
+
static create() {
|
|
5522
|
+
return new UniPool([]);
|
|
5523
|
+
}
|
|
5524
|
+
assign(dans) {
|
|
5525
|
+
if (dans instanceof UniPool) return new UniPool([
|
|
5526
|
+
...this.dans,
|
|
5527
|
+
...dans.dans
|
|
5528
|
+
]);
|
|
5529
|
+
if (dans instanceof UniDM) return new UniPool([
|
|
5530
|
+
...this.dans,
|
|
5531
|
+
dans
|
|
5532
|
+
]);
|
|
5533
|
+
if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new UniPool([
|
|
5534
|
+
...this.dans,
|
|
5535
|
+
...dans
|
|
5536
|
+
]);
|
|
5537
|
+
return this;
|
|
5538
|
+
}
|
|
5539
|
+
split(key) {
|
|
5540
|
+
if (this.shared[key]) return [
|
|
5541
|
+
this
|
|
5542
|
+
];
|
|
5543
|
+
const set = new Set(this.dans.map((d)=>d[key]));
|
|
5544
|
+
return [
|
|
5545
|
+
...set
|
|
5546
|
+
].map((v)=>new UniPool(this.dans.filter((d)=>d[key] === v), {
|
|
5547
|
+
dedupe: false
|
|
5548
|
+
}));
|
|
5549
|
+
}
|
|
5550
|
+
dedupe() {
|
|
5551
|
+
const map = new Map();
|
|
5552
|
+
this.dans.forEach((d)=>map.set(d.DMID || d.toDMID(), d));
|
|
5553
|
+
this.dans = [
|
|
5554
|
+
...map.values()
|
|
5555
|
+
];
|
|
5556
|
+
this.options.dedupe = false;
|
|
5557
|
+
}
|
|
5558
|
+
merge(lifetime = 0) {
|
|
5559
|
+
if (!this.shared.SOID) {
|
|
5560
|
+
console.error("\u672C\u529F\u80FD\u4EC5\u652F\u6301\u540C\u5F39\u5E55\u5E93\u5185\u4F7F\u7528\uFF0C\u53EF\u5148 .split('SOID') \u5728\u5206\u522B\u4F7F\u7528");
|
|
5561
|
+
return this;
|
|
5562
|
+
}
|
|
5563
|
+
if (lifetime <= 0) return this;
|
|
5564
|
+
const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
|
|
5565
|
+
const key = [
|
|
5566
|
+
'SOID',
|
|
5567
|
+
'content',
|
|
5568
|
+
'mode',
|
|
5569
|
+
'platform',
|
|
5570
|
+
'pool'
|
|
5571
|
+
].map((k)=>danmaku[k]).join('|');
|
|
5572
|
+
const cached = cache[key];
|
|
5573
|
+
const lastAppearTime = cached?.progress || 0;
|
|
5574
|
+
if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached)) {
|
|
5575
|
+
const senders = mergeObj[key].senders;
|
|
5576
|
+
senders.push(danmaku.senderID);
|
|
5577
|
+
const extra = danmaku.extra;
|
|
5578
|
+
extra.danuni = extra.danuni || {};
|
|
5579
|
+
extra.danuni.merge = {
|
|
5580
|
+
count: senders.length,
|
|
5581
|
+
duration: danmaku.progress - cached.progress,
|
|
5582
|
+
senders,
|
|
5583
|
+
taolu_count: senders.length,
|
|
5584
|
+
taolu_senders: senders
|
|
5585
|
+
};
|
|
5586
|
+
danmaku.extraStr = JSON.stringify(extra);
|
|
5587
|
+
cache[key] = danmaku;
|
|
5588
|
+
mergeObj[key] = extra.danuni.merge;
|
|
5589
|
+
return [
|
|
5590
|
+
result,
|
|
5591
|
+
cache,
|
|
5592
|
+
mergeObj
|
|
5593
|
+
];
|
|
5594
|
+
}
|
|
5595
|
+
{
|
|
5596
|
+
mergeObj[key] = {
|
|
5597
|
+
count: 1,
|
|
5598
|
+
duration: 0,
|
|
5599
|
+
senders: [
|
|
5600
|
+
danmaku.senderID
|
|
5601
|
+
],
|
|
5602
|
+
taolu_count: 1,
|
|
5603
|
+
taolu_senders: [
|
|
5604
|
+
danmaku.senderID
|
|
5605
|
+
]
|
|
5606
|
+
};
|
|
5607
|
+
cache[key] = danmaku;
|
|
5608
|
+
const extra = danmaku.extra;
|
|
5609
|
+
extra.danuni = extra.danuni || {};
|
|
5610
|
+
extra.danuni.merge = mergeObj[key];
|
|
5611
|
+
danmaku.extraStr = JSON.stringify(extra);
|
|
5612
|
+
result.push(danmaku);
|
|
5613
|
+
return [
|
|
5614
|
+
result,
|
|
5615
|
+
cache,
|
|
5616
|
+
mergeObj
|
|
5617
|
+
];
|
|
5618
|
+
}
|
|
5619
|
+
}, [
|
|
5620
|
+
[],
|
|
5621
|
+
{},
|
|
5622
|
+
{}
|
|
5623
|
+
]);
|
|
5624
|
+
const [result, _cache, mergeObj] = mergeContext;
|
|
5625
|
+
result.forEach((danmaku, i)=>{
|
|
5626
|
+
const key = [
|
|
5627
|
+
'SOID',
|
|
5628
|
+
'content',
|
|
5629
|
+
'mode',
|
|
5630
|
+
'platform',
|
|
5631
|
+
'pool'
|
|
5632
|
+
].map((k)=>danmaku[k]).join('|');
|
|
5633
|
+
const extra = result[i].extra, mergeData = mergeObj[key];
|
|
5634
|
+
result[i].extraStr = JSON.stringify({
|
|
5635
|
+
...extra,
|
|
5636
|
+
danuni: {
|
|
5637
|
+
...extra.danuni,
|
|
5638
|
+
merge: mergeData
|
|
5639
|
+
}
|
|
5640
|
+
});
|
|
5641
|
+
if (mergeData?.count) if (mergeData.count <= 1) {
|
|
5642
|
+
const updatedExtra = {
|
|
5643
|
+
...extra
|
|
5644
|
+
};
|
|
5645
|
+
if (updatedExtra.danuni) {
|
|
5646
|
+
delete updatedExtra.danuni.merge;
|
|
5647
|
+
if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
|
|
5648
|
+
}
|
|
5649
|
+
result[i].extraStr = Object.keys(updatedExtra).length > 0 ? JSON.stringify(updatedExtra) : void 0;
|
|
5650
|
+
} else {
|
|
5651
|
+
result[i].senderID = 'merge[bot]@dan-any';
|
|
5652
|
+
result[i].attr ? result[i].attr.push('Protect') : result[i].attr = [
|
|
5653
|
+
'Protect'
|
|
5654
|
+
];
|
|
5655
|
+
}
|
|
5656
|
+
});
|
|
5657
|
+
return new UniPool(result);
|
|
5658
|
+
}
|
|
5659
|
+
minify() {
|
|
5660
|
+
return this.dans.map((d)=>d.minify());
|
|
5661
|
+
}
|
|
5662
|
+
convert2(format, continue_on_error = false) {
|
|
5663
|
+
switch(format){
|
|
5664
|
+
case 'danuni.json':
|
|
5665
|
+
return this.dans;
|
|
5666
|
+
case 'danuni.bin':
|
|
5667
|
+
return this.toPb();
|
|
5668
|
+
case 'dplayer.json':
|
|
5669
|
+
return this.toDplayer();
|
|
5670
|
+
case 'artplayer.json':
|
|
5671
|
+
return this.toArtplayer();
|
|
5672
|
+
case 'ddplay.json':
|
|
5673
|
+
return this.toDDplay();
|
|
5674
|
+
case 'common.ass':
|
|
5675
|
+
return this.toASS();
|
|
5676
|
+
default:
|
|
5677
|
+
{
|
|
5678
|
+
const message = '(err) Unknown format or unsupported now!';
|
|
5679
|
+
if (continue_on_error) return message;
|
|
5680
|
+
throw new Error(message);
|
|
5681
|
+
}
|
|
5682
|
+
}
|
|
5683
|
+
}
|
|
5684
|
+
static fromPb(bin) {
|
|
5685
|
+
const data = fromBinary(DanmakuReplySchema, new Uint8Array(bin));
|
|
5686
|
+
return new UniPool(data.danmakus.map((d)=>new UniDM(d.SOID, d.progress, d.mode, d.fontsize, d.color, d.senderID, d.content, timestampDate(d.ctime || timestampNow()), d.weight, d.pool, d.attr, d.platform, d.extra, d.DMID)));
|
|
5687
|
+
}
|
|
5688
|
+
toPb() {
|
|
5689
|
+
return toBinary(DanmakuReplySchema, create(DanmakuReplySchema, {
|
|
5690
|
+
danmakus: this.dans.map((d)=>({
|
|
5691
|
+
SOID: d.SOID,
|
|
5692
|
+
DMID: d.DMID,
|
|
5693
|
+
progress: d.progress,
|
|
5694
|
+
mode: d.mode,
|
|
5695
|
+
fontsize: d.fontsize,
|
|
5696
|
+
color: d.color,
|
|
5697
|
+
senderID: d.senderID,
|
|
5698
|
+
content: d.content,
|
|
5699
|
+
ctime: timestampFromDate(d.ctime),
|
|
5700
|
+
weight: d.weight,
|
|
5701
|
+
pool: d.pool,
|
|
5702
|
+
attr: d.attr,
|
|
5703
|
+
platform: d.platform,
|
|
5704
|
+
extra: d.extraStr
|
|
5705
|
+
}))
|
|
5706
|
+
}));
|
|
5707
|
+
}
|
|
5708
|
+
static fromBiliXML(xml) {
|
|
5709
|
+
const parser = new XMLParser({
|
|
5710
|
+
ignoreAttributes: false
|
|
5711
|
+
}), oriData = parser.parse(xml), dans = oriData.i.d;
|
|
5712
|
+
return new UniPool(dans.map((d)=>{
|
|
5713
|
+
const p_str = d['@_p'], p_arr = p_str.split(',');
|
|
5714
|
+
return UniDM.fromBili({
|
|
5715
|
+
content: d['#text'],
|
|
5716
|
+
progress: Number.parseFloat(p_arr[0]),
|
|
5717
|
+
mode: Number.parseInt(p_arr[1]),
|
|
5718
|
+
fontsize: Number.parseInt(p_arr[2]),
|
|
5719
|
+
color: Number.parseInt(p_arr[3]),
|
|
5720
|
+
ctime: BigInt(p_arr[4]),
|
|
5721
|
+
pool: Number.parseInt(p_arr[5]),
|
|
5722
|
+
midHash: p_arr[6],
|
|
5723
|
+
id: BigInt(p_arr[7]),
|
|
5724
|
+
weight: Number.parseInt(p_arr[8])
|
|
5725
|
+
}, BigInt(oriData.i.chatid));
|
|
5726
|
+
}));
|
|
5727
|
+
}
|
|
5728
|
+
static fromBiliGrpc(bin) {
|
|
5729
|
+
const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin)), json = data.elems;
|
|
5730
|
+
return new UniPool(json.map((d)=>UniDM.fromBili({
|
|
5731
|
+
...d,
|
|
5732
|
+
progress: d.progress / 1000
|
|
5733
|
+
})));
|
|
5734
|
+
}
|
|
5735
|
+
static fromBiliCommandGrpc(bin) {
|
|
5736
|
+
const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin)), json = data.commandDms;
|
|
5737
|
+
return new UniPool(json.map((d)=>UniDM.fromBiliCommand(d)));
|
|
5738
|
+
}
|
|
5739
|
+
static fromDplayer(json, playerID, domain = 'other') {
|
|
5740
|
+
return new UniPool(json.data.map((d)=>UniDM.fromDplayer({
|
|
5741
|
+
content: d[4],
|
|
5742
|
+
progress: d[0],
|
|
5743
|
+
mode: d[1],
|
|
5744
|
+
color: d[2],
|
|
5745
|
+
midHash: d[3]
|
|
5746
|
+
}, playerID, domain)));
|
|
5747
|
+
}
|
|
5748
|
+
toDplayer() {
|
|
5749
|
+
return {
|
|
5750
|
+
code: 0,
|
|
5751
|
+
data: this.dans.map((dan)=>{
|
|
5752
|
+
const d = dan.toDplayer();
|
|
5753
|
+
return [
|
|
5754
|
+
d.progress,
|
|
5755
|
+
d.mode,
|
|
5756
|
+
d.color,
|
|
5757
|
+
d.midHash,
|
|
5758
|
+
d.content
|
|
5759
|
+
];
|
|
5760
|
+
})
|
|
5761
|
+
};
|
|
5762
|
+
}
|
|
5763
|
+
static fromArtplayer(json, playerID, domain = 'other') {
|
|
5764
|
+
return new UniPool(json.map((d)=>UniDM.fromArtplayer({
|
|
5765
|
+
content: d.text,
|
|
5766
|
+
progress: d.time || 0,
|
|
5767
|
+
mode: d.mode || 0,
|
|
5768
|
+
color: Number((d.color || 'FFFFFF').replace('#', '0x')),
|
|
5769
|
+
style: d.style
|
|
5770
|
+
}, playerID, domain)));
|
|
5771
|
+
}
|
|
5772
|
+
toArtplayer() {
|
|
5773
|
+
return this.dans.map((dan)=>{
|
|
5774
|
+
const d = dan.toArtplayer();
|
|
5775
|
+
return {
|
|
5776
|
+
text: d.content,
|
|
5777
|
+
time: d.progress,
|
|
5778
|
+
mode: d.mode,
|
|
5779
|
+
color: `#${d.color.toString(16).toUpperCase() || 'FFFFFF'}`,
|
|
5780
|
+
border: d.border,
|
|
5781
|
+
style: d.style
|
|
5782
|
+
};
|
|
5783
|
+
});
|
|
5784
|
+
}
|
|
5785
|
+
static fromDDPlay(json, episodeId) {
|
|
5786
|
+
return new UniPool(json.comments.map((d)=>{
|
|
5787
|
+
const p_arr = d.p.split(',');
|
|
5788
|
+
return UniDM.fromDDplay({
|
|
5789
|
+
cid: d.cid,
|
|
5790
|
+
color: Number.parseInt(p_arr[2]),
|
|
5791
|
+
m: d.m,
|
|
5792
|
+
mode: Number.parseInt(p_arr[1]),
|
|
5793
|
+
progress: Number.parseFloat(p_arr[0]),
|
|
5794
|
+
uid: p_arr[3]
|
|
5795
|
+
}, episodeId);
|
|
5796
|
+
}));
|
|
5797
|
+
}
|
|
5798
|
+
toDDplay() {
|
|
5799
|
+
return {
|
|
5800
|
+
count: this.dans.length,
|
|
5801
|
+
comments: this.dans.map((dan)=>{
|
|
5802
|
+
const d = dan.toDDplay();
|
|
5803
|
+
return {
|
|
5804
|
+
cid: d.cid,
|
|
5805
|
+
p: `${d.progress},${d.mode},${d.color},${d.uid}`,
|
|
5806
|
+
m: d.m
|
|
5807
|
+
};
|
|
5808
|
+
})
|
|
5809
|
+
};
|
|
5810
|
+
}
|
|
5811
|
+
static fromASS(ass) {
|
|
5812
|
+
return parseAssRawField(ass);
|
|
5813
|
+
}
|
|
5814
|
+
toASS(options = {
|
|
5815
|
+
substyle: {}
|
|
5816
|
+
}) {
|
|
5817
|
+
const fn = this.shared.SOID;
|
|
5818
|
+
return generateASS(this, {
|
|
5819
|
+
filename: fn,
|
|
5820
|
+
title: fn,
|
|
5821
|
+
...options
|
|
5822
|
+
});
|
|
5823
|
+
}
|
|
5824
|
+
}
|
|
5825
|
+
const color_pad = (s)=>s.length < 2 ? `0${s}` : s;
|
|
5826
|
+
const decimalToHex = (n)=>color_pad(n.toString(16));
|
|
5827
|
+
const isDarkColor = ({ r, g, b })=>0.299 * r + 0.587 * g + 0.114 * b < 0x30;
|
|
5828
|
+
const WHITE = {
|
|
5829
|
+
r: 255,
|
|
5830
|
+
g: 255,
|
|
5831
|
+
b: 255
|
|
5832
|
+
};
|
|
5833
|
+
const BLACK = {
|
|
5834
|
+
r: 0,
|
|
5835
|
+
g: 0,
|
|
5836
|
+
b: 0
|
|
5837
|
+
};
|
|
5838
|
+
const hexColorToRGB = (hex)=>{
|
|
5839
|
+
if (0 === hex.indexOf('#')) hex = hex.slice(1);
|
|
5840
|
+
const [r, g, b] = 3 === hex.length ? hex.split('').map((c)=>c + c) : hex.match(/../g) || [];
|
|
5841
|
+
return {
|
|
5842
|
+
r: Number.parseInt(r, 16),
|
|
5843
|
+
g: Number.parseInt(g, 16),
|
|
5844
|
+
b: Number.parseInt(b, 16)
|
|
5845
|
+
};
|
|
5846
|
+
};
|
|
5847
|
+
const formatColor = ({ r, g, b }, opacity)=>{
|
|
5848
|
+
const color = [
|
|
5849
|
+
b,
|
|
5850
|
+
g,
|
|
5851
|
+
r
|
|
5852
|
+
];
|
|
5853
|
+
if (void 0 !== opacity) {
|
|
5854
|
+
const alpha = Math.round((1 - opacity) * 255);
|
|
5855
|
+
color.unshift(alpha);
|
|
5856
|
+
}
|
|
5857
|
+
return `&H${color.map(decimalToHex).join('').toUpperCase()}`;
|
|
5858
|
+
};
|
|
5859
|
+
const getDecoratingColor = (color)=>isDarkColor(color) ? WHITE : BLACK;
|
|
5860
|
+
const isWhite = (color)=>255 === color.r && 255 === color.g && 255 === color.b;
|
|
5861
|
+
const DanmakuType = {
|
|
5862
|
+
SCROLL: 1,
|
|
5863
|
+
BOTTOM: 2,
|
|
5864
|
+
TOP: 3
|
|
5865
|
+
};
|
|
5866
|
+
const FontSize = {
|
|
5867
|
+
SMALL: 0,
|
|
5868
|
+
NORMAL: 1,
|
|
5869
|
+
LARGE: 2
|
|
5870
|
+
};
|
|
5871
|
+
function decimalToRGB888(decimal) {
|
|
5872
|
+
const r = decimal >> 16 & 0xff;
|
|
5873
|
+
const g = decimal >> 8 & 0xff;
|
|
5874
|
+
const b = 0xff & decimal;
|
|
5875
|
+
return {
|
|
5876
|
+
r,
|
|
5877
|
+
g,
|
|
5878
|
+
b
|
|
5879
|
+
};
|
|
5880
|
+
}
|
|
5881
|
+
function UniPool2DanmakuLists(UP) {
|
|
5882
|
+
const dans = UP.dans;
|
|
5883
|
+
let type = DanmakuType.SCROLL;
|
|
5884
|
+
return dans.map((d)=>{
|
|
5885
|
+
if (d.mode === dm_gen_Modes.Bottom) type = DanmakuType.BOTTOM;
|
|
5886
|
+
else if (d.mode === dm_gen_Modes.Top) type = DanmakuType.TOP;
|
|
5887
|
+
return {
|
|
5888
|
+
time: d.progress,
|
|
5889
|
+
type,
|
|
5890
|
+
fontSizeType: d.fontsize,
|
|
5891
|
+
content: d.content,
|
|
5892
|
+
color: decimalToRGB888(d.color),
|
|
5893
|
+
extra: d
|
|
5894
|
+
};
|
|
5895
|
+
});
|
|
5896
|
+
}
|
|
5897
|
+
function DanmakuList2UniPool(d) {
|
|
5898
|
+
return new UniPool(d.map((d)=>UniDM.create(d.extra)));
|
|
5899
|
+
}
|
|
5900
|
+
const lang_assign = (source, ...targets)=>{
|
|
5901
|
+
for (const target of targets)for (const key of Object.keys(target))source[key] = target[key];
|
|
5902
|
+
return source;
|
|
5903
|
+
};
|
|
5904
|
+
const arrayOfLength = (length, defaultValue)=>{
|
|
5905
|
+
const array = new Array(length);
|
|
5906
|
+
for(let i = 0; i < length; i++)array[i] = defaultValue;
|
|
5907
|
+
return array;
|
|
5908
|
+
};
|
|
5909
|
+
const computeScrollInTime = (rectWidth, screenWidth, scrollTime)=>{
|
|
5910
|
+
const speed = (screenWidth + rectWidth) / scrollTime;
|
|
5911
|
+
return rectWidth / speed;
|
|
5912
|
+
};
|
|
5913
|
+
const computeScrollOverTime = (rectWidth, screenWidth, scrollTime)=>{
|
|
5914
|
+
const speed = (screenWidth + rectWidth) / scrollTime;
|
|
5915
|
+
return screenWidth / speed;
|
|
5916
|
+
};
|
|
5917
|
+
const splitGrids = ({ fontSize, padding, playResY, bottomSpace })=>{
|
|
5918
|
+
const defaultFontSize = fontSize[FontSize.NORMAL];
|
|
5919
|
+
const paddingTop = padding[0];
|
|
5920
|
+
const paddingBottom = padding[2];
|
|
5921
|
+
const linesCount = Math.floor((playResY - bottomSpace) / (defaultFontSize + paddingTop + paddingBottom));
|
|
5922
|
+
return {
|
|
5923
|
+
1: arrayOfLength(linesCount, {
|
|
5924
|
+
start: 0,
|
|
5925
|
+
end: 0,
|
|
5926
|
+
width: 0
|
|
5927
|
+
}),
|
|
5928
|
+
3: arrayOfLength(linesCount, 0),
|
|
5929
|
+
2: arrayOfLength(linesCount, 0)
|
|
5930
|
+
};
|
|
5931
|
+
};
|
|
5932
|
+
const measureTextWidth = (()=>{
|
|
5933
|
+
const canvasContext = createCanvas(50, 50).getContext('2d');
|
|
5934
|
+
const supportTextMeasure = !!canvasContext.measureText("\u4E2D");
|
|
5935
|
+
if (supportTextMeasure) return (fontName, fontSize, bold, text)=>{
|
|
5936
|
+
canvasContext.font = `${bold ? 'bold' : 'normal'} ${fontSize}px ${fontName}`;
|
|
5937
|
+
const textWidth = canvasContext.measureText(text).width;
|
|
5938
|
+
return Math.round(textWidth);
|
|
5939
|
+
};
|
|
5940
|
+
console.warn('[Warn] node-canvas is installed without text measure support, layout may not be correct');
|
|
5941
|
+
return (_fontName, fontSize, _bold, text)=>text.length * fontSize;
|
|
5942
|
+
})();
|
|
5943
|
+
const resolveAvailableFixGrid = (grids, time)=>{
|
|
5944
|
+
for (const [i, grid] of grids.entries())if (grid <= time) return i;
|
|
5945
|
+
return -1;
|
|
5946
|
+
};
|
|
5947
|
+
const resolveAvailableScrollGrid = (grids, rectWidth, screenWidth, time, duration)=>{
|
|
5948
|
+
for (const [i, previous] of grids.entries()){
|
|
5949
|
+
const previousInTime = previous.start + computeScrollInTime(previous.width, screenWidth, duration);
|
|
5348
5950
|
const currentOverTime = time + computeScrollOverTime(rectWidth, screenWidth, duration);
|
|
5349
5951
|
if (time >= previousInTime && currentOverTime >= previous.end) return i;
|
|
5350
5952
|
}
|
|
@@ -5421,7 +6023,7 @@ const formatTime = (seconds)=>{
|
|
|
5421
6023
|
const minorSecond = Math.floor((seconds - integer) * 100);
|
|
5422
6024
|
return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
|
|
5423
6025
|
};
|
|
5424
|
-
const encode = (text)=>text.toString().replaceAll('{',
|
|
6026
|
+
const encode = (text)=>text.toString().replaceAll('{', "\uFF5B").replaceAll('}', "\uFF5D").replaceAll(/\r|\n/g, '');
|
|
5425
6027
|
const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
|
|
5426
6028
|
const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
|
|
5427
6029
|
const colorCommand = (color)=>`\\c${formatColor(color)}`;
|
|
@@ -5506,7 +6108,7 @@ const info = ({ playResX, playResY }, { filename, title })=>{
|
|
|
5506
6108
|
const content = [
|
|
5507
6109
|
'[Script Info]',
|
|
5508
6110
|
`Title: ${title}`,
|
|
5509
|
-
`Original Script:
|
|
6111
|
+
`Original Script: \u{6839}\u{636E} ${filename} \u{7684}\u{5F39}\u{5E55}\u{4FE1}\u{606F}\u{FF0C}\u{7531} ${package_namespaceObject.e8} \u{751F}\u{6210}`,
|
|
5510
6112
|
'ScriptType: v4.00+',
|
|
5511
6113
|
'Collisions: Reverse',
|
|
5512
6114
|
`PlayResX: ${playResX}`,
|
|
@@ -5527,16 +6129,16 @@ function fromUint16Array(array) {
|
|
|
5527
6129
|
for (const element of array)result += String.fromCharCode(element);
|
|
5528
6130
|
return result;
|
|
5529
6131
|
}
|
|
5530
|
-
|
|
5531
|
-
const
|
|
6132
|
+
function raw_raw(list, config, context, compressType = 'brotli', baseType = 'base18384') {
|
|
6133
|
+
const raw1 = {
|
|
5532
6134
|
list,
|
|
5533
6135
|
config,
|
|
5534
6136
|
context
|
|
5535
|
-
}, rawText = JSON.stringify(
|
|
6137
|
+
}, rawText = JSON.stringify(raw1);
|
|
5536
6138
|
let compress = Buffer.from('');
|
|
5537
|
-
compress = 'brotli' === compressType ?
|
|
5538
|
-
return `;RawCompressType: ${compressType}\n;RawBaseType: ${baseType}\n;Raw: ${'base64' === baseType ? compress.toString('base64') : fromUint16Array(
|
|
5539
|
-
}
|
|
6139
|
+
compress = 'brotli' === compressType ? brotliCompressSync(rawText) : gzipSync(rawText);
|
|
6140
|
+
return `;RawCompressType: ${compressType}\n;RawBaseType: ${baseType}\n;Raw: ${'base64' === baseType ? compress.toString('base64') : fromUint16Array(external_base16384_encode(compress))}`;
|
|
6141
|
+
}
|
|
5540
6142
|
function deRaw(ass) {
|
|
5541
6143
|
const arr = ass.split('\n'), lineCompressType = arr.find((line)=>line.startsWith(';RawCompressType:')), lineBaseType = arr.find((line)=>line.startsWith(';RawBaseType:')), lineRaw = arr.find((line)=>line.startsWith(';Raw:'));
|
|
5542
6144
|
if (!lineCompressType || !lineBaseType || !lineRaw) return;
|
|
@@ -5544,9 +6146,9 @@ function deRaw(ass) {
|
|
|
5544
6146
|
let compressType = lineCompressType.replace(';RawCompressType: ', '').trim(), baseType = lineBaseType.replace(';RawBaseType: ', '').trim();
|
|
5545
6147
|
if (!compressTypes.includes(compressType)) compressType = 'gzip';
|
|
5546
6148
|
if (!baseTypes.includes(baseType)) baseType = 'base64';
|
|
5547
|
-
const text = lineRaw.replace(';Raw: ', '').trim(), buffer = 'base64' === baseType ? Buffer.from(text, 'base64') : Buffer.from(
|
|
6149
|
+
const text = lineRaw.replace(';Raw: ', '').trim(), buffer = 'base64' === baseType ? Buffer.from(text, 'base64') : Buffer.from(decode(Buffer.from(text, 'utf-8').toString('utf-8')));
|
|
5548
6150
|
let decompress = Buffer.from('');
|
|
5549
|
-
decompress = 'brotli' === compressType ?
|
|
6151
|
+
decompress = 'brotli' === compressType ? brotliDecompressSync(buffer) : gunzipSync(buffer);
|
|
5550
6152
|
try {
|
|
5551
6153
|
return JSON.parse(decompress.toString('utf-8'));
|
|
5552
6154
|
} catch {
|
|
@@ -5598,14 +6200,14 @@ const style = ({ fontName, fontSize, color: configColor, outlineColor, backColor
|
|
|
5598
6200
|
const ass_create = (list, rawList, config, context = {
|
|
5599
6201
|
filename: 'unknown',
|
|
5600
6202
|
title: 'unknown'
|
|
5601
|
-
})=>{
|
|
6203
|
+
}, rawConfig)=>{
|
|
5602
6204
|
const Elist = UniPool2DanmakuLists(list), ErawList = UniPool2DanmakuLists(rawList);
|
|
5603
6205
|
const content = [
|
|
5604
6206
|
info(config, context),
|
|
5605
6207
|
style(config),
|
|
5606
6208
|
ass_event(Elist, config)
|
|
5607
6209
|
];
|
|
5608
|
-
if (config.includeRaw) content.push(
|
|
6210
|
+
if (config.includeRaw) content.push(raw_raw(ErawList, config, context, rawConfig?.compressType, rawConfig?.baseType));
|
|
5609
6211
|
return `${content.join('\n\n')}\n`;
|
|
5610
6212
|
};
|
|
5611
6213
|
const ass_gen_config = (overrides = {})=>{
|
|
@@ -5650,7 +6252,7 @@ function generateASS(danmaku, options) {
|
|
|
5650
6252
|
const content = ass_create(layoutList, danmaku, config, {
|
|
5651
6253
|
filename: options?.filename || 'unknown',
|
|
5652
6254
|
title: options?.title || 'unknown'
|
|
5653
|
-
});
|
|
6255
|
+
}, options.raw);
|
|
5654
6256
|
return content;
|
|
5655
6257
|
}
|
|
5656
6258
|
function parseAssRawField(ass) {
|
|
@@ -5658,42 +6260,167 @@ function parseAssRawField(ass) {
|
|
|
5658
6260
|
if (!raw) return UniPool.create();
|
|
5659
6261
|
return DanmakuList2UniPool(raw.list);
|
|
5660
6262
|
}
|
|
5661
|
-
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
5662
|
-
const DmSegMobileReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 30);
|
|
5663
|
-
const DmWebViewReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 39);
|
|
5664
|
-
const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIt4CCgdEYW5tYWt1EgwKBEZDSUQYASABKAkSDAoERE1JRBgCIAEoCRIQCghwcm9ncmVzcxgDIAEoBRIlCgRtb2RlGAQgASgOMhcuZGFudW5pLmRhbm1ha3UudjEuTW9kZRIQCghmb250c2l6ZRgFIAEoBRINCgVjb2xvchgGIAEoBRIQCghzZW5kZXJJRBgHIAEoCRIPCgdjb250ZW50GAggASgJEikKBWN0aW1lGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZ3ZWlnaHQYCiABKAUSJQoEcG9vbBgLIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLlBvb2wSDAoEYXR0chgMIAMoCRIQCghwbGF0Zm9ybRgNIAEoCRIRCgRTUE1PGA4gASgJSACIAQESEgoFZXh0cmEYDyABKAlIAYgBAUIHCgVfU1BNT0IICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EANQAGIGcHJvdG8z", [
|
|
5665
|
-
file_google_protobuf_timestamp
|
|
5666
|
-
]);
|
|
5667
|
-
const DanmakuReplySchema = /*@__PURE__*/ message_messageDesc(file_danuni, 1);
|
|
5668
|
-
class UniPool {
|
|
6263
|
+
class src_UniPool {
|
|
5669
6264
|
dans;
|
|
5670
|
-
|
|
5671
|
-
constructor(dans){
|
|
6265
|
+
options;
|
|
6266
|
+
constructor(dans, options = {}){
|
|
5672
6267
|
this.dans = dans;
|
|
5673
|
-
this.
|
|
5674
|
-
|
|
5675
|
-
|
|
5676
|
-
|
|
5677
|
-
|
|
5678
|
-
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
6268
|
+
this.options = options;
|
|
6269
|
+
if (false !== options.dedupe) options.dedupe = true;
|
|
6270
|
+
if (this.options.dedupe) this.dedupe();
|
|
6271
|
+
}
|
|
6272
|
+
async pipe(fn) {
|
|
6273
|
+
return fn(this);
|
|
6274
|
+
}
|
|
6275
|
+
pipeSync(fn) {
|
|
6276
|
+
return fn(this);
|
|
6277
|
+
}
|
|
6278
|
+
get shared() {
|
|
6279
|
+
const isShared = (key)=>this.dans.every((d)=>d[key]);
|
|
6280
|
+
return {
|
|
6281
|
+
SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
|
|
6282
|
+
senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
|
|
6283
|
+
platform: isShared('platform') ? this.dans[0].platform : void 0,
|
|
6284
|
+
pool: isShared('pool') ? this.dans[0].pool : void 0,
|
|
6285
|
+
mode: isShared('mode') ? this.dans[0].mode : void 0,
|
|
6286
|
+
color: isShared('color') ? this.dans[0].color : void 0
|
|
6287
|
+
};
|
|
6288
|
+
}
|
|
6289
|
+
get stat() {
|
|
6290
|
+
const default_stat = {
|
|
6291
|
+
SOID: [],
|
|
6292
|
+
mode: [
|
|
6293
|
+
{
|
|
6294
|
+
val: dm_gen_Modes.Normal,
|
|
6295
|
+
count: 0
|
|
6296
|
+
},
|
|
6297
|
+
{
|
|
6298
|
+
val: dm_gen_Modes.Bottom,
|
|
6299
|
+
count: 0
|
|
6300
|
+
},
|
|
6301
|
+
{
|
|
6302
|
+
val: dm_gen_Modes.Top,
|
|
6303
|
+
count: 0
|
|
6304
|
+
},
|
|
6305
|
+
{
|
|
6306
|
+
val: dm_gen_Modes.Reverse,
|
|
6307
|
+
count: 0
|
|
6308
|
+
},
|
|
6309
|
+
{
|
|
6310
|
+
val: dm_gen_Modes.Ext,
|
|
6311
|
+
count: 0
|
|
6312
|
+
}
|
|
6313
|
+
],
|
|
6314
|
+
fontsize: [],
|
|
6315
|
+
color: [],
|
|
6316
|
+
senderID: [],
|
|
6317
|
+
content: [],
|
|
6318
|
+
weight: [],
|
|
6319
|
+
pool: [
|
|
6320
|
+
{
|
|
6321
|
+
val: dm_gen_Pools.Def,
|
|
6322
|
+
count: 0
|
|
6323
|
+
},
|
|
6324
|
+
{
|
|
6325
|
+
val: dm_gen_Pools.Sub,
|
|
6326
|
+
count: 0
|
|
6327
|
+
},
|
|
6328
|
+
{
|
|
6329
|
+
val: dm_gen_Pools.Adv,
|
|
6330
|
+
count: 0
|
|
6331
|
+
},
|
|
6332
|
+
{
|
|
6333
|
+
val: dm_gen_Pools.Ix,
|
|
6334
|
+
count: 0
|
|
6335
|
+
}
|
|
6336
|
+
],
|
|
6337
|
+
platform: []
|
|
6338
|
+
};
|
|
6339
|
+
const stat = this.dans.reduce((s, d)=>{
|
|
6340
|
+
const SOID = s.SOID.find((i)=>i.val === d.SOID);
|
|
6341
|
+
if (SOID) SOID.count++;
|
|
6342
|
+
else s.SOID.push({
|
|
6343
|
+
val: d.SOID,
|
|
6344
|
+
count: 1
|
|
6345
|
+
});
|
|
6346
|
+
const mode = s.mode.find((i)=>i.val === d.mode);
|
|
6347
|
+
if (mode) mode.count++;
|
|
6348
|
+
else s.mode.push({
|
|
6349
|
+
val: d.mode,
|
|
6350
|
+
count: 1
|
|
6351
|
+
});
|
|
6352
|
+
const fontsize = s.fontsize.find((i)=>i.val === d.fontsize);
|
|
6353
|
+
if (fontsize) fontsize.count++;
|
|
6354
|
+
else s.fontsize.push({
|
|
6355
|
+
val: d.fontsize,
|
|
6356
|
+
count: 1
|
|
6357
|
+
});
|
|
6358
|
+
const color = s.color.find((i)=>i.val === d.color);
|
|
6359
|
+
if (color) color.count++;
|
|
6360
|
+
else s.color.push({
|
|
6361
|
+
val: d.color,
|
|
6362
|
+
count: 1
|
|
6363
|
+
});
|
|
6364
|
+
const senderID = s.senderID.find((i)=>i.val === d.senderID);
|
|
6365
|
+
if (senderID) senderID.count++;
|
|
6366
|
+
else s.senderID.push({
|
|
6367
|
+
val: d.senderID,
|
|
6368
|
+
count: 1
|
|
6369
|
+
});
|
|
6370
|
+
const content = s.content.find((i)=>i.val === d.content);
|
|
6371
|
+
if (content) content.count++;
|
|
6372
|
+
else s.content.push({
|
|
6373
|
+
val: d.content,
|
|
6374
|
+
count: 1
|
|
6375
|
+
});
|
|
6376
|
+
const weight = s.weight.find((i)=>i.val === d.weight);
|
|
6377
|
+
if (weight) weight.count++;
|
|
6378
|
+
else s.weight.push({
|
|
6379
|
+
val: d.weight,
|
|
6380
|
+
count: 1
|
|
6381
|
+
});
|
|
6382
|
+
const pool = s.pool.find((i)=>i.val === d.pool);
|
|
6383
|
+
if (pool) pool.count++;
|
|
6384
|
+
else s.pool.push({
|
|
6385
|
+
val: d.pool,
|
|
6386
|
+
count: 1
|
|
6387
|
+
});
|
|
6388
|
+
const platform = s.platform.find((i)=>i.val === d.platform);
|
|
6389
|
+
if (platform) platform.count++;
|
|
6390
|
+
else s.platform.push({
|
|
6391
|
+
val: d.platform,
|
|
6392
|
+
count: 1
|
|
6393
|
+
});
|
|
6394
|
+
return s;
|
|
6395
|
+
}, default_stat);
|
|
6396
|
+
return stat;
|
|
6397
|
+
}
|
|
6398
|
+
get most() {
|
|
6399
|
+
const s = this.stat;
|
|
6400
|
+
return {
|
|
6401
|
+
mode: s.mode.sort((a, b)=>b.count - a.count)[0].val,
|
|
6402
|
+
fontsize: s.fontsize.sort((a, b)=>b.count - a.count)[0].val,
|
|
6403
|
+
color: s.color.sort((a, b)=>b.count - a.count)[0].val,
|
|
6404
|
+
senderID: s.senderID.sort((a, b)=>b.count - a.count)[0].val,
|
|
6405
|
+
content: s.content.sort((a, b)=>b.count - a.count)[0].val,
|
|
6406
|
+
weight: s.weight.sort((a, b)=>b.count - a.count)[0].val,
|
|
6407
|
+
pool: s.pool.sort((a, b)=>b.count - a.count)[0].val,
|
|
6408
|
+
platform: s.platform.sort((a, b)=>b.count - a.count)[0].val
|
|
6409
|
+
};
|
|
5683
6410
|
}
|
|
5684
6411
|
static create() {
|
|
5685
|
-
return new
|
|
6412
|
+
return new src_UniPool([]);
|
|
5686
6413
|
}
|
|
5687
6414
|
assign(dans) {
|
|
5688
|
-
if (dans instanceof
|
|
6415
|
+
if (dans instanceof src_UniPool) return new src_UniPool([
|
|
5689
6416
|
...this.dans,
|
|
5690
6417
|
...dans.dans
|
|
5691
6418
|
]);
|
|
5692
|
-
if (dans instanceof UniDM) return new
|
|
6419
|
+
if (dans instanceof UniDM) return new src_UniPool([
|
|
5693
6420
|
...this.dans,
|
|
5694
6421
|
dans
|
|
5695
6422
|
]);
|
|
5696
|
-
if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new
|
|
6423
|
+
if (Array.isArray(dans) && dans.every((d)=>d instanceof UniDM)) return new src_UniPool([
|
|
5697
6424
|
...this.dans,
|
|
5698
6425
|
...dans
|
|
5699
6426
|
]);
|
|
@@ -5706,21 +6433,31 @@ class UniPool {
|
|
|
5706
6433
|
const set = new Set(this.dans.map((d)=>d[key]));
|
|
5707
6434
|
return [
|
|
5708
6435
|
...set
|
|
5709
|
-
].map((v)=>new
|
|
6436
|
+
].map((v)=>new src_UniPool(this.dans.filter((d)=>d[key] === v), {
|
|
6437
|
+
dedupe: false
|
|
6438
|
+
}));
|
|
6439
|
+
}
|
|
6440
|
+
dedupe() {
|
|
6441
|
+
const map = new Map();
|
|
6442
|
+
this.dans.forEach((d)=>map.set(d.DMID || d.toDMID(), d));
|
|
6443
|
+
this.dans = [
|
|
6444
|
+
...map.values()
|
|
6445
|
+
];
|
|
6446
|
+
this.options.dedupe = false;
|
|
5710
6447
|
}
|
|
5711
6448
|
merge(lifetime = 0) {
|
|
5712
|
-
if (!this.shared.
|
|
5713
|
-
console.error("
|
|
6449
|
+
if (!this.shared.SOID) {
|
|
6450
|
+
console.error("\u672C\u529F\u80FD\u4EC5\u652F\u6301\u540C\u5F39\u5E55\u5E93\u5185\u4F7F\u7528\uFF0C\u53EF\u5148 .split('SOID') \u5728\u5206\u522B\u4F7F\u7528");
|
|
5714
6451
|
return this;
|
|
5715
6452
|
}
|
|
5716
6453
|
if (lifetime <= 0) return this;
|
|
5717
6454
|
const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
|
|
5718
6455
|
const key = [
|
|
6456
|
+
'SOID',
|
|
5719
6457
|
'content',
|
|
5720
6458
|
'mode',
|
|
5721
6459
|
'platform',
|
|
5722
|
-
'pool'
|
|
5723
|
-
'SPMO'
|
|
6460
|
+
'pool'
|
|
5724
6461
|
].map((k)=>danmaku[k]).join('|');
|
|
5725
6462
|
const cached = cache[key];
|
|
5726
6463
|
const lastAppearTime = cached?.progress || 0;
|
|
@@ -5732,7 +6469,9 @@ class UniPool {
|
|
|
5732
6469
|
extra.danuni.merge = {
|
|
5733
6470
|
count: senders.length,
|
|
5734
6471
|
duration: danmaku.progress - cached.progress,
|
|
5735
|
-
senders
|
|
6472
|
+
senders,
|
|
6473
|
+
taolu_count: senders.length,
|
|
6474
|
+
taolu_senders: senders
|
|
5736
6475
|
};
|
|
5737
6476
|
danmaku.extraStr = JSON.stringify(extra);
|
|
5738
6477
|
cache[key] = danmaku;
|
|
@@ -5749,6 +6488,10 @@ class UniPool {
|
|
|
5749
6488
|
duration: 0,
|
|
5750
6489
|
senders: [
|
|
5751
6490
|
danmaku.senderID
|
|
6491
|
+
],
|
|
6492
|
+
taolu_count: 1,
|
|
6493
|
+
taolu_senders: [
|
|
6494
|
+
danmaku.senderID
|
|
5752
6495
|
]
|
|
5753
6496
|
};
|
|
5754
6497
|
cache[key] = danmaku;
|
|
@@ -5771,11 +6514,11 @@ class UniPool {
|
|
|
5771
6514
|
const [result, _cache, mergeObj] = mergeContext;
|
|
5772
6515
|
result.forEach((danmaku, i)=>{
|
|
5773
6516
|
const key = [
|
|
6517
|
+
'SOID',
|
|
5774
6518
|
'content',
|
|
5775
6519
|
'mode',
|
|
5776
6520
|
'platform',
|
|
5777
|
-
'pool'
|
|
5778
|
-
'SPMO'
|
|
6521
|
+
'pool'
|
|
5779
6522
|
].map((k)=>danmaku[k]).join('|');
|
|
5780
6523
|
const extra = result[i].extra, mergeData = mergeObj[key];
|
|
5781
6524
|
result[i].extraStr = JSON.stringify({
|
|
@@ -5785,20 +6528,23 @@ class UniPool {
|
|
|
5785
6528
|
merge: mergeData
|
|
5786
6529
|
}
|
|
5787
6530
|
});
|
|
5788
|
-
if (mergeData?.count) {
|
|
5789
|
-
|
|
5790
|
-
|
|
5791
|
-
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
6531
|
+
if (mergeData?.count) if (mergeData.count <= 1) {
|
|
6532
|
+
const updatedExtra = {
|
|
6533
|
+
...extra
|
|
6534
|
+
};
|
|
6535
|
+
if (updatedExtra.danuni) {
|
|
6536
|
+
delete updatedExtra.danuni.merge;
|
|
6537
|
+
if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
|
|
6538
|
+
}
|
|
6539
|
+
result[i].extraStr = Object.keys(updatedExtra).length > 0 ? JSON.stringify(updatedExtra) : void 0;
|
|
6540
|
+
} else {
|
|
6541
|
+
result[i].senderID = 'merge[bot]@dan-any';
|
|
6542
|
+
result[i].attr ? result[i].attr.push('Protect') : result[i].attr = [
|
|
6543
|
+
'Protect'
|
|
6544
|
+
];
|
|
5799
6545
|
}
|
|
5800
6546
|
});
|
|
5801
|
-
return new
|
|
6547
|
+
return new src_UniPool(result);
|
|
5802
6548
|
}
|
|
5803
6549
|
minify() {
|
|
5804
6550
|
return this.dans.map((d)=>d.minify());
|
|
@@ -5806,7 +6552,7 @@ class UniPool {
|
|
|
5806
6552
|
convert2(format, continue_on_error = false) {
|
|
5807
6553
|
switch(format){
|
|
5808
6554
|
case 'danuni.json':
|
|
5809
|
-
return
|
|
6555
|
+
return this.dans;
|
|
5810
6556
|
case 'danuni.bin':
|
|
5811
6557
|
return this.toPb();
|
|
5812
6558
|
case 'dplayer.json':
|
|
@@ -5819,7 +6565,7 @@ class UniPool {
|
|
|
5819
6565
|
return this.toASS();
|
|
5820
6566
|
default:
|
|
5821
6567
|
{
|
|
5822
|
-
const message = '
|
|
6568
|
+
const message = '(err) Unknown format or unsupported now!';
|
|
5823
6569
|
if (continue_on_error) return message;
|
|
5824
6570
|
throw new Error(message);
|
|
5825
6571
|
}
|
|
@@ -5827,12 +6573,12 @@ class UniPool {
|
|
|
5827
6573
|
}
|
|
5828
6574
|
static fromPb(bin) {
|
|
5829
6575
|
const data = fromBinary(DanmakuReplySchema, new Uint8Array(bin));
|
|
5830
|
-
return new
|
|
6576
|
+
return new src_UniPool(data.danmakus.map((d)=>new UniDM(d.SOID, d.progress, d.mode, d.fontsize, d.color, d.senderID, d.content, timestampDate(d.ctime || timestampNow()), d.weight, d.pool, d.attr, d.platform, d.extra, d.DMID)));
|
|
5831
6577
|
}
|
|
5832
6578
|
toPb() {
|
|
5833
6579
|
return toBinary(DanmakuReplySchema, create(DanmakuReplySchema, {
|
|
5834
6580
|
danmakus: this.dans.map((d)=>({
|
|
5835
|
-
|
|
6581
|
+
SOID: d.SOID,
|
|
5836
6582
|
DMID: d.DMID,
|
|
5837
6583
|
progress: d.progress,
|
|
5838
6584
|
mode: d.mode,
|
|
@@ -5845,16 +6591,15 @@ class UniPool {
|
|
|
5845
6591
|
pool: d.pool,
|
|
5846
6592
|
attr: d.attr,
|
|
5847
6593
|
platform: d.platform,
|
|
5848
|
-
SPMO: d.SPMO,
|
|
5849
6594
|
extra: d.extraStr
|
|
5850
6595
|
}))
|
|
5851
6596
|
}));
|
|
5852
6597
|
}
|
|
5853
|
-
static fromBiliXML(xml
|
|
5854
|
-
const parser = new
|
|
6598
|
+
static fromBiliXML(xml) {
|
|
6599
|
+
const parser = new XMLParser({
|
|
5855
6600
|
ignoreAttributes: false
|
|
5856
6601
|
}), oriData = parser.parse(xml), dans = oriData.i.d;
|
|
5857
|
-
return new
|
|
6602
|
+
return new src_UniPool(dans.map((d)=>{
|
|
5858
6603
|
const p_str = d['@_p'], p_arr = p_str.split(',');
|
|
5859
6604
|
return UniDM.fromBili({
|
|
5860
6605
|
content: d['#text'],
|
|
@@ -5867,19 +6612,22 @@ class UniPool {
|
|
|
5867
6612
|
midHash: p_arr[6],
|
|
5868
6613
|
id: BigInt(p_arr[7]),
|
|
5869
6614
|
weight: Number.parseInt(p_arr[8])
|
|
5870
|
-
},
|
|
6615
|
+
}, BigInt(oriData.i.chatid));
|
|
5871
6616
|
}));
|
|
5872
6617
|
}
|
|
5873
|
-
static fromBiliGrpc(bin
|
|
6618
|
+
static fromBiliGrpc(bin) {
|
|
5874
6619
|
const data = fromBinary(DmSegMobileReplySchema, new Uint8Array(bin)), json = data.elems;
|
|
5875
|
-
return new
|
|
6620
|
+
return new src_UniPool(json.map((d)=>UniDM.fromBili({
|
|
6621
|
+
...d,
|
|
6622
|
+
progress: d.progress / 1000
|
|
6623
|
+
})));
|
|
5876
6624
|
}
|
|
5877
|
-
static fromBiliCommandGrpc(bin
|
|
6625
|
+
static fromBiliCommandGrpc(bin) {
|
|
5878
6626
|
const data = fromBinary(DmWebViewReplySchema, new Uint8Array(bin)), json = data.commandDms;
|
|
5879
|
-
return new
|
|
6627
|
+
return new src_UniPool(json.map((d)=>UniDM.fromBiliCommand(d)));
|
|
5880
6628
|
}
|
|
5881
6629
|
static fromDplayer(json, playerID, domain = 'other') {
|
|
5882
|
-
return new
|
|
6630
|
+
return new src_UniPool(json.data.map((d)=>UniDM.fromDplayer({
|
|
5883
6631
|
content: d[4],
|
|
5884
6632
|
progress: d[0],
|
|
5885
6633
|
mode: d[1],
|
|
@@ -5903,7 +6651,7 @@ class UniPool {
|
|
|
5903
6651
|
};
|
|
5904
6652
|
}
|
|
5905
6653
|
static fromArtplayer(json, playerID, domain = 'other') {
|
|
5906
|
-
return new
|
|
6654
|
+
return new src_UniPool(json.map((d)=>UniDM.fromArtplayer({
|
|
5907
6655
|
content: d.text,
|
|
5908
6656
|
progress: d.time || 0,
|
|
5909
6657
|
mode: d.mode || 0,
|
|
@@ -5924,8 +6672,8 @@ class UniPool {
|
|
|
5924
6672
|
};
|
|
5925
6673
|
});
|
|
5926
6674
|
}
|
|
5927
|
-
static fromDDPlay(json, episodeId
|
|
5928
|
-
return new
|
|
6675
|
+
static fromDDPlay(json, episodeId) {
|
|
6676
|
+
return new src_UniPool(json.comments.map((d)=>{
|
|
5929
6677
|
const p_arr = d.p.split(',');
|
|
5930
6678
|
return UniDM.fromDDplay({
|
|
5931
6679
|
cid: d.cid,
|
|
@@ -5934,7 +6682,7 @@ class UniPool {
|
|
|
5934
6682
|
mode: Number.parseInt(p_arr[1]),
|
|
5935
6683
|
progress: Number.parseFloat(p_arr[0]),
|
|
5936
6684
|
uid: p_arr[3]
|
|
5937
|
-
}, episodeId
|
|
6685
|
+
}, episodeId);
|
|
5938
6686
|
}));
|
|
5939
6687
|
}
|
|
5940
6688
|
toDDplay() {
|
|
@@ -5956,7 +6704,7 @@ class UniPool {
|
|
|
5956
6704
|
toASS(options = {
|
|
5957
6705
|
substyle: {}
|
|
5958
6706
|
}) {
|
|
5959
|
-
const fn = this.shared.
|
|
6707
|
+
const fn = this.shared.SOID;
|
|
5960
6708
|
return generateASS(this, {
|
|
5961
6709
|
filename: fn,
|
|
5962
6710
|
title: fn,
|
|
@@ -5964,4 +6712,4 @@ class UniPool {
|
|
|
5964
6712
|
});
|
|
5965
6713
|
}
|
|
5966
6714
|
}
|
|
5967
|
-
export { UniDM, dm_gen_namespaceObject as UniDMTools, id_gen_namespaceObject as UniIDTools, UniPool };
|
|
6715
|
+
export { UniDM, dm_gen_namespaceObject as UniDMTools, id_gen_namespaceObject as UniIDTools, src_UniPool as UniPool, platform_namespaceObject as platform };
|