update
This commit is contained in:
1 parent
c7f4bad142
commit
9fd12d3e74
9 files changed
+787
-9
No files matched your search
@@ -1,4 +1,5 @@
|
|||||||
import { defineConfig } from 'vitepress'
|
import { defineConfig } from 'vitepress'
|
||||||
|
import nodePolyfills from 'rollup-plugin-polyfill-node';
|
||||||
|
|
||||||
// https://vitepress.dev/reference/site-config
|
// https://vitepress.dev/reference/site-config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
@@ -24,5 +25,8 @@ export default defineConfig({
|
|||||||
socialLinks: [
|
socialLinks: [
|
||||||
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
|
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
vite: {
|
||||||
|
plugins: [nodePolyfills({ include: ['fs'] })]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<template>
|
||||||
|
<form @submit="onSubmit">
|
||||||
|
<input type="text" v-model="q">
|
||||||
|
<button type="submit">Submit</button>
|
||||||
|
|
||||||
|
<video controls ref="video" :src="videoSrc" @loadeddata="onVideoLoad" @seeked="onSeeked"></video>
|
||||||
|
</form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, useTemplateRef, VNodeRef } from 'vue'
|
||||||
|
|
||||||
|
const q = ref('')
|
||||||
|
const videoSrc = ref('')
|
||||||
|
const videoEl = useTemplateRef('video')
|
||||||
|
|
||||||
|
function onSubmit(ev: SubmitEvent) {
|
||||||
|
ev.preventDefault()
|
||||||
|
|
||||||
|
if (!q.value) return
|
||||||
|
|
||||||
|
videoSrc.value = '/public/' + q.value
|
||||||
|
}
|
||||||
|
|
||||||
|
function onVideoLoad() {
|
||||||
|
const { hot } = import.meta as any
|
||||||
|
hot.send('download-q', { q: q.value.replace(/\.[a-z0-9]+$/, '') })
|
||||||
|
|
||||||
|
hot.on('seek-q', ({ t }: { t: number }) => {
|
||||||
|
videoEl.value!.currentTime = t;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSeeked() {
|
||||||
|
const v = videoEl.value!
|
||||||
|
let c = document.createElement('canvas');
|
||||||
|
c.height = v.videoHeight || parseInt(v.style.height);
|
||||||
|
c.width = v.videoWidth || parseInt(v.style.width);
|
||||||
|
const ctx = c.getContext('2d')!;
|
||||||
|
ctx.drawImage(v, 0, 0);
|
||||||
|
|
||||||
|
const { hot } = import.meta as any
|
||||||
|
hot.send('timed-q', { q: q.value.replace(/\.[a-z0-9]+$/, ''), t: videoEl.value!.currentTime, data: c.toDataURL('image/png') })
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form * {
|
||||||
|
border: 1px solid gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import type { Theme } from "vitepress";
|
||||||
|
import DefaultTheme from "vitepress/theme";
|
||||||
|
import Downloader from "./components/Downloader.vue";
|
||||||
|
import ytParsePlugin from "./plugins/yt-parse";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
extends: DefaultTheme,
|
||||||
|
enhanceApp({ app }) {
|
||||||
|
// register your custom global components
|
||||||
|
app.component("Downloader", Downloader);
|
||||||
|
app.use(ytParsePlugin);
|
||||||
|
},
|
||||||
|
} satisfies Theme;
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import { type Plugin, type ViteDevServer } from "vite";
|
||||||
|
import { readFileSync, mkdirSync, writeFileSync } from "fs";
|
||||||
|
|
||||||
|
export default function ytParsePlugin(): Plugin {
|
||||||
|
return {
|
||||||
|
name: "clipboard-server-spawn",
|
||||||
|
configureServer(server: ViteDevServer) {
|
||||||
|
server.ws.on("download-q", ({ q }) => {
|
||||||
|
try {
|
||||||
|
mkdirSync(`docs/${q}`);
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
let outMd = "";
|
||||||
|
|
||||||
|
const re = /^(?<min>\d{1,2}):(?<sec>\d{2})\s*$/;
|
||||||
|
|
||||||
|
for (const line of readFileSync(`docs/${q}.md`, "utf-8").trimEnd().split("\n")) {
|
||||||
|
const m = re.exec(line);
|
||||||
|
if (m) {
|
||||||
|
const { min, sec } = m.groups!;
|
||||||
|
const t = parseInt(min) * 60 + parseInt(sec);
|
||||||
|
server.ws.send("seek-q", { t });
|
||||||
|
outMd += `[${line}](./${q}/${t}.png)`;
|
||||||
|
} else {
|
||||||
|
outMd += line + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeFileSync(`docs/${q}.md`, outMd);
|
||||||
|
});
|
||||||
|
|
||||||
|
server.ws.on("timed-q", ({ q, t, data }) => {
|
||||||
|
writeFileSync(
|
||||||
|
`docs/${q}/${t}.png`,
|
||||||
|
data.replace(/^data:image\/png;base64,/, ""),
|
||||||
|
"base64",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
+1
-1
@@ -23,4 +23,4 @@ features:
|
|||||||
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||||
---
|
---
|
||||||
|
|
||||||
<input type="text" placeholder="Hello World" />
|
<Downloader />
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
|
*
|
||||||
!.gitignore
|
!.gitignore
|
||||||
!README.md
|
!README.md
|
||||||
@@ -0,0 +1,581 @@
|
|||||||
|
|
||||||
|
0:14
|
||||||
|
Aren't you a forensic? What brings you to our squad? What's your connections to the Raw Diamond case?
|
||||||
|
0:25
|
||||||
|
None. Then why'd you show up at the trading spot?
|
||||||
|
0:34
|
||||||
|
Answer me! Why did you come here?
|
||||||
|
2:20
|
||||||
|
Not just me. Anyone here, and even anyone Lanzi might have met after she left,
|
||||||
|
2:26
|
||||||
|
could be the killer. We're gonna check
|
||||||
|
2:32
|
||||||
|
every suspect. But right now, you're our prime suspect.
|
||||||
|
2:41
|
||||||
|
In the autopsy report, was there any erosive bleeding?
|
||||||
|
2:52
|
||||||
|
Or any foreign objects in Lanzi's stomach?
|
||||||
|
2:58
|
||||||
|
Please go ahead. You've got a person dead from cyanide poisoning,
|
||||||
|
3:03
|
||||||
|
but you can't figure out when or where the poison got slipped to her?
|
||||||
|
3:09
|
||||||
|
It means the poison was already in her body.
|
||||||
|
3:16
|
||||||
|
You mean there's no killer? Qiu Lanzi poisoned and killed herself?
|
||||||
|
3:25
|
||||||
|
You found my fingerprints on that bottle of water. But it's because
|
||||||
|
3:30
|
||||||
|
that one wasn't for Lanzi.
|
||||||
|
3:36
|
||||||
|
Ms. Zhu! Ms. Zhu, what did Mr. Qi say? He thinks the cyanide
|
||||||
|
3:42
|
||||||
|
was already in Qiu Lanzi's body. How did he know? The report was turned in just now.
|
||||||
|
3:50
|
||||||
|
Have you heard of remote case-solving? It's to find out the truth by analyzing crime scenes
|
||||||
|
3:55
|
||||||
|
and examining bodies without physical presence. Only a few forensic doctors can do this,
|
||||||
|
4:00
|
||||||
|
and Qi Sizhe is one of them.
|
||||||
|
4:06
|
||||||
|
Gao Yuan. Check the stuff he used in the lab. Then compare them with that bottle of water.
|
||||||
|
4:12
|
||||||
|
Okay. I go with you.
|
||||||
|
4:20
|
||||||
|
Did you transfer here because of what happened before?
|
||||||
|
4:27
|
||||||
|
You followed Jiang Fei, went to the bar, and visited Li Yiqi in the hospital.
|
||||||
|
4:33
|
||||||
|
What do you wanna do? I've told you. That's not truth.
|
||||||
|
4:45
|
||||||
|
Han Feng. You really think I'd kill a forensic intern
|
||||||
|
4:51
|
||||||
|
I just met?
|
||||||
|
4:57
|
||||||
|
You know very well it couldn't be me. What I think matters not.
|
||||||
|
5:02
|
||||||
|
Figuring out the truth matters.
|
||||||
|
5:22
|
||||||
|
Since he's helping with the case, maybe you could clue him in on some of the stuff we've dug up,
|
||||||
|
5:29
|
||||||
|
just enough to speed things along and catch the killer faster.
|
||||||
|
5:36
|
||||||
|
Okay. Mr. Gao. Please test Mr. Qi's water
|
||||||
|
5:42
|
||||||
|
and effervescent tablets. Tell us what you find out. Okay. Thank you.
|
||||||
|
6:03
|
||||||
|
Mr. Han. Ms. Zhu. The results come out. The report shows each of their saliva
|
||||||
|
6:08
|
||||||
|
in the other's water. So Qiu Lanzi took his water by mistake.
|
||||||
|
6:13
|
||||||
|
Yes. The water Lanzi drank should be Mr. Qi's soda water. And in Mr. Qi's bag
|
||||||
|
6:19
|
||||||
|
was just mineral water. Okay.
|
||||||
|
6:25
|
||||||
|
Gotta go.
|
||||||
|
6:33
|
||||||
|
Mr. Han. Ms. Zhu.
|
||||||
|
6:42
|
||||||
|
I've sure you've known why my fingerprints were on that bottle of water.
|
||||||
|
6:49
|
||||||
|
I wanna know why you said the cyanide was already in Qiu Lanzi's body.
|
||||||
|
6:55
|
||||||
|
I think Lanzi was usually on meds.
|
||||||
|
7:01
|
||||||
|
We did find some stomach meds in her bag. What meds? Omeprazole.
|
||||||
|
7:07
|
||||||
|
What else did the autopsy find? Found two drug capsules in her stomach. The shells looked melted,
|
||||||
|
7:13
|
||||||
|
and one of them had cracked open. Last question.
|
||||||
|
7:20
|
||||||
|
How many pills are left in her medicine bottle? Just one.
|
||||||
|
7:39
|
||||||
|
I think I know how Lanzi was murdered. Lanzi's stomach med, omeprazole, is an enteric-coated capsule.
|
||||||
|
7:46
|
||||||
|
It's designed to pass through the stomach without breaking down in the acid, then get absorbed
|
||||||
|
7:52
|
||||||
|
in the intestines where things are more alkaline. However, it was found in her stomach.
|
||||||
|
7:59
|
||||||
|
Why? Qiu Lanzi took your water by mistake. It was soda water,
|
||||||
|
8:05
|
||||||
|
making the capsule dissolve quicker. The coating on the capsules is slow-release,
|
||||||
|
8:10
|
||||||
|
so they should start working within 4 to 12 hours. But she drank soda, and that cut the time
|
||||||
|
8:16
|
||||||
|
way short. So the cyanide was hidden in Lanzi's stomach med capsules.
|
||||||
|
8:24
|
||||||
|
One of the two capsules in her stomach had cracked open.
|
||||||
|
8:29
|
||||||
|
The killer must've noticed it too when slipping cyanide into the capsules. Once the capsule coating
|
||||||
|
8:35
|
||||||
|
gets partly dissolved by the soda, the cyanide inside comes into contact with the stomach lining.
|
||||||
|
8:41
|
||||||
|
The corrosive poison will definitely cause erosive bleeding in there.
|
||||||
|
8:48
|
||||||
|
How to prove it? There's still one pill left in her medicine bottle.
|
||||||
|
8:55
|
||||||
|
Su.
|
||||||
|
9:09
|
||||||
|
I'm sorry, Ms. Zhao. The cooperation with He City is about to end, and you're going abroad. Sorry we have to call you back.
|
||||||
|
9:14
|
||||||
|
It's fine. I'll be there if you need me. So what happened? What do you want me to check?
|
||||||
|
9:22
|
||||||
|
Mr. Qi figured the victim might take omeprazole capsules laced with cyanide, but then drank soda by accident.
|
||||||
|
9:27
|
||||||
|
That made the capsule dissolve in the stomach instead of the intestines. We've found the capsules in her stomach.
|
||||||
|
9:34
|
||||||
|
So we need you here to test one last pill in the victim's medicine bottle.
|
||||||
|
9:41
|
||||||
|
I got this. Thank you.
|
||||||
|
10:13
|
||||||
|
How is it? Ms. Zhao is testing the pill. It needs some time.
|
||||||
|
10:20
|
||||||
|
Cross-check all the evidence and don't miss any details. I'll wait here. Okay.
|
||||||
|
10:34
|
||||||
|
The dosage of omeprazole is three pills a day, one in the morning and two in the evening.
|
||||||
|
10:40
|
||||||
|
If the killer wanted to make sure Lanzi died that very night, he must've made certain
|
||||||
|
10:46
|
||||||
|
at least one of the two pills she took was poisoned.
|
||||||
|
10:52
|
||||||
|
If he only poisoned one pill, Lanzi might not take it until the second morning.
|
||||||
|
10:57
|
||||||
|
That's a one-in-three chance. But if he poisoned three pills, then there'd always be
|
||||||
|
11:03
|
||||||
|
one poisoned pill left as evidence. So, poisoning exactly
|
||||||
|
11:10
|
||||||
|
two pills was the sweet spot. But if Qiu Lanzi
|
||||||
|
11:16
|
||||||
|
took both the poisoned ones, we couldn't find anything in the left one as evidence.
|
||||||
|
11:21
|
||||||
|
She's got a one-in-three chance of swallowing both poisoned pills, which means
|
||||||
|
11:27
|
||||||
|
the killer only has that same shot at not leaving evidence in the medicine.
|
||||||
|
11:33
|
||||||
|
So we're just gambling on the last one.
|
||||||
|
11:47
|
||||||
|
We've got the result. The pill indeed contains cyanide, same as Mr. Qi supposed.
|
||||||
|
12:04
|
||||||
|
Mr. Qi, you're off the hook for now. You can go.
|
||||||
|
12:12
|
||||||
|
Ms. Zhu. I wanna help with the case and find out Lanzi's murderer.
|
||||||
|
12:17
|
||||||
|
And, something's off with Jiang Fei's autopsy report.
|
||||||
|
12:24
|
||||||
|
I'm afraid you gotta stay outta Jiang Fei and Qiu Lanzi's case.
|
||||||
|
12:32
|
||||||
|
I wanna see Jiang Fei's autopsy report. You're not the only forensic here. You don't gotta handle every single case.
|
||||||
|
13:02
|
||||||
|
Come in. Mr. Bai.
|
||||||
|
13:12
|
||||||
|
Qi Sizhe is off the hook now? Yes. And he found out how Qiu Lanzi died?
|
||||||
|
13:22
|
||||||
|
Qi Sizhe is a brilliant forensic doctor. And he's quite reasonable.
|
||||||
|
13:28
|
||||||
|
So he won't blame you for the necessity of your interrogation of him.
|
||||||
|
13:36
|
||||||
|
Mr. Bai. Do you know about his past?
|
||||||
|
13:43
|
||||||
|
He had a severe car accident. And I thought we'd lose a talented forensic doctor.
|
||||||
|
13:49
|
||||||
|
But I never thought he'd manage to hit rehab milestones in just a year that usually
|
||||||
|
13:54
|
||||||
|
take others three to five years. You can imagine how much this position means to him.
|
||||||
|
14:03
|
||||||
|
But he's quite stubborn. So is Han Feng. Among you three,
|
||||||
|
14:10
|
||||||
|
you're the calmest and most rational one. So I hope you can get them together
|
||||||
|
14:15
|
||||||
|
and handle cases.
|
||||||
|
14:26
|
||||||
|
Where's Xi? I had her check 788 Bar's security footage. I still have some doubts.
|
||||||
|
14:32
|
||||||
|
We found the cyanide in Qiu Lanzi's stomach meds. The killer could
|
||||||
|
14:38
|
||||||
|
get close to her and switch her meds. So it could be someone she knew all along.
|
||||||
|
14:46
|
||||||
|
Qiu Lanzi said something was off with Jiang Fei's body. Ask Mr. Gao to check his autopsy report again.
|
||||||
|
14:54
|
||||||
|
Su. Dig deeper into the social circles around Qiu Lanzi, Jiang Fei, and Li Yiqi,
|
||||||
|
14:59
|
||||||
|
especially Qiu Lanzi's connections. Okay. Mr. Han. Anything to add?
|
||||||
|
15:05
|
||||||
|
Nothing, for now.
|
||||||
|
16:05
|
||||||
|
Xi, got anything? Yeah. Half a month before Li Yiqi's case,
|
||||||
|
16:10
|
||||||
|
Mr. Qi showed up at 788 Bar quite a few times. I cross-checked a few security footages. Every time Mr. Qi showed up,
|
||||||
|
16:16
|
||||||
|
Jiang Fei was there too. Looks like Mr. Qi was following Jiang Fei.
|
||||||
|
16:35
|
||||||
|
Ms. Zhu. Here's Qi Sizhe's info. He had a severe
|
||||||
|
16:41
|
||||||
|
accident two years ago. A woman riding in his car died on the spot.
|
||||||
|
16:49
|
||||||
|
Ms. Zhu. Anything wrong with him? Get back to work. Yes.
|
||||||
|
18:24
|
||||||
|
Why did you come? Why did you follow Li Yiqi and Jiang Fei?
|
||||||
|
18:40
|
||||||
|
You know why. 'Cause it's related to Fei's death.
|
||||||
|
18:47
|
||||||
|
Raw Diamond...
|
||||||
|
18:57
|
||||||
|
You came for the Raw Diamond case. Jiang Fei's death isn't an accident.
|
||||||
|
19:05
|
||||||
|
It's a murder.
|
||||||
|
19:14
|
||||||
|
His body was found at 11:30 or so in the morning. It's the same as room temperature,
|
||||||
|
19:20
|
||||||
|
22 degrees. He's got these little square marks on his chest, bright red.
|
||||||
|
19:25
|
||||||
|
And the lividity on the side of the body is all patchy, dark red. Any problems? The bright red lividity
|
||||||
|
19:30
|
||||||
|
doesn't match the estimated time of death, and the body's cooling rate is way off. There are two possibilities.
|
||||||
|
19:36
|
||||||
|
First, the killer was trying to mess with the time of death. Second, the way the murder was done
|
||||||
|
19:43
|
||||||
|
messed with the body's temperature. And I think the second one's way more likely.
|
||||||
|
19:49
|
||||||
|
So my guess is, Jiang Fei probably... Froze to death?
|
||||||
|
19:54
|
||||||
|
At his own home? But his place doesn't have such an environment. There is one.
|
||||||
|
20:09
|
||||||
|
No way. It's too small.
|
||||||
|
20:16
|
||||||
|
If the killer stuffed Jiang Fei into the fridge, there gotta be
|
||||||
|
20:21
|
||||||
|
a lot of scratches and marks on Jiang Fei's body. But so far, there aren't any
|
||||||
|
20:27
|
||||||
|
such marks on the body. Only lividity. Lividity is the marks formed by blood
|
||||||
|
20:33
|
||||||
|
due to gravity at the dripping points. Jiang Fei was lying on his side when he died.
|
||||||
|
20:38
|
||||||
|
So, the lividity should only have formed on the side. But look here.
|
||||||
|
20:45
|
||||||
|
There are bright red marks on Jiang Fei's chest. Also, when Jiang Fei died,
|
||||||
|
20:51
|
||||||
|
his clothes were all wrinkled. His clothes look like they got wet and then dried off...
|
||||||
|
20:58
|
||||||
|
His fingers and toes were all wrinkled, a result of prolonged soaking in water
|
||||||
|
21:04
|
||||||
|
and osmosis. Jiang Fei was always a slob, so it's no wonder his clothes were wrinkled.
|
||||||
|
21:11
|
||||||
|
When we found the body, there was water at the bottom of the bathtub. The wrinkles on his skin were probably caused by soaking in the water.
|
||||||
|
21:17
|
||||||
|
Well, going by your logic, his fingers and toes shouldn't have gotten wrinkly since they haven't touched
|
||||||
|
21:23
|
||||||
|
the water at the bottom of the tub. But turns out that's not what happened.
|
||||||
|
21:35
|
||||||
|
So Jiang Fei didn't freeze to death in a freezer, but in the...
|
||||||
|
21:40
|
||||||
|
In the bathtub.
|
||||||
|
21:49
|
||||||
|
The window in Jiang Fei's bathroom has always been open.
|
||||||
|
22:13
|
||||||
|
When the body was found, the ice had already melted, but there were frostbite
|
||||||
|
22:18
|
||||||
|
marks on the body. The bright red mark on his chest is
|
||||||
|
22:23
|
||||||
|
the best proof. This is also caused by the failure of
|
||||||
|
22:29
|
||||||
|
various organs at low temperatures.
|
||||||
|
22:34
|
||||||
|
Judging from the traces at the scene, everything matches what Mr. Qi said.
|
||||||
|
22:39
|
||||||
|
Got it. Han Feng.
|
||||||
|
22:45
|
||||||
|
Are you buying that Jiang Fei's death wasn't an accident but murder now?
|
||||||
|
23:02
|
||||||
|
If Mr. Qi's reasoning holds up, we gotta check this place for any signs of
|
||||||
|
23:07
|
||||||
|
a second person. Search more thoroughly.
|
||||||
|
24:07
|
||||||
|
I wanna learn more from you and become a great forensic doctor like you!
|
||||||
|
24:30
|
||||||
|
Ms. Zhu. Any progress in Jiang Fei's case?
|
||||||
|
24:37
|
||||||
|
You've been cleared of suspicion. So why still look into Jiang Fei? I know you're really concerned about Jiang Fei's case
|
||||||
|
24:43
|
||||||
|
and Li Yiqi's case. I also know you can lead us closer to the truth.
|
||||||
|
24:49
|
||||||
|
But so far, you haven't explained the coincidences of your appearance
|
||||||
|
24:55
|
||||||
|
in these two cases. And this time,
|
||||||
|
25:00
|
||||||
|
why did you go to investigate Jiang Fei alone?
|
||||||
|
25:06
|
||||||
|
I want you to answer my question. And I'm not gonna answer any questions related to this case
|
||||||
|
25:12
|
||||||
|
until I trust you. Ms. Zhu.
|
||||||
|
25:18
|
||||||
|
I'm a forensic doctor. When someone dies, only forensic doctors can tell what they
|
||||||
|
25:26
|
||||||
|
went through before they died. And I believe whoever it is,
|
||||||
|
25:33
|
||||||
|
even drug dealers like Jiang Fei, they all deserve the truth.
|
||||||
|
25:39
|
||||||
|
I saw the possibility of homicide in Jiang Fei's case. So I gotta figure out the truth.
|
||||||
|
25:48
|
||||||
|
But he's quite stubborn. So is Han Feng.
|
||||||
|
25:54
|
||||||
|
So I hope you can get them together and handle cases.
|
||||||
|
26:03
|
||||||
|
So Jiang Fei died a little after 4 am? Yes.
|
||||||
|
26:08
|
||||||
|
If he froze to death, his body temperature was lower than normal. So the time it takes to cool down
|
||||||
|
26:13
|
||||||
|
would be shorter. Mr. Han.
|
||||||
|
26:19
|
||||||
|
Mr. Qi inferred that Jiang Fei froze to death. Let him tell us about it.
|
||||||
|
26:33
|
||||||
|
All we know is that Jiang Fei was frozen to death by the killer, but there aren't any clues
|
||||||
|
26:39
|
||||||
|
to find the killer. The killer made Jiang Fei
|
||||||
|
26:45
|
||||||
|
take cephalosporin when he was drunk, causing a disulfiram-like reaction.
|
||||||
|
26:50
|
||||||
|
Then, when he was unconscious, the killer froze his body with ice, which led to the failure of all his
|
||||||
|
26:56
|
||||||
|
internal organs, especially his heart, and he died. It shows that the killer has some knowledge human physiology.
|
||||||
|
27:02
|
||||||
|
Mr. Gao, after the first autopsy and test, what was in his stomach as food residue?
|
||||||
|
27:09
|
||||||
|
Wine and sausage, no cephalosporin. But the cephalosporin on his table was already opened,
|
||||||
|
27:15
|
||||||
|
and the pharmacological test detected it. The sausage wasn't digested, which means the last thing
|
||||||
|
27:22
|
||||||
|
the victim ate was the sausage.
|
||||||
|
27:33
|
||||||
|
Have you found a knife there? No. There are cuts on the sausage
|
||||||
|
27:39
|
||||||
|
but no knife around. Could someone have taken it? Jiang Fei's body didn't have
|
||||||
|
27:45
|
||||||
|
a scratch on it. The knife couldn't be the murder weapon. So why'd the killer take it away?
|
||||||
|
27:52
|
||||||
|
Did you guys do luminol at the scene?
|
||||||
|
28:02
|
||||||
|
There are no cuts on the body, but the killer had to take the knife from the scene.
|
||||||
|
28:07
|
||||||
|
That means... The knife wasn't used on the victim. But on the killer.
|
||||||
|
28:48
|
||||||
|
If this isn't Jiang Fei's blood, then it gotta be the killer's.
|
||||||
|
29:01
|
||||||
|
Why didn't you ask Mr. Qi to do the bloodstain comparison?
|
||||||
|
29:06
|
||||||
|
The results are out. No records matching in the database. Thank you.
|
||||||
|
29:24
|
||||||
|
So here's the timeline of these cases. On the evening of the 7th, Qiu Lanzi joined us investigating
|
||||||
|
29:29
|
||||||
|
the 788 Bar assault case. Then she teamed up with Mr. Gao and Mr. Qi
|
||||||
|
29:35
|
||||||
|
for the Li Yiqi's blood sample analysis until the next day. We found Jiang Fei's body at noon the next day,
|
||||||
|
29:42
|
||||||
|
and Qiu Lanzi showed up later. That night, she, Mr. Qi and Mr. Gao dissected Jiang Fei's body.
|
||||||
|
29:49
|
||||||
|
We found the remains of stomach meds in Qiu Lanzi's stomach. Based on the dissolution rate of the meds
|
||||||
|
29:55
|
||||||
|
and the timeline, Qiu Lanzi should've taken the stomach meds between the time
|
||||||
|
30:00
|
||||||
|
after the dissection of Jiang Fei's body and her death. The first time Qiu Lanzi left the station
|
||||||
|
30:06
|
||||||
|
and met me was around 9 pm. Two hours later, I got a call from Qiu Lanzi.
|
||||||
|
30:12
|
||||||
|
She said she'd found a lead on Jiang Fei's body. Ten minutes later, when Mr. Han and I got to the forensic office,
|
||||||
|
30:19
|
||||||
|
we found her body. The stomach medicine was found among her belongings.
|
||||||
|
30:24
|
||||||
|
She usually kept her stuff in the locker in the changing room. Got anything from the surveillance over there?
|
||||||
|
30:29
|
||||||
|
No cameras on the floor. There are just people going to and from work there. And Mr. Bai means we shouldn't
|
||||||
|
30:35
|
||||||
|
expand the investigation for now. He wants us to narrow down the suspects first.
|
||||||
|
30:46
|
||||||
|
So the most likely time for Qiu Lanzi to take the pills is between the time
|
||||||
|
30:51
|
||||||
|
she left the station and came back. We just don't know where she went and who she met.
|
||||||
|
31:04
|
||||||
|
What about Jiang Fei? Don't forget Qiu Lanzi said she had info about
|
||||||
|
31:10
|
||||||
|
Jiang Fei's cause of death before she died. Jiang Fei went home after getting drunk.
|
||||||
|
31:16
|
||||||
|
Where did he drink and who did he drink with? Have you found out? He didn't use mobile payment or cards. He always used cash,
|
||||||
|
31:22
|
||||||
|
so it's hard to find his consumption records. People like him are always afraid of leaving any clues.
|
||||||
|
31:31
|
||||||
|
Wan, let's go to the bar to check Jiang Fei's movements before he drank.
|
||||||
|
31:36
|
||||||
|
Xi, go and find out who Qiu Lanzi met after she left the station. Let's split up.
|
||||||
|
31:42
|
||||||
|
Okay. Do as Mr. Han says.
|
||||||
|
32:04
|
||||||
|
It's here, Mr. Han.
|
||||||
|
32:10
|
||||||
|
No, Mr. Han...
|
||||||
|
32:46
|
||||||
|
You're in charge here? This is legit business. Legit business? Then why so serious,
|
||||||
|
32:52
|
||||||
|
needing a guide to find here? Oh, come on! This is a gimmick. More people will wanna come in
|
||||||
|
32:58
|
||||||
|
if they need someone to bring them in. That's smart. Since it's so complicated to get here,
|
||||||
|
33:04
|
||||||
|
you should know who came here the day before yesterday, right? Sir. How the heck can I remember
|
||||||
|
33:10
|
||||||
|
all these guests every day? Take us to the security room. Sir. You need a warrant to do so.
|
||||||
|
33:17
|
||||||
|
A warrant, huh? I'm gonna call my buddies from Public Security Brigade and let them check it out.
|
||||||
|
33:28
|
||||||
|
Sir. You can check whatever you want.
|
||||||
|
33:35
|
||||||
|
We checked Jiang Fei's social circles. Super complicated. He's lived in cities all over the country. A drug dealer like him's gonna
|
||||||
|
33:41
|
||||||
|
have a lot of enemies. If we just look at the motives for murder, there are a bunch of suspects.
|
||||||
|
33:46
|
||||||
|
Here's his hidden ledger we found. There are up to 40 drug addicts listed in it, not to mention those
|
||||||
|
33:53
|
||||||
|
who bought imitation guns, plasma, and illegal drugs. Ms. Zhu. This is Qiu Lanzi's phone.
|
||||||
|
33:59
|
||||||
|
Got anything? I checked Qiu Lanzi's call records. After she left at 9 o'clock,
|
||||||
|
34:05
|
||||||
|
she made four consecutive calls within five minutes, and they were all to the same person. Who?
|
||||||
|
34:11
|
||||||
|
It's a chemical factory's lab. But it was off-work time then, and she called the switchboard,
|
||||||
|
34:16
|
||||||
|
so we still can't find out who she contacted. We gotta find out what relationship this factory has with Qiu Lanzi.
|
||||||
|
34:22
|
||||||
|
Okay. Ms. Zhu. Have you checked Qiu Lanzi's phone?
|
||||||
|
34:28
|
||||||
|
Xi just gave it to me. I watched the videos of Qiu Lanzi before and after she left here. She never stopped checking her phone.
|
||||||
|
34:36
|
||||||
|
I remembered that Mr. Han told me when he saw Qiu Lanzi that day, she was also anxiously checking her phone.
|
||||||
|
34:43
|
||||||
|
There must be some clues on her phone. She just didn't have time to tell us then.
|
||||||
|
34:54
|
||||||
|
Stop. Who's the girl drinking with Jiang Fei?
|
||||||
|
35:01
|
||||||
|
Jiang Fei had introduced her to us. Zhang Lu, I remember. She's into Lolita fashion, close to Jiang Fei.
|
||||||
|
35:08
|
||||||
|
She took photos of Jiang Fei's body? But phones are forbidden in the dissection room...
|
||||||
|
35:14
|
||||||
|
Maybe she had some reason. Check out these last three photos.
|
||||||
|
35:20
|
||||||
|
The first two are of the tattoo on Jiang Fei's arm, one taken without a black light,
|
||||||
|
35:26
|
||||||
|
and the other with a black light. And the last one is of the skin on his wrist.
|
||||||
|
35:32
|
||||||
|
Also, the first two were taken at the same time. But there's a gap of over 20 minutes before the last one.
|
||||||
|
35:38
|
||||||
|
Why did she wait over 20 minutes to take a photo of the skin on the wrist
|
||||||
|
35:44
|
||||||
|
without a black light? What did she find out?
|
||||||
|
35:51
|
||||||
|
I saw some illegal stuff in the bar near Ruixi Building. I just saw it when working.
|
||||||
|
35:57
|
||||||
|
It's fine. You're welcome. Treat me to dinner then.
|
||||||
|
36:05
|
||||||
|
Wan. Thank you. It's nothing.
|
||||||
|
36:11
|
||||||
|
Ms. Zhu asked me to investigate with you. No need to say that.
|
||||||
|
36:24
|
||||||
|
I saw Qiu Lanzi taking those photos, but I just glanced and left.
|
||||||
|
36:30
|
||||||
|
I was in the next room with Ms. Zhao taking samples for toxicology testing. If you also left,
|
||||||
|
36:37
|
||||||
|
then Lanzi was the only one left in the autopsy room. But when she was taking the photos,
|
||||||
|
36:45
|
||||||
|
she asked me what this was. What is this? It should be an old injury
|
||||||
|
36:51
|
||||||
|
or a mark left after having a tattoo removed. No. It seems to be a fluorescent tattoo.
|
||||||
|
37:10
|
||||||
|
There are two photos of the tattoo on the left forearm, one in natural color and the other under a black light.
|
||||||
|
37:17
|
||||||
|
If we follow the logic of the previous two photos, there should be another black-light photo.
|
||||||
|
37:28
|
||||||
|
There are lots of group photos of Jiang Fei with different girls on his phone, and one of them is Zhang Lu, the girl we've been looking for.
|
||||||
|
37:35
|
||||||
|
Zhang Lu, 24 years old, living in Xinhua Road, He City, an intern researcher at an inorganic chemistry institute,
|
||||||
|
37:40
|
||||||
|
majored in chemistry. She knows Qiu Lanzi. They were high school classmates, so they rented an room
|
||||||
|
37:46
|
||||||
|
and were roommates shortly. In the call records we retrieved, the last call Qiu Lanzi made
|
||||||
|
37:52
|
||||||
|
was to Zhang Lu's workplace.
|
||||||
|
38:08
|
||||||
|
You said you saw Zhang Lu and Qiu Lanzi arguing that day, right? Yeah.
|
||||||
|
38:15
|
||||||
|
I did see them arguing. But I didn't catch what they were arguing about.
|
||||||
|
38:25
|
||||||
|
When I left, I saw that girl wasn't feeling well and took some medicine.
|
||||||
|
38:32
|
||||||
|
Are you sure Qiu Lanzi took medicine at that time? I'm sure.
|
||||||
|
38:46
|
||||||
|
Where's Zhang Lu? Mr. Han. We've been searching for her with your info.
|
||||||
|
39:00
|
||||||
|
Excuse me. Your ID card and driving license please. Please open your trunk.
|
||||||
|
39:12
|
||||||
|
You're Zhang Lu, right? Zhang Lu. Please cooperate with us.
|
||||||
|
39:34
|
||||||
|
Zhang Lu, 24 years old. A researcher of the chemistry institute in He City. Were you at the basement bar
|
||||||
|
39:41
|
||||||
|
in Yunjin Building with Jiang Fei on the evening of August 7th? Yeah.
|
||||||
|
39:47
|
||||||
|
Then did you go home with him? No. I just had a few drinks and went back to my own place.
|
||||||
|
39:53
|
||||||
|
Is there anyone who can prove it? Prove it? Why? I live alone.
|
||||||
|
39:59
|
||||||
|
How can there be a witness? So no one can prove you stayed at your own place that night.
|
||||||
|
40:09
|
||||||
|
What was Jiang Fei's state when you saw him for the last time? He...
|
||||||
|
40:17
|
||||||
|
He seemed to catch cold. You're out drinking with a cold?
|
||||||
|
40:26
|
||||||
|
Do you even know that mixing antibiotics with alcohol could kill you?
|
||||||
|
40:32
|
||||||
|
But I just really wanted to have a drink with you.
|
||||||
|
40:41
|
||||||
|
How'd you hurt your finger? Cut it during an experiment.
|
||||||
|
40:46
|
||||||
|
What did Qiu Lanzi say when she came to the lab? What'd she tell you guys?
|
||||||
|
40:52
|
||||||
|
Isn't she interning here? Call her over! I'll confront her! Qiu Lanzi's dead.
|
||||||
|
40:59
|
||||||
|
Did you kill her? Dead... How... How come...
|
||||||
|
41:12
|
||||||
|
Zhang Lu, now we suspect you're the prime suspect in the murder cases of Qiu Lanzi and Jiang Fei. Got anything to say?
|
||||||
|
41:20
|
||||||
|
If Zhang Lu's blood sample matches the one we took from Jiang Fei's place, she's most likely
|
||||||
|
41:26
|
||||||
|
the killer. I didn't! I never killed anyone!
|
||||||
|
41:31
|
||||||
|
I didn't... I really didn't! Then just answer our questions! What did she say to you?
|
||||||
|
41:37
|
||||||
|
She... She told me Jiang Fei was dead,
|
||||||
|
41:44
|
||||||
|
and she saw my name on the body...
|
||||||
|
41:59
|
||||||
|
How is it? Wait a moment.
|
||||||
|
42:17
|
||||||
|
Ms. Zhu. The result is out.
|
||||||
|
42:23
|
||||||
|
Mr. Han. It matches.
|
||||||
|
42:30
|
||||||
|
Su. Arrest her. Xi, untie her. It's her.
|
||||||
|
42:36
|
||||||
|
No... Not me! I didn't kill them! I didn't!
|
||||||
|
42:42
|
||||||
|
It's not me! It's really not me! I never killed anyone! It's not me! I didn't!
|
||||||
|
42:47
|
||||||
|
Don't arrest me! Please! It's not me! You got the wrong person! It's not me! Not me!
|
||||||
|
42:52
|
||||||
|
Really not! I didn't kill them! You got the wrong person! It's not me! Not me!
|
||||||
|
43:06
|
||||||
|
We got the wrong person. It's not her.
|
||||||
|
43:33
|
||||||
|
Raw Diamond case is over! You just can't deal with reality! You never figured out Fei's death!
|
||||||
|
43:39
|
||||||
|
Li Yiqi. Jiang Fei. They're the clue from the case! Hey! Stop!
|
||||||
|
43:45
|
||||||
|
There's an opening here. The kidnapped girl was probably taken inside.
|
||||||
|
43:50
|
||||||
|
The killer set this up to throw us off about the cause of death. He knows way too much about
|
||||||
|
43:56
|
||||||
|
forensic, autopsies, even our police procedures. Wait, are you saying... The killer is one of us?
|
||||||
+5
-1
@@ -4,7 +4,11 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"vitepress": "2.0.0-alpha.15"
|
"@types/node": "^20.19.30",
|
||||||
|
"rollup-plugin-polyfill-node": "^0.13.0",
|
||||||
|
"vite": "^7.3.1",
|
||||||
|
"vitepress": "2.0.0-alpha.15",
|
||||||
|
"vue": "^3.5.27"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vitepress dev docs",
|
"dev": "vitepress dev docs",
|
||||||
|
|||||||
Generated
+76
-7
@@ -8,9 +8,21 @@ importers:
|
|||||||
|
|
||||||
.:
|
.:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^20.19.30
|
||||||
|
version: 20.19.30
|
||||||
|
rollup-plugin-polyfill-node:
|
||||||
|
specifier: ^0.13.0
|
||||||
|
version: 0.13.0(rollup@4.55.2)
|
||||||
|
vite:
|
||||||
|
specifier: ^7.3.1
|
||||||
|
version: 7.3.1(@types/node@20.19.30)
|
||||||
vitepress:
|
vitepress:
|
||||||
specifier: 2.0.0-alpha.15
|
specifier: 2.0.0-alpha.15
|
||||||
version: 2.0.0-alpha.15(@algolia/client-search@5.46.3)(postcss@8.5.6)(react@19.2.3)(search-insights@2.17.3)
|
version: 2.0.0-alpha.15(@algolia/client-search@5.46.3)(@types/node@20.19.30)(postcss@8.5.6)(react@19.2.3)(search-insights@2.17.3)
|
||||||
|
vue:
|
||||||
|
specifier: ^3.5.27
|
||||||
|
version: 3.5.27
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -336,6 +348,24 @@ packages:
|
|||||||
'@rolldown/pluginutils@1.0.0-beta.53':
|
'@rolldown/pluginutils@1.0.0-beta.53':
|
||||||
resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
|
resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
|
||||||
|
|
||||||
|
'@rollup/plugin-inject@5.0.5':
|
||||||
|
resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/pluginutils@5.3.0':
|
||||||
|
resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@rollup/rollup-android-arm-eabi@4.55.2':
|
'@rollup/rollup-android-arm-eabi@4.55.2':
|
||||||
resolution: {integrity: sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA==}
|
resolution: {integrity: sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
@@ -506,6 +536,9 @@ packages:
|
|||||||
'@types/mdurl@2.0.0':
|
'@types/mdurl@2.0.0':
|
||||||
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
|
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
|
||||||
|
|
||||||
|
'@types/node@20.19.30':
|
||||||
|
resolution: {integrity: sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==}
|
||||||
|
|
||||||
'@types/unist@3.0.3':
|
'@types/unist@3.0.3':
|
||||||
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
|
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
|
||||||
|
|
||||||
@@ -792,6 +825,11 @@ packages:
|
|||||||
rfdc@1.4.1:
|
rfdc@1.4.1:
|
||||||
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
|
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
|
||||||
|
|
||||||
|
rollup-plugin-polyfill-node@0.13.0:
|
||||||
|
resolution: {integrity: sha512-FYEvpCaD5jGtyBuBFcQImEGmTxDTPbiHjJdrYIp+mFIwgXiXabxvKUK7ZT9P31ozu2Tqm9llYQMRWsfvTMTAOw==}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
|
||||||
|
|
||||||
rollup@4.55.2:
|
rollup@4.55.2:
|
||||||
resolution: {integrity: sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg==}
|
resolution: {integrity: sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg==}
|
||||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||||
@@ -840,6 +878,9 @@ packages:
|
|||||||
trim-lines@3.0.1:
|
trim-lines@3.0.1:
|
||||||
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
||||||
|
|
||||||
|
undici-types@6.21.0:
|
||||||
|
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
||||||
|
|
||||||
unist-util-is@6.0.1:
|
unist-util-is@6.0.1:
|
||||||
resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
|
resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
|
||||||
|
|
||||||
@@ -1207,6 +1248,22 @@ snapshots:
|
|||||||
|
|
||||||
'@rolldown/pluginutils@1.0.0-beta.53': {}
|
'@rolldown/pluginutils@1.0.0-beta.53': {}
|
||||||
|
|
||||||
|
'@rollup/plugin-inject@5.0.5(rollup@4.55.2)':
|
||||||
|
dependencies:
|
||||||
|
'@rollup/pluginutils': 5.3.0(rollup@4.55.2)
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
magic-string: 0.30.21
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 4.55.2
|
||||||
|
|
||||||
|
'@rollup/pluginutils@5.3.0(rollup@4.55.2)':
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.8
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
picomatch: 4.0.3
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 4.55.2
|
||||||
|
|
||||||
'@rollup/rollup-android-arm-eabi@4.55.2':
|
'@rollup/rollup-android-arm-eabi@4.55.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -1341,6 +1398,10 @@ snapshots:
|
|||||||
|
|
||||||
'@types/mdurl@2.0.0': {}
|
'@types/mdurl@2.0.0': {}
|
||||||
|
|
||||||
|
'@types/node@20.19.30':
|
||||||
|
dependencies:
|
||||||
|
undici-types: 6.21.0
|
||||||
|
|
||||||
'@types/unist@3.0.3': {}
|
'@types/unist@3.0.3': {}
|
||||||
|
|
||||||
'@types/web-bluetooth@0.0.21': {}
|
'@types/web-bluetooth@0.0.21': {}
|
||||||
@@ -1349,10 +1410,10 @@ snapshots:
|
|||||||
|
|
||||||
'@vercel/oidc@3.1.0': {}
|
'@vercel/oidc@3.1.0': {}
|
||||||
|
|
||||||
'@vitejs/plugin-vue@6.0.3(vite@7.3.1)(vue@3.5.27)':
|
'@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@20.19.30))(vue@3.5.27)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rolldown/pluginutils': 1.0.0-beta.53
|
'@rolldown/pluginutils': 1.0.0-beta.53
|
||||||
vite: 7.3.1
|
vite: 7.3.1(@types/node@20.19.30)
|
||||||
vue: 3.5.27
|
vue: 3.5.27
|
||||||
|
|
||||||
'@vue/compiler-core@3.5.27':
|
'@vue/compiler-core@3.5.27':
|
||||||
@@ -1648,6 +1709,11 @@ snapshots:
|
|||||||
|
|
||||||
rfdc@1.4.1: {}
|
rfdc@1.4.1: {}
|
||||||
|
|
||||||
|
rollup-plugin-polyfill-node@0.13.0(rollup@4.55.2):
|
||||||
|
dependencies:
|
||||||
|
'@rollup/plugin-inject': 5.0.5(rollup@4.55.2)
|
||||||
|
rollup: 4.55.2
|
||||||
|
|
||||||
rollup@4.55.2:
|
rollup@4.55.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.8
|
'@types/estree': 1.0.8
|
||||||
@@ -1724,6 +1790,8 @@ snapshots:
|
|||||||
|
|
||||||
trim-lines@3.0.1: {}
|
trim-lines@3.0.1: {}
|
||||||
|
|
||||||
|
undici-types@6.21.0: {}
|
||||||
|
|
||||||
unist-util-is@6.0.1:
|
unist-util-is@6.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
@@ -1761,7 +1829,7 @@ snapshots:
|
|||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
vfile-message: 4.0.3
|
vfile-message: 4.0.3
|
||||||
|
|
||||||
vite@7.3.1:
|
vite@7.3.1(@types/node@20.19.30):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.27.2
|
esbuild: 0.27.2
|
||||||
fdir: 6.5.0(picomatch@4.0.3)
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
@@ -1770,9 +1838,10 @@ snapshots:
|
|||||||
rollup: 4.55.2
|
rollup: 4.55.2
|
||||||
tinyglobby: 0.2.15
|
tinyglobby: 0.2.15
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
'@types/node': 20.19.30
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
vitepress@2.0.0-alpha.15(@algolia/client-search@5.46.3)(postcss@8.5.6)(react@19.2.3)(search-insights@2.17.3):
|
vitepress@2.0.0-alpha.15(@algolia/client-search@5.46.3)(@types/node@20.19.30)(postcss@8.5.6)(react@19.2.3)(search-insights@2.17.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@docsearch/css': 4.4.0
|
'@docsearch/css': 4.4.0
|
||||||
'@docsearch/js': 4.4.0(@algolia/client-search@5.46.3)(react@19.2.3)(search-insights@2.17.3)
|
'@docsearch/js': 4.4.0(@algolia/client-search@5.46.3)(react@19.2.3)(search-insights@2.17.3)
|
||||||
@@ -1781,7 +1850,7 @@ snapshots:
|
|||||||
'@shikijs/transformers': 3.21.0
|
'@shikijs/transformers': 3.21.0
|
||||||
'@shikijs/types': 3.21.0
|
'@shikijs/types': 3.21.0
|
||||||
'@types/markdown-it': 14.1.2
|
'@types/markdown-it': 14.1.2
|
||||||
'@vitejs/plugin-vue': 6.0.3(vite@7.3.1)(vue@3.5.27)
|
'@vitejs/plugin-vue': 6.0.3(vite@7.3.1(@types/node@20.19.30))(vue@3.5.27)
|
||||||
'@vue/devtools-api': 8.0.5
|
'@vue/devtools-api': 8.0.5
|
||||||
'@vue/shared': 3.5.27
|
'@vue/shared': 3.5.27
|
||||||
'@vueuse/core': 14.1.0(vue@3.5.27)
|
'@vueuse/core': 14.1.0(vue@3.5.27)
|
||||||
@@ -1790,7 +1859,7 @@ snapshots:
|
|||||||
mark.js: 8.11.1
|
mark.js: 8.11.1
|
||||||
minisearch: 7.2.0
|
minisearch: 7.2.0
|
||||||
shiki: 3.21.0
|
shiki: 3.21.0
|
||||||
vite: 7.3.1
|
vite: 7.3.1(@types/node@20.19.30)
|
||||||
vue: 3.5.27
|
vue: 3.5.27
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
|
|||||||
Reference in new issue
Block a user