Files
jsc-anima/node_modules/.vitest-cache/62b7c79e321aca8bdc9ee9230d8f4b803bd74b84
T

203 lines
19 KiB
Plaintext

const __vite_ssr_import_0__ = await __vite_ssr_import__("claude-code/testing", {"importedNames":["expect","mock","test"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/hooks/statusline.ts", {"importedNames":["HIDE_ORDER","bar","layout","remainColor","usedColor"]});
const __vite_ssr_import_2__ = await __vite_ssr_import__("/hooks/characters.ts", {"importedNames":["CHARACTERS","packToCharacter","personaSection","registerCharacters","themeColor"]});
const seg = (id, text) => ({
id,
parts: [{ text }]
});
(0,__vite_ssr_import_0__.test)("啟動角色後 persona 注入系統提示", async ($, on) => {
__vite_ssr_import_0__.mock.store(on);
on("command.register", () => ({ value: { name: "x" } }));
on("session.start", () => ({ cwd: "/tmp" }));
on("command.run", () => ({ text: "" }));
on("prompt.compose", () => ({ sections: [] }));
await $.session.start({
source: "startup",
cwd: "/tmp"
});
await $.command.run({
command: "sao-asuna",
args: ""
});
const res = await $.prompt.compose({
model: "m",
promptModel: "m",
surfaces: [],
tools: [],
outputStyle: null,
traits: []
});
(0,__vite_ssr_import_0__.expect)(res.sections.some((s) => s.id === "jsc-anima:persona" && s.text.includes("亞絲娜"))).toBe(true);
});
(0,__vite_ssr_import_0__.test)("切換角色與離開", async ($, on) => {
__vite_ssr_import_0__.mock.store(on);
on("command.register", () => ({ value: { name: "x" } }));
on("session.start", () => ({ cwd: "/tmp" }));
on("command.run", () => ({ text: "" }));
on("prompt.compose", () => ({ sections: [] }));
await $.session.start({
source: "startup",
cwd: "/tmp"
});
await $.command.run({
command: "sao-asuna",
args: ""
});
await $.command.run({
command: "sao-suguha",
args: ""
});
const compose = () => $.prompt.compose({
model: "m",
promptModel: "m",
surfaces: [],
tools: [],
outputStyle: null,
traits: []
});
(0,__vite_ssr_import_0__.expect)((await compose()).sections.find((s) => s.id === "jsc-anima:persona")?.text).toContain("直葉");
await $.command.run({
command: "anima-off",
args: ""
});
(0,__vite_ssr_import_0__.expect)((await compose()).sections.some((s) => s.id === "jsc-anima:persona")).toBe(false);
});
(0,__vite_ssr_import_0__.test)("狀態列:窄時依序整欄隱藏,不截斷", () => {
const all = [
seg("character", "AB"),
seg("model", "CD"),
seg("dir", "EF"),
seg("branch", "GH"),
seg("5h", "IJ"),
seg("7d", "KL"),
seg("ctx", "MN"),
seg("sys", "OP")
];
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.layout)(all, 999).length).toBe(8);
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.layout)(all, 26).map((s) => s.id)).not.toContain("sys");
const narrow = (0,__vite_ssr_import_1__.layout)(all, 14).map((s) => s.id);
(0,__vite_ssr_import_0__.expect)(narrow).toEqual([
"character",
"model",
"5h",
"ctx"
]);
(0,__vite_ssr_import_0__.expect)([...__vite_ssr_import_1__.HIDE_ORDER]).toEqual([
"sys",
"7d",
"dir",
"branch"
]);
});
(0,__vite_ssr_import_0__.test)("量表固定長度,剩餘越少越紅", () => {
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.bar)(0).length).toBe((0,__vite_ssr_import_1__.bar)(100).length);
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.remainColor)(10, 60, 85)).toBe("red");
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.remainColor)(90, 60, 85)).toBe("green");
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.usedColor)(70, 60, 85)).toBe("yellow");
});
(0,__vite_ssr_import_0__.test)("persona 含動漫層與口頭禪,主題色可用於狀態列", () => {
const c = __vite_ssr_import_2__.CHARACTERS[0];
const text = (0,__vite_ssr_import_2__.personaSection)(c, c.axes);
(0,__vite_ssr_import_0__.expect)(text).toContain("動漫刻畫");
(0,__vite_ssr_import_0__.expect)(text).toContain("口頭禪");
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_2__.themeColor)(c)).toBe("red");
});
(0,__vite_ssr_import_0__.test)("角色包轉成可啟動角色:代號、年齡與原作戀人", () => {
const pack = {
slug: "rin",
name: "凜",
work: "demo",
persona: {
selfRef: "我",
address: "你",
tone: "冷靜",
catchphrase: "嗯",
values: "誠實",
taboos: "不說謊"
},
axes: __vite_ssr_import_2__.CHARACTERS[0].axes,
anime: {
moe: "m",
speech: "s",
emotions: "e",
kaomoji: "k",
themeColor: "blue"
},
timeline: [{
chapter: "第2章",
age: 19,
relationships: [{
with: "蓮",
kind: "romantic"
}]
}]
};
const c = (0,__vite_ssr_import_2__.packToCharacter)(pack, "示範");
(0,__vite_ssr_import_0__.expect)(c.slug).toBe("demo-rin");
(0,__vite_ssr_import_0__.expect)(c.timeline).toEqual([{
chapter: 2,
age: 19,
romance: "蓮"
}]);
(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_2__.themeColor)(c)).toBe("cyan");
(0,__vite_ssr_import_2__.registerCharacters)([c, c]);
(0,__vite_ssr_import_0__.expect)(__vite_ssr_import_2__.CHARACTERS.filter((x) => x.slug === "demo-rin").length).toBe(1);
});
(0,__vite_ssr_import_0__.test)("角色包:最新章節狀態、作品用語與語言設定進入 persona", () => {
const pack = {
slug: "mio",
name: "澪",
work: "demo2",
persona: {
selfRef: "我",
address: "你",
tone: "冷靜",
catchphrase: "嗯",
values: "誠實",
taboos: "不說謊"
},
axes: __vite_ssr_import_2__.CHARACTERS[0].axes,
anime: {
moe: "m",
speech: "s",
emotions: "e",
kaomoji: "k",
themeColor: "red"
},
language: "繁體中文,不使用口癖",
timeline: [{
chapter: "第1章",
mood: "緊張",
dialogueStyle: "客氣",
monologue: "想變強",
place: "學院",
age: 16,
relationships: []
}, {
chapter: "第2章",
mood: "安心",
dialogueStyle: "放鬆",
monologue: "想守護",
place: "街上",
age: 16,
relationships: []
}]
};
const c = (0,__vite_ssr_import_2__.packToCharacter)(pack, "示範二", [{
term: "魔核",
definition: "力量來源"
}]);
const text = (0,__vite_ssr_import_2__.personaSection)(c, c.axes);
(0,__vite_ssr_import_0__.expect)(text).toContain("最新章節(第2章)");
(0,__vite_ssr_import_0__.expect)(text).toContain("安心");
(0,__vite_ssr_import_0__.expect)(text).not.toContain("緊張");
(0,__vite_ssr_import_0__.expect)(text).toContain("魔核=力量來源");
(0,__vite_ssr_import_0__.expect)(text).toContain("不使用口癖");
});
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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Q0FDQSxNQUFNLElBQUksMENBQWdCLE1BQU0sT0FBTyxDQUFDO0VBQUUsTUFBTTtFQUFNLFlBQVk7Q0FBTyxDQUFDLENBQUM7Q0FDM0UsTUFBTSxPQUFPLHlDQUFlLEdBQUcsRUFBRSxJQUFJO0NBQ3JDLGlDQUFPLElBQUksQ0FBQyxDQUFDLFVBQVUsV0FBVztDQUNsQyxpQ0FBTyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUk7Q0FDM0IsaUNBQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUk7Q0FDL0IsaUNBQU8sSUFBSSxDQUFDLENBQUMsVUFBVSxTQUFTO0NBQ2hDLGlDQUFPLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTztBQUNoQyxDQUFDIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJhbmltYS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgbW9jaywgdGVzdCB9IGZyb20gJ2NsYXVkZS1jb2RlL3Rlc3RpbmcnXG5cbmltcG9ydCB7IEhJREVfT1JERVIsIGJhciwgbGF5b3V0LCByZW1haW5Db2xvciwgdXNlZENvbG9yIH0gZnJvbSAnLi9zdGF0dXNsaW5lJ1xuaW1wb3J0IHR5cGUgeyBTZWdtZW50IH0gZnJvbSAnLi9zdGF0dXNsaW5lJ1xuaW1wb3J0IHsgQ0hBUkFDVEVSUywgcGFja1RvQ2hhcmFjdGVyLCBwZXJzb25hU2VjdGlvbiwgcmVnaXN0ZXJDaGFyYWN0ZXJzLCB0aGVtZUNvbG9yIH0gZnJvbSAnLi9jaGFyYWN0ZXJzJ1xuaW1wb3J0IHR5cGUgeyBQYWNrTGlrZSB9IGZyb20gJy4vY2hhcmFjdGVycydcblxuY29uc3Qgc2VnID0gKGlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFNlZ21lbnQgPT4gKHsgaWQsIHBhcnRzOiBbeyB0ZXh0IH1dIH0pXG5cbnRlc3QoJ+WVn+WLleinkuiJsuW+jCBwZXJzb25hIOazqOWFpeezu+e1seaPkOekuicsIGFzeW5jICgkLCBvbikgPT4ge1xuICBtb2NrLnN0b3JlKG9uKVxuICBvbignY29tbWFuZC5yZWdpc3RlcicsICgpID0+ICh7IHZhbHVlOiB7IG5hbWU6ICd4JyB9IH0pIGFzIG5ldmVyKVxuICBvbignc2Vzc2lvbi5zdGFydCcsICgpID0+ICh7IGN3ZDogJy90bXAnIH0pIGFzIG5ldmVyKVxuICBvbignY29tbWFuZC5ydW4nLCAoKSA9PiAoeyB0ZXh0OiAnJyB9KSlcbiAgb24oJ3Byb21wdC5jb21wb3NlJywgKCkgPT4gKHsgc2VjdGlvbnM6IFtdIH0pKVxuICBhd2FpdCAkLnNlc3Npb24uc3RhcnQoeyBzb3VyY2U6ICdzdGFydHVwJywgY3dkOiAnL3RtcCcgfSBhcyBuZXZlcilcbiAgYXdhaXQgJC5jb21tYW5kLnJ1bih7IGNvbW1hbmQ6ICdzYW8tYXN1bmEnLCBhcmdzOiAnJyB9IGFzIG5ldmVyKVxuICBjb25zdCByZXMgPSBhd2FpdCAkLnByb21wdC5jb21wb3NlKHsgbW9kZWw6ICdtJywgcHJvbXB0TW9kZWw6ICdtJywgc3VyZmFjZXM6IFtdLCB0b29sczogW10sIG91dHB1dFN0eWxlOiBudWxsLCB0cmFpdHM6IFtdIH0gYXMgbmV2ZXIpXG4gIGV4cGVjdChyZXMuc2VjdGlvbnMuc29tZShzID0+IHMuaWQgPT09ICdqc2MtYW5pbWE6cGVyc29uYScgJiYgcy50ZXh0LmluY2x1ZGVzKCfkup7ntbLlqJwnKSkpLnRvQmUodHJ1ZSlcbn0pXG5cbnRlc3QoJ+WIh+aPm+inkuiJsuiIh+mboumWiycsIGFzeW5jICgkLCBvbikgPT4ge1xuICBtb2NrLnN0b3JlKG9uKVxuICBvbignY29tbWFuZC5yZWdpc3RlcicsICgpID0+ICh7IHZhbHVlOiB7IG5hbWU6ICd4JyB9IH0pIGFzIG5ldmVyKVxuICBvbignc2Vzc2lvbi5zdGFydCcsICgpID0+ICh7IGN3ZDogJy90bXAnIH0pIGFzIG5ldmVyKVxuICBvbignY29tbWFuZC5ydW4nLCAoKSA9PiAoeyB0ZXh0OiAnJyB9KSlcbiAgb24oJ3Byb21wdC5jb21wb3NlJywgKCkgPT4gKHsgc2VjdGlvbnM6IFtdIH0pKVxuICBhd2FpdCAkLnNlc3Npb24uc3RhcnQoeyBzb3VyY2U6ICdzdGFydHVwJywgY3dkOiAnL3RtcCcgfSBhcyBuZXZlcilcbiAgYXdhaXQgJC5jb21tYW5kLnJ1bih7IGNvbW1hbmQ6ICdzYW8tYXN1bmEnLCBhcmdzOiAnJyB9IGFzIG5ldmVyKVxuICBhd2FpdCAkLmNvbW1hbmQucnVuKHsgY29tbWFuZDogJ3Nhby1zdWd1aGEnLCBhcmdzOiAnJyB9IGFzIG5ldmVyKVxuICBjb25zdCBjb21wb3NlID0gKCkgPT4gJC5wcm9tcHQuY29tcG9zZSh7IG1vZGVsOiAnbScsIHByb21wdE1vZGVsOiAnbScsIHN1cmZhY2VzOiBbXSwgdG9vbHM6IFtdLCBvdXRwdXRTdHlsZTogbnVsbCwgdHJhaXRzOiBbXSB9IGFzIG5ldmVyKVxuICBleHBlY3QoKGF3YWl0IGNvbXBvc2UoKSkuc2VjdGlvbnMuZmluZChzID0+IHMuaWQgPT09ICdqc2MtYW5pbWE6cGVyc29uYScpPy50ZXh0KS50b0NvbnRhaW4oJ+ebtOiRiScpXG4gIGF3YWl0ICQuY29tbWFuZC5ydW4oeyBjb21tYW5kOiAnYW5pbWEtb2ZmJywgYXJnczogJycgfSBhcyBuZXZlcilcbiAgZXhwZWN0KChhd2FpdCBjb21wb3NlKCkpLnNlY3Rpb25zLnNvbWUocyA9PiBzLmlkID09PSAnanNjLWFuaW1hOnBlcnNvbmEnKSkudG9CZShmYWxzZSlcbn0pXG5cbnRlc3QoJ+eLgOaFi+WIl++8mueqhOaZguS+neW6j+aVtOashOmaseiXj++8jOS4jeaIquaWtycsICgpID0+IHtcbiAgY29uc3QgYWxsID0gW3NlZygnY2hhcmFjdGVyJywgJ0FCJyksIHNlZygnbW9kZWwnLCAnQ0QnKSwgc2VnKCdkaXInLCAnRUYnKSwgc2VnKCdicmFuY2gnLCAnR0gnKSwgc2VnKCc1aCcsICdJSicpLCBzZWcoJzdkJywgJ0tMJyksIHNlZygnY3R4JywgJ01OJyksIHNlZygnc3lzJywgJ09QJyldXG4gIGV4cGVjdChsYXlvdXQoYWxsLCA5OTkpLmxlbmd0aCkudG9CZSg4KVxuICBleHBlY3QobGF5b3V0KGFsbCwgMjYpLm1hcChzID0+IHMuaWQpKS5ub3QudG9Db250YWluKCdzeXMnKVxuICBjb25zdCBuYXJyb3cgPSBsYXlvdXQoYWxsLCAxNCkubWFwKHMgPT4gcy5pZClcbiAgZXhwZWN0KG5hcnJvdykudG9FcXVhbChbJ2NoYXJhY3RlcicsICdtb2RlbCcsICc1aCcsICdjdHgnXSlcbiAgZXhwZWN0KFsuLi5ISURFX09SREVSXSkudG9FcXVhbChbJ3N5cycsICc3ZCcsICdkaXInLCAnYnJhbmNoJ10pXG59KVxuXG50ZXN0KCfph4/ooajlm7rlrprplbfluqbvvIzlianppJjotorlsJHotorntIUnLCAoKSA9PiB7XG4gIGV4cGVjdChiYXIoMCkubGVuZ3RoKS50b0JlKGJhcigxMDApLmxlbmd0aClcbiAgZXhwZWN0KHJlbWFpbkNvbG9yKDEwLCA2MCwgODUpKS50b0JlKCdyZWQnKVxuICBleHBlY3QocmVtYWluQ29sb3IoOTAsIDYwLCA4NSkpLnRvQmUoJ2dyZWVuJylcbiAgZXhwZWN0KHVzZWRDb2xvcig3MCwgNjAsIDg1KSkudG9CZSgneWVsbG93Jylcbn0pXG5cbnRlc3QoJ3BlcnNvbmEg5ZCr5YuV5ryr5bGk6IiH5Y+j6aCt56aq77yM5Li76aGM6Imy5Y+v55So5pa854uA5oWL5YiXJywgKCkgPT4ge1xuICBjb25zdCBjID0gQ0hBUkFDVEVSU1swXSFcbiAgY29uc3QgdGV4dCA9IHBlcnNvbmFTZWN0aW9uKGMsIGMuYXhlcylcbiAgZXhwZWN0KHRleHQpLnRvQ29udGFpbign5YuV5ryr5Yi755WrJylcbiAgZXhwZWN0KHRleHQpLnRvQ29udGFpbign5Y+j6aCt56aqJylcbiAgZXhwZWN0KHRoZW1lQ29sb3IoYykpLnRvQmUoJ3JlZCcpXG59KVxuXG50ZXN0KCfop5LoibLljIXovYnmiJDlj6/llZ/li5Xop5LoibLvvJrku6PomZ/jgIHlubTpvaHoiIfljp/kvZzmiIDkuronLCAoKSA9PiB7XG4gIGNvbnN0IHBhY2s6IFBhY2tMaWtlID0ge1xuICAgIHNsdWc6ICdyaW4nLCBuYW1lOiAn5YecJywgd29yazogJ2RlbW8nLFxuICAgIHBlcnNvbmE6IHsgc2VsZlJlZjogJ+aIkScsIGFkZHJlc3M6ICfkvaAnLCB0b25lOiAn5Ya36Z2cJywgY2F0Y2hwaHJhc2U6ICfll68nLCB2YWx1ZXM6ICfoqqDlr6YnLCB0YWJvb3M6ICfkuI3oqqrorIonIH0sXG4gICAgYXhlczogQ0hBUkFDVEVSU1swXSEuYXhlcyxcbiAgICBhbmltZTogeyBtb2U6ICdtJywgc3BlZWNoOiAncycsIGVtb3Rpb25zOiAnZScsIGthb21vamk6ICdrJywgdGhlbWVDb2xvcjogJ2JsdWUnIH0sXG4gICAgdGltZWxpbmU6IFt7IGNoYXB0ZXI6ICfnrKwy56ugJywgYWdlOiAxOSwgcmVsYXRpb25zaGlwczogW3sgd2l0aDogJ+iTricsIGtpbmQ6ICdyb21hbnRpYycgfV0gfV0sXG4gIH1cbiAgY29uc3QgYyA9IHBhY2tUb0NoYXJhY3RlcihwYWNrLCAn56S656+EJylcbiAgZXhwZWN0KGMuc2x1ZykudG9CZSgnZGVtby1yaW4nKVxuICBleHBlY3QoYy50aW1lbGluZSkudG9FcXVhbChbeyBjaGFwdGVyOiAyLCBhZ2U6IDE5LCByb21hbmNlOiAn6JOuJyB9XSlcbiAgZXhwZWN0KHRoZW1lQ29sb3IoYykpLnRvQmUoJ2N5YW4nKVxuICByZWdpc3RlckNoYXJhY3RlcnMoW2MsIGNdKVxuICBleHBlY3QoQ0hBUkFDVEVSUy5maWx0ZXIoeCA9PiB4LnNsdWcgPT09ICdkZW1vLXJpbicpLmxlbmd0aCkudG9CZSgxKVxufSlcblxudGVzdCgn6KeS6Imy5YyF77ya5pyA5paw56ug56+A54uA5oWL44CB5L2c5ZOB55So6Kqe6IiH6Kqe6KiA6Kit5a6a6YCy5YWlIHBlcnNvbmEnLCAoKSA9PiB7XG4gIGNvbnN0IHBhY2s6IFBhY2tMaWtlID0ge1xuICAgIHNsdWc6ICdtaW8nLCBuYW1lOiAn5r6qJywgd29yazogJ2RlbW8yJyxcbiAgICBwZXJzb25hOiB7IHNlbGZSZWY6ICfmiJEnLCBhZGRyZXNzOiAn5L2gJywgdG9uZTogJ+WGt+mdnCcsIGNhdGNocGhyYXNlOiAn5ZevJywgdmFsdWVzOiAn6Kqg5a+mJywgdGFib29zOiAn5LiN6Kqq6KyKJyB9LFxuICAgIGF4ZXM6IENIQVJBQ1RFUlNbMF0hLmF4ZXMsXG4gICAgYW5pbWU6IHsgbW9lOiAnbScsIHNwZWVjaDogJ3MnLCBlbW90aW9uczogJ2UnLCBrYW9tb2ppOiAnaycsIHRoZW1lQ29sb3I6ICdyZWQnIH0sXG4gICAgbGFuZ3VhZ2U6ICfnuYHpq5TkuK3mlofvvIzkuI3kvb/nlKjlj6PnmZYnLFxuICAgIHRpbWVsaW5lOiBbXG4gICAgICB7IGNoYXB0ZXI6ICfnrKwx56ugJywgbW9vZDogJ+e3iuW8tScsIGRpYWxvZ3VlU3R5bGU6ICflrqLmsKMnLCBtb25vbG9ndWU6ICfmg7PororlvLcnLCBwbGFjZTogJ+WtuOmZoicsIGFnZTogMTYsIHJlbGF0aW9uc2hpcHM6IFtdIH0sXG4gICAgICB7IGNoYXB0ZXI6ICfnrKwy56ugJywgbW9vZDogJ+WuieW/gycsIGRpYWxvZ3VlU3R5bGU6ICfmlL7prIYnLCBtb25vbG9ndWU6ICfmg7PlrojorbcnLCBwbGFjZTogJ+ihl+S4iicsIGFnZTogMTYsIHJlbGF0aW9uc2hpcHM6IFtdIH0sXG4gICAgXSxcbiAgfVxuICBjb25zdCBjID0gcGFja1RvQ2hhcmFjdGVyKHBhY2ssICfnpLrnr4TkuownLCBbeyB0ZXJtOiAn6a2U5qC4JywgZGVmaW5pdGlvbjogJ+WKm+mHj+S+hua6kCcgfV0pXG4gIGNvbnN0IHRleHQgPSBwZXJzb25hU2VjdGlvbihjLCBjLmF4ZXMpXG4gIGV4cGVjdCh0ZXh0KS50b0NvbnRhaW4oJ+acgOaWsOeroOevgO+8iOesrDLnq6DvvIknKVxuICBleHBlY3QodGV4dCkudG9Db250YWluKCflronlv4MnKVxuICBleHBlY3QodGV4dCkubm90LnRvQ29udGFpbign57eK5by1JylcbiAgZXhwZWN0KHRleHQpLnRvQ29udGFpbign6a2U5qC477yd5Yqb6YeP5L6G5rqQJylcbiAgZXhwZWN0KHRleHQpLnRvQ29udGFpbign5LiN5L2/55So5Y+j55mWJylcbn0pXG4iXSwiZmlsZSI6Ii9ob29rcy9hbmltYS50ZXN0LnRzIn0=
//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvcm9vdC9qc2MtYW5pbWEvaG9va3MvYW5pbWEudGVzdC50cyIsIi9ob29rcy9hbmltYS50ZXN0LnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiLCIxMCJdLFtdLFsiOCIsIjkiLCIxMCJdLHt9LCJjbGF1ZGUtY29kZS90ZXN0aW5nIiwiL2hvb2tzL3N0YXR1c2xpbmUudHMiLCIvaG9va3MvY2hhcmFjdGVycy50cyJd