@dan-uni/dan-any 0.9.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +245 -240
- package/dist/index.min.js +250 -245
- package/dist/index.umd.min.js +296 -281
- package/dist/src/index.d.ts +17 -7
- package/dist/src/proto/gen/danuni_pb.d.ts +2 -2
- package/package.json +5 -5
- package/src/ass-gen/ass/dialogue.ts +4 -4
- package/src/index.ts +164 -130
- package/src/proto/gen/bili/dm_pb.ts +1 -1
- package/src/proto/gen/danuni_pb.ts +4 -4
- package/src/proto/src/danuni.proto +1 -1
- package/src/utils/dm-gen.ts +16 -19
package/dist/index.min.js
CHANGED
|
@@ -8479,7 +8479,7 @@ var __webpack_modules__ = {
|
|
|
8479
8479
|
function _isUint8Array(obj) {
|
|
8480
8480
|
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
|
|
8481
8481
|
}
|
|
8482
|
-
var debugUtil = __webpack_require__("?
|
|
8482
|
+
var debugUtil = __webpack_require__("?8beb");
|
|
8483
8483
|
var debug;
|
|
8484
8484
|
debug = debugUtil && debugUtil.debuglog ? debugUtil.debuglog('stream') : function() {};
|
|
8485
8485
|
var BufferList = __webpack_require__("../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js");
|
|
@@ -9856,7 +9856,7 @@ var __webpack_modules__ = {
|
|
|
9856
9856
|
return ("string" === hint ? String : Number)(input);
|
|
9857
9857
|
}
|
|
9858
9858
|
var _require = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js"), Buffer = _require.Buffer;
|
|
9859
|
-
var _require2 = __webpack_require__("?
|
|
9859
|
+
var _require2 = __webpack_require__("?c028"), inspect = _require2.inspect;
|
|
9860
9860
|
var custom = inspect && inspect.custom || 'inspect';
|
|
9861
9861
|
function copyBuffer(src, target, offset) {
|
|
9862
9862
|
Buffer.prototype.copy.call(src, target, offset);
|
|
@@ -11414,8 +11414,8 @@ var __webpack_modules__ = {
|
|
|
11414
11414
|
return tryTypedArrays(value);
|
|
11415
11415
|
};
|
|
11416
11416
|
},
|
|
11417
|
-
"?
|
|
11418
|
-
"?
|
|
11417
|
+
"?c028": function() {},
|
|
11418
|
+
"?8beb": function() {},
|
|
11419
11419
|
"../../node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js": function(module, __unused_webpack_exports, __webpack_require__) {
|
|
11420
11420
|
var possibleNames = __webpack_require__("../../node_modules/.pnpm/possible-typed-array-names@1.1.0/node_modules/possible-typed-array-names/index.js");
|
|
11421
11421
|
var g = 'undefined' == typeof globalThis ? __webpack_require__.g : globalThis;
|
|
@@ -11495,11 +11495,11 @@ __webpack_require__.d(dm_gen_namespaceObject, {
|
|
|
11495
11495
|
Pools: ()=>dm_gen_Pools,
|
|
11496
11496
|
UniDM: ()=>UniDM
|
|
11497
11497
|
});
|
|
11498
|
-
var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.
|
|
11498
|
+
var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"1.0.0","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
|
|
11499
11499
|
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
11500
11500
|
const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
|
|
11501
11501
|
const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
|
|
11502
|
-
const file_danuni = /*@__PURE__*/ fileDesc("
|
|
11502
|
+
const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLUAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSFQoIcGxhdGZvcm0YDSABKAlIAIgBARISCgVleHRyYRgOIAEoCUgBiAEBQgsKCV9wbGF0Zm9ybUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
|
|
11503
11503
|
file_google_protobuf_timestamp
|
|
11504
11504
|
]);
|
|
11505
11505
|
const DanmakuReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_danuni, 2);
|
|
@@ -11745,6 +11745,7 @@ class UniDM {
|
|
|
11745
11745
|
return this.options.dmid(this);
|
|
11746
11746
|
}
|
|
11747
11747
|
isSameAs(dan, options) {
|
|
11748
|
+
if (this === dan) return true;
|
|
11748
11749
|
if (4 === this.mode || 4 === dan.mode) return false;
|
|
11749
11750
|
if (!options?.skipDanuniMerge && (this.extra.danuni?.merge || dan.extra.danuni?.merge)) return false;
|
|
11750
11751
|
const isSame = (k)=>this[k] === dan[k];
|
|
@@ -11758,26 +11759,22 @@ class UniDM {
|
|
|
11758
11759
|
return checks;
|
|
11759
11760
|
}
|
|
11760
11761
|
minify() {
|
|
11761
|
-
const def = UniDM
|
|
11762
|
-
const dan = UniDM.create(this);
|
|
11763
|
-
const shouldKeep = (key, value)=>{
|
|
11764
|
-
if ('SOID' === key) return true;
|
|
11765
|
-
if (null == value) return false;
|
|
11766
|
-
if (value === def[key]) return false;
|
|
11767
|
-
if ('attr' === key && Array.isArray(value) && 0 === value.length) return false;
|
|
11768
|
-
if ('extraStr' === key && '{}' === value) return false;
|
|
11769
|
-
return true;
|
|
11770
|
-
};
|
|
11762
|
+
const def = new UniDM();
|
|
11771
11763
|
const result = {
|
|
11772
|
-
SOID:
|
|
11773
|
-
};
|
|
11774
|
-
|
|
11775
|
-
|
|
11776
|
-
|
|
11777
|
-
|
|
11778
|
-
|
|
11779
|
-
|
|
11780
|
-
|
|
11764
|
+
SOID: this.SOID
|
|
11765
|
+
};
|
|
11766
|
+
if (this.progress !== def.progress) result.progress = this.progress;
|
|
11767
|
+
if (this.mode !== def.mode) result.mode = this.mode;
|
|
11768
|
+
if (this.fontsize !== def.fontsize) result.fontsize = this.fontsize;
|
|
11769
|
+
if (this.color !== def.color) result.color = this.color;
|
|
11770
|
+
if (this.senderID !== def.senderID) result.senderID = this.senderID;
|
|
11771
|
+
if (this.content !== def.content) result.content = this.content;
|
|
11772
|
+
if (this.weight !== def.weight) result.weight = this.weight;
|
|
11773
|
+
if (this.pool !== def.pool) result.pool = this.pool;
|
|
11774
|
+
if (this.attr.length > 0) result.attr = this.attr;
|
|
11775
|
+
if (void 0 !== this.platform) result.platform = this.platform;
|
|
11776
|
+
if (this.extraStr && '{}' !== this.extraStr) result.extraStr = this.extraStr;
|
|
11777
|
+
if (void 0 !== this.DMID) result.DMID = this.DMID;
|
|
11781
11778
|
return result;
|
|
11782
11779
|
}
|
|
11783
11780
|
downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
|
|
@@ -12329,46 +12326,91 @@ class UniPool {
|
|
|
12329
12326
|
return fn(this);
|
|
12330
12327
|
}
|
|
12331
12328
|
get shared() {
|
|
12332
|
-
|
|
12333
|
-
|
|
12334
|
-
|
|
12335
|
-
|
|
12336
|
-
|
|
12337
|
-
|
|
12338
|
-
|
|
12339
|
-
|
|
12340
|
-
|
|
12329
|
+
if (0 === this.dans.length) return {};
|
|
12330
|
+
const keys = [
|
|
12331
|
+
'SOID',
|
|
12332
|
+
'senderID',
|
|
12333
|
+
'platform',
|
|
12334
|
+
'pool',
|
|
12335
|
+
'mode',
|
|
12336
|
+
'color'
|
|
12337
|
+
];
|
|
12338
|
+
const result = {};
|
|
12339
|
+
for (const key of keys){
|
|
12340
|
+
const sharedVal = this.getShared(key);
|
|
12341
|
+
if (void 0 !== sharedVal) result[key] = sharedVal;
|
|
12342
|
+
}
|
|
12343
|
+
return result;
|
|
12341
12344
|
}
|
|
12342
12345
|
getShared(key) {
|
|
12343
|
-
|
|
12344
|
-
|
|
12346
|
+
if (0 === this.dans.length) return;
|
|
12347
|
+
const firstVal = this.dans[0][key];
|
|
12348
|
+
for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
|
|
12349
|
+
return firstVal;
|
|
12345
12350
|
}
|
|
12346
12351
|
getStat(key) {
|
|
12347
|
-
const
|
|
12348
|
-
const
|
|
12349
|
-
const
|
|
12350
|
-
|
|
12351
|
-
|
|
12352
|
-
|
|
12353
|
-
count: 1
|
|
12354
|
-
});
|
|
12355
|
-
return stat;
|
|
12356
|
-
}, default_stat);
|
|
12357
|
-
return stats;
|
|
12352
|
+
const statMap = new Map();
|
|
12353
|
+
for (const dan of this.dans){
|
|
12354
|
+
const val = dan[key];
|
|
12355
|
+
statMap.set(val, (statMap.get(val) || 0) + 1);
|
|
12356
|
+
}
|
|
12357
|
+
return statMap;
|
|
12358
12358
|
}
|
|
12359
12359
|
getMost(key) {
|
|
12360
|
-
|
|
12360
|
+
const stats = this.getStat(key);
|
|
12361
|
+
if (0 === stats.size) return {
|
|
12362
|
+
val: void 0,
|
|
12363
|
+
count: 0
|
|
12364
|
+
};
|
|
12365
|
+
let mostVal;
|
|
12366
|
+
let maxCount = 0;
|
|
12367
|
+
for (const [val, count] of stats.entries())if (count > maxCount) {
|
|
12368
|
+
maxCount = count;
|
|
12369
|
+
mostVal = val;
|
|
12370
|
+
}
|
|
12371
|
+
return {
|
|
12372
|
+
val: mostVal,
|
|
12373
|
+
count: maxCount
|
|
12374
|
+
};
|
|
12361
12375
|
}
|
|
12362
12376
|
get most() {
|
|
12377
|
+
const keys = [
|
|
12378
|
+
'mode',
|
|
12379
|
+
'fontsize',
|
|
12380
|
+
'color',
|
|
12381
|
+
'senderID',
|
|
12382
|
+
'content',
|
|
12383
|
+
'weight',
|
|
12384
|
+
'pool',
|
|
12385
|
+
'platform'
|
|
12386
|
+
];
|
|
12387
|
+
const statMaps = new Map();
|
|
12388
|
+
for (const dan of this.dans)for (const key of keys){
|
|
12389
|
+
if (!statMaps.has(key)) statMaps.set(key, new Map());
|
|
12390
|
+
const statMap = statMaps.get(key);
|
|
12391
|
+
const val = dan[key];
|
|
12392
|
+
statMap.set(val, (statMap.get(val) || 0) + 1);
|
|
12393
|
+
}
|
|
12394
|
+
const result = {};
|
|
12395
|
+
for (const key of keys){
|
|
12396
|
+
const statMap = statMaps.get(key);
|
|
12397
|
+
let mostVal;
|
|
12398
|
+
let maxCount = 0;
|
|
12399
|
+
for (const [val, count] of statMap.entries())if (count > maxCount) {
|
|
12400
|
+
maxCount = count;
|
|
12401
|
+
mostVal = val;
|
|
12402
|
+
}
|
|
12403
|
+
result[key] = mostVal;
|
|
12404
|
+
}
|
|
12363
12405
|
return {
|
|
12364
|
-
mode:
|
|
12365
|
-
fontsize:
|
|
12366
|
-
color:
|
|
12367
|
-
senderID:
|
|
12368
|
-
content:
|
|
12369
|
-
weight:
|
|
12370
|
-
pool:
|
|
12371
|
-
platform:
|
|
12406
|
+
mode: result.mode,
|
|
12407
|
+
fontsize: result.fontsize,
|
|
12408
|
+
color: result.color,
|
|
12409
|
+
senderID: result.senderID,
|
|
12410
|
+
content: result.content,
|
|
12411
|
+
weight: result.weight,
|
|
12412
|
+
pool: result.pool,
|
|
12413
|
+
platform: result.platform
|
|
12372
12414
|
};
|
|
12373
12415
|
}
|
|
12374
12416
|
static create(options) {
|
|
@@ -12396,7 +12438,7 @@ class UniPool {
|
|
|
12396
12438
|
return this;
|
|
12397
12439
|
}
|
|
12398
12440
|
split(key) {
|
|
12399
|
-
if (this.
|
|
12441
|
+
if (this.getShared(key)) return [
|
|
12400
12442
|
this
|
|
12401
12443
|
];
|
|
12402
12444
|
const set = new Set(this.dans.map((d)=>d[key]));
|
|
@@ -12418,44 +12460,27 @@ class UniPool {
|
|
|
12418
12460
|
this.options.dedupe = false;
|
|
12419
12461
|
}
|
|
12420
12462
|
merge(lifetime = 0) {
|
|
12421
|
-
if (!this.
|
|
12463
|
+
if (!this.getShared('SOID')) {
|
|
12422
12464
|
console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
|
|
12423
12465
|
return this;
|
|
12424
12466
|
}
|
|
12425
12467
|
if (lifetime <= 0) return this;
|
|
12426
|
-
const
|
|
12427
|
-
|
|
12428
|
-
|
|
12429
|
-
|
|
12430
|
-
|
|
12431
|
-
'platform'
|
|
12432
|
-
].map((k)=>danmaku[k]).join('|');
|
|
12468
|
+
const result = [];
|
|
12469
|
+
const cache = {};
|
|
12470
|
+
const mergeObj = {};
|
|
12471
|
+
for (const danmaku of this.dans){
|
|
12472
|
+
const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
|
|
12433
12473
|
const cached = cache[key];
|
|
12434
|
-
|
|
12435
|
-
if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
|
|
12474
|
+
if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
|
|
12436
12475
|
skipDanuniMerge: true
|
|
12437
12476
|
})) {
|
|
12438
|
-
|
|
12439
|
-
senders.
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12443
|
-
count: senders.length,
|
|
12444
|
-
duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
|
|
12445
|
-
senders,
|
|
12446
|
-
taolu_count: senders.length,
|
|
12447
|
-
taolu_senders: senders
|
|
12448
|
-
};
|
|
12449
|
-
danmaku.extraStr = src_JSON.stringify(extra);
|
|
12477
|
+
mergeObj[key].senders.push(danmaku.senderID);
|
|
12478
|
+
mergeObj[key].count = mergeObj[key].senders.length;
|
|
12479
|
+
mergeObj[key].taolu_count = mergeObj[key].count;
|
|
12480
|
+
mergeObj[key].taolu_senders = mergeObj[key].senders;
|
|
12481
|
+
mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
|
|
12450
12482
|
cache[key] = danmaku;
|
|
12451
|
-
|
|
12452
|
-
return [
|
|
12453
|
-
result,
|
|
12454
|
-
cache,
|
|
12455
|
-
mergeObj
|
|
12456
|
-
];
|
|
12457
|
-
}
|
|
12458
|
-
{
|
|
12483
|
+
} else {
|
|
12459
12484
|
mergeObj[key] = {
|
|
12460
12485
|
count: 1,
|
|
12461
12486
|
duration: 0,
|
|
@@ -12468,55 +12493,31 @@ class UniPool {
|
|
|
12468
12493
|
]
|
|
12469
12494
|
};
|
|
12470
12495
|
cache[key] = danmaku;
|
|
12471
|
-
const extra = danmaku.extra;
|
|
12472
|
-
extra.danuni = extra.danuni || {};
|
|
12473
|
-
extra.danuni.merge = mergeObj[key];
|
|
12474
|
-
danmaku.extraStr = src_JSON.stringify(extra);
|
|
12475
12496
|
result.push(danmaku);
|
|
12476
|
-
return [
|
|
12477
|
-
result,
|
|
12478
|
-
cache,
|
|
12479
|
-
mergeObj
|
|
12480
|
-
];
|
|
12481
12497
|
}
|
|
12482
|
-
}
|
|
12483
|
-
|
|
12484
|
-
{}
|
|
12485
|
-
{}
|
|
12486
|
-
]);
|
|
12487
|
-
const [result, _cache, mergeObj] = mergeContext;
|
|
12488
|
-
result.forEach((danmaku, i)=>{
|
|
12489
|
-
const key = [
|
|
12490
|
-
'content',
|
|
12491
|
-
'mode',
|
|
12492
|
-
'platform',
|
|
12493
|
-
'pool'
|
|
12494
|
-
].map((k)=>danmaku[k]).join('|');
|
|
12495
|
-
const extra = result[i].extra;
|
|
12498
|
+
}
|
|
12499
|
+
for (const danmaku of result){
|
|
12500
|
+
const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
|
|
12496
12501
|
const mergeData = mergeObj[key];
|
|
12497
|
-
|
|
12498
|
-
|
|
12499
|
-
|
|
12500
|
-
|
|
12501
|
-
|
|
12502
|
-
}
|
|
12503
|
-
});
|
|
12504
|
-
if (mergeData?.count) if (mergeData.count <= 1) {
|
|
12505
|
-
const updatedExtra = {
|
|
12506
|
-
...extra
|
|
12507
|
-
};
|
|
12508
|
-
if (updatedExtra.danuni) {
|
|
12509
|
-
delete updatedExtra.danuni.merge;
|
|
12510
|
-
if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
|
|
12511
|
-
}
|
|
12512
|
-
result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON.stringify(updatedExtra) : void 0;
|
|
12513
|
-
} else {
|
|
12514
|
-
result[i].senderID = 'merge[bot]@dan-any';
|
|
12515
|
-
result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
|
|
12502
|
+
const extra = danmaku.extra;
|
|
12503
|
+
if (mergeData.count > 1) {
|
|
12504
|
+
danmaku.senderID = 'merge[bot]@dan-any';
|
|
12505
|
+
if (danmaku.attr) {
|
|
12506
|
+
if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
|
|
12507
|
+
} else danmaku.attr = [
|
|
12516
12508
|
dm_gen_DMAttr.Protect
|
|
12517
12509
|
];
|
|
12510
|
+
extra.danuni = extra.danuni || {};
|
|
12511
|
+
extra.danuni.merge = mergeData;
|
|
12512
|
+
danmaku.extraStr = src_JSON.stringify(extra);
|
|
12513
|
+
} else {
|
|
12514
|
+
if (extra.danuni?.merge) {
|
|
12515
|
+
delete extra.danuni.merge;
|
|
12516
|
+
if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
|
|
12517
|
+
}
|
|
12518
|
+
danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON.stringify(extra) : void 0;
|
|
12518
12519
|
}
|
|
12519
|
-
}
|
|
12520
|
+
}
|
|
12520
12521
|
return new UniPool(result, this.options, this.info);
|
|
12521
12522
|
}
|
|
12522
12523
|
minify() {
|
|
@@ -12539,7 +12540,7 @@ class UniPool {
|
|
|
12539
12540
|
pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
|
|
12540
12541
|
fmt: 'artplayer.json'
|
|
12541
12542
|
};
|
|
12542
|
-
if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
|
|
12543
|
+
if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
|
|
12543
12544
|
pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
|
|
12544
12545
|
fmt: 'ddplay.json'
|
|
12545
12546
|
};
|
|
@@ -12718,7 +12719,7 @@ class UniPool {
|
|
|
12718
12719
|
source: 'k-v',
|
|
12719
12720
|
danuni: {
|
|
12720
12721
|
...DanUniConvertTipTemplate,
|
|
12721
|
-
data: this.
|
|
12722
|
+
data: this.getShared('SOID')
|
|
12722
12723
|
},
|
|
12723
12724
|
d: this.dans.map((dan)=>dan.toBiliXML(options))
|
|
12724
12725
|
}
|
|
@@ -12857,7 +12858,7 @@ class UniPool {
|
|
|
12857
12858
|
substyle: {}
|
|
12858
12859
|
};
|
|
12859
12860
|
const finalOptions = options ?? defaultOptions;
|
|
12860
|
-
const fn = this.
|
|
12861
|
+
const fn = this.getShared('SOID');
|
|
12861
12862
|
return generateASS(this, {
|
|
12862
12863
|
filename: fn,
|
|
12863
12864
|
title: fn,
|
|
@@ -13066,10 +13067,10 @@ const formatTime = (seconds)=>{
|
|
|
13066
13067
|
return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
|
|
13067
13068
|
};
|
|
13068
13069
|
const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
|
|
13069
|
-
const scrollCommand = ({ start, end, top })
|
|
13070
|
-
const fixCommand = ({ top, left })
|
|
13071
|
-
const colorCommand = (color)
|
|
13072
|
-
const borderColorCommand = (color)
|
|
13070
|
+
const scrollCommand = ({ start, end, top })=>String.raw`\move(${start},${top},${end},${top})`;
|
|
13071
|
+
const fixCommand = ({ top, left })=>String.raw`\an8\pos(${left},${top})`;
|
|
13072
|
+
const colorCommand = (color)=>String.raw`\c${formatColor(color)}`;
|
|
13073
|
+
const borderColorCommand = (color)=>String.raw`\3c${formatColor(color)}`;
|
|
13073
13074
|
const dialogue = (danmaku, config)=>{
|
|
13074
13075
|
const { fontSizeType, content, time } = danmaku;
|
|
13075
13076
|
const { scrollTime, fixTime } = config;
|
|
@@ -13336,46 +13337,91 @@ class src_UniPool {
|
|
|
13336
13337
|
return fn(this);
|
|
13337
13338
|
}
|
|
13338
13339
|
get shared() {
|
|
13339
|
-
|
|
13340
|
-
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
13347
|
-
|
|
13340
|
+
if (0 === this.dans.length) return {};
|
|
13341
|
+
const keys = [
|
|
13342
|
+
'SOID',
|
|
13343
|
+
'senderID',
|
|
13344
|
+
'platform',
|
|
13345
|
+
'pool',
|
|
13346
|
+
'mode',
|
|
13347
|
+
'color'
|
|
13348
|
+
];
|
|
13349
|
+
const result = {};
|
|
13350
|
+
for (const key of keys){
|
|
13351
|
+
const sharedVal = this.getShared(key);
|
|
13352
|
+
if (void 0 !== sharedVal) result[key] = sharedVal;
|
|
13353
|
+
}
|
|
13354
|
+
return result;
|
|
13348
13355
|
}
|
|
13349
13356
|
getShared(key) {
|
|
13350
|
-
|
|
13351
|
-
|
|
13357
|
+
if (0 === this.dans.length) return;
|
|
13358
|
+
const firstVal = this.dans[0][key];
|
|
13359
|
+
for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
|
|
13360
|
+
return firstVal;
|
|
13352
13361
|
}
|
|
13353
13362
|
getStat(key) {
|
|
13354
|
-
const
|
|
13355
|
-
const
|
|
13356
|
-
const
|
|
13357
|
-
|
|
13358
|
-
|
|
13359
|
-
|
|
13360
|
-
count: 1
|
|
13361
|
-
});
|
|
13362
|
-
return stat;
|
|
13363
|
-
}, default_stat);
|
|
13364
|
-
return stats;
|
|
13363
|
+
const statMap = new Map();
|
|
13364
|
+
for (const dan of this.dans){
|
|
13365
|
+
const val = dan[key];
|
|
13366
|
+
statMap.set(val, (statMap.get(val) || 0) + 1);
|
|
13367
|
+
}
|
|
13368
|
+
return statMap;
|
|
13365
13369
|
}
|
|
13366
13370
|
getMost(key) {
|
|
13367
|
-
|
|
13371
|
+
const stats = this.getStat(key);
|
|
13372
|
+
if (0 === stats.size) return {
|
|
13373
|
+
val: void 0,
|
|
13374
|
+
count: 0
|
|
13375
|
+
};
|
|
13376
|
+
let mostVal;
|
|
13377
|
+
let maxCount = 0;
|
|
13378
|
+
for (const [val, count] of stats.entries())if (count > maxCount) {
|
|
13379
|
+
maxCount = count;
|
|
13380
|
+
mostVal = val;
|
|
13381
|
+
}
|
|
13382
|
+
return {
|
|
13383
|
+
val: mostVal,
|
|
13384
|
+
count: maxCount
|
|
13385
|
+
};
|
|
13368
13386
|
}
|
|
13369
13387
|
get most() {
|
|
13388
|
+
const keys = [
|
|
13389
|
+
'mode',
|
|
13390
|
+
'fontsize',
|
|
13391
|
+
'color',
|
|
13392
|
+
'senderID',
|
|
13393
|
+
'content',
|
|
13394
|
+
'weight',
|
|
13395
|
+
'pool',
|
|
13396
|
+
'platform'
|
|
13397
|
+
];
|
|
13398
|
+
const statMaps = new Map();
|
|
13399
|
+
for (const dan of this.dans)for (const key of keys){
|
|
13400
|
+
if (!statMaps.has(key)) statMaps.set(key, new Map());
|
|
13401
|
+
const statMap = statMaps.get(key);
|
|
13402
|
+
const val = dan[key];
|
|
13403
|
+
statMap.set(val, (statMap.get(val) || 0) + 1);
|
|
13404
|
+
}
|
|
13405
|
+
const result = {};
|
|
13406
|
+
for (const key of keys){
|
|
13407
|
+
const statMap = statMaps.get(key);
|
|
13408
|
+
let mostVal;
|
|
13409
|
+
let maxCount = 0;
|
|
13410
|
+
for (const [val, count] of statMap.entries())if (count > maxCount) {
|
|
13411
|
+
maxCount = count;
|
|
13412
|
+
mostVal = val;
|
|
13413
|
+
}
|
|
13414
|
+
result[key] = mostVal;
|
|
13415
|
+
}
|
|
13370
13416
|
return {
|
|
13371
|
-
mode:
|
|
13372
|
-
fontsize:
|
|
13373
|
-
color:
|
|
13374
|
-
senderID:
|
|
13375
|
-
content:
|
|
13376
|
-
weight:
|
|
13377
|
-
pool:
|
|
13378
|
-
platform:
|
|
13417
|
+
mode: result.mode,
|
|
13418
|
+
fontsize: result.fontsize,
|
|
13419
|
+
color: result.color,
|
|
13420
|
+
senderID: result.senderID,
|
|
13421
|
+
content: result.content,
|
|
13422
|
+
weight: result.weight,
|
|
13423
|
+
pool: result.pool,
|
|
13424
|
+
platform: result.platform
|
|
13379
13425
|
};
|
|
13380
13426
|
}
|
|
13381
13427
|
static create(options) {
|
|
@@ -13403,7 +13449,7 @@ class src_UniPool {
|
|
|
13403
13449
|
return this;
|
|
13404
13450
|
}
|
|
13405
13451
|
split(key) {
|
|
13406
|
-
if (this.
|
|
13452
|
+
if (this.getShared(key)) return [
|
|
13407
13453
|
this
|
|
13408
13454
|
];
|
|
13409
13455
|
const set = new Set(this.dans.map((d)=>d[key]));
|
|
@@ -13425,44 +13471,27 @@ class src_UniPool {
|
|
|
13425
13471
|
this.options.dedupe = false;
|
|
13426
13472
|
}
|
|
13427
13473
|
merge(lifetime = 0) {
|
|
13428
|
-
if (!this.
|
|
13474
|
+
if (!this.getShared('SOID')) {
|
|
13429
13475
|
console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
|
|
13430
13476
|
return this;
|
|
13431
13477
|
}
|
|
13432
13478
|
if (lifetime <= 0) return this;
|
|
13433
|
-
const
|
|
13434
|
-
|
|
13435
|
-
|
|
13436
|
-
|
|
13437
|
-
|
|
13438
|
-
'platform'
|
|
13439
|
-
].map((k)=>danmaku[k]).join('|');
|
|
13479
|
+
const result = [];
|
|
13480
|
+
const cache = {};
|
|
13481
|
+
const mergeObj = {};
|
|
13482
|
+
for (const danmaku of this.dans){
|
|
13483
|
+
const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
|
|
13440
13484
|
const cached = cache[key];
|
|
13441
|
-
|
|
13442
|
-
if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
|
|
13485
|
+
if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
|
|
13443
13486
|
skipDanuniMerge: true
|
|
13444
13487
|
})) {
|
|
13445
|
-
|
|
13446
|
-
senders.
|
|
13447
|
-
|
|
13448
|
-
|
|
13449
|
-
|
|
13450
|
-
count: senders.length,
|
|
13451
|
-
duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
|
|
13452
|
-
senders,
|
|
13453
|
-
taolu_count: senders.length,
|
|
13454
|
-
taolu_senders: senders
|
|
13455
|
-
};
|
|
13456
|
-
danmaku.extraStr = src_JSON_0.stringify(extra);
|
|
13488
|
+
mergeObj[key].senders.push(danmaku.senderID);
|
|
13489
|
+
mergeObj[key].count = mergeObj[key].senders.length;
|
|
13490
|
+
mergeObj[key].taolu_count = mergeObj[key].count;
|
|
13491
|
+
mergeObj[key].taolu_senders = mergeObj[key].senders;
|
|
13492
|
+
mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
|
|
13457
13493
|
cache[key] = danmaku;
|
|
13458
|
-
|
|
13459
|
-
return [
|
|
13460
|
-
result,
|
|
13461
|
-
cache,
|
|
13462
|
-
mergeObj
|
|
13463
|
-
];
|
|
13464
|
-
}
|
|
13465
|
-
{
|
|
13494
|
+
} else {
|
|
13466
13495
|
mergeObj[key] = {
|
|
13467
13496
|
count: 1,
|
|
13468
13497
|
duration: 0,
|
|
@@ -13475,55 +13504,31 @@ class src_UniPool {
|
|
|
13475
13504
|
]
|
|
13476
13505
|
};
|
|
13477
13506
|
cache[key] = danmaku;
|
|
13478
|
-
const extra = danmaku.extra;
|
|
13479
|
-
extra.danuni = extra.danuni || {};
|
|
13480
|
-
extra.danuni.merge = mergeObj[key];
|
|
13481
|
-
danmaku.extraStr = src_JSON_0.stringify(extra);
|
|
13482
13507
|
result.push(danmaku);
|
|
13483
|
-
return [
|
|
13484
|
-
result,
|
|
13485
|
-
cache,
|
|
13486
|
-
mergeObj
|
|
13487
|
-
];
|
|
13488
13508
|
}
|
|
13489
|
-
}
|
|
13490
|
-
|
|
13491
|
-
{}
|
|
13492
|
-
{}
|
|
13493
|
-
]);
|
|
13494
|
-
const [result, _cache, mergeObj] = mergeContext;
|
|
13495
|
-
result.forEach((danmaku, i)=>{
|
|
13496
|
-
const key = [
|
|
13497
|
-
'content',
|
|
13498
|
-
'mode',
|
|
13499
|
-
'platform',
|
|
13500
|
-
'pool'
|
|
13501
|
-
].map((k)=>danmaku[k]).join('|');
|
|
13502
|
-
const extra = result[i].extra;
|
|
13509
|
+
}
|
|
13510
|
+
for (const danmaku of result){
|
|
13511
|
+
const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
|
|
13503
13512
|
const mergeData = mergeObj[key];
|
|
13504
|
-
|
|
13505
|
-
|
|
13506
|
-
|
|
13507
|
-
|
|
13508
|
-
|
|
13509
|
-
}
|
|
13510
|
-
});
|
|
13511
|
-
if (mergeData?.count) if (mergeData.count <= 1) {
|
|
13512
|
-
const updatedExtra = {
|
|
13513
|
-
...extra
|
|
13514
|
-
};
|
|
13515
|
-
if (updatedExtra.danuni) {
|
|
13516
|
-
delete updatedExtra.danuni.merge;
|
|
13517
|
-
if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
|
|
13518
|
-
}
|
|
13519
|
-
result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON_0.stringify(updatedExtra) : void 0;
|
|
13520
|
-
} else {
|
|
13521
|
-
result[i].senderID = 'merge[bot]@dan-any';
|
|
13522
|
-
result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
|
|
13513
|
+
const extra = danmaku.extra;
|
|
13514
|
+
if (mergeData.count > 1) {
|
|
13515
|
+
danmaku.senderID = 'merge[bot]@dan-any';
|
|
13516
|
+
if (danmaku.attr) {
|
|
13517
|
+
if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
|
|
13518
|
+
} else danmaku.attr = [
|
|
13523
13519
|
dm_gen_DMAttr.Protect
|
|
13524
13520
|
];
|
|
13521
|
+
extra.danuni = extra.danuni || {};
|
|
13522
|
+
extra.danuni.merge = mergeData;
|
|
13523
|
+
danmaku.extraStr = src_JSON_0.stringify(extra);
|
|
13524
|
+
} else {
|
|
13525
|
+
if (extra.danuni?.merge) {
|
|
13526
|
+
delete extra.danuni.merge;
|
|
13527
|
+
if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
|
|
13528
|
+
}
|
|
13529
|
+
danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON_0.stringify(extra) : void 0;
|
|
13525
13530
|
}
|
|
13526
|
-
}
|
|
13531
|
+
}
|
|
13527
13532
|
return new src_UniPool(result, this.options, this.info);
|
|
13528
13533
|
}
|
|
13529
13534
|
minify() {
|
|
@@ -13546,7 +13551,7 @@ class src_UniPool {
|
|
|
13546
13551
|
pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
|
|
13547
13552
|
fmt: 'artplayer.json'
|
|
13548
13553
|
};
|
|
13549
|
-
if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
|
|
13554
|
+
if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
|
|
13550
13555
|
pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
|
|
13551
13556
|
fmt: 'ddplay.json'
|
|
13552
13557
|
};
|
|
@@ -13725,7 +13730,7 @@ class src_UniPool {
|
|
|
13725
13730
|
source: 'k-v',
|
|
13726
13731
|
danuni: {
|
|
13727
13732
|
...src_DanUniConvertTipTemplate,
|
|
13728
|
-
data: this.
|
|
13733
|
+
data: this.getShared('SOID')
|
|
13729
13734
|
},
|
|
13730
13735
|
d: this.dans.map((dan)=>dan.toBiliXML(options))
|
|
13731
13736
|
}
|
|
@@ -13864,7 +13869,7 @@ class src_UniPool {
|
|
|
13864
13869
|
substyle: {}
|
|
13865
13870
|
};
|
|
13866
13871
|
const finalOptions = options ?? defaultOptions;
|
|
13867
|
-
const fn = this.
|
|
13872
|
+
const fn = this.getShared('SOID');
|
|
13868
13873
|
return generateASS(this, {
|
|
13869
13874
|
filename: fn,
|
|
13870
13875
|
title: fn,
|