@dan-uni/dan-any 2.1.2 → 2.1.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/dist/adapters.d.mts +1 -1
- package/dist/adapters.mjs +1 -1
- package/dist/core/db/schema.d.mts +1 -1
- package/dist/core/db/schema.mjs.map +1 -1
- package/dist/core/db/utils.d.mts +129 -133
- package/dist/core/db/utils.d.mts.map +1 -1
- package/dist/core/db/utils.mjs +1 -1
- package/dist/core-D_bgY3RE.mjs +2 -0
- package/dist/core-D_bgY3RE.mjs.map +1 -0
- package/dist/core.d.mts +1 -1
- package/dist/core.mjs +1 -1
- package/dist/{db-DWWzkRBb.mjs → db-f5FA8dbM.mjs} +11 -2
- package/dist/{db-DWWzkRBb.mjs.map → db-f5FA8dbM.mjs.map} +1 -1
- package/dist/{dm-extra-LzSQ7NZv.d.mts → dm-extra-CK22Zdoa.d.mts} +5 -1
- package/dist/dm-extra-CK22Zdoa.d.mts.map +1 -0
- package/dist/{index-pQGXBdIw.d.mts → index-FA4prRvt.d.mts} +431 -435
- package/dist/index-FA4prRvt.d.mts.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{isSame-D1CzJVK_.mjs → isSame-BVL_GmwN.mjs} +2 -2
- package/dist/{isSame-D1CzJVK_.mjs.map → isSame-BVL_GmwN.mjs.map} +1 -1
- package/dist/plugins.d.mts +2 -2
- package/dist/plugins.d.mts.map +1 -1
- package/dist/plugins.mjs +1 -1
- package/dist/plugins.mjs.map +1 -1
- package/dist/{schema-CS5AwMob.d.mts → schema-mO6Zqxyb.d.mts} +12 -14
- package/dist/schema-mO6Zqxyb.d.mts.map +1 -0
- package/dist/utils.d.mts +2 -2
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +1 -1
- package/dist/utils.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/core-DQi8JonK.mjs +0 -2
- package/dist/core-DQi8JonK.mjs.map +0 -1
- package/dist/dm-extra-LzSQ7NZv.d.mts.map +0 -1
- package/dist/index-pQGXBdIw.d.mts.map +0 -1
- package/dist/schema-CS5AwMob.d.mts.map +0 -1
- /package/dist/{chunk-0Lt9GpW0.mjs → chunk-DK3Fl9T5.mjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-FA4prRvt.d.mts","names":["IsNull","T","IsNull","IsUnknown","T","Promisable","T","PromiseLike","IsUnknown","SetReturnType","Function_","TypeToReturn","ThisArgument","Arguments","Parameters","arguments_","this","SetReturnType","Asyncify","Function_","ReturnType","Awaited","Promise","arguments_"],"sources":["../node_modules/type-fest/source/is-null.d.ts","../node_modules/type-fest/source/is-unknown.d.ts","../node_modules/type-fest/source/promisable.d.ts","../node_modules/type-fest/source/set-return-type.d.ts","../node_modules/type-fest/source/asyncify.d.ts","../src/core/id.ts","../src/core/platform.ts","../src/core/dm.ts","../src/core/index.ts","../src/adapters/danuni/json.ts","../src/adapters/danuni/pb.ts","../src/adapters/bili/command-grpc.ts","../src/adapters/bili/grpc.ts","../src/adapters/bili/up.ts","../src/adapters/bili/xml.ts","../src/adapters/artplayer.ts","../src/adapters/ddplay.ts","../src/adapters/dplayer.ts","../src/adapters/tencent.ts","../src/adapters/vod.ts","../src/adapters/index.ts"],"x_google_ignoreList":[0,1,2,3,4],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,GAAA,CAAA,gCAAG,cAAA,uBAAA,sBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as index_d_exports$1, d as index_d_exports } from "./index-
|
|
1
|
+
import { $ as index_d_exports$1, d as index_d_exports } from "./index-FA4prRvt.mjs";
|
|
2
2
|
import { t as index_d_exports$2 } from "./plugins.mjs";
|
|
3
3
|
import { t as index_d_exports$3 } from "./utils.mjs";
|
|
4
4
|
export { index_d_exports as adapters, index_d_exports$1 as core, index_d_exports$2 as plugins, index_d_exports$3 as utils };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,o as t}from"./core-
|
|
1
|
+
import{i as e,o as t}from"./core-D_bgY3RE.mjs";import{t as n}from"./plugins.mjs";import{t as r}from"./utils.mjs";export{t as adapters,e as core,n as plugins,r as utils};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./core/db/schema.mjs";import"./core-
|
|
2
|
-
//# sourceMappingURL=isSame-
|
|
1
|
+
import"./core/db/schema.mjs";import"./core-D_bgY3RE.mjs";function e(e){return e.adv||e.code||e.bas||e.command}function t(t,n,r){if(t===n)return!0;if(t.mode===`Ext`||n.mode===`Ext`||!r?.skipDanuniMerge&&(t.extra?.danuni?.merge||n.extra?.danuni?.merge)||t.extra?.bili?.dmid&&n.extra?.bili?.dmid&&(e(t.extra.bili)||e(n.extra.bili)||t.extra?.bili.mid&&!n.extra?.bili.mid||!t.extra?.bili.mid&&n.extra?.bili.mid)||t.extra?.artplayer&&!n.extra?.artplayer||!t.extra?.artplayer&&n.extra?.artplayer||t.extra?.artplayer&&n.extra?.artplayer&&(t.extra?.artplayer.border!==n.extra?.artplayer.border||JSON.stringify(t.extra?.artplayer.style)!==JSON.stringify(n.extra?.artplayer.style)))return!1;let i=e=>t[e]===n[e];return[`SOID`,`content`,`mode`,`pool`,`platform`].every(e=>i(e))}export{t};
|
|
2
|
+
//# sourceMappingURL=isSame-BVL_GmwN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSame-
|
|
1
|
+
{"version":3,"file":"isSame-BVL_GmwN.mjs","names":[],"sources":["../src/utils/isSame.ts"],"sourcesContent":["import { DMAttrSchema, ModeSchema, PoolSchema } from \"@/core/db/schema.ts\";\nimport type { ExtraBili } from \"@/core/dm-extra.ts\";\nimport { type UniDMObj } from \"@/core/dm.ts\";\nimport type { UniChunk } from \"@/core/index.ts\";\nimport type { z } from \"zod\";\n\ninterface UniDMComparable extends Omit<UniDMObj, \"mode\" | \"pool\" | \"attr\"> {\n mode: z.infer<typeof ModeSchema>;\n pool: z.infer<typeof PoolSchema>;\n attr: z.infer<typeof DMAttrSchema>[];\n}\n\ntype Comp = Pick<\n UniDMComparable | Awaited<UniChunk[\"$danmakus\"]>[number],\n \"SOID\" | \"content\" | \"mode\" | \"pool\" | \"platform\" | \"extra\"\n>;\n\nfunction biliSp(that: ExtraBili) {\n return that.adv || that.code || that.bas || that.command;\n}\n\nexport function isSame(that: Comp, dan: Comp, options?: { skipDanuniMerge?: boolean }): boolean {\n // 引用相同直接返回\n if (that === dan) return true;\n // 不支持比较高级弹幕\n if (that.mode === \"Ext\" || dan.mode === \"Ext\") return false;\n // 合并过视为不同,防止存在合并完成弹幕后再次合并造成计数错误\n if (!options?.skipDanuniMerge && (that.extra?.danuni?.merge || dan.extra?.danuni?.merge))\n return false;\n // 如果是bili弹幕,则以dmid判断是否相同\n if (that.extra?.bili?.dmid && dan.extra?.bili?.dmid) {\n // bili所有非一般类型的弹幕均直接判断为不同\n if (biliSp(that.extra.bili) || biliSp(dan.extra.bili)) return false;\n // 下面只会有来自 std/up 源的普通弹幕\n // 此时可以用mid原始值是否存在判断是否为up源弹幕\n // 当来源不同(标准源/创作中心源)时,视为不同弹幕\n if (\n (that.extra?.bili.mid && !dan.extra?.bili.mid) ||\n (!that.extra?.bili.mid && dan.extra?.bili.mid)\n )\n return false;\n // 不对dmid等原始值备份进行比较(若比较dmid,则必定不同,不符合比较函数使用场景)\n // 直接跳出bili特定判断,进入后续通用比较\n }\n // 如果是artplayer弹幕,需额外比较extra项目\n if (\n (that.extra?.artplayer && !dan.extra?.artplayer) ||\n (!that.extra?.artplayer && dan.extra?.artplayer)\n )\n return false;\n else if (\n that.extra?.artplayer &&\n dan.extra?.artplayer &&\n (that.extra?.artplayer.border !== dan.extra?.artplayer.border ||\n JSON.stringify(that.extra?.artplayer.style) !== JSON.stringify(dan.extra?.artplayer.style))\n )\n return false;\n const isSame = (k: keyof Comp) => that[k] === dan[k];\n const checks = ([\"SOID\", \"content\", \"mode\", \"pool\", \"platform\"] satisfies (keyof Comp)[]).every(\n (k) => isSame(k),\n );\n // 忽略使用了extra字段却不在mode里标记的弹幕\n return checks;\n}\n"],"mappings":"yDAiBA,SAAS,EAAO,EAAiB,CAC/B,OAAO,EAAK,KAAO,EAAK,MAAQ,EAAK,KAAO,EAAK,OACnD,CAEA,SAAgB,EAAO,EAAY,EAAW,EAAkD,CAE9F,GAAI,IAAS,EAAK,MAAO,GA2BpB,GAzBD,EAAK,OAAS,OAAS,EAAI,OAAS,OAEpC,CAAC,GAAS,kBAAoB,EAAK,OAAO,QAAQ,OAAS,EAAI,OAAO,QAAQ,QAG9E,EAAK,OAAO,MAAM,MAAQ,EAAI,OAAO,MAAM,OAEzC,EAAO,EAAK,MAAM,IAAI,GAAK,EAAO,EAAI,MAAM,IAAI,GAKjD,EAAK,OAAO,KAAK,KAAO,CAAC,EAAI,OAAO,KAAK,KACzC,CAAC,EAAK,OAAO,KAAK,KAAO,EAAI,OAAO,KAAK,MAQ3C,EAAK,OAAO,WAAa,CAAC,EAAI,OAAO,WACrC,CAAC,EAAK,OAAO,WAAa,EAAI,OAAO,WAItC,EAAK,OAAO,WACZ,EAAI,OAAO,YACV,EAAK,OAAO,UAAU,SAAW,EAAI,OAAO,UAAU,QACrD,KAAK,UAAU,EAAK,OAAO,UAAU,KAAK,IAAM,KAAK,UAAU,EAAI,OAAO,UAAU,KAAK,GAE3F,MAAO,GACT,IAAM,EAAU,GAAkB,EAAK,KAAO,EAAI,GAKlD,MAJgB,CAAC,OAAQ,UAAW,OAAQ,OAAQ,UAAU,EAA4B,MACvF,GAAM,EAAO,CAAC,CAGL,CACd"}
|
package/dist/plugins.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as Extra } from "./dm-extra-
|
|
2
|
-
import { Z as UniChunk } from "./index-
|
|
1
|
+
import { t as Extra } from "./dm-extra-CK22Zdoa.mjs";
|
|
2
|
+
import { Z as UniChunk } from "./index-FA4prRvt.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/plugins/count.d.ts
|
package/dist/plugins.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.mts","names":[],"sources":["../src/plugins/count.ts","../src/plugins/downgradeAdvcanced.ts","../src/plugins/getStats.ts","../src/plugins/merge.ts","../src/plugins/index.ts"],"mappings":";;;;;;;;;cAMa,gBAAA,GAAgB,SAAA,EAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;cCEhB,mCAAA;EAAmC,OAAA;EAAA;AAAA;EAI9C,OAAA,UAAiB,KAAA;EACjB,OAAA,UAAiB,KAAA;AAAA,OAClB,MAAA,EAAA,QAAA,KAAA,OAAA,CAAA,QAAA;;;cCVK,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;KAWb,SAAA,GAAY,CAAA,CAAE,
|
|
1
|
+
{"version":3,"file":"plugins.d.mts","names":[],"sources":["../src/plugins/count.ts","../src/plugins/downgradeAdvcanced.ts","../src/plugins/getStats.ts","../src/plugins/merge.ts","../src/plugins/index.ts"],"mappings":";;;;;;;;;cAMa,gBAAA,GAAgB,SAAA,EAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;cCEhB,mCAAA;EAAmC,OAAA;EAAA;AAAA;EAI9C,OAAA,UAAiB,KAAA;EACjB,OAAA,UAAiB,KAAA;AAAA,OAClB,MAAA,EAAA,QAAA,KAAA,OAAA,CAAA,QAAA;;;cCVK,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;KAWb,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,YAAA;AAAA,cAEnB,+BAAA,mCAAmE,SAAA,KAAY,KAAA,EACnF,CAAA,MAAC,SAAA,EAAA,OAAA;;;;;;;;;;;;;;;yBAGc,CAAA,WAAA,GAAA;;;;;;;;;;;iBAiBR,oBAAA,mBAAA,CAAwC,OAAA,EAAS,GAAA,CAAI,CAAA;;;;;;;;;;cC5BxD,uBAAA,GAAuB,QAAA,eAAA,MAAA,EAAA,QAAA,KAAA,OAAA,CAAA,QAAA;AAAA"}
|
package/dist/plugins.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-DK3Fl9T5.mjs";import{danmakusSelectZod as t}from"./core/db/schema.mjs";import{l as n,n as r,u as i}from"./core-D_bgY3RE.mjs";import{t as a}from"./isSame-BVL_GmwN.mjs";const o=i(e=>e.then(e=>e.length)),s=({include:e,exclude:t}={})=>n(async n=>{e||=[],t||=[];let i=n=>e?.includes(n)||!t?.includes(n),a=await r.makeChunk(n,{tmp:!0});return await a.upsertDanmakus((await n.$danmakus).map(e=>{if(!e.extra)return e;let t={...e,mode:`Top`,senderID:`compat[bot]@dan-any`};if(i(`danuni`)&&e.extra?.danuni){let n=e.extra.danuni;n.merge&&(t.content=`${t.content} x${n.merge.count}`)}else if(i(`bili`)&&e.extra?.bili){let n=e.extra.bili;n.mode===7&&n.adv?t.content=`[B站高级弹幕]${JSON.parse(n.adv)[4]||``}`:n.command&&(t.content=`[B站指令弹幕]${n.command.content}`,t.fontsize=36)}return t.attr.push(`Compatible`),{...t,DMID:a.$UniDB.DMIDGenerator(t)}})),a});t.pick({content:!0,SOID:!0,mode:!0,fontsize:!0,color:!0,senderID:!0,weight:!0,pool:!0,platform:!0});const c=e=>i(async function(t){let n={},r=await t,i=e=>{let t=new Map;for(let n of r){let r=n[e];t.set(r,(t.get(r)??0)+1)}n[e]=t};for(let t of e)i(t);return n});function l(e){if(e.size===0)return{val:void 0,count:0};let t,n=0;for(let[r,i]of e.entries())i>n&&(n=i,t=r);return{val:t,count:n}}const u=(e=0)=>n(async t=>{let n=await r.makeChunk(t,{tmp:!0}),i=[...await t.$danmakus].sort((e,t)=>e.progress-t.progress||e.ctime.getTime()-t.ctime.getTime());if(e<=0)return await n.upsertDanmakus(i,!1),n;let o=e*1e3,s=e=>[e.SOID,e.content,e.mode,e.pool,e.platform??``].join(`|`),c=new Map,l=[];for(let e of i){let t=s(e),n=c.get(t)??[],r;for(let t=n.length-1;t>=0;t--){let i=n[t];if(e.progress-i.lastProgress>o)break;if(a(i.base,e)){r=i;break}}if(r){r.members.push(e),r.lastProgress=e.progress,r.senderSet.has(e.senderID)||(r.senderSet.add(e.senderID),r.senders.push(e.senderID));continue}let i={base:e,lastProgress:e.progress,senders:[e.senderID],senderSet:new Set([e.senderID]),members:[e]};n.push(i),c.set(t,n),l.push(i)}return await n.upsertDanmakus(l.map(e=>{if(e.members.length===1)return e.base;let t={duration:e.lastProgress-e.base.progress,count:e.members.length,senders:e.senders,taolu_count:e.members.length,taolu_senders:e.senders},r=e.base.extra?{...e.base.extra,danuni:{...e.base.extra.danuni?e.base.extra.danuni:{},merge:t}}:{danuni:{merge:t}};if(e.senders.length===1){let e=r.danuni;if(e?.merge){let{merge:t,...n}=e;if(Object.keys(n).length>0)r={...r,danuni:n};else{let{danuni:e,...t}=r;r=Object.keys(t).length>0?t:null}}}let i=e.base.attr.includes(`Protect`)?e.base.attr:[...e.base.attr,`Protect`],a=`merge[bot]@dan-any`;return{...e.base,senderID:a,attr:i,extra:r,DMID:n.$UniDB.DMIDGenerator({...e.base,extra:r&&Object.keys(r).length>0?r:null,senderID:a})}})),n});var d=e({CountTransformer:()=>o,DowngradeAdvancedPluginConfigurator:()=>s,GetStatsTransformerConfigurator:()=>c,GetStatsUtil4getMost:()=>l,MergePluginConfigurator:()=>u});export{o as CountTransformer,s as DowngradeAdvancedPluginConfigurator,c as GetStatsTransformerConfigurator,l as GetStatsUtil4getMost,u as MergePluginConfigurator,d as t};
|
|
2
2
|
//# sourceMappingURL=plugins.mjs.map
|
package/dist/plugins.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.mjs","names":[],"sources":["../src/plugins/count.ts","../src/plugins/downgradeAdvcanced.ts","../src/plugins/getStats.ts","../src/plugins/merge.ts","../src/plugins/index.ts"],"sourcesContent":["import { defineTransformer } from \"@/adapters/index.ts\";\n\n/**\n * 计数转换器:统计弹幕数量,适用于需要获取弹幕总数的场景\n * @deprecated 建议直接使用UniChunk的$count属性获取弹幕数量\n */\nexport const CountTransformer = defineTransformer((udanmakus) => udanmakus.then((d) => d.length));\n","import { definePlugin } from \"@/adapters/index.ts\";\nimport type { Extra } from \"@/core/dm-extra.ts\";\nimport { UniChunk } from \"@/core/index.ts\";\n\n/**\n * 降级转换插件:将高级弹幕转换为普通弹幕,适用于无法正确显示高级弹幕的播放器\n * @returns 转换后的弹幕Chunk,临时,导出后可自行调用delete方法删除\n */\nexport const DowngradeAdvancedPluginConfigurator = ({\n include,\n exclude,\n}: {\n include?: (keyof Extra)[];\n exclude?: (keyof Extra)[];\n} = {}) =>\n definePlugin(async (uchunk) => {\n if (!include) include = [];\n if (!exclude) exclude = [];\n const check = (k: keyof Extra) => include?.includes(k) || !exclude?.includes(k);\n const chunk = await UniChunk.makeChunk(uchunk, { tmp: true });\n await chunk.upsertDanmakus(\n (await uchunk.$danmakus).map((d) => {\n if (!d.extra) return d;\n let newDan = {\n ...d,\n mode: \"Top\" as const,\n\n senderID: \"compat[bot]@dan-any\",\n };\n // TODO 分别对 mode7/8/9 command artplayer等正常播放器无法绘制的弹幕做降级处理\n if (check(\"danuni\") && d.extra?.danuni) {\n const danuni = d.extra.danuni;\n if (danuni.merge) {\n newDan.content = `${newDan.content} x${danuni.merge.count}`;\n }\n } else if (check(\"bili\") && d.extra?.bili) {\n const bili = d.extra.bili;\n if (bili.mode === 7 && bili.adv) {\n newDan.content = `[B站高级弹幕]${JSON.parse(bili.adv)[4] || \"\"}`;\n } else if (bili.command) {\n const command = bili.command;\n newDan.content = `[B站指令弹幕]${command.content}`;\n newDan.fontsize = 36;\n }\n }\n newDan.attr.push(\"Compatible\");\n return { ...newDan, DMID: chunk.$UniDB.DMIDGenerator(newDan) };\n }),\n );\n return chunk;\n });\n","import { defineTransformer } from \"@/adapters/index.ts\";\nimport { danmakusSelectZod } from \"@/core/db/schema.ts\";\nimport type { z } from \"zod\";\n\nconst statsItemZod = danmakusSelectZod.pick({\n content: true,\n SOID: true,\n mode: true,\n fontsize: true,\n color: true,\n senderID: true,\n weight: true,\n pool: true,\n platform: true,\n});\ntype StatsItem = z.infer<typeof statsItemZod>;\n\nexport const GetStatsTransformerConfigurator = <const T extends readonly (keyof StatsItem)[]>(\n items: T,\n) =>\n defineTransformer(async function (udanmakus) {\n type StatsMap = { [K in T[number]]: Map<StatsItem[K], number> };\n const statsMap = {} as StatsMap;\n const dans = await udanmakus;\n const buildStatMap = <K extends T[number]>(key: K) => {\n const statMap = new Map<StatsItem[K], number>();\n for (const dan of dans) {\n const val = dan[key];\n statMap.set(val, (statMap.get(val) ?? 0) + 1);\n }\n statsMap[key] = statMap;\n };\n for (const key of items) {\n buildStatMap(key);\n }\n return statsMap;\n });\n\nexport function GetStatsUtil4getMost<T extends unknown>(statMap: Map<T, number>) {\n if (statMap.size === 0) return { val: undefined, count: 0 };\n let mostVal: T | undefined = undefined;\n let maxCount = 0;\n for (const [val, count] of statMap.entries()) {\n if (count > maxCount) {\n maxCount = count;\n mostVal = val;\n }\n }\n return { val: mostVal, count: maxCount };\n}\n","import { definePlugin } from \"@/adapters/index.ts\";\nimport type { Extra } from \"@/core/dm-extra.ts\";\nimport { DMAttr } from \"@/core/dm.ts\";\nimport { UniChunk } from \"@/core/index.ts\";\nimport { isSame } from \"@/utils/isSame.ts\";\n\n/**\n * 合并一定时间段内的重复弹幕,防止同屏出现过多\n * @param lifetime 查重时间区段,单位秒 (默认为 0,表示不查重)\n */\nexport const MergePluginConfigurator = (lifetime = 0) =>\n definePlugin(async (uchunk) => {\n const chunk = await UniChunk.makeChunk(uchunk, { tmp: true });\n const sourceDanmakus = [...(await uchunk.$danmakus)].sort(\n (a, b) => a.progress - b.progress || a.ctime.getTime() - b.ctime.getTime(),\n );\n\n if (lifetime <= 0) {\n await chunk.upsertDanmakus(sourceDanmakus, false);\n return chunk;\n }\n\n const lifetimeMs = lifetime * 1000;\n const makeKey = (d: (typeof sourceDanmakus)[number]) =>\n [d.SOID, d.content, d.mode, d.pool, d.platform ?? \"\"].join(\"|\");\n\n type MergeGroup = {\n base: (typeof sourceDanmakus)[number];\n lastProgress: number;\n senders: string[];\n senderSet: Set<string>;\n members: (typeof sourceDanmakus)[number][];\n };\n\n const groups = new Map<string, MergeGroup[]>();\n const orderedGroups: MergeGroup[] = [];\n\n for (const dan of sourceDanmakus) {\n const key = makeKey(dan);\n const bucket = groups.get(key) ?? [];\n let current: MergeGroup | undefined;\n\n for (let index = bucket.length - 1; index >= 0; index--) {\n const candidate = bucket[index];\n if (dan.progress - candidate.lastProgress > lifetimeMs) break;\n if (isSame(candidate.base, dan)) {\n current = candidate;\n break;\n }\n }\n\n if (current) {\n current.members.push(dan);\n current.lastProgress = dan.progress;\n if (!current.senderSet.has(dan.senderID)) {\n current.senderSet.add(dan.senderID);\n current.senders.push(dan.senderID);\n }\n continue;\n }\n\n const nextGroup: MergeGroup = {\n base: dan,\n lastProgress: dan.progress,\n senders: [dan.senderID],\n senderSet: new Set([dan.senderID]),\n members: [dan],\n };\n bucket.push(nextGroup);\n groups.set(key, bucket);\n orderedGroups.push(nextGroup);\n }\n\n await chunk.upsertDanmakus(\n orderedGroups.map((group) => {\n if (group.members.length === 1) {\n return group.base;\n }\n\n const merge = {\n duration: group.lastProgress - group.base.progress,\n count: group.members.length,\n senders: group.senders,\n taolu_count: group.members.length,\n taolu_senders: group.senders,\n };\n let extra: Extra | null = group.base.extra\n ? {\n ...group.base.extra,\n danuni: {\n ...(group.base.extra.danuni ? group.base.extra.danuni : {}),\n merge,\n },\n }\n : {\n danuni: {\n merge,\n },\n };\n if (group.senders.length === 1) {\n const danuni = extra.danuni;\n if (danuni?.merge) {\n const { merge: _merge, ...danuniRest } = danuni;\n if (Object.keys(danuniRest).length > 0) {\n extra = {\n ...extra,\n danuni: danuniRest,\n };\n } else {\n const { danuni: _danuni, ...extraRest } = extra;\n extra = Object.keys(extraRest).length > 0 ? extraRest : null;\n }\n }\n }\n const attr = group.base.attr.includes(DMAttr.Protect)\n ? group.base.attr\n : [...group.base.attr, DMAttr.Protect];\n const senderID = \"merge[bot]@dan-any\";\n\n return {\n ...group.base,\n senderID,\n attr,\n extra,\n DMID: chunk.$UniDB.DMIDGenerator({\n ...group.base,\n extra: extra && Object.keys(extra).length > 0 ? extra : null,\n senderID,\n }),\n };\n }),\n );\n return chunk;\n });\n","export * from \"./count.ts\";\nexport * from \"./downgradeAdvcanced.ts\";\nexport * from \"./getStats.ts\";\nexport * from \"./merge.ts\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugins.mjs","names":[],"sources":["../src/plugins/count.ts","../src/plugins/downgradeAdvcanced.ts","../src/plugins/getStats.ts","../src/plugins/merge.ts","../src/plugins/index.ts"],"sourcesContent":["import { defineTransformer } from \"@/adapters/index.ts\";\n\n/**\n * 计数转换器:统计弹幕数量,适用于需要获取弹幕总数的场景\n * @deprecated 建议直接使用UniChunk的$count属性获取弹幕数量\n */\nexport const CountTransformer = defineTransformer((udanmakus) => udanmakus.then((d) => d.length));\n","import { definePlugin } from \"@/adapters/index.ts\";\nimport type { Extra } from \"@/core/dm-extra.ts\";\nimport { UniChunk } from \"@/core/index.ts\";\n\n/**\n * 降级转换插件:将高级弹幕转换为普通弹幕,适用于无法正确显示高级弹幕的播放器\n * @returns 转换后的弹幕Chunk,临时,导出后可自行调用delete方法删除\n */\nexport const DowngradeAdvancedPluginConfigurator = ({\n include,\n exclude,\n}: {\n include?: (keyof Extra)[];\n exclude?: (keyof Extra)[];\n} = {}) =>\n definePlugin(async (uchunk) => {\n if (!include) include = [];\n if (!exclude) exclude = [];\n const check = (k: keyof Extra) => include?.includes(k) || !exclude?.includes(k);\n const chunk = await UniChunk.makeChunk(uchunk, { tmp: true });\n await chunk.upsertDanmakus(\n (await uchunk.$danmakus).map((d) => {\n if (!d.extra) return d;\n let newDan = {\n ...d,\n mode: \"Top\" as const,\n\n senderID: \"compat[bot]@dan-any\",\n };\n // TODO 分别对 mode7/8/9 command artplayer等正常播放器无法绘制的弹幕做降级处理\n if (check(\"danuni\") && d.extra?.danuni) {\n const danuni = d.extra.danuni;\n if (danuni.merge) {\n newDan.content = `${newDan.content} x${danuni.merge.count}`;\n }\n } else if (check(\"bili\") && d.extra?.bili) {\n const bili = d.extra.bili;\n if (bili.mode === 7 && bili.adv) {\n newDan.content = `[B站高级弹幕]${JSON.parse(bili.adv)[4] || \"\"}`;\n } else if (bili.command) {\n const command = bili.command;\n newDan.content = `[B站指令弹幕]${command.content}`;\n newDan.fontsize = 36;\n }\n }\n newDan.attr.push(\"Compatible\");\n return { ...newDan, DMID: chunk.$UniDB.DMIDGenerator(newDan) };\n }),\n );\n return chunk;\n });\n","import { defineTransformer } from \"@/adapters/index.ts\";\nimport { danmakusSelectZod } from \"@/core/db/schema.ts\";\nimport type { z } from \"zod\";\n\nconst statsItemZod = danmakusSelectZod.pick({\n content: true,\n SOID: true,\n mode: true,\n fontsize: true,\n color: true,\n senderID: true,\n weight: true,\n pool: true,\n platform: true,\n});\ntype StatsItem = z.infer<typeof statsItemZod>;\n\nexport const GetStatsTransformerConfigurator = <const T extends readonly (keyof StatsItem)[]>(\n items: T,\n) =>\n defineTransformer(async function (udanmakus) {\n type StatsMap = { [K in T[number]]: Map<StatsItem[K], number> };\n const statsMap = {} as StatsMap;\n const dans = await udanmakus;\n const buildStatMap = <K extends T[number]>(key: K) => {\n const statMap = new Map<StatsItem[K], number>();\n for (const dan of dans) {\n const val = dan[key];\n statMap.set(val, (statMap.get(val) ?? 0) + 1);\n }\n statsMap[key] = statMap;\n };\n for (const key of items) {\n buildStatMap(key);\n }\n return statsMap;\n });\n\nexport function GetStatsUtil4getMost<T extends unknown>(statMap: Map<T, number>) {\n if (statMap.size === 0) return { val: undefined, count: 0 };\n let mostVal: T | undefined = undefined;\n let maxCount = 0;\n for (const [val, count] of statMap.entries()) {\n if (count > maxCount) {\n maxCount = count;\n mostVal = val;\n }\n }\n return { val: mostVal, count: maxCount };\n}\n","import { definePlugin } from \"@/adapters/index.ts\";\nimport type { Extra } from \"@/core/dm-extra.ts\";\nimport { DMAttr } from \"@/core/dm.ts\";\nimport { UniChunk } from \"@/core/index.ts\";\nimport { isSame } from \"@/utils/isSame.ts\";\n\n/**\n * 合并一定时间段内的重复弹幕,防止同屏出现过多\n * @param lifetime 查重时间区段,单位秒 (默认为 0,表示不查重)\n */\nexport const MergePluginConfigurator = (lifetime = 0) =>\n definePlugin(async (uchunk) => {\n const chunk = await UniChunk.makeChunk(uchunk, { tmp: true });\n const sourceDanmakus = [...(await uchunk.$danmakus)].sort(\n (a, b) => a.progress - b.progress || a.ctime.getTime() - b.ctime.getTime(),\n );\n\n if (lifetime <= 0) {\n await chunk.upsertDanmakus(sourceDanmakus, false);\n return chunk;\n }\n\n const lifetimeMs = lifetime * 1000;\n const makeKey = (d: (typeof sourceDanmakus)[number]) =>\n [d.SOID, d.content, d.mode, d.pool, d.platform ?? \"\"].join(\"|\");\n\n type MergeGroup = {\n base: (typeof sourceDanmakus)[number];\n lastProgress: number;\n senders: string[];\n senderSet: Set<string>;\n members: (typeof sourceDanmakus)[number][];\n };\n\n const groups = new Map<string, MergeGroup[]>();\n const orderedGroups: MergeGroup[] = [];\n\n for (const dan of sourceDanmakus) {\n const key = makeKey(dan);\n const bucket = groups.get(key) ?? [];\n let current: MergeGroup | undefined;\n\n for (let index = bucket.length - 1; index >= 0; index--) {\n const candidate = bucket[index];\n if (dan.progress - candidate.lastProgress > lifetimeMs) break;\n if (isSame(candidate.base, dan)) {\n current = candidate;\n break;\n }\n }\n\n if (current) {\n current.members.push(dan);\n current.lastProgress = dan.progress;\n if (!current.senderSet.has(dan.senderID)) {\n current.senderSet.add(dan.senderID);\n current.senders.push(dan.senderID);\n }\n continue;\n }\n\n const nextGroup: MergeGroup = {\n base: dan,\n lastProgress: dan.progress,\n senders: [dan.senderID],\n senderSet: new Set([dan.senderID]),\n members: [dan],\n };\n bucket.push(nextGroup);\n groups.set(key, bucket);\n orderedGroups.push(nextGroup);\n }\n\n await chunk.upsertDanmakus(\n orderedGroups.map((group) => {\n if (group.members.length === 1) {\n return group.base;\n }\n\n const merge = {\n duration: group.lastProgress - group.base.progress,\n count: group.members.length,\n senders: group.senders,\n taolu_count: group.members.length,\n taolu_senders: group.senders,\n };\n let extra: Extra | null = group.base.extra\n ? {\n ...group.base.extra,\n danuni: {\n ...(group.base.extra.danuni ? group.base.extra.danuni : {}),\n merge,\n },\n }\n : {\n danuni: {\n merge,\n },\n };\n if (group.senders.length === 1) {\n const danuni = extra.danuni;\n if (danuni?.merge) {\n const { merge: _merge, ...danuniRest } = danuni;\n if (Object.keys(danuniRest).length > 0) {\n extra = {\n ...extra,\n danuni: danuniRest,\n };\n } else {\n const { danuni: _danuni, ...extraRest } = extra;\n extra = Object.keys(extraRest).length > 0 ? extraRest : null;\n }\n }\n }\n const attr = group.base.attr.includes(DMAttr.Protect)\n ? group.base.attr\n : [...group.base.attr, DMAttr.Protect];\n const senderID = \"merge[bot]@dan-any\";\n\n return {\n ...group.base,\n senderID,\n attr,\n extra,\n DMID: chunk.$UniDB.DMIDGenerator({\n ...group.base,\n extra: extra && Object.keys(extra).length > 0 ? extra : null,\n senderID,\n }),\n };\n }),\n );\n return chunk;\n });\n","export * from \"./count.ts\";\nexport * from \"./downgradeAdvcanced.ts\";\nexport * from \"./getStats.ts\";\nexport * from \"./merge.ts\";\n"],"mappings":"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"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { t as Extra } from "./dm-extra-
|
|
2
|
-
import * as _$drizzle_orm0 from "drizzle-orm";
|
|
1
|
+
import { t as Extra } from "./dm-extra-CK22Zdoa.mjs";
|
|
3
2
|
import * as t from "drizzle-orm/pg-core";
|
|
4
3
|
import { z } from "zod";
|
|
5
|
-
import * as _$drizzle_orm_zod0 from "drizzle-orm/zod";
|
|
6
4
|
|
|
7
5
|
//#region node_modules/type-fest/source/simplify.d.ts
|
|
8
6
|
/**
|
|
@@ -286,7 +284,7 @@ declare const danmakus: t.PgTableWithColumns<{
|
|
|
286
284
|
};
|
|
287
285
|
dialect: 'pg';
|
|
288
286
|
}>;
|
|
289
|
-
declare const danmakusInsertZod:
|
|
287
|
+
declare const danmakusInsertZod: import("drizzle-orm/zod").BuildSchema<"insert", {
|
|
290
288
|
SOID: t.PgBuildColumn<"danmakus", t.SetNotNull<t.PgTextBuilder<[string, ...string[]]>>, {
|
|
291
289
|
name: string;
|
|
292
290
|
tableName: "danmakus";
|
|
@@ -498,7 +496,7 @@ declare const danmakusInsertZod: _$drizzle_orm_zod0.BuildSchema<"insert", {
|
|
|
498
496
|
generated: undefined;
|
|
499
497
|
}>;
|
|
500
498
|
}, undefined, undefined>;
|
|
501
|
-
declare const danmakusSelectZod:
|
|
499
|
+
declare const danmakusSelectZod: import("drizzle-orm/zod").BuildSchema<"insert", {
|
|
502
500
|
SOID: t.PgBuildColumn<"danmakus", t.SetNotNull<t.PgTextBuilder<[string, ...string[]]>>, {
|
|
503
501
|
name: string;
|
|
504
502
|
tableName: "danmakus";
|
|
@@ -768,7 +766,7 @@ declare const chunks: t.PgTableWithColumns<{
|
|
|
768
766
|
};
|
|
769
767
|
dialect: 'pg';
|
|
770
768
|
}>;
|
|
771
|
-
declare const chunksZod:
|
|
769
|
+
declare const chunksZod: import("drizzle-orm/zod").BuildSchema<"insert", {
|
|
772
770
|
id: t.PgBuildColumn<"chunks", t.SetIsPrimaryKey<t.PgSerialBuilder>, {
|
|
773
771
|
name: string;
|
|
774
772
|
tableName: "chunks";
|
|
@@ -867,7 +865,7 @@ declare const chunk2danmakus: t.PgTableWithColumns<{
|
|
|
867
865
|
};
|
|
868
866
|
dialect: 'pg';
|
|
869
867
|
}>;
|
|
870
|
-
declare const chunk2danmakusZod:
|
|
868
|
+
declare const chunk2danmakusZod: import("drizzle-orm/zod").BuildSchema<"insert", {
|
|
871
869
|
id: t.PgBuildColumn<"chunk_danmakus", t.SetIsPrimaryKey<t.PgBigSerial64Builder>, {
|
|
872
870
|
name: string;
|
|
873
871
|
tableName: "chunk_danmakus";
|
|
@@ -914,7 +912,7 @@ declare const chunk2danmakusZod: _$drizzle_orm_zod0.BuildSchema<"insert", {
|
|
|
914
912
|
generated: undefined;
|
|
915
913
|
}>;
|
|
916
914
|
}, undefined, undefined>;
|
|
917
|
-
declare const baseRelations:
|
|
915
|
+
declare const baseRelations: import("drizzle-orm").ExtractTablesWithRelations<{}, import("drizzle-orm").ExtractTablesFromSchema<{
|
|
918
916
|
danmakus: t.PgTableWithColumns<{
|
|
919
917
|
name: "danmakus";
|
|
920
918
|
schema: undefined;
|
|
@@ -1237,11 +1235,11 @@ declare const baseRelations: _$drizzle_orm0.ExtractTablesWithRelations<{}, _$dri
|
|
|
1237
1235
|
dialect: 'pg';
|
|
1238
1236
|
}>;
|
|
1239
1237
|
}>>;
|
|
1240
|
-
declare const relations:
|
|
1238
|
+
declare const relations: import("drizzle-orm").ExtractTablesWithRelationsParts<{
|
|
1241
1239
|
chunks: {
|
|
1242
|
-
danmakus:
|
|
1240
|
+
danmakus: import("drizzle-orm").Many<"danmakus">;
|
|
1243
1241
|
};
|
|
1244
|
-
},
|
|
1242
|
+
}, import("drizzle-orm").ExtractTablesFromSchema<{
|
|
1245
1243
|
danmakus: t.PgTableWithColumns<{
|
|
1246
1244
|
name: "danmakus";
|
|
1247
1245
|
schema: undefined;
|
|
@@ -1566,7 +1564,7 @@ declare const relations: _$drizzle_orm0.ExtractTablesWithRelationsParts<{
|
|
|
1566
1564
|
}>>;
|
|
1567
1565
|
declare const onConflictDoUpdateSet: {
|
|
1568
1566
|
readonly danmakus: {
|
|
1569
|
-
[k: string]:
|
|
1567
|
+
[k: string]: import("drizzle-orm").SQL<unknown>;
|
|
1570
1568
|
};
|
|
1571
1569
|
};
|
|
1572
1570
|
declare const onConflictDoUpdate: {
|
|
@@ -1587,7 +1585,7 @@ declare const onConflictDoUpdate: {
|
|
|
1587
1585
|
generated: undefined;
|
|
1588
1586
|
}>[];
|
|
1589
1587
|
set: {
|
|
1590
|
-
[k: string]:
|
|
1588
|
+
[k: string]: import("drizzle-orm").SQL<unknown>;
|
|
1591
1589
|
};
|
|
1592
1590
|
};
|
|
1593
1591
|
};
|
|
@@ -1616,4 +1614,4 @@ declare const DMAttrSchema: z.ZodEnum<{
|
|
|
1616
1614
|
}>;
|
|
1617
1615
|
//#endregion
|
|
1618
1616
|
export { onConflictDoUpdateSet as _, PoolSchema as a, Simplify as b, chunk2danmakusZod as c, danmakus as d, danmakusInsertZod as f, onConflictDoUpdate as g, modeEnum as h, ModeSchema as i, chunks as l, dmAttrEnum as m, DanmakusInsert as n, baseRelations as o, danmakusSelectZod as p, DanmakusSelect as r, chunk2danmakus as s, DMAttrSchema as t, chunksZod as u, poolEnum as v, relations as y };
|
|
1619
|
-
//# sourceMappingURL=schema-
|
|
1617
|
+
//# sourceMappingURL=schema-mO6Zqxyb.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-mO6Zqxyb.d.mts","names":["Simplify","T","KeyType"],"sources":["../node_modules/type-fest/source/simplify.d.ts","../src/core/db/schema.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { X as InitedUniDB, Z as UniChunk, at as UniDMObj, n as Metadata, t as Adapter } from "./index-
|
|
2
|
-
import { a as PoolSchema, i as ModeSchema, t as DMAttrSchema } from "./schema-
|
|
1
|
+
import { X as InitedUniDB, Z as UniChunk, at as UniDMObj, n as Metadata, t as Adapter } from "./index-FA4prRvt.mjs";
|
|
2
|
+
import { a as PoolSchema, i as ModeSchema, t as DMAttrSchema } from "./schema-mO6Zqxyb.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/utils/fileParser.d.ts
|
package/dist/utils.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.mts","names":[],"sources":["../src/utils/fileParser.ts","../src/utils/isSame.ts","../src/utils/wildcardAdapter.ts","../src/utils/index.ts"],"mappings":";;;;;iBAAgB,UAAA,CAAW,IAAA,WAAe,GAAA,UAAa,WAAA,GAAc,
|
|
1
|
+
{"version":3,"file":"utils.d.mts","names":[],"sources":["../src/utils/fileParser.ts","../src/utils/isSame.ts","../src/utils/wildcardAdapter.ts","../src/utils/index.ts"],"mappings":";;;;;iBAAgB,UAAA,CAAW,IAAA,WAAe,GAAA,UAAa,WAAA,GAAc,UAAU;AAAA,iBAC/D,UAAA,CAAW,IAAA,WAAe,GAAa;AAAA,iBACvC,UAAA,kBAAA,CAA6B,IAAA,WAAe,GAAA,WAAc,CAAC;;;UCIjE,eAAA,SAAwB,IAAA,CAAK,QAAA;EACrC,IAAA,EAAM,CAAA,CAAE,KAAA,QAAa,UAAA;EACrB,IAAA,EAAM,CAAA,CAAE,KAAA,QAAa,UAAA;EACrB,IAAA,EAAM,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA;AAAA,KAGlB,IAAA,GAAO,IAAA,CACV,eAAA,GAAkB,OAAA,CAAQ,QAAA;AAAA,iBAQZ,MAAA,CAAO,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,IAAI,EAAE,OAAA;EAAY,eAAA;AAAA;;;;;;;ADrB1D;;;;cEWa,uBAAA,GAAuB,CAAA,EAC/B,WAAA,GAAc,QAAA,EAAQ,YAAA,EACX,QAAA,IAAU,IAAA,cACX,OAAA,CAAA,OAAA,UAAA,QAAA;AAAA,cAoBF,qBAAA,GAAqB,WAAA,GAClB,QAAA,EAAU,OAAA,KAAU,EAAA,cAEhC,QAAA,EAAU,OAAA;AAAA,cAmBD,mBAAA,GAAmB,CAAA,EAC3B,WAAA,GAAc,QAAA,EAAQ,WAAA,GACX,QAAA,EAAU,OAAA,KAAU,EAAA,UACxB,IAAA,cACG,OAAA,CAAA,OAAA,UAAA,QAAA;AAAA"}
|
package/dist/utils.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-DK3Fl9T5.mjs";import{n as t}from"./core-D_bgY3RE.mjs";import{t as n}from"./isSame-BVL_GmwN.mjs";function r(e,t){let n=e instanceof ArrayBuffer||e instanceof Uint8Array;switch(t){case`bin`:if(n)return e;throw TypeError(`Expected binary data for mod "bin"`);case`string`:if(typeof e==`string`)return e;if(n)return new TextDecoder().decode(e);throw TypeError(`Expected binary data or string for mod "string"`);case`json`:{if(typeof e==`object`&&e&&!n)return e;if(typeof e!=`string`&&!n)throw TypeError(`Expected object, JSON string, or binary data for mod "json"`);let t=typeof e==`string`?e:new TextDecoder().decode(e);try{return JSON.parse(t)}catch{throw Error(`Invalid JSON string`)}}default:throw Error(`Unsupported mod`)}}const i=async(e,n,r)=>{let i=e instanceof t?e:await e.makeChunk({});for(let e of n){if(e.check?.body){let t=await e.check.body(r);if(t!==null)return i.delete(),t}if(e.check?.adapter){let t=await e.check.adapter(i,r);if(t!==null)return t}}return i.delete(),null},a=(e,t)=>{let n=[];for(let[r,i]of e)if(r.check?.fn){if(r.check.fn(t)){n.push([r,i]);continue}}else{if(t.includes(r.type))return[[r,i]];r.ext.some(e=>t.endsWith(e))&&n.push([r,i])}return n},o=async(e,n,r,o)=>i(e instanceof t?e:await e.makeChunk({}),a(n,r).map(([e])=>e),o);var s=e({WildcardAdapterUtil:()=>o,WildcardBodyAdapterUtil:()=>i,WildcardFnAdapterUtil:()=>a,fileParser:()=>r,isSame:()=>n});export{o as WildcardAdapterUtil,i as WildcardBodyAdapterUtil,a as WildcardFnAdapterUtil,r as fileParser,n as isSame,s as t};
|
|
2
2
|
//# sourceMappingURL=utils.mjs.map
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils/fileParser.ts","../src/utils/wildcardAdapter.ts","../src/utils/index.ts"],"sourcesContent":["export function fileParser(file: unknown, mod: \"bin\"): ArrayBuffer | Uint8Array;\nexport function fileParser(file: unknown, mod: \"string\"): string;\nexport function fileParser<T extends object>(file: unknown, mod: \"json\"): T;\nexport function fileParser(\n file: unknown,\n mod: \"bin\" | \"string\" | \"json\",\n): ArrayBuffer | Uint8Array | string | object {\n const isBinary = file instanceof ArrayBuffer || file instanceof Uint8Array;\n switch (mod) {\n case \"bin\": {\n if (isBinary) return file;\n throw new TypeError('Expected binary data for mod \"bin\"');\n }\n case \"string\": {\n if (typeof file === \"string\") return file;\n if (isBinary) return new TextDecoder().decode(file);\n throw new TypeError('Expected binary data or string for mod \"string\"');\n }\n case \"json\": {\n if (typeof file === \"object\" && file !== null && !isBinary) return file;\n if (typeof file !== \"string\" && !isBinary) {\n throw new TypeError('Expected object, JSON string, or binary data for mod \"json\"');\n }\n const str = typeof file === \"string\" ? file : new TextDecoder().decode(file);\n try {\n return JSON.parse(str);\n } catch {\n throw new Error(\"Invalid JSON string\");\n }\n }\n default:\n throw new Error(\"Unsupported mod\");\n }\n}\n","import { type Adapter, type Metadata } from \"@/adapters/index.ts\";\nimport { UniChunk, type InitedUniDB } from \"@/core/index.ts\";\n\n/**\n * 通配插件: 在给定范围内尝试导入弹幕\n * @description\n * 可能会有3种返回:\n * 1. 导入成功(无额外参数要求): 直接返回UniChunk\n * 2. 导入成功(需要额外参数): 返回匹配到的Adapter\n * 3. 导入失败: 返回null\n */\nexport const WildcardBodyAdapterUtil = async (\n u: InitedUniDB | UniChunk,\n metadataList: Metadata[],\n body: unknown,\n) => {\n const uchunk = u instanceof UniChunk ? u : await u.makeChunk({});\n for (const metadata of metadataList) {\n if (metadata.check?.body) {\n const r = await metadata.check.body(body);\n if (r !== null) {\n uchunk.delete(); // 需额外参数,返回适配器,当前测试用的chunk视为临时chunk\n return r;\n }\n }\n if (metadata.check?.adapter) {\n const r = await metadata.check.adapter(uchunk, body);\n if (r !== null) return r;\n }\n }\n uchunk.delete(); // 若为无额外参数要求的,其已经被返回,不会执行到这里\n return null;\n};\n\nexport const WildcardFnAdapterUtil = (\n handlerList: [Metadata, Adapter][],\n fn: string,\n): [Metadata, Adapter][] => {\n const possibleHandlers: [Metadata, Adapter][] = [];\n for (const [metadata, adapter] of handlerList) {\n if (metadata.check?.fn) {\n const r = metadata.check.fn(fn);\n if (r) {\n possibleHandlers.push([metadata, adapter]);\n continue;\n }\n } else {\n const r1 = fn.includes(metadata.type);\n if (r1) return [[metadata, adapter]];\n const r2 = metadata.ext.some((e) => fn.endsWith(e));\n if (r2) possibleHandlers.push([metadata, adapter]);\n }\n }\n return possibleHandlers;\n};\n\nexport const WildcardAdapterUtil = async (\n u: InitedUniDB | UniChunk,\n handlerList: [Metadata, Adapter][],\n fn: string,\n body: unknown,\n) => {\n const uchunk = u instanceof UniChunk ? u : await u.makeChunk({});\n const possileHandlers = WildcardFnAdapterUtil(handlerList, fn);\n return WildcardBodyAdapterUtil(\n uchunk,\n possileHandlers.map(([m]) => m),\n body,\n );\n};\n","export * from \"./fileParser.ts\";\nexport * from \"./isSame.ts\";\nexport * from \"./wildcardAdapter.ts\";\n"],"mappings":"2HAGA,SAAgB,EACd,EACA,EAC4C,CAC5C,IAAM,EAAW,aAAgB,aAAe,aAAgB,WAChE,OAAQ,EAAR,CACE,IAAK,MACH,GAAI,EAAU,OAAO,EACrB,MAAU,UAAU,
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils/fileParser.ts","../src/utils/wildcardAdapter.ts","../src/utils/index.ts"],"sourcesContent":["export function fileParser(file: unknown, mod: \"bin\"): ArrayBuffer | Uint8Array;\nexport function fileParser(file: unknown, mod: \"string\"): string;\nexport function fileParser<T extends object>(file: unknown, mod: \"json\"): T;\nexport function fileParser(\n file: unknown,\n mod: \"bin\" | \"string\" | \"json\",\n): ArrayBuffer | Uint8Array | string | object {\n const isBinary = file instanceof ArrayBuffer || file instanceof Uint8Array;\n switch (mod) {\n case \"bin\": {\n if (isBinary) return file;\n throw new TypeError('Expected binary data for mod \"bin\"');\n }\n case \"string\": {\n if (typeof file === \"string\") return file;\n if (isBinary) return new TextDecoder().decode(file);\n throw new TypeError('Expected binary data or string for mod \"string\"');\n }\n case \"json\": {\n if (typeof file === \"object\" && file !== null && !isBinary) return file;\n if (typeof file !== \"string\" && !isBinary) {\n throw new TypeError('Expected object, JSON string, or binary data for mod \"json\"');\n }\n const str = typeof file === \"string\" ? file : new TextDecoder().decode(file);\n try {\n return JSON.parse(str);\n } catch {\n throw new Error(\"Invalid JSON string\");\n }\n }\n default:\n throw new Error(\"Unsupported mod\");\n }\n}\n","import { type Adapter, type Metadata } from \"@/adapters/index.ts\";\nimport { UniChunk, type InitedUniDB } from \"@/core/index.ts\";\n\n/**\n * 通配插件: 在给定范围内尝试导入弹幕\n * @description\n * 可能会有3种返回:\n * 1. 导入成功(无额外参数要求): 直接返回UniChunk\n * 2. 导入成功(需要额外参数): 返回匹配到的Adapter\n * 3. 导入失败: 返回null\n */\nexport const WildcardBodyAdapterUtil = async (\n u: InitedUniDB | UniChunk,\n metadataList: Metadata[],\n body: unknown,\n) => {\n const uchunk = u instanceof UniChunk ? u : await u.makeChunk({});\n for (const metadata of metadataList) {\n if (metadata.check?.body) {\n const r = await metadata.check.body(body);\n if (r !== null) {\n uchunk.delete(); // 需额外参数,返回适配器,当前测试用的chunk视为临时chunk\n return r;\n }\n }\n if (metadata.check?.adapter) {\n const r = await metadata.check.adapter(uchunk, body);\n if (r !== null) return r;\n }\n }\n uchunk.delete(); // 若为无额外参数要求的,其已经被返回,不会执行到这里\n return null;\n};\n\nexport const WildcardFnAdapterUtil = (\n handlerList: [Metadata, Adapter][],\n fn: string,\n): [Metadata, Adapter][] => {\n const possibleHandlers: [Metadata, Adapter][] = [];\n for (const [metadata, adapter] of handlerList) {\n if (metadata.check?.fn) {\n const r = metadata.check.fn(fn);\n if (r) {\n possibleHandlers.push([metadata, adapter]);\n continue;\n }\n } else {\n const r1 = fn.includes(metadata.type);\n if (r1) return [[metadata, adapter]];\n const r2 = metadata.ext.some((e) => fn.endsWith(e));\n if (r2) possibleHandlers.push([metadata, adapter]);\n }\n }\n return possibleHandlers;\n};\n\nexport const WildcardAdapterUtil = async (\n u: InitedUniDB | UniChunk,\n handlerList: [Metadata, Adapter][],\n fn: string,\n body: unknown,\n) => {\n const uchunk = u instanceof UniChunk ? u : await u.makeChunk({});\n const possileHandlers = WildcardFnAdapterUtil(handlerList, fn);\n return WildcardBodyAdapterUtil(\n uchunk,\n possileHandlers.map(([m]) => m),\n body,\n );\n};\n","export * from \"./fileParser.ts\";\nexport * from \"./isSame.ts\";\nexport * from \"./wildcardAdapter.ts\";\n"],"mappings":"2HAGA,SAAgB,EACd,EACA,EAC4C,CAC5C,IAAM,EAAW,aAAgB,aAAe,aAAgB,WAChE,OAAQ,EAAR,CACE,IAAK,MACH,GAAI,EAAU,OAAO,EACrB,MAAU,UAAU,oCAAoC,EAE1D,IAAK,SACH,GAAI,OAAO,GAAS,SAAU,OAAO,EACrC,GAAI,EAAU,OAAO,IAAI,YAAY,EAAE,OAAO,CAAI,EAClD,MAAU,UAAU,iDAAiD,EAEvE,IAAK,OAAQ,CACX,GAAI,OAAO,GAAS,UAAY,GAAiB,CAAC,EAAU,OAAO,EACnE,GAAI,OAAO,GAAS,UAAY,CAAC,EAC/B,MAAU,UAAU,6DAA6D,EAEnF,IAAM,EAAM,OAAO,GAAS,SAAW,EAAO,IAAI,YAAY,EAAE,OAAO,CAAI,EAC3E,GAAI,CACF,OAAO,KAAK,MAAM,CAAG,CACvB,MAAQ,CACN,MAAU,MAAM,qBAAqB,CACvC,CACF,CACA,QACE,MAAU,MAAM,iBAAiB,CACrC,CACF,CCtBA,MAAa,EAA0B,MACrC,EACA,EACA,IACG,CACH,IAAM,EAAS,aAAa,EAAW,EAAI,MAAM,EAAE,UAAU,CAAC,CAAC,EAC/D,IAAK,IAAM,KAAY,EAAc,CACnC,GAAI,EAAS,OAAO,KAAM,CACxB,IAAM,EAAI,MAAM,EAAS,MAAM,KAAK,CAAI,EACxC,GAAI,IAAM,KAER,OADA,EAAO,OAAO,EACP,CAEX,CACA,GAAI,EAAS,OAAO,QAAS,CAC3B,IAAM,EAAI,MAAM,EAAS,MAAM,QAAQ,EAAQ,CAAI,EACnD,GAAI,IAAM,KAAM,OAAO,CACzB,CACF,CAEA,OADA,EAAO,OAAO,EACP,IACT,EAEa,GACX,EACA,IAC0B,CAC1B,IAAM,EAA0C,CAAC,EACjD,IAAK,GAAM,CAAC,EAAU,KAAY,EAChC,GAAI,EAAS,OAAO,OACR,EAAS,MAAM,GAAG,CACxB,EAAG,CACL,EAAiB,KAAK,CAAC,EAAU,CAAO,CAAC,EACzC,QACF,MACK,CAEL,GADW,EAAG,SAAS,EAAS,IAC3B,EAAG,MAAO,CAAC,CAAC,EAAU,CAAO,CAAC,EACxB,EAAS,IAAI,KAAM,GAAM,EAAG,SAAS,CAAC,CAC5C,GAAG,EAAiB,KAAK,CAAC,EAAU,CAAO,CAAC,CACnD,CAEF,OAAO,CACT,EAEa,EAAsB,MACjC,EACA,EACA,EACA,IAIO,EAFQ,aAAa,EAAW,EAAI,MAAM,EAAE,UAAU,CAAC,CAAC,EACvC,EAAsB,EAAa,CAG3C,EAAE,KAAK,CAAC,KAAO,CAAC,EAC9B,CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dan-uni/dan-any",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.7",
|
|
4
4
|
"description": "A danmaku transformer lib, supporting danmaku from different platforms.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bangumi",
|
|
@@ -54,20 +54,20 @@
|
|
|
54
54
|
"zod": "^4.4.3"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@arethetypeswrong/core": "^0.18.
|
|
57
|
+
"@arethetypeswrong/core": "^0.18.3",
|
|
58
58
|
"@bufbuild/buf": "^1.70.0",
|
|
59
59
|
"@bufbuild/protoc-gen-es": "^2.12.0",
|
|
60
60
|
"@types/json-bigint": "^1.0.4",
|
|
61
61
|
"@types/node": "^25.9.1",
|
|
62
|
-
"@typescript/native-preview": "^7.0.0-dev.20260527.
|
|
62
|
+
"@typescript/native-preview": "^7.0.0-dev.20260527.2",
|
|
63
63
|
"@vitest/ui": "^4.1.7",
|
|
64
64
|
"bumpp": "^11.1.0",
|
|
65
65
|
"bun-types": "^1.3.14",
|
|
66
66
|
"drizzle-kit": "^1.0.0-rc.4-ca0f029",
|
|
67
|
-
"protobufjs": "^8.
|
|
67
|
+
"protobufjs": "^8.5.0",
|
|
68
68
|
"type-fest": "^5.6.0",
|
|
69
69
|
"typescript": "^6.0.3",
|
|
70
|
-
"vite-plus": "^0.1.
|
|
70
|
+
"vite-plus": "^0.1.23"
|
|
71
71
|
},
|
|
72
72
|
"overrides": {
|
|
73
73
|
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
|
package/dist/core-DQi8JonK.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./chunk-0Lt9GpW0.mjs";import{chunk2danmakus as t,chunks as n,danmakus as r,onConflictDoUpdate as i}from"./core/db/schema.mjs";import{i as a,n as o,r as s,t as c}from"./db-DWWzkRBb.mjs";import{eq as l}from"drizzle-orm";import{z as u}from"zod";import{sha3_256 as ee}from"@noble/hashes/sha3.js";import te from"json-bigint";import{bytesToHex as ne,utf8ToBytes as re}from"@noble/hashes/utils.js";import{fileDesc as ie,messageDesc as d}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_timestamp as ae,timestampDate as oe,timestampFromDate as se,timestampNow as ce}from"@bufbuild/protobuf/wkt";import{create as le,fromBinary as f,toBinary as ue}from"@bufbuild/protobuf";import{XMLParser as de}from"fast-xml-parser";import fe from"fast-xml-builder";const p=te({useNativeBigInt:!0});var pe=`@dan-uni/dan-any`,me=`2.1.2`;let m=function(e){return e.Bangumi=`bgm`,e.TMDB=`tmdb`,e}({});const h=Object.values(m);let g=function(e){return e.Acfun=`acfun`,e.Baha=`baha`,e.Bilibili=`bili`,e.BilibiliGlobal=`bglobal`,e.Iqiyi=`iqiyi`,e.Tencent=`tencent`,e.Youku=`youku`,e}({});const _=Object.values(g);let v=function(e){return e.DanDanPlay=`ddplay`,e.TuCao=`tucao`,e}({});const he=Object.values(v),y=[..._,...he],ge=[...h,...y],_e=u.templateLiteral([u.string(),`@`,u.string()]);var b=class e{constructor(e,t){this.id=e,this.domain=t}static validateString(e){return _e.safeParse(e).success}static fromStringSafe(e){return this.fromString(_e.parse(e))}static fromString(t){let[n,r]=t.split(`@`);return new e(n,r)}toString(){return`${this.id}@${this.domain}`}static fromNull(t){return new e(t===`runtime`?`runtime`:`anonymous`,t||`danuni`)}static fromBili({cid:t,mid:n,midHash:r}){return t?new e(t.toString(),`bili`):n?new e(n.toString(),`bili`):r?new e(r,`bili`):this.fromNull(`bili`)}static fromUnknown(t,n){return t?new e(t,n):this.fromNull(n)}};let x=function(e){return e[e.Normal=0]=`Normal`,e[e.Bottom=1]=`Bottom`,e[e.Top=2]=`Top`,e[e.Reverse=3]=`Reverse`,e[e.Ext=4]=`Ext`,e}({}),S=function(e){return e[e.Def=0]=`Def`,e[e.Sub=1]=`Sub`,e[e.Adv=2]=`Adv`,e[e.Ix=3]=`Ix`,e}({}),C=function(e){return e.Protect=`Protect`,e.FromLive=`FromLive`,e.HighLike=`HighLike`,e.Compatible=`Compatible`,e.Reported=`Reported`,e.Unchecked=`Unchecked`,e.HasEvent=`HasEvent`,e.Hide=`Hide`,e}({});const w={SOID:b.fromNull().toString(),progress:0,mode:0,fontsize:25,color:16777215,senderID:b.fromNull().toString(),content:``,weight:0,pool:0,attr:[],platform:null,extra:null},T={meassage:`Converted by DanUni!`,version:`JS/TS ${pe} (v${me})`},ve=e=>e?[`adv`,`bas`,`code`,`command`].some(t=>e[t]):!1;function ye(e){return e.mode!==`Ext`&&e.extra&&(e.extra.artplayer||ve(e.extra.bili))?(e.mode=`Ext`,!0):!1}function be(e){let t=p.parse(e);return{...t,bili:t.bili?{...t.bili,dmid:t.bili.dmid?.toString(),mid:t.bili.mid?.toString()}:void 0}}const xe=u.float32(),Se=u.int();function Ce(e){return Se.parse(~~(xe.parse(e)*1e3))}const E=u.codec(u.enum(x).default(0),u.enum(r.mode.enumValues),{decode:e=>r.mode.enumValues[e]||`Normal`,encode:e=>x[e]||0}),D=u.codec(u.enum(S).default(0),u.enum(r.pool.enumValues),{decode:e=>r.pool.enumValues[e]||`Def`,encode:e=>S[e]||0}),O=u.codec(u.enum(C).array(),u.enum(r.attr.enumValues).array(),{decode:e=>e,encode:e=>e.map(e=>C[e])});function we(e){let t=!Number.isInteger(e.progress),n=typeof e.extraStr==`string`;return t||n}const k=J((e,t)=>async(n,r)=>{let i=new Date,a=r??await n.makeChunk({}),o=t?.isV1?!0:e.some(e=>we(e));return await a.upsertDanmakus(e.map(e=>{let t={SOID:e.SOID||w.SOID,progress:e.progress?o?Ce(e.progress):e.progress:w.progress,mode:E.decode(e.mode),fontsize:e.fontsize??w.fontsize,color:e.color??w.color,senderID:e.senderID||w.senderID,content:e.content??w.content,ctime:e.ctime?new Date(e.ctime):i,weight:e.weight??w.weight,pool:D.decode(e.pool),attr:e.attr?O.decode(e.attr):w.attr,platform:e.platform??w.platform,extra:e.extra??(e.extraStr?be(e.extraStr):w.extra)};return ye(t),{...t,DMID:!o&&e.DMID?e.DMID:a.$UniDB.DMIDGenerator(t)}})),a});function Te(e){return Y(t=>t.then(t=>e?.minify?t.map(e=>({SOID:e.SOID===w.SOID?void 0:e.SOID,progress:e.progress===w.progress?void 0:e.progress,mode:e.mode===`Normal`?void 0:E.encode(e.mode),fontsize:e.fontsize===w.fontsize?void 0:e.fontsize,color:e.color===w.color?void 0:e.color,senderID:e.senderID===w.senderID?void 0:e.senderID,content:e.content===w.content?void 0:e.content,ctime:e.ctime,weight:e.weight===w.weight?void 0:e.weight,pool:e.pool===`Def`?void 0:D.encode(e.pool),attr:e.attr&&e.attr.length>0?O.encode(e.attr):void 0,platform:e.platform??void 0,extra:e.extra??void 0,DMID:e.DMID})):t.map(e=>({...e,mode:E.encode(e.mode),pool:D.encode(e.pool),attr:O.encode(e.attr)}))))}const Ee=X({type:`danuni.json`,ext:[`.json`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!t)return null;try{return e.import(k(t))}catch{return null}}}}),A=d(ie(`Ch9kYW51bmkvZGFubWFrdS92MS9kYW5tYWt1LnByb3RvEhFkYW51bmkuZGFubWFrdS52MSI2Cg5MaXN0RGFuUmVxdWVzdBIKCgJpZBgBIAEoCRIQCgNzZWcYAiABKAVIAIgBAUIGCgRfc2VnIpMDCgdEYW5tYWt1EhIKBHNvaWQYASABKAlSBFNPSUQSEgoEZG1pZBgCIAEoCVIERE1JRBIQCghwcm9ncmVzcxgDIAEoBRIlCgRtb2RlGAQgASgOMhcuZGFudW5pLmRhbm1ha3UudjEuTW9kZRIQCghmb250c2l6ZRgFIAEoBRINCgVjb2xvchgGIAEoBRIbCglzZW5kZXJfaWQYByABKAlSCHNlbmRlcklEEg8KB2NvbnRlbnQYCCABKAkSKQoFY3RpbWUYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBndlaWdodBgKIAEoBRIlCgRwb29sGAsgASgOMhcuZGFudW5pLmRhbm1ha3UudjEuUG9vbBIMCgRhdHRyGAwgAygJEhUKCHBsYXRmb3JtGA0gASgJSACIAQESGQoIZXh0cmFfdjEYDiABKAlCAhgBSAGIAQESEgoFZXh0cmEYDyABKAlIAogBAUILCglfcGxhdGZvcm1CCwoJX2V4dHJhX3YxQggKBl9leHRyYSI/Cg9MaXN0RGFuUmVzcG9uc2USLAoIZGFubWFrdXMYASADKAsyGi5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1KmIKBE1vZGUSGwoXTU9ERV9OT1JNQUxfVU5TUEVDSUZJRUQQABIPCgtNT0RFX0JPVFRPTRABEgwKCE1PREVfVE9QEAISEAoMTU9ERV9SRVZFUlNFEAMSDAoITU9ERV9FWFQQBCpJCgRQb29sEhgKFFBPT0xfREVGX1VOU1BFQ0lGSUVEEAASDAoIUE9PTF9TVUIQARIMCghQT09MX0FEVhACEgsKB1BPT0xfSVgQAzJkCg5EYW5tYWt1U2VydmljZRJSCgdMaXN0RGFuEiEuZGFudW5pLmRhbm1ha3UudjEuTGlzdERhblJlcXVlc3QaIi5kYW51bmkuZGFubWFrdS52MS5MaXN0RGFuUmVzcG9uc2UiAEKLAQoVY29tLmRhbnVuaS5kYW5tYWt1LnYxQgxEYW5tYWt1UHJvdG9QAaICA0REWKoCEURhbnVuaS5EYW5tYWt1LlYxygIRRGFudW5pXERhbm1ha3VcVjHiAh1EYW51bmlcRGFubWFrdVxWMVxHUEJNZXRhZGF0YeoCE0RhbnVuaTo6RGFubWFrdTo6VjFiBnByb3RvMw`,[ae]),2);let De=function(e){return e[e.NORMAL_UNSPECIFIED=0]=`NORMAL_UNSPECIFIED`,e[e.BOTTOM=1]=`BOTTOM`,e[e.TOP=2]=`TOP`,e[e.REVERSE=3]=`REVERSE`,e[e.EXT=4]=`EXT`,e}({}),Oe=function(e){return e[e.DEF_UNSPECIFIED=0]=`DEF_UNSPECIFIED`,e[e.SUB=1]=`SUB`,e[e.ADV=2]=`ADV`,e[e.IX=3]=`IX`,e}({});const ke=u.codec(u.enum(De),u.enum(r.mode.enumValues),{decode:e=>r.mode.enumValues[e]||`Normal`,encode:e=>{let t=r.mode.enumValues.indexOf(e);return t===-1?0:t}}),Ae=u.codec(u.enum(Oe),u.enum(r.pool.enumValues),{decode:e=>r.pool.enumValues[e]||`Def`,encode:e=>{let t=r.pool.enumValues.indexOf(e);return t===-1?0:t}}),j=J(e=>async(t,n)=>{let i=f(A,new Uint8Array(e)),a=n??await t.makeChunk({}),o=i.danmakus.some(e=>e.extraV1);return await a.upsertDanmakus(i.danmakus.map(e=>{let t={...e,SOID:e.soid,DMID:e.dmid,mode:ke.decode(e.mode),senderID:e.senderId,ctime:oe(e.ctime||ce()),pool:Ae.decode(e.pool),attr:u.enum(r.attr.enumValues).array().parse(e.attr),platform:e.platform??w.platform,extra:e.extra?p.parse(e.extra):e.extraV1?be(e.extraV1):void 0};return o?{...t,DMID:a.$UniDB.DMIDGenerator(t)}:t})),a}),je=Y(e=>e.then(e=>ue(A,le(A,{danmakus:e.map(e=>({...e,soid:e.SOID,dmid:e.DMID,mode:ke.encode(e.mode),senderId:e.senderID,ctime:se(e.ctime),pool:Ae.encode(e.pool),platform:e.platform??void 0,extra:p.stringify(e.extra)}))})))),Me=X({type:`danuni.binpb`,ext:[`.binpb`,`.bin`,`.pb.bin`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!(t instanceof ArrayBuffer)&&!ArrayBuffer.isView(t))return null;try{let n;if(t instanceof ArrayBuffer)n=new Uint8Array(t);else if(ArrayBuffer.isView(t)){let e=t;n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}else return null;return e.import(j(n))}catch{return null}}}}),Ne=ie(`CiliaWxpYmlsaS9jb21tdW5pdHkvc2VydmljZS9kbS92MS9kbS5wcm90bxIgYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEiZAoGQXZhdGFyEgoKAmlkGAEgASgJEgsKA3VybBgCIAEoCRJBCgthdmF0YXJfdHlwZRgDIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkF2YXRhclR5cGUiIwoGQnViYmxlEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJIsYBCghCdWJibGVWMhIMCgR0ZXh0GAEgASgJEgsKA3VybBgCIAEoCRJBCgtidWJibGVfdHlwZRgDIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVR5cGUSFQoNZXhwb3N1cmVfb25jZRgEIAEoCBJFCg1leHBvc3VyZV90eXBlGAUgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIlsKBkJ1dHRvbhIMCgR0ZXh0GAEgASgJEkMKBmFjdGlvbhgCIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0RnVuY3Rpb25UeXBlIlgKDkJ1enp3b3JkQ29uZmlnEkYKCGtleXdvcmRzGAEgAygLMjQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnV6endvcmRTaG93Q29uZmlnIngKEkJ1enp3b3JkU2hvd0NvbmZpZxIMCgRuYW1lGAEgASgJEg4KBnNjaGVtYRgCIAEoCRIOCgZzb3VyY2UYAyABKAUSCgoCaWQYBCABKAMSEwoLYnV6endvcmRfaWQYBSABKAMSEwoLc2NoZW1hX3R5cGUYBiABKAUiewoIQ2hlY2tCb3gSDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgSDAoEc2hvdxgEIAEoCCJvCgpDaGVja0JveFYyEgwKBHRleHQYASABKAkSPAoEdHlwZRgCIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrYm94VHlwZRIVCg1kZWZhdWx0X3ZhbHVlGAMgASgIIoICCgtDbGlja0J1dHRvbhIVCg1wb3J0cmFpdF90ZXh0GAEgAygJEhYKDmxhbmRzY2FwZV90ZXh0GAIgAygJEhsKE3BvcnRyYWl0X3RleHRfZm9jdXMYAyADKAkSHAoUbGFuZHNjYXBlX3RleHRfZm9jdXMYBCADKAkSQQoLcmVuZGVyX3R5cGUYBSABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEgwKBHNob3cYBiABKAgSOAoGYnViYmxlGAcgASgLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlIrMCCg1DbGlja0J1dHRvblYyEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSFwoPdGV4dF9pbnB1dF9wb3N0GAYgASgIEhUKDWV4cG9zdXJlX29uY2UYByABKAgSRQoNZXhwb3N1cmVfdHlwZRgIIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkV4cG9zdXJlVHlwZSJLCgdDb21tYW5kEkAKC2NvbW1hbmRfZG1zGAEgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZERtIuYBCglDb21tYW5kRG0SCgoCaWQYASABKAMSCwoDb2lkGAIgASgDEgsKA21pZBgDIAEoAxIPCgdjb21tYW5kGAQgASgJEg8KB2NvbnRlbnQYBSABKAkSEAoIcHJvZ3Jlc3MYBiABKAUSDQoFY3RpbWUYByABKAkSDQoFbXRpbWUYCCABKAkSDQoFZXh0cmEYCSABKAkSDQoFaWRTdHIYCiABKAkSDAoEdHlwZRgLIAEoBRITCgthdXRvX2NyZWF0ZRgMIAEoCBISCgpjb3VudF9kb3duGA0gASgFEgwKBGF0dHIYDiABKAUiUAoNRGFubWFrdUFJRmxhZxI/CghkbV9mbGFncxgBIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnIosDCgtEYW5tYWt1RWxlbRIKCgJpZBgBIAEoAxIQCghwcm9ncmVzcxgCIAEoBRIMCgRtb2RlGAMgASgFEhAKCGZvbnRzaXplGAQgASgFEj8KBWNvbG9yGAUgASgOMjAuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1Db2xvcmZ1bFR5cGUSEAoIbWlkX2hhc2gYBiABKAkSDwoHY29udGVudBgHIAEoCRINCgVjdGltZRgIIAEoAxIOCgZ3ZWlnaHQYCSABKAUSDgoGYWN0aW9uGAogASgJEgwKBHBvb2wYCyABKAUSDgoGaWRfc3RyGAwgASgJEgwKBGF0dHIYDSABKAUSEQoJYW5pbWF0aW9uGBYgASgJEg0KBWV4dHJhGBcgASgJEkIKCGNvbG9yZnVsGBggASgOMjAuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1Db2xvcmZ1bFR5cGUSDAoEdHlwZRgZIAEoBRILCgNvaWQYGiABKAMiKQoLRGFubWFrdUZsYWcSDAoEZG1pZBgBIAEoAxIMCgRmbGFnGAIgASgFIksKEURhbm1ha3VGbGFnQ29uZmlnEhAKCHJlY19mbGFnGAEgASgFEhAKCHJlY190ZXh0GAIgASgJEhIKCnJlY19zd2l0Y2gYAyABKAUiiwcKGERhbm11RGVmYXVsdFBsYXllckNvbmZpZxIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYASABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X3N3aXRjaBgQIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV9zZW5pb3JfbW9kZV9zd2l0Y2gYESABKAUSLgomcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjIYEiABKAUSmAEKKnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyX21hcBgTIAMoCzJkLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm11RGVmYXVsdFBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgUIAEoCBpLCilQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIuwJChFEYW5tdVBsYXllckNvbmZpZxIdChVwbGF5ZXJfZGFubWFrdV9zd2l0Y2gYASABKAgSIgoacGxheWVyX2Rhbm1ha3Vfc3dpdGNoX3NhdmUYAiABKAgSKQohcGxheWVyX2Rhbm1ha3VfdXNlX2RlZmF1bHRfY29uZmlnGAMgASgIEiwKJHBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX3N3aXRjaBgEIAEoCBIrCiNwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbBgFIAEoBRIfChdwbGF5ZXJfZGFubWFrdV9ibG9ja3RvcBgGIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3Njcm9sbBgHIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja2JvdHRvbRgIIAEoCBIkChxwbGF5ZXJfZGFubWFrdV9ibG9ja2NvbG9yZnVsGAkgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrcmVwZWF0GAogASgIEiMKG3BsYXllcl9kYW5tYWt1X2Jsb2Nrc3BlY2lhbBgLIAEoCBIeChZwbGF5ZXJfZGFubWFrdV9vcGFjaXR5GAwgASgCEiQKHHBsYXllcl9kYW5tYWt1X3NjYWxpbmdmYWN0b3IYDSABKAISHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCEhwKFHBsYXllcl9kYW5tYWt1X3NwZWVkGA8gASgFEiYKHnBsYXllcl9kYW5tYWt1X2VuYWJsZWJsb2NrbGlzdBgQIAEoCBIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBEgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9jb25maWcYEiABKAUSJgoecGxheWVyX2Rhbm1ha3VfaW9zX3N3aXRjaF9zYXZlGBMgASgFEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgUIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgVIAEoBRKRAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBYgAygLMl0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyTWFwRW50cnkSJQodcGxheWVyX2Rhbm1ha3VfZW5hYmxlX2hlcmRfZG0YFyABKAgSJgoecGxheWVyX2Rhbm1ha3VfYmxvY2t0b3BfYm90dG9tGBggASgIEiAKGHBsYXllcl9kYW5tYWt1X2RvbWFpbl92MhgZIAEoBRIeChZwbGF5ZXJfZGFubWFrdV9kZW5zaXR5GBogASgFEiUKHXBsYXllcl9kYW5tYWt1X3N1YnRpdGxlX3Byb29mGBsgASgIEiMKG3BsYXllcl9kYW5tYWt1X3Blb3BsZV9wcm9vZhgcIAEoCBpLCilQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIjAKFkRhbm11UGxheWVyQ29uZmlnUGFuZWwSFgoOc2VsZWN0aW9uX3RleHQYASABKAkiSwoYRGFubXVQbGF5ZXJEeW5hbWljQ29uZmlnEhAKCHByb2dyZXNzGAEgASgFEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAiKQAwoVRGFubXVQbGF5ZXJWaWV3Q29uZmlnEmEKHWRhbm11a3VfZGVmYXVsdF9wbGF5ZXJfY29uZmlnGAEgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnElIKFWRhbm11a3VfcGxheWVyX2NvbmZpZxgCIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm11UGxheWVyQ29uZmlnEmEKHWRhbm11a3VfcGxheWVyX2R5bmFtaWNfY29uZmlnGAMgAygLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJEeW5hbWljQ29uZmlnEl0KG2Rhbm11a3VfcGxheWVyX2NvbmZpZ19wYW5lbBgEIAEoCzI4LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm11UGxheWVyQ29uZmlnUGFuZWwimQUKFERhbm11V2ViUGxheWVyQ29uZmlnEhEKCWRtX3N3aXRjaBgBIAEoCBIRCglhaV9zd2l0Y2gYAiABKAgSEAoIYWlfbGV2ZWwYAyABKAUSEAoIYmxvY2t0b3AYBCABKAgSEwoLYmxvY2tzY3JvbGwYBSABKAgSEwoLYmxvY2tib3R0b20YBiABKAgSEgoKYmxvY2tjb2xvchgHIAEoCBIUCgxibG9ja3NwZWNpYWwYCCABKAgSFAoMcHJldmVudHNoYWRlGAkgASgIEg0KBWRtYXNrGAogASgIEg8KB29wYWNpdHkYCyABKAISDgoGZG1hcmVhGAwgASgFEhEKCXNwZWVkcGx1cxgNIAEoAhIQCghmb250c2l6ZRgOIAEoAhISCgpzY3JlZW5zeW5jGA8gASgIEhEKCXNwZWVkc3luYxgQIAEoCBISCgpmb250ZmFtaWx5GBEgASgJEgwKBGJvbGQYEiABKAgSEgoKZm9udGJvcmRlchgTIAEoBRIRCglkcmF3X3R5cGUYFCABKAkSGgoSc2VuaW9yX21vZGVfc3dpdGNoGBUgASgFEhMKC2FpX2xldmVsX3YyGBYgASgFEmEKD2FpX2xldmVsX3YyX21hcBgXIAMoCzJILmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm11V2ViUGxheWVyQ29uZmlnLkFpTGV2ZWxWMk1hcEVudHJ5EhcKD2Jsb2NrdG9wX2JvdHRvbRgYIAEoCBISCgpkbV9hcmVhX3YyGBkgASgFEhIKCmRtX2RlbnNpdHkYGiABKAUaMwoRQWlMZXZlbFYyTWFwRW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASJZCgpEbUNvbG9yZnVsEj4KBHR5cGUYASABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRILCgNzcmMYAiABKAkiUAoPRG1FeHBvUmVwb3J0UmVxEhIKCnNlc3Npb25faWQYASABKAkSCwoDb2lkGAIgASgDEg0KBWRtaWRzGAMgASgMEg0KBXNwbWlkGAQgASgJIhEKD0RtRXhwb1JlcG9ydFJlcyJtCgpEbUhlcmRWaWV3EhsKE2Rpc3BsYXlfaGVyZF9kbV9udW0YASABKAUSQgoIaGVyZF9kbXMYAiADKAsyMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWV3SGVyZERtRWxlbSKWAgoKRG1NYXNrV2FsbBINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSDwoHY29udGVudBgDIAEoCRJNCgxjb250ZW50X3R5cGUYBCABKA4yNy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbU1hc2tXYWxsQ29udGVudFR5cGUSRQoIYml6X3R5cGUYBSABKA4yMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbU1hc2tXYWxsQml6VHlwZRJFCghjb250ZW50cxgGIAMoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50ImsKEURtTWFza1dhbGxDb250ZW50EkUKBHR5cGUYASABKA4yNy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbU1hc2tXYWxsQ29udGVudFR5cGUSDwoHY29udGVudBgCIAEoCSLNEAoRRG1QbGF5ZXJDb25maWdSZXESCgoCdHMYASABKAMSRQoGc3dpdGNoGAIgASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaBJOCgtzd2l0Y2hfc2F2ZRgDIAEoCzI5LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTd2l0Y2hTYXZlElsKEnVzZV9kZWZhdWx0X2NvbmZpZxgEIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEmEKFWFpX3JlY29tbWVuZGVkX3N3aXRjaBgFIAEoCzJCLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkU3dpdGNoEl8KFGFpX3JlY29tbWVuZGVkX2xldmVsGAYgASgLMkEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbBJJCghibG9ja3RvcBgHIAEoCzI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3RvcBJPCgtibG9ja3Njcm9sbBgIIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBJPCgtibG9ja2JvdHRvbRgJIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja2JvdHRvbRJTCg1ibG9ja2NvbG9yZnVsGAogASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSTwoLYmxvY2tyZXBlYXQYCyABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tyZXBlYXQSUQoMYmxvY2tzcGVjaWFsGAwgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc3BlY2lhbBJHCgdvcGFjaXR5GA0gASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdU9wYWNpdHkSUwoNc2NhbGluZ2ZhY3RvchgOIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTY2FsaW5nZmFjdG9yEkUKBmRvbWFpbhgPIAEoCzI1LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VEb21haW4SQwoFc3BlZWQYECABKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3BlZWQSVwoPZW5hYmxlYmxvY2tsaXN0GBEgASgLMj4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZWJsb2NrbGlzdBJeChlpbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoGBIgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuSW5saW5lUGxheWVyRGFubWFrdVN3aXRjaBJbChJzZW5pb3JfbW9kZV9zd2l0Y2gYEyABKAsyPy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBJkChdhaV9yZWNvbW1lbmRlZF9sZXZlbF92MhgUIAEoCzJDLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhJTCg5lbmFibGVfaGVyZF9kbRgVIAEoCzI7LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VFbmFibGVIZXJkRG0SVgoPYmxvY2t0b3BfYm90dG9tGBYgASgLMj0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wQm90dG9tEkoKCWRvbWFpbl92MhgXIAEoCzI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VEb21haW5WMhJHCgdkZW5zaXR5GBggASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURlbnNpdHkSVAoOc3VidGl0bGVfcHJvb2YYGSABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3VidGl0bGVQcm9vZhJQCgxwZW9wbGVfcHJvb2YYGiABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1UGVvcGxlUHJvb2YiLwoLRG1TZWdDb25maWcSEQoJcGFnZV9zaXplGAEgASgDEg0KBXRvdGFsGAIgASgDIpECChBEbVNlZ01vYmlsZVJlcGx5EjwKBWVsZW1zGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUVsZW0SDQoFc3RhdGUYAiABKAUSQAoHYWlfZmxhZxgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VBSUZsYWcSFQoNc2VnbWVudF9ydWxlcxgEIAMoAxJCCgxjb2xvcmZ1bF9zcmMYBSADKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsEhMKC2NvbnRleHRfc3JjGAYgASgJIsoBCg5EbVNlZ01vYmlsZVJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAxIWCg50ZWVuYWdlcnNfbW9kZRgFIAEoBRIKCgJwcxgGIAEoAxIKCgJwZRgHIAEoAxIRCglwdWxsX21vZGUYCCABKAUSEgoKZnJvbV9zY2VuZRgJIAEoBRINCgVzcG1pZBgKIAEoCRITCgtjb250ZXh0X2V4dBgLIAEoCSJcCg1EbVNlZ090dFJlcGx5EjwKBWVsZW1zGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUVsZW0SDQoFc3RhdGUYAiABKAUiTAoLRG1TZWdPdHRSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEhUKDXNlZ21lbnRfaW5kZXgYBCABKAMiXQoNRG1TZWdTREtSZXBseRIOCgZjbG9zZWQYASABKAgSPAoFZWxlbXMYAiADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbSJMCgtEbVNlZ1NES1JlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJ3CglEbVN1YlZpZXcSDAoEdHlwZRgBIAEoBRILCgNvaWQYAiABKAMSCwoDcGlkGAMgASgDEkIKC3Bvc3RfcGFuZWwyGAQgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjIioQkKC0RtVmlld1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI5CgRtYXNrGAIgASgLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVmlkZW9NYXNrEkEKCHN1YnRpdGxlGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVmlkZW9TdWJ0aXRsZRITCgtzcGVjaWFsX2RtcxgEIAMoCRJECgdhaV9mbGFnGAUgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWdDb25maWcSTgoNcGxheWVyX2NvbmZpZxgGIAEoCzI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm11UGxheWVyVmlld0NvbmZpZxIWCg5zZW5kX2JveF9zdHlsZRgHIAEoBRINCgVhbGxvdxgIIAEoCBIRCgljaGVja19ib3gYCSABKAgSGgoSY2hlY2tfYm94X3Nob3dfbXNnGAogASgJEhgKEHRleHRfcGxhY2Vob2xkZXIYCyABKAkSGQoRaW5wdXRfcGxhY2Vob2xkZXIYDCABKAkSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GA0gAygJEkEKC2V4cG9fcmVwb3J0GA4gASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb1JlcG9ydBJJCg9idXp6d29yZF9jb25maWcYDyABKAsyMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZENvbmZpZxJCCgtleHByZXNzaW9ucxgQIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkV4cHJlc3Npb25zEj8KCnBvc3RfcGFuZWwYESADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWwSFQoNYWN0aXZpdHlfbWV0YRgSIAMoCRJCCgtwb3N0X3BhbmVsMhgTIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbFYyEkIKDGRtX21hc2tfd2FsbBgUIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGwSPQoHZG1faGVyZBgVIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtSGVyZFZpZXcSOgoHY29tbWFuZBgWIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmQSCgoCa3YYFyABKAkSPgoJc3ViX3ZpZXdzGBggAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgZIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8ibQoJRG1WaWV3UmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRINCgVzcG1pZBgEIAEoCRIUCgxpc19oYXJkX2Jvb3QYBSABKAUSEwoLY29udGV4dF9leHQYBiABKAkigQYKDkRtV2ViVmlld1JlcGx5Eg0KBXN0YXRlGAEgASgFEgwKBHRleHQYAiABKAkSEQoJdGV4dF9zaWRlGAMgASgJEj0KBmRtX3NnZRgEIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnQ29uZmlnEkEKBGZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxITCgtzcGVjaWFsX2RtcxgGIAMoCRIRCgljaGVja19ib3gYByABKAgSDQoFY291bnQYCCABKAMSQAoLY29tbWFuZF9kbXMYCSADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0STQoNcGxheWVyX2NvbmZpZxgKIAEoCzI2LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm11V2ViUGxheWVyQ29uZmlnEh0KFXJlcG9ydF9maWx0ZXJfY29udGVudBgLIAMoCRJCCgtleHByZXNzaW9ucxgMIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkV4cHJlc3Npb25zEj8KCnBvc3RfcGFuZWwYDSADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWwSFQoNYWN0aXZpdHlfbWV0YRgOIAMoCRJCCgtwb3N0X3BhbmVsMhgPIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbFYyEj4KCXN1Yl92aWV3cxgQIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU3ViVmlldxI2CgNxb2UYESABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Rb2VJbmZvIioKCkV4cG9SZXBvcnQSHAoUc2hvdWxkX3JlcG9ydF9hdF9lbmQYASABKAgiZAoKRXhwcmVzc2lvbhIPCgdrZXl3b3JkGAEgAygJEgsKA3VybBgCIAEoCRI4CgZwZXJpb2QYAyADKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QZXJpb2QiSQoLRXhwcmVzc2lvbnMSOgoEZGF0YRgBIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkV4cHJlc3Npb24iKgoZSW5saW5lUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCCInCgVMYWJlbBINCgV0aXRsZRgBIAEoCRIPCgdjb250ZW50GAIgAygJIocBCgdMYWJlbFYyEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkSFQoNZXhwb3N1cmVfb25jZRgDIAEoCBJFCg1leHBvc3VyZV90eXBlGAQgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIiQKBlBlcmlvZBINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMiMAofUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbBINCgV2YWx1ZRgBIAEoBSIyCiFQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjISDQoFdmFsdWUYASABKAUiMQogUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrYm90dG9tEg0KBXZhbHVlGAEgASgIIisKGlBsYXllckRhbm1ha3VCbG9ja2NvbG9yZnVsEg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tzY3JvbGwSDQoFdmFsdWUYASABKAgiKgoZUGxheWVyRGFubWFrdUJsb2Nrc3BlY2lhbBINCgV2YWx1ZRgBIAEoCCImChVQbGF5ZXJEYW5tYWt1QmxvY2t0b3ASDQoFdmFsdWUYASABKAgiLAobUGxheWVyRGFubWFrdUJsb2NrdG9wQm90dG9tEg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VEZW5zaXR5Eg0KBXZhbHVlGAEgASgFIiQKE1BsYXllckRhbm1ha3VEb21haW4SDQoFdmFsdWUYASABKAIiJgoVUGxheWVyRGFubWFrdURvbWFpblYyEg0KBXZhbHVlGAEgASgFIioKGVBsYXllckRhbm1ha3VFbmFibGVIZXJkRG0SDQoFdmFsdWUYASABKAgiLQocUGxheWVyRGFubWFrdUVuYWJsZWJsb2NrbGlzdBINCgV2YWx1ZRgBIAEoCCIlChRQbGF5ZXJEYW5tYWt1T3BhY2l0eRINCgV2YWx1ZRgBIAEoAiIpChhQbGF5ZXJEYW5tYWt1UGVvcGxlUHJvb2YSDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISDQoFdmFsdWUYASABKAIiLgodUGxheWVyRGFubWFrdVNlbmlvck1vZGVTd2l0Y2gSDQoFdmFsdWUYASABKAUiIwoSUGxheWVyRGFubWFrdVNwZWVkEg0KBXZhbHVlGAEgASgFIisKGlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mEg0KBXZhbHVlGAEgASgIIjgKE1BsYXllckRhbm1ha3VTd2l0Y2gSDQoFdmFsdWUYASABKAgSEgoKY2FuX2lnbm9yZRgCIAEoCCIoChdQbGF5ZXJEYW5tYWt1U3dpdGNoU2F2ZRINCgV2YWx1ZRgBIAEoCCIuCh1QbGF5ZXJEYW5tYWt1VXNlRGVmYXVsdENvbmZpZxINCgV2YWx1ZRgBIAEoCCKMAwoJUG9zdFBhbmVsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIQCghwcmlvcml0eRgDIAEoAxIOCgZiaXpfaWQYBCABKAMSRAoIYml6X3R5cGUYBSABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkMKDGNsaWNrX2J1dHRvbhgGIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uEj8KCnRleHRfaW5wdXQYByABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5UZXh0SW5wdXQSPQoJY2hlY2tfYm94GAggASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tCb3gSNgoFdG9hc3QYCSABKAsyJy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdCKtBAoLUG9zdFBhbmVsVjISDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEkQKCGJpel90eXBlGAMgASgOMjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsQml6VHlwZRJFCgxjbGlja19idXR0b24YBCABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DbGlja0J1dHRvblYyEkEKCnRleHRfaW5wdXQYBSABKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5UZXh0SW5wdXRWMhI/CgljaGVja19ib3gYBiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveFYyEjgKBXRvYXN0GAcgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RWMhI6CgZidWJibGUYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGVWMhI4CgVsYWJlbBgJIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsVjISQQoLcG9zdF9zdGF0dXMYCiABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0U3RhdHVzIhcKB1FvZUluZm8SDAoEaW5mbxgBIAEoCSIpCghSZXNwb25zZRIMCgRjb2RlGAEgASgFEg8KB21lc3NhZ2UYAiABKAki+QIKDFN1YnRpdGxlSXRlbRIKCgJpZBgBIAEoAxIOCgZpZF9zdHIYAiABKAkSCwoDbGFuGAMgASgJEg8KB2xhbl9kb2MYBCABKAkSFAoMc3VidGl0bGVfdXJsGAUgASgJEjoKBmF1dGhvchgGIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlVzZXJJbmZvEjwKBHR5cGUYByABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZVR5cGUSFQoNbGFuX2RvY19icmllZhgIIAEoCRJBCgdhaV90eXBlGAkgASgOMjAuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuU3VidGl0bGVBaVR5cGUSRQoJYWlfc3RhdHVzGAogASgOMjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuU3VidGl0bGVBaVN0YXR1cyLoAgoJVGV4dElucHV0EhwKFHBvcnRyYWl0X3BsYWNlaG9sZGVyGAEgAygJEh0KFWxhbmRzY2FwZV9wbGFjZWhvbGRlchgCIAMoCRJBCgtyZW5kZXJfdHlwZRgDIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSGAoQcGxhY2Vob2xkZXJfcG9zdBgEIAEoCBIMCgRzaG93GAUgASgIEjgKBmF2YXRhchgGIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkF2YXRhchJBCgtwb3N0X3N0YXR1cxgHIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMSNgoFbGFiZWwYCCABKAsyJy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5MYWJlbCL7AQoLVGV4dElucHV0VjISHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEjgKBmF2YXRhchgFIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkF2YXRhchIYChB0ZXh0X2lucHV0X2xpbWl0GAYgASgFIm8KBVRvYXN0EgwKBHRleHQYASABKAkSEAoIZHVyYXRpb24YAiABKAUSDAoEc2hvdxgDIAEoCBI4CgZidXR0b24YBCABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXR0b24iYgoNVG9hc3RCdXR0b25WMhIMCgR0ZXh0GAEgASgJEkMKBmFjdGlvbhgCIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0RnVuY3Rpb25UeXBlInMKB1RvYXN0VjISDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRJICg90b2FzdF9idXR0b25fdjIYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdEJ1dHRvblYyIlwKCFVzZXJJbmZvEgsKA21pZBgBIAEoAxIMCgRuYW1lGAIgASgJEgsKA3NleBgDIAEoCRIMCgRmYWNlGAQgASgJEgwKBHNpZ24YBSABKAkSDAoEcmFuaxgGIAEoBSJTCglWaWRlb01hc2sSCwoDY2lkGAEgASgDEgwKBHBsYXQYAiABKAUSCwoDZnBzGAMgASgFEgwKBHRpbWUYBCABKAMSEAoIbWFza191cmwYBSABKAkicAoNVmlkZW9TdWJ0aXRsZRILCgNsYW4YASABKAkSDwoHbGFuX2RvYxgCIAEoCRJBCglzdWJ0aXRsZXMYAyADKAsyLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUl0ZW0ikgEKDlZpZXdIZXJkRG1FbGVtEhAKCGhlcmRfbXNnGAEgASgJEhYKDmhlcmRfc3RhcnRfY250GAIgASgFEhQKDGhlcmRfZW5kX2NudBgDIAEoBRISCgpyZWdleF9ydWxlGAQgASgJEhYKDnN0YXJ0X3Byb2dyZXNzGAUgASgFEhQKDGVuZF9wcm9ncmVzcxgGIAEoBSozCgpBdmF0YXJUeXBlEhIKDkF2YXRhclR5cGVOb25lEAASEQoNQXZhdGFyVHlwZU5GVBABKlkKCkJ1YmJsZVR5cGUSEgoOQnViYmxlVHlwZU5vbmUQABIZChVCdWJibGVUeXBlQ2xpY2tCdXR0b24QARIcChhCdWJibGVUeXBlRG1TZXR0aW5nUGFuZWwQAipYCgxDaGVja2JveFR5cGUSFAoQQ2hlY2tib3hUeXBlTm9uZRAAEhkKFUNoZWNrYm94VHlwZUVuY291cmFnZRABEhcKE0NoZWNrYm94VHlwZUNvbG9yRE0QAio1Cg5EbUNvbG9yZnVsVHlwZRIMCghOb25lVHlwZRAAEhUKD1ZpcEdyYWR1YWxDb2xvchDh1AMqYAoRRG1NYXNrV2FsbEJpelR5cGUSCwoHVW5rbm93bhAAEgcKA09HVhABEgoKBkJpelBpYxACEggKBE11dGUQAxIKCgZSZWNvcmQQBBIJCgVDbG91ZBAFEggKBEFJR0MQBip2ChVEbU1hc2tXYWxsQ29udGVudFR5cGUSIAocRG1NYXNrV2FsbENvbnRlbnRUeXBlVW5rbm93bhAAEh0KGURtTWFza1dhbGxDb250ZW50VHlwZVRleHQQARIcChhEbU1hc2tXYWxsQ29udGVudFR5cGVQaWMQAio8CgxFeHBvc3VyZVR5cGUSFAoQRXhwb3N1cmVUeXBlTm9uZRAAEhYKEkV4cG9zdXJlVHlwZURNU2VuZBABKoMCChBQb3N0UGFuZWxCaXpUeXBlEhgKFFBvc3RQYW5lbEJpelR5cGVOb25lEAASHQoZUG9zdFBhbmVsQml6VHlwZUVuY291cmFnZRABEhsKF1Bvc3RQYW5lbEJpelR5cGVDb2xvckRNEAISGQoVUG9zdFBhbmVsQml6VHlwZU5GVERNEAMSHQoZUG9zdFBhbmVsQml6VHlwZUZyYWdDbG9zZRAEEh0KGVBvc3RQYW5lbEJpelR5cGVSZWNvbW1lbmQQBRIcChhQb3N0UGFuZWxCaXpUeXBlUGxvdExlYWsQBhIiCh5Qb3N0UGFuZWxCaXpUeXBlQW50aUhhcmFzc21lbnQQByo4CgpQb3N0U3RhdHVzEhQKEFBvc3RTdGF0dXNOb3JtYWwQABIUChBQb3N0U3RhdHVzQ2xvc2VkEAEqTgoKUmVuZGVyVHlwZRISCg5SZW5kZXJUeXBlTm9uZRAAEhQKEFJlbmRlclR5cGVTaW5nbGUQARIWChJSZW5kZXJUeXBlUm90YXRpb24QAio2ChBTdWJ0aXRsZUFpU3RhdHVzEggKBE5vbmUQABIMCghFeHBvc3VyZRABEgoKBkFzc2lzdBACKisKDlN1YnRpdGxlQWlUeXBlEgoKBk5vcm1hbBAAEg0KCVRyYW5zbGF0ZRABKh4KDFN1YnRpdGxlVHlwZRIGCgJDQxAAEgYKAkFJEAEqTgoRVG9hc3RGdW5jdGlvblR5cGUSGQoVVG9hc3RGdW5jdGlvblR5cGVOb25lEAASHgoaVG9hc3RGdW5jdGlvblR5cGVQb3N0UGFuZWwQATKgBQoCRE0ScwoLRG1TZWdNb2JpbGUSMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ01vYmlsZVJlcRoyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVwbHkSZAoGRG1WaWV3EisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1WaWV3UmVxGi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1WaWV3UmVwbHkScQoORG1QbGF5ZXJDb25maWcSMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVBsYXllckNvbmZpZ1JlcRoqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlc3BvbnNlEmoKCERtU2VnT3R0Ei0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdPdHRSZXEaLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcGx5EmoKCERtU2VnU0RLEi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdTREtSZXEaLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcGx5EnQKDERtRXhwb1JlcG9ydBIxLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtRXhwb1JlcG9ydFJlcRoxLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtRXhwb1JlcG9ydFJlc0LUAQokY29tLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxQgdEbVByb3RvUAGiAgRCQ1NEqgIgQmlsaWJpbGkuQ29tbXVuaXR5LlNlcnZpY2UuRG0uVjHKAiBCaWxpYmlsaVxDb21tdW5pdHlcU2VydmljZVxEbVxWMeICLEJpbGliaWxpXENvbW11bml0eVxTZXJ2aWNlXERtXFYxXEdQQk1ldGFkYXRh6gIkQmlsaWJpbGk6OkNvbW11bml0eTo6U2VydmljZTo6RG06OlYxYgZwcm90bzM`),Pe=d(Ne,30),Fe=d(Ne,39),M=J(e=>async(t,n)=>{let r=n??await t.makeChunk({}),i=f(Fe,new Uint8Array(e)).commandDms;return await r.upsertDanmakus(i.map(e=>{let t=`def_bili+${b.fromBili({cid:e.oid}).toString()}`,n=b.fromBili({mid:e.mid}),i={SOID:t,progress:e.progress,mode:`Ext`,fontsize:w.fontsize,color:w.color,senderID:n.toString(),content:e.content,ctime:new Date(`${e.ctime} GMT+0800`),weight:11,pool:`Adv`,attr:[`Protect`],platform:`bili`,extra:{bili:{dmid:e.idStr,attr:e.attr,mid:e.mid?.toString(),command:e}}};return{...i,DMID:r.$UniDB.DMIDGenerator(i)}})),r}),Ie=X({type:`bili.cmd.binpb`,ext:[`.binpb`,`.bin`,`.pb.bin`,`.so`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!(t instanceof ArrayBuffer)&&!ArrayBuffer.isView(t))return null;try{let n;if(t instanceof ArrayBuffer)n=new Uint8Array(t);else if(ArrayBuffer.isView(t)){let e=t;n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}else return null;return e.import(M(n))}catch{return null}}}});function Le(e,t){return t===`ms`?!0:t===`s`?!1:e<1e8}function N(e,t){return typeof e==`number`||typeof e==`bigint`?Le(e,t)?new Date(Number(e)):new Date(Number(e)*1e3):typeof e==`string`?/^\d+n$/.test(e)?N(Number(e.slice(0,-1)),t):N(Number(e),t):e}const Re=e=>{let t=[];do t.unshift(!!(e&1)),e>>=1;while(e);return t.toReversed()};var ze=class{constructor(e){this.bin=e}set1(e){this.bin|=1<<e}set0(e){this.bin&=~(1<<e)}};const Be={fromBin(e=0,t){let n=Re(e),r=[];return t===`bili`&&(n[0]&&r.push(`Protect`),n[1]&&r.push(`FromLive`),n[2]&&r.push(`HighLike`)),r},toBin(e=[],t){let n=new ze(0);return t===`bili`&&(e.includes(`Protect`)&&n.set1(0),e.includes(`FromLive`)&&n.set1(1),e.includes(`HighLike`)&&n.set1(2)),n.bin}};function P(e,t,n,r){t.oid&&!n&&(n=t.oid);let i=r||`def_bili+${b.fromBili({cid:n}).toString()}`,a=b.validateString(t.midHash)?t.midHash:b.fromBili({midHash:t.midHash}).toString(),o,s=t.pool,c={bili:{mode:t.mode,pool:t.pool,dmid:t.idStr??t.id.toString(),attr:t.attr,mid:t.mid?.toString(),adv:void 0,code:void 0,bas:void 0}};switch(t.mode){case 4:o=1;break;case 5:o=2;break;case 6:o=3;break;case 7:o=4,c.bili.adv=t.content;break;case 8:o=4,c.bili.code=t.content;break;case 9:o=4,c.bili.bas=t.content;break;default:o=0;break}let l={...t,SOID:i,mode:o,senderID:a,ctime:N(t.ctime,`s`),weight:t.weight||+(s===3),pool:s,attr:Be.fromBin(t.attr,`bili`),platform:`bili`,extra:c};return{...l,mode:E.decode(o),pool:D.decode(s),DMID:e.$UniDB.DMIDGenerator({...l,mode:E.decode(o),pool:D.decode(s)})}}const F=(e,t)=>{switch(e){case`Normal`:return 1;case`Bottom`:return 4;case`Top`:return 5;case`Reverse`:return 6;case`Ext`:return t?t.adv?7:t.code?8:t.bas?9:1:1;default:return 1}};function I(e,t,n){if(n?.skipBiliCommand&&t.extra?.bili?.command)return null;let r=t.extra?.bili?.mode||F(t.mode,t.extra?.bili),i;switch(r){case 7:i=t.extra?.bili?.adv;break;case 8:i=t.extra?.bili?.code;break;case 9:i=t.extra?.bili?.bas;break;default:i=t.content;break}return{"#text":i??t.content,"@_p":[t.progress/1e3,r,t.fontsize,t.color,t.ctime.getTime()/1e3,t.extra?.bili?.pool||t.pool,n?.avoidSenderIDWithAt?t.senderID.replaceAll(`@bili`,``):t.senderID,t.extra?.bili?.dmid||t.DMID||e(t),t.weight].join(`,`)}}const L=J(e=>async(t,n)=>{let r=n??await t.makeChunk({}),i=f(Pe,new Uint8Array(e)).elems;return await r.upsertDanmakus(i.map(e=>P(r,e))),r}),Ve=X({type:`bili.binpb`,ext:[`.binpb`,`.bin`,`.pb.bin`,`.so`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!(t instanceof ArrayBuffer)&&!ArrayBuffer.isView(t))return null;try{let n;if(t instanceof ArrayBuffer)n=new Uint8Array(t);else if(ArrayBuffer.isView(t)){let e=t;n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}else return null;return e.import(L(n))}catch{return null}}}}),R=J(e=>async(t,n)=>{let r=n??await t.makeChunk({});return await r.upsertDanmakus(e.data.result.map(e=>{let t=e.attrs?e.attrs.split(`,`).map(Number).reduce((e,t)=>e|1<<t-1,0):0;return P(r,{id:BigInt(e.id_str||e.id),idStr:e.id_str,progress:e.progress,mode:e.mode,fontsize:e.fontsize,color:Number.parseInt(e.color,16),mid:e.mid,midHash:e.mid_hash,content:e.msg,ctime:BigInt(e.ctime),pool:e.pool,attr:t,oid:BigInt(e.oid)})})),r}),He=X({type:`bili.up.json`,ext:[`.json`],check:{adapter:async(e,t)=>{if(!(typeof t==`object`||typeof t==`string`)||!t)return null;try{return e.import(R(p.parse(p.stringify(t))))}catch{return null}}}}),Ue=new de({ignoreAttributes:!1,isArray:(e,t,n,r)=>t===`i.d`}),We=new fe({ignoreAttributes:!1});function Ge(e,t){let n=e.split(`,`);return{content:t,progress:~~(Number.parseFloat(n[0])*1e3),mode:Number.parseInt(n[1]),fontsize:Number.parseInt(n[2]),color:Number.parseInt(n[3]),ctime:BigInt(n[4]),pool:Number.parseInt(n[5]),midHash:n[6],id:BigInt(n[7]),idStr:n[7],weight:Number.parseInt(n[8])}}const z=J(e=>async(t,n)=>{let r=Ue.parse(e),i=r.i.d,a=!!r.i.danuni,o=BigInt(r.i.chatid),s=a?r.i.danuni?.data:void 0,c=n??await t.makeChunk({fromConverted:a});return await c.upsertDanmakus(i.map(e=>P(c,Ge(e[`@_p`],e[`#text`]),o,s))),c}),Ke=(e,t)=>{if(e){let n=b.fromStringSafe(e);if(n.domain===`bili`){let e=n.id.replaceAll(`def_bili+`,``);if(e)return e}return t?.cid||e}else return t?.cid||b.fromNull().toString()},qe=e=>Y(async(t,n)=>{let r=await t;if(e?.avoidSenderIDWithAt&&!r.every(e=>e.senderID.endsWith(`@bili`)))throw Error(`存在其他来源的senderID,请关闭该功能再试!`);let i=r.map(t=>I(n.DMIDGenerator,t,e));return e?.skipBiliCommand&&(i=i.filter(e=>e!==null)),We.build({"?xml":{"@_version":`1.0`,"@_encoding":`UTF-8`},i:{chatserver:`chat.bilibili.com`,chatid:Ke(r[0]?.SOID),mission:0,maxlimit:r.length,state:0,real_name:0,source:`k-v`,danuni:{...T,data:[...new Set(r.map(e=>e.SOID))][0]},d:i}})}),Je=X({type:`bili.xml`,ext:[`.xml`],check:{adapter:async(e,t)=>{if(typeof t!=`string`)return null;try{return e.import(z(t))}catch{return null}}}});function B(e,t){let n=`Normal`;switch(t){case`bili`:switch(e){case 4:n=`Bottom`;break;case 5:n=`Top`;break;case 6:n=`Reverse`;break;case 7:n=`Ext`;break;case 8:n=`Ext`;break;case 9:n=`Ext`;break}break;case`dplayer`:e===1?n=`Top`:e===2&&(n=`Bottom`);break;case`artplayer`:e===1?n=`Top`:e===2&&(n=`Bottom`);break;case`ddplay`:n=B(e,`bili`);break;case`vod`:e===`top`?n=`Top`:e===`bottom`&&(n=`Bottom`);break;default:n=`Normal`;break}return n}const V=J((e,t,n=`other`)=>async(r,i)=>{let a=i??await r.makeChunk({fromConverted:!!e.danuni}),o=t?b.fromUnknown(t,n).toString():b.fromNull(n).toString(),s=b.fromNull(n).toString(),c=new Date;return await a.upsertDanmakus(e.danmuku.map(e=>{let t=e.border?{artplayer:{border:e.border,style:{}}}:null;e.style&&(t=t?{...t,artplayer:{...t.artplayer,border:e.border,style:e.style}}:{artplayer:{border:e.border,style:e.style}});let r=B(e.mode??0,`artplayer`),i={attr:w.attr,fontsize:w.fontsize,ctime:c,weight:w.weight,pool:`Def`,content:e.text,progress:(e.time??0)*1e3,mode:r,color:Number((e.color||`FFFFFF`).replace(`#`,`0x`)),style:e.style,SOID:o,senderID:s,platform:n,extra:t};return{...i,DMID:a.$UniDB.DMIDGenerator(i)}})),a}),Ye=Y(e=>e.then(e=>({danuni:{...T,data:e[0]?.SOID.split(`@`)[0]},danmuku:e.map(e=>{let t=0;return e.mode===`Top`?t=1:e.mode===`Bottom`&&(t=2),{text:e.content,time:e.progress/1e3,mode:t,color:`#${e.color.toString(16).toUpperCase()||`FFFFFF`}`,border:e.extra?.artplayer?.border,style:e.extra?.artplayer?.style}})}))),Xe=X({type:`artplayer.json`,ext:[`.json`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!t)return null;try{return await e.import(V(t)),V}catch{return null}}}}),H=J((e,t=`0`,n=`ddplay`)=>async(r,i)=>{let a=i??await r.makeChunk({fromConverted:!!e.danuni}),o=b.fromUnknown(`def_ddplay+${t}`,n).toString(),s=new Date;return await a.upsertDanmakus(e.comments.map(e=>{let t=e.p.split(`,`),r=t[3],i=b.fromUnknown(r,n).toString(),c=B(Number.parseInt(t[1]),`ddplay`),l={SOID:o,color:Number.parseInt(t[2]),progress:Number.parseFloat(t[0])*1e3,mode:c,senderID:i,content:e.m,platform:n,extra:{ddplay:{cid:e.cid,uid:r}},attr:w.attr,fontsize:w.fontsize,ctime:s,weight:w.weight,pool:`Def`};return{...l,DMID:a.$UniDB.DMIDGenerator(l)}})),a}),Ze=Y(e=>e.then(e=>({danuni:{...T,data:e[0]?.SOID.split(`@`)[0].replaceAll(`def_ddplay+`,``)},count:e.length,comments:e.map(e=>{let t=1;return e.mode===`Top`?t=5:e.mode===`Bottom`&&(t=4),{cid:e.extra?.ddplay?.cid??Number.parseInt(`0x${Buffer.from(e.DMID).toString(`hex`)}`)??0,p:`${e.progress/1e3},${t},${e.color},${e.extra?.ddplay?.uid??e.senderID}`,m:e.content}})}))),Qe=X({type:`ddplay.json`,ext:[`.json`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!t)return null;try{return await e.import(H(t)),H}catch{return null}}}}),U=J((e,t,n=`other`)=>async(r,i)=>{let a=i??await r.makeChunk({fromConverted:!!e.danuni}),o=t?b.fromUnknown(t,n).toString():b.fromNull(n).toString(),s=new Date;return await a.upsertDanmakus(e.data.map(([e,t,r,i,c])=>{let l=B(t,`dplayer`),u={attr:w.attr,fontsize:w.fontsize,ctime:s,weight:w.weight,extra:w.extra,pool:`Def`,progress:e*1e3,mode:l,color:r,midHash:i,content:c,SOID:o,senderID:b.fromUnknown(i,n).toString(),platform:n};return{...u,DMID:a.$UniDB.DMIDGenerator(u)}})),a}),$e=Y(e=>e.then(e=>({code:0,danuni:{...T,data:e[0]?.SOID.split(`@`)[0]},data:e.map(e=>{let t=0;return e.mode===`Top`?t=1:e.mode===`Bottom`&&(t=2),[e.progress/1e3,t,e.color,e.senderID,e.content]})}))),et=X({type:`dplayer.json`,ext:[`.json`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!t)return null;try{return await e.import(U(t)),U}catch{return null}}}});function tt(e){return e===2?`Top`:e===3?`Bottom`:`Normal`}const nt=u.object({color:u.string(),gradient_colors:u.tuple([u.string(),u.string()]),position:u.number()}),rt=u.string().transform(e=>{try{let t=JSON.parse(e);return nt.parse(t)}catch{return}}).transform(e=>{let t=e?.gradient_colors[0]??e?.color??`ffffff`;return{color:Number(`#${t}`.replace(`#`,`0x`)),mode:tt(e?.position)}}),W=`tencent`,G=J((e,t)=>async(n,r)=>{let i=r??await n.makeChunk({fromConverted:!1}),a=t?b.fromUnknown(t,W).toString():b.fromNull(W).toString(),o=b.fromNull(W).toString(),s=Array.isArray(e?.barrage_list)?e.barrage_list:[];return await i.upsertDanmakus(s.map(e=>{let t=rt.parse(e.content_style),n={...e};delete n.content,delete n.time_offset,delete n.create_time;let r={attr:w.attr,fontsize:w.fontsize,ctime:N(e.create_time,`s`),weight:e.show_weight??w.weight,pool:`Def`,content:e.content,progress:Number.parseInt(e.time_offset)||0,mode:t.mode,color:t.color,SOID:a,senderID:o,platform:W,extra:{tencent:n}};return{...r,DMID:i.$UniDB.DMIDGenerator(r)}})),i}),it=X({type:`tencent.json`,ext:[`.json`],check:{adapter:async(e,t)=>{if(typeof t!=`object`||!t)return null;try{return await e.import(G(t)),G}catch{return null}}}}),K=u.object({code:u.number(),name:u.string(),danum:u.number(),danmuku:u.array(u.tuple([u.coerce.number().min(0),u.union([u.literal(`right`),u.literal(`top`),u.literal(`bottom`)]),u.string().toUpperCase().regex(/^#([0-9a-fA-F]{3}){1,2}$/,{error:`Invalid hex color format`}).transform(e=>e.length>6?e.toUpperCase():`#${e.split(`#`)[1].toUpperCase()}`),u.string().prefault(``),u.string(),u.string().prefault(``),u.string().prefault(``),u.string().regex(/^\d+px$/)]).rest(u.any()))}),q=J((e,t,n=`other`)=>async(r,i)=>{let a=i??await r.makeChunk({fromConverted:!1}),o=t?b.fromUnknown(t,n).toString():b.fromNull(n).toString(),s=b.fromNull(n).toString(),c=new Date;return await a.upsertDanmakus(e.danmuku.slice(-e.danum).map(e=>{let t={...w,pool:`Def`,ctime:c,SOID:o,senderID:s,progress:~~(e[0]*1e3),mode:B(e[1],`vod`),color:Number((e[2]||`FFFFFF`).replace(`#`,`0x`)),content:e[4],fontsize:Number(e[7].replace(`px`,``))};return{...t,DMID:a.$UniDB.DMIDGenerator(t)}})),a}),at=Y(e=>e.then(e=>({danuni:{...T,data:e[0]?.SOID.split(`@`)[0]},code:0,name:e[0]?.SOID??`unknown`,danum:e.length,danmuku:e.map(e=>{let t=`right`;switch(e.mode){case`Top`:t=`top`;break;case`Bottom`:t=`bottom`;break}return[e.progress/1e3,t,`#${e.color.toString(16).toUpperCase()||`FFFFFF`}`,``,e.content,``,``,`${e.fontsize}px`]})}))),ot=X({type:`vod.json`,ext:[`.json`],check:{body:e=>K.safeParse(e).success?q:null,adapter:async(e,t)=>{if(typeof t!=`object`||!t)return null;try{return await e.import(q(t)),q}catch{return null}}}});var st=e({ArtplayerAdapter:()=>V,ArtplayerMetadata:()=>Xe,ArtplayerTransformer:()=>Ye,BiliCommandGrpcAdapter:()=>M,BiliCommandGrpcMetadata:()=>Ie,BiliCommonBuilder:()=>I,BiliCommonModeRec:()=>F,BiliCommonParser:()=>P,BiliGrpcAdapter:()=>L,BiliGrpcMetadata:()=>Ve,BiliUpAdapter:()=>R,BiliUpMetadata:()=>He,BiliXmlAdapter:()=>z,BiliXmlMetadata:()=>Je,BiliXmlTransformerConfigurator:()=>qe,DanuniJsonAdapter:()=>k,DanuniJsonMetadata:()=>Ee,DanuniJsonTransformerConfigurator:()=>Te,DanuniPbAdapter:()=>j,DanuniPbMetadata:()=>Me,DanuniPbTransformer:()=>je,DdplayAdapter:()=>H,DdplayMetadata:()=>Qe,DdplayTransformer:()=>Ze,DplayerAdapter:()=>U,DplayerMetadata:()=>et,DplayerTransformer:()=>$e,TencentAdapter:()=>G,TencentMetadata:()=>it,VodAdapter:()=>q,VodMetadata:()=>ot,VodTransformer:()=>at,VodZod:()=>K,defineAdapter:()=>J,defineMetadata:()=>X,definePlugin:()=>lt,defineTransformer:()=>Y,enumAttrsCodec:()=>O,enumModeCodec:()=>E,enumPoolCodec:()=>D,transformerInput2Danmakus:()=>ct});function ct(e){return e.$danmakus}function J(e){return e}function Y(e){return e}function lt(e){return e}function X(e){return e}const Z=(e,t=8)=>{let n=re([e.SOID,e.progress,e.mode,e.fontsize,e.color,e.senderID,e.content,e.ctime.toISOString(),e.weight,e.pool,e.attr.toSorted().join(`,`),e.platform??null,p.stringify(e.extra)].join(`|`));return ne(ee.create().update(n).digest()).slice(0,t)};var ut=e({DMAttr:()=>C,DanUniConvertTipTemplate:()=>T,InitedUniDB:()=>Q,Modes:()=>x,PlatformDanmakuOnlySource:()=>v,PlatformDanmakuOnlySources:()=>he,PlatformDanmakuSources:()=>y,PlatformInfoSource:()=>m,PlatformInfoSources:()=>h,PlatformSources:()=>ge,PlatformVideoSource:()=>g,PlatformVideoSources:()=>_,Pools:()=>S,UniChunk:()=>$,UniDB:()=>dt,createDMID:()=>Z,defaultUniDM:()=>w}),dt=class{constructor(e=o,t=Z){this.$drizzle=e,this.DMIDGenerator=t}async init(e){return new Q(await a(e),this.DMIDGenerator)}async dump(){return await s(this.$drizzle)}async close(){this.$drizzle=null,await c()}},Q=class extends dt{constructor(e,t=Z){super(e,t),this.$drizzle=e,this.DMIDGenerator=t}get $db(){return this.$drizzle}get $chunks(){return this.$db.query.chunks.findMany()}get $danmakus(){return this.$db.query.chunks.findFirst({with:{danmakus:!0}}).then(e=>e?.danmakus??[])}async listChunks(){return(await this.$chunks).map(e=>new $(this,e.id))}async makeChunk(e){return $.makeChunk(this,e)}async upsertDanmakus(e,t=!0){if(e instanceof Map)await this.upsertDanmakus([...e.values()],t);else if(t){let t=new Map;e.forEach(e=>{t.set(e.DMID,e)}),await this.$db.insert(r).values([...t.values()]).onConflictDoUpdate(i.danmakus)}else await this.$db.insert(r).values(e).onConflictDoUpdate(i.danmakus)}async shrink(){let e=await this.$db.query.chunks.findMany({where:{tmp:!0}});for(let t of e)await new $(this,t.id).delete()}async import(e){return e(this)}export(e){return e(this.$danmakus,{DMIDGenerator:this.DMIDGenerator})}},$=class e{constructor(e,t){this.$UniDB=e,this.id=t}get $db(){return this.$UniDB.$drizzle}static async makeChunk(t,r){let i=await t.$db.insert(n).values(r).returning();return new e(t instanceof Q?t:t.$UniDB,i[0].id)}static async assign(t,r){if(r.length<1)return t;let i=t.$UniDB,a=i.$drizzle,o=t.id,s=(await t.$chunk()).fromConverted;for(let e of r){let n=await e.$chunk();s&&=!!n.fromConverted;let r=await e.$danmakus;await t.upsertDanmakus(r,!1),await e.delete()}return await a.update(n).set({fromConverted:s}).where(l(n.id,o)),new e(i,o)}static async compare(e,t){let n=await e.$danmakus,r=await t.$danmakus;if(n.length!==r.length)return!1;let i=new Set;for(let e of n)i.add(e.DMID);for(let e of r){let t=i.has(e.DMID);if(!t||JSON.stringify(t)!==JSON.stringify(e))return!1}return!0}get $chunks(){return this.$db.select().from(n).where(l(n.id,this.id))}async $chunk(){return(await this.$chunks)[0]}get $danmakus(){return this.$db.query.chunks.findFirst({where:{id:this.id},with:{danmakus:!0}}).then(e=>e?.danmakus??[])}get $count(){return this.$db.$count(t,l(t.chunkID,this.id))}get isDeleted(){return this.$chunks.then(e=>e.length===0)}async upsertDanmakus(e,n=!1,r=!0){let i=new Set;e instanceof Map?(await this.$UniDB.upsertDanmakus([...e.values()],r),e.forEach(e=>i.add(e.DMID))):(n?e=e.map(e=>{let t=this.$UniDB.DMIDGenerator(e);return i.add(t),{...e,DMID:t}}):e.forEach(e=>{i.add(e.DMID)}),await this.$UniDB.upsertDanmakus(e,r)),await this.$db.insert(t).values([...i].map(e=>({chunkID:this.id,DMID:e}))).onConflictDoNothing()}async import(e){return await e(this.$UniDB,this)}async export(e){return e(this.$danmakus,{DMIDGenerator:this.$UniDB.DMIDGenerator,uchunk:await this.$chunk()})}plugin(e){return e(this)}async delete(){await this.$db.transaction(async e=>{let i=(await e.select().from(t).where(l(t.chunkID,this.id))).map(e=>e.DMID);await e.delete(t).where(l(t.chunkID,this.id));for(let n of i)(await e.select().from(t).where(l(t.DMID,n))).length===0&&await e.delete(r).where(l(r.DMID,n));await e.delete(n).where(l(n.id,this.id))})}};export{v as $,R as A,Me as B,Ze as C,z as D,Ye as E,L as F,O as G,k as H,Ve as I,C as J,E as K,M as L,I as M,F as N,Je as O,P,w as Q,Ie as R,Qe as S,Xe as T,Ee as U,je as V,Te as W,x as X,T as Y,S as Z,it as _,Z as a,g as at,$e as b,X as c,ct as d,he as et,q as f,G as g,K as h,ut as i,ge as it,He as j,qe as k,lt as l,at as m,$ as n,m as nt,st as o,_ as ot,ot as p,D as q,dt as r,h as rt,J as s,Q as t,y as tt,Y as u,U as v,V as w,H as x,et as y,j as z};
|
|
2
|
-
//# sourceMappingURL=core-DQi8JonK.mjs.map
|