diff --git a/404.html b/404.html index e62f86cf..66090266 100644 --- a/404.html +++ b/404.html @@ -31,10 +31,10 @@ } - + -
跳至主要內容

404

頁面不存在

這 是 四 零 四 !

- +
跳至主要內容

404

頁面不存在

這裡什麼也沒有

+ diff --git a/article/index.html b/article/index.html index 0a2d8000..9b32607d 100644 --- a/article/index.html +++ b/article/index.html @@ -31,10 +31,27 @@ } - + -
跳至主要內容
番茄

番茄

+
跳至主要內容
利用GitHub Actions自动部署前端到服务器
+

Automatically deploying the Front End to the server using GitHub Actions

+
+

GitHub Actions介绍及原理

+
    +
  • +

    接触 GitHub Actions 也有一段时间了,目前此blog就是利用 GitHub Action 自动部署到GitHub托管的。今天把此次前端页面成功部署到服务器端的操作方法详细记录下来,顺便按自己理解写些心得。抽空再码字完善(下班时间开工😭)。

    +
  • +
  • +

    GitHub Actions 官方文档:在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。

    +
  • +
  • +

    通过文档可以看出 GitHub Action 其强大的代码管理、运行部署、测试推送等一体化自动发布部署功能,省去了大量的重复性工作。由于通过ssh客户端连接到服务器,直接进行前端部署,需要安装各种各样的依赖,很大程度上降低了服务器运行效率,且不易对代码进行修正。

    +
  • +
  • +

    本教程是在《用Nginx Proxy Manager部署静态网页》基础上延伸出的思路,省去了安装node环境和各种依赖的步骤,直接在 GitHub Action 中部署前端。每次在本地对后端文件进行修正后,直接将前端发布到服务器。起到一劳永逸的效果。

    +
  • +

Ven2s...大约 6 分鐘linuxServerFrontEnd
番茄

番茄

标题 2

这里是内容。

标题 3

@@ -70,29 +87,20 @@

标注幻灯片



Ven2s...小於 1 分鐘使用指南
佈局與功能禁用

你可以通过设置页面的 Frontmatter,在页面禁用功能与布局。


Ven2s...小於 1 分鐘使用指南禁用
Markdown 展示

VuePress 主要从 Markdown 文件生成页面。因此,你可以使用它轻松生成文档或博客站点。

你应该创建和编写 Markdown 文件,以便 VuePress 可以根据文件结构将它们转换为不同的页面。

-

Ven2s...大约 3 分鐘使用指南Markdown
KMS 服务端安装部署教程
+

KMS Server Installation and Deployment Tutorial

-

GitHub Actions介绍及原理

+

关于脚本

    -
  • -

    接触 GitHub Actions 也有一段时间了,目前此blog就是利用 GitHub Action 自动部署到GitHub托管的。今天把此次前端页面成功部署到服务器端的操作方法详细记录下来,顺便按自己理解写些心得。抽空再码字完善(下班时间开工😭)。

    -
  • -
  • -

    GitHub Actions 官方文档:在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。

    -
  • -
  • -

    通过文档可以看出 GitHub Action 其强大的代码管理、运行部署、测试推送等一体化自动发布部署功能,省去了大量的重复性工作。由于通过ssh客户端连接到服务器,直接进行前端部署,需要安装各种各样的依赖,很大程度上降低了服务器运行效率,且不易对代码进行修正。

    -
  • -
  • -

    本教程是在《用Nginx Proxy Manager部署静态网页》基础上延伸出的思路,省去了安装node环境和各种依赖的步骤,直接在 GitHub Action 中部署前端。每次在本地对后端文件进行修正后,直接将前端发布到服务器。起到一劳永逸的效果。

    -
  • -

Ven2s...大约 6 分鐘ServerFrontEnd
ChatGPT-Porxy
-

Build ChatGPT Reverse Proxy

-
+
  • KMS 服务安装完成后会加入开机自启动。
  • +
  • 默认记录日志,其日志位于 /var/log/vlmcsd.log。
  • + +

    开始部署

      -
    • ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。
    • -

    Ven2s...大约 2 分鐘ChatGPT
    2
    3
    - +
  • 使用 root 用户登录,运行以下命令:
  • + +
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/kms.sh && chmod +x kms.sh && ./kms.sh
    +

    Ven2s...大约 5 分鐘kmstools
    2
    3
    + diff --git a/assets/1.html-1032a824.js b/assets/1.html-1032a824.js deleted file mode 100644 index 0fca769e..00000000 --- a/assets/1.html-1032a824.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-e748286e","path":"/en/posts/banana/1.html","title":"Banana 1","lang":"en-US","frontmatter":{"icon":"pen-to-square","date":"2022-01-05T00:00:00.000Z","category":["Banana","Fruit"],"tag":["yellow","curly","long"],"description":"Banana 1 Heading 2 Here is the content. Heading 3 Here is the content.","head":[["link",{"rel":"alternate","hreflang":"zh-tw","href":"https://luvsia.com/posts/banana/1.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/en/posts/banana/1.html"}],["meta",{"property":"og:site_name","content":"SpringVen2s"}],["meta",{"property":"og:title","content":"Banana 1"}],["meta",{"property":"og:description","content":"Banana 1 Heading 2 Here is the content. Heading 3 Here is the content."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"yellow"}],["meta",{"property":"article:tag","content":"curly"}],["meta",{"property":"article:tag","content":"long"}],["meta",{"property":"article:published_time","content":"2022-01-05T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Banana 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-05T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"Heading 2","slug":"heading-2","link":"#heading-2","children":[{"level":3,"title":"Heading 3","slug":"heading-3","link":"#heading-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.1,"words":29},"filePathRelative":"en/posts/banana/1.md","localizedDate":"January 5, 2022","excerpt":"

    Banana 1

    \\n

    Heading 2

    \\n

    Here is the content.

    \\n

    Heading 3

    \\n

    Here is the content.

    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/1.html-bb97d1e2.js b/assets/1.html-417309d8.js similarity index 90% rename from assets/1.html-bb97d1e2.js rename to assets/1.html-417309d8.js index e3322765..5c9e33f2 100644 --- a/assets/1.html-bb97d1e2.js +++ b/assets/1.html-417309d8.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-a79373b4.js";const c={},h=t('

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","1.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-bdf45122.js";const c={},h=t('

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","1.html.vue"]]);export{f as default}; diff --git a/assets/1.html-449e07d3.js b/assets/1.html-449e07d3.js deleted file mode 100644 index 2d97c1a2..00000000 --- a/assets/1.html-449e07d3.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-7bfcd410","path":"/zh/posts/Server/1.html","title":"苹果 1","lang":"zh-CN","frontmatter":{"icon":"pen-to-square","date":"2022-01-01T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"description":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。","head":[["link",{"rel":"alternate","hreflang":"zh-tw","href":"https://luvsia.com/posts/Server/1.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/zh/posts/Server/1.html"}],["meta",{"property":"og:site_name","content":"风至万始苏"}],["meta",{"property":"og:title","content":"苹果 1"}],["meta",{"property":"og:description","content":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-01T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-01T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.11,"words":34},"filePathRelative":"zh/posts/Server/1.md","localizedDate":"2022年1月1日","excerpt":"

    苹果 1

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/1.html-511e8744.js b/assets/1.html-511e8744.js new file mode 100644 index 00000000..2bac5617 --- /dev/null +++ b/assets/1.html-511e8744.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e748286e","path":"/en/posts/banana/1.html","title":"Banana 1","lang":"en-US","frontmatter":{"icon":"pen-to-square","date":"2022-01-05T00:00:00.000Z","category":["Banana","Fruit"],"tag":["yellow","curly","long"],"description":"Banana 1 Heading 2 Here is the content. Heading 3 Here is the content.","head":[["meta",{"property":"og:url","content":"https://luvsia.com/en/posts/banana/1.html"}],["meta",{"property":"og:site_name","content":"SpringVen2s"}],["meta",{"property":"og:title","content":"Banana 1"}],["meta",{"property":"og:description","content":"Banana 1 Heading 2 Here is the content. Heading 3 Here is the content."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"yellow"}],["meta",{"property":"article:tag","content":"curly"}],["meta",{"property":"article:tag","content":"long"}],["meta",{"property":"article:published_time","content":"2022-01-05T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Banana 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-05T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"Heading 2","slug":"heading-2","link":"#heading-2","children":[{"level":3,"title":"Heading 3","slug":"heading-3","link":"#heading-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.1,"words":29},"filePathRelative":"en/posts/banana/1.md","localizedDate":"January 5, 2022","excerpt":"

    Banana 1

    \\n

    Heading 2

    \\n

    Here is the content.

    \\n

    Heading 3

    \\n

    Here is the content.

    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/1.html-7f111f65.js b/assets/1.html-7f111f65.js new file mode 100644 index 00000000..266f5032 --- /dev/null +++ b/assets/1.html-7f111f65.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-7bfcd410","path":"/zh/posts/Server/1.html","title":"苹果 1","lang":"zh-CN","frontmatter":{"icon":"pen-to-square","date":"2022-01-01T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"description":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。","head":[["meta",{"property":"og:url","content":"https://luvsia.com/zh/posts/Server/1.html"}],["meta",{"property":"og:site_name","content":"风至万始苏"}],["meta",{"property":"og:title","content":"苹果 1"}],["meta",{"property":"og:description","content":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-01T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-01T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.11,"words":34},"filePathRelative":"zh/posts/Server/1.md","localizedDate":"2022年1月1日","excerpt":"

    苹果 1

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/1.html-99b00a11.js b/assets/1.html-99b00a11.js deleted file mode 100644 index c4215ba8..00000000 --- a/assets/1.html-99b00a11.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-a774cac2","path":"/posts/Server/1.html","title":"苹果 1","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-01T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"description":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://luvsia.com/zh/posts/Server/1.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/posts/Server/1.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"苹果 1"}],["meta",{"property":"og:description","content":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-01T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-01T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.11,"words":34},"filePathRelative":"posts/Server/1.md","localizedDate":"2022年1月1日","excerpt":"

    苹果 1

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/1.html-a4da039b.js b/assets/1.html-a4da039b.js new file mode 100644 index 00000000..ad48e086 --- /dev/null +++ b/assets/1.html-a4da039b.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-50451b6c","path":"/note/1.html","title":"苹果 1","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-01T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"description":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。","head":[["meta",{"property":"og:url","content":"https://luvsia.com/note/1.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"苹果 1"}],["meta",{"property":"og:description","content":"苹果 1 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-29T23:09:45.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-01T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-29T23:09:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-01T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-29T23:09:45.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698620985000,"updatedTime":1698620985000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.11,"words":34},"filePathRelative":"note/1.md","localizedDate":"2022年1月1日","excerpt":"

    苹果 1

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/1.html-b8dbf94b.js b/assets/1.html-b8dbf94b.js deleted file mode 100644 index 5fb1d4de..00000000 --- a/assets/1.html-b8dbf94b.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-7a07405d","path":"/posts/banana/1.html","title":"香蕉 1","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-05T00:00:00.000Z","category":["香蕉","水果"],"tag":["黄","弯曲的","长"],"description":"香蕉 1 标题 2 这里是内容。 标题 3 这里是内容。","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://luvsia.com/en/posts/banana/1.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/posts/banana/1.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"香蕉 1"}],["meta",{"property":"og:description","content":"香蕉 1 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"黄"}],["meta",{"property":"article:tag","content":"弯曲的"}],["meta",{"property":"article:tag","content":"长"}],["meta",{"property":"article:published_time","content":"2022-01-05T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"香蕉 1\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-05T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.13,"words":38},"filePathRelative":"posts/banana/1.md","localizedDate":"2022年1月5日","excerpt":"

    香蕉 1

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/1.html-98ae9950.js b/assets/1.html-ba4fa256.js similarity index 90% rename from assets/1.html-98ae9950.js rename to assets/1.html-ba4fa256.js index 3d971848..2a8cef6d 100644 --- a/assets/1.html-98ae9950.js +++ b/assets/1.html-ba4fa256.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as n,f as t}from"./app-a79373b4.js";const r={},h=t('

    Banana 1

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),n("div",null,i)}const f=e(r,[["render",d],["__file","1.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as n,f as t}from"./app-bdf45122.js";const r={},h=t('

    Banana 1

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),n("div",null,i)}const f=e(r,[["render",d],["__file","1.html.vue"]]);export{f as default}; diff --git a/assets/1.html-d52f6bd7.js b/assets/1.html-d52f6bd7.js deleted file mode 100644 index 25706891..00000000 --- a/assets/1.html-d52f6bd7.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-a79373b4.js";const c={},h=t('

    香蕉 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","1.html.vue"]]);export{f as default}; diff --git a/assets/1.html-1b77b33d.js b/assets/1.html-f23e067c.js similarity index 90% rename from assets/1.html-1b77b33d.js rename to assets/1.html-f23e067c.js index 9791aaab..057a3898 100644 --- a/assets/1.html-1b77b33d.js +++ b/assets/1.html-f23e067c.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as t,f as n}from"./app-a79373b4.js";const r={},h=n('

    Apple 1

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),t("div",null,i)}const l=e(r,[["render",d],["__file","1.html.vue"]]);export{l as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as t,f as n}from"./app-bdf45122.js";const r={},h=n('

    Apple 1

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),t("div",null,i)}const l=e(r,[["render",d],["__file","1.html.vue"]]);export{l as default}; diff --git a/assets/1.html-ee75ce2f.js b/assets/1.html-f4f6c3ef.js similarity index 90% rename from assets/1.html-ee75ce2f.js rename to assets/1.html-f4f6c3ef.js index e3322765..5c9e33f2 100644 --- a/assets/1.html-ee75ce2f.js +++ b/assets/1.html-f4f6c3ef.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-a79373b4.js";const c={},h=t('

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","1.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-bdf45122.js";const c={},h=t('

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","1.html.vue"]]);export{f as default}; diff --git a/assets/10-4225b4c6.js b/assets/10-4225b4c6.js new file mode 100644 index 00000000..a11a6dc5 --- /dev/null +++ b/assets/10-4225b4c6.js @@ -0,0 +1 @@ +const s="/images/DDNS/Z.jpg",a="/images/DDNS/B.jpg",g="/images/DDNS/0.jpg",i="/images/DDNS/1.png",o="/images/DDNS/2.png",p="/images/DDNS/3.png",t="/images/DDNS/4.png",_="/images/DDNS/5.png",m="/images/DDNS/6.png",D="/images/DDNS/7.png",n="/images/DDNS/8.png",e="/images/DDNS/9.png",c="/images/DDNS/10.png";export{i as _,t as a,_ as b,n as c,e as d,c as e,s as f,a as g,g as h,o as i,p as j,m as k,D as l}; diff --git a/assets/1993.html-92084bbf.js b/assets/1993.html-48ca08ad.js similarity index 71% rename from assets/1993.html-92084bbf.js rename to assets/1993.html-48ca08ad.js index f8e69fbf..7f21350e 100644 --- a/assets/1993.html-92084bbf.js +++ b/assets/1993.html-48ca08ad.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-a79373b4.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","1993.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-bdf45122.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","1993.html.vue"]]);export{f as default}; diff --git a/assets/1993.html-7032364d.js b/assets/1993.html-7032364d.js new file mode 100644 index 00000000..7f21350e --- /dev/null +++ b/assets/1993.html-7032364d.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-bdf45122.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","1993.html.vue"]]);export{f as default}; diff --git a/assets/1993.html-e9c0ccb5.js b/assets/1993.html-e9c0ccb5.js new file mode 100644 index 00000000..45ae867b --- /dev/null +++ b/assets/1993.html-e9c0ccb5.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-68175033","path":"/note/1993.html","title":"一九九三","lang":"zh-TW","frontmatter":{"title":"一九九三","date":"1993-02-22T14:22:22.000Z","author":"Ven2s","summary":"***乾兑离震巽坎艮坤***","tag":["My Birthday","易"],"description":"","head":[["meta",{"property":"og:url","content":"https://luvsia.com/note/1993.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"一九九三"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-29T23:09:45.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"My Birthday"}],["meta",{"property":"article:tag","content":"易"}],["meta",{"property":"article:published_time","content":"1993-02-22T14:22:22.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-29T23:09:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"一九九三\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"1993-02-22T14:22:22.000Z\\",\\"dateModified\\":\\"2023-10-29T23:09:45.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\"}]}"]]},"headers":[],"git":{"createdTime":1698620985000,"updatedTime":1698620985000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"note/1993.md","localizedDate":"1993年2月22日","excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/2.html-13787e11.js b/assets/2.html-13787e11.js deleted file mode 100644 index 2dc76868..00000000 --- a/assets/2.html-13787e11.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-a40b1984","path":"/posts/Server/2.html","title":"苹果 2","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-02T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"star":true,"description":"苹果 2 一个被星标了的苹果文章。","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://luvsia.com/zh/posts/Server/2.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/posts/Server/2.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"苹果 2"}],["meta",{"property":"og:description","content":"苹果 2 一个被星标了的苹果文章。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-02T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 2\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-02T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.16,"words":48},"filePathRelative":"posts/Server/2.md","localizedDate":"2022年1月2日","excerpt":"

    苹果 2

    \\n

    一个被星标了的苹果文章。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/2.html-7efb1c20.js b/assets/2.html-7efb1c20.js new file mode 100644 index 00000000..fd093c1c --- /dev/null +++ b/assets/2.html-7efb1c20.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-b04154a0","path":"/code/2.html","title":"苹果 2","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-02T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"star":true,"description":"苹果 2 一个被星标了的苹果文章。","head":[["meta",{"property":"og:url","content":"https://luvsia.com/code/2.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"苹果 2"}],["meta",{"property":"og:description","content":"苹果 2 一个被星标了的苹果文章。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-29T23:09:45.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-02T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-29T23:09:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 2\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-02T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-29T23:09:45.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698620985000,"updatedTime":1698620985000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.16,"words":48},"filePathRelative":"code/2.md","localizedDate":"2022年1月2日","excerpt":"

    苹果 2

    \\n

    一个被星标了的苹果文章。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/2.html-989e3faa.js b/assets/2.html-989e3faa.js new file mode 100644 index 00000000..5218caea --- /dev/null +++ b/assets/2.html-989e3faa.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-7db1acaf","path":"/zh/posts/Server/2.html","title":"苹果 2","lang":"zh-CN","frontmatter":{"icon":"pen-to-square","date":"2022-01-02T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"star":true,"description":"苹果 2 一个被星标了的苹果文章。","head":[["meta",{"property":"og:url","content":"https://luvsia.com/zh/posts/Server/2.html"}],["meta",{"property":"og:site_name","content":"风至万始苏"}],["meta",{"property":"og:title","content":"苹果 2"}],["meta",{"property":"og:description","content":"苹果 2 一个被星标了的苹果文章。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-02T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 2\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-02T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.16,"words":48},"filePathRelative":"zh/posts/Server/2.md","localizedDate":"2022年1月2日","excerpt":"

    苹果 2

    \\n

    一个被星标了的苹果文章。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/2.html-aeec39e7.js b/assets/2.html-aeec39e7.js deleted file mode 100644 index 09b2d8e3..00000000 --- a/assets/2.html-aeec39e7.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-7db1acaf","path":"/zh/posts/Server/2.html","title":"苹果 2","lang":"zh-CN","frontmatter":{"icon":"pen-to-square","date":"2022-01-02T00:00:00.000Z","category":["苹果"],"tag":["红","大","圆"],"star":true,"description":"苹果 2 一个被星标了的苹果文章。","head":[["link",{"rel":"alternate","hreflang":"zh-tw","href":"https://luvsia.com/posts/Server/2.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/zh/posts/Server/2.html"}],["meta",{"property":"og:site_name","content":"风至万始苏"}],["meta",{"property":"og:title","content":"苹果 2"}],["meta",{"property":"og:description","content":"苹果 2 一个被星标了的苹果文章。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"红"}],["meta",{"property":"article:tag","content":"大"}],["meta",{"property":"article:tag","content":"圆"}],["meta",{"property":"article:published_time","content":"2022-01-02T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"苹果 2\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-02T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.16,"words":48},"filePathRelative":"zh/posts/Server/2.md","localizedDate":"2022年1月2日","excerpt":"

    苹果 2

    \\n

    一个被星标了的苹果文章。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/2.html-44d6ebcf.js b/assets/2.html-b8f5a5f5.js similarity index 92% rename from assets/2.html-44d6ebcf.js rename to assets/2.html-b8f5a5f5.js index f5c501eb..86ac4cc4 100644 --- a/assets/2.html-44d6ebcf.js +++ b/assets/2.html-b8f5a5f5.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o as n,c as r,e as d,a as e,b as a}from"./app-a79373b4.js";const o={},i=e("h1",{id:"apple-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#apple-2","aria-hidden":"true"},"#"),a(" Apple 2")],-1),s=e("p",null,"A apple article being stared.",-1),c=e("h2",{id:"heading-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-2","aria-hidden":"true"},"#"),a(" Heading 2")],-1),h=e("p",null,"Here is the content.",-1),_=e("h3",{id:"heading-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-3","aria-hidden":"true"},"#"),a(" Heading 3")],-1),l=e("p",null,"Here is the content.",-1);function p(f,m){return n(),r("div",null,[i,s,d(" more "),c,h,_,l])}const x=t(o,[["render",p],["__file","2.html.vue"]]);export{x as default}; +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o as n,c as r,e as d,a as e,b as a}from"./app-bdf45122.js";const o={},i=e("h1",{id:"apple-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#apple-2","aria-hidden":"true"},"#"),a(" Apple 2")],-1),s=e("p",null,"A apple article being stared.",-1),c=e("h2",{id:"heading-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-2","aria-hidden":"true"},"#"),a(" Heading 2")],-1),h=e("p",null,"Here is the content.",-1),_=e("h3",{id:"heading-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-3","aria-hidden":"true"},"#"),a(" Heading 3")],-1),l=e("p",null,"Here is the content.",-1);function p(f,m){return n(),r("div",null,[i,s,d(" more "),c,h,_,l])}const x=t(o,[["render",p],["__file","2.html.vue"]]);export{x as default}; diff --git a/assets/2.html-ab96963d.js b/assets/2.html-c7e69315.js similarity index 92% rename from assets/2.html-ab96963d.js rename to assets/2.html-c7e69315.js index 7df811ae..262c70cb 100644 --- a/assets/2.html-ab96963d.js +++ b/assets/2.html-c7e69315.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o,c as r,e as n,a as e,b as a}from"./app-a79373b4.js";const s={},c=e("h1",{id:"香蕉-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#香蕉-2","aria-hidden":"true"},"#"),a(" 香蕉 2")],-1),d=e("p",null,[a("一个被数字 "),e("code",null,"10"),a(" 星标了的香蕉文章。")],-1),_=e("h2",{id:"标题-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-2","aria-hidden":"true"},"#"),a(" 标题 2")],-1),h=e("p",null,"这里是内容。",-1),i=e("h3",{id:"标题-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-3","aria-hidden":"true"},"#"),a(" 标题 3")],-1),l=e("p",null,"这里是内容。",-1);function u(f,m){return o(),r("div",null,[c,d,n(" more "),_,h,i,l])}const b=t(s,[["render",u],["__file","2.html.vue"]]);export{b as default}; +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o,c as r,e as n,a as e,b as a}from"./app-bdf45122.js";const s={},c=e("h1",{id:"香蕉-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#香蕉-2","aria-hidden":"true"},"#"),a(" 香蕉 2")],-1),d=e("p",null,[a("一个被数字 "),e("code",null,"10"),a(" 星标了的香蕉文章。")],-1),_=e("h2",{id:"标题-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-2","aria-hidden":"true"},"#"),a(" 标题 2")],-1),h=e("p",null,"这里是内容。",-1),i=e("h3",{id:"标题-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-3","aria-hidden":"true"},"#"),a(" 标题 3")],-1),l=e("p",null,"这里是内容。",-1);function u(f,m){return o(),r("div",null,[c,d,n(" more "),_,h,i,l])}const b=t(s,[["render",u],["__file","2.html.vue"]]);export{b as default}; diff --git a/assets/2.html-7ce1d342.js b/assets/2.html-c9fb8b58.js similarity index 92% rename from assets/2.html-7ce1d342.js rename to assets/2.html-c9fb8b58.js index 39ce3b25..ab19200b 100644 --- a/assets/2.html-7ce1d342.js +++ b/assets/2.html-c9fb8b58.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c as r,e as d,a as e,b as a}from"./app-a79373b4.js";const o={},i=e("h1",{id:"banana-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#banana-2","aria-hidden":"true"},"#"),a(" Banana 2")],-1),s=e("p",null,[a("A banana article being stared with number "),e("code",null,"10"),a(".")],-1),c=e("h2",{id:"heading-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-2","aria-hidden":"true"},"#"),a(" Heading 2")],-1),h=e("p",null,"Here is the content.",-1),_=e("h3",{id:"heading-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-3","aria-hidden":"true"},"#"),a(" Heading 3")],-1),l=e("p",null,"Here is the content.",-1);function u(m,f){return t(),r("div",null,[i,s,d(" more "),c,h,_,l])}const g=n(o,[["render",u],["__file","2.html.vue"]]);export{g as default}; +import{_ as n}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c as r,e as d,a as e,b as a}from"./app-bdf45122.js";const o={},i=e("h1",{id:"banana-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#banana-2","aria-hidden":"true"},"#"),a(" Banana 2")],-1),s=e("p",null,[a("A banana article being stared with number "),e("code",null,"10"),a(".")],-1),c=e("h2",{id:"heading-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-2","aria-hidden":"true"},"#"),a(" Heading 2")],-1),h=e("p",null,"Here is the content.",-1),_=e("h3",{id:"heading-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#heading-3","aria-hidden":"true"},"#"),a(" Heading 3")],-1),l=e("p",null,"Here is the content.",-1);function u(m,f){return t(),r("div",null,[i,s,d(" more "),c,h,_,l])}const g=n(o,[["render",u],["__file","2.html.vue"]]);export{g as default}; diff --git a/assets/2.html-c5325a92.js b/assets/2.html-e3f51ca4.js similarity index 92% rename from assets/2.html-c5325a92.js rename to assets/2.html-e3f51ca4.js index ff1aa6d7..a2fcad78 100644 --- a/assets/2.html-c5325a92.js +++ b/assets/2.html-e3f51ca4.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o,c as r,e as s,a as e,b as a}from"./app-a79373b4.js";const n={},c=e("h1",{id:"苹果-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#苹果-2","aria-hidden":"true"},"#"),a(" 苹果 2")],-1),d=e("p",null,"一个被星标了的苹果文章。",-1),_=e("h2",{id:"标题-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-2","aria-hidden":"true"},"#"),a(" 标题 2")],-1),h=e("p",null,"这里是内容。",-1),i=e("h3",{id:"标题-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-3","aria-hidden":"true"},"#"),a(" 标题 3")],-1),l=e("p",null,"这里是内容。",-1);function f(m,u){return o(),r("div",null,[c,d,s(" more "),_,h,i,l])}const b=t(n,[["render",f],["__file","2.html.vue"]]);export{b as default}; +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o,c as r,e as s,a as e,b as a}from"./app-bdf45122.js";const n={},c=e("h1",{id:"苹果-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#苹果-2","aria-hidden":"true"},"#"),a(" 苹果 2")],-1),d=e("p",null,"一个被星标了的苹果文章。",-1),_=e("h2",{id:"标题-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-2","aria-hidden":"true"},"#"),a(" 标题 2")],-1),h=e("p",null,"这里是内容。",-1),i=e("h3",{id:"标题-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-3","aria-hidden":"true"},"#"),a(" 标题 3")],-1),l=e("p",null,"这里是内容。",-1);function f(m,u){return o(),r("div",null,[c,d,s(" more "),_,h,i,l])}const b=t(n,[["render",f],["__file","2.html.vue"]]);export{b as default}; diff --git a/assets/2.html-cc550f1b.js b/assets/2.html-e90ea048.js similarity index 92% rename from assets/2.html-cc550f1b.js rename to assets/2.html-e90ea048.js index ff1aa6d7..a2fcad78 100644 --- a/assets/2.html-cc550f1b.js +++ b/assets/2.html-e90ea048.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o,c as r,e as s,a as e,b as a}from"./app-a79373b4.js";const n={},c=e("h1",{id:"苹果-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#苹果-2","aria-hidden":"true"},"#"),a(" 苹果 2")],-1),d=e("p",null,"一个被星标了的苹果文章。",-1),_=e("h2",{id:"标题-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-2","aria-hidden":"true"},"#"),a(" 标题 2")],-1),h=e("p",null,"这里是内容。",-1),i=e("h3",{id:"标题-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-3","aria-hidden":"true"},"#"),a(" 标题 3")],-1),l=e("p",null,"这里是内容。",-1);function f(m,u){return o(),r("div",null,[c,d,s(" more "),_,h,i,l])}const b=t(n,[["render",f],["__file","2.html.vue"]]);export{b as default}; +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o,c as r,e as s,a as e,b as a}from"./app-bdf45122.js";const n={},c=e("h1",{id:"苹果-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#苹果-2","aria-hidden":"true"},"#"),a(" 苹果 2")],-1),d=e("p",null,"一个被星标了的苹果文章。",-1),_=e("h2",{id:"标题-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-2","aria-hidden":"true"},"#"),a(" 标题 2")],-1),h=e("p",null,"这里是内容。",-1),i=e("h3",{id:"标题-3",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标题-3","aria-hidden":"true"},"#"),a(" 标题 3")],-1),l=e("p",null,"这里是内容。",-1);function f(m,u){return o(),r("div",null,[c,d,s(" more "),_,h,i,l])}const b=t(n,[["render",f],["__file","2.html.vue"]]);export{b as default}; diff --git a/assets/3.html-0c824db3.js b/assets/3.html-0c824db3.js new file mode 100644 index 00000000..b438125f --- /dev/null +++ b/assets/3.html-0c824db3.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e074c5f2","path":"/en/posts/banana/3.html","title":"Banana 3","lang":"en-US","frontmatter":{"icon":"pen-to-square","date":"2022-01-07T00:00:00.000Z","category":["Banana"],"tag":["yellow","curly","long"],"description":"Banana 3 Heading 2 Here is the content. Heading 3 Here is the content.","head":[["meta",{"property":"og:url","content":"https://luvsia.com/en/posts/banana/3.html"}],["meta",{"property":"og:site_name","content":"SpringVen2s"}],["meta",{"property":"og:title","content":"Banana 3"}],["meta",{"property":"og:description","content":"Banana 3 Heading 2 Here is the content. Heading 3 Here is the content."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"yellow"}],["meta",{"property":"article:tag","content":"curly"}],["meta",{"property":"article:tag","content":"long"}],["meta",{"property":"article:published_time","content":"2022-01-07T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Banana 3\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-07T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"Heading 2","slug":"heading-2","link":"#heading-2","children":[{"level":3,"title":"Heading 3","slug":"heading-3","link":"#heading-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"en/posts/banana/3.md","localizedDate":"January 7, 2022","excerpt":"

    Banana 3

    \\n

    Heading 2

    \\n

    Here is the content.

    \\n

    Heading 3

    \\n

    Here is the content.

    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/3.html-f565a574.js b/assets/3.html-489d296e.js similarity index 90% rename from assets/3.html-f565a574.js rename to assets/3.html-489d296e.js index 34365502..61fc1fe1 100644 --- a/assets/3.html-f565a574.js +++ b/assets/3.html-489d296e.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as t,f as n}from"./app-a79373b4.js";const r={},h=n('

    Apple 3

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),t("div",null,i)}const l=e(r,[["render",d],["__file","3.html.vue"]]);export{l as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as t,f as n}from"./app-bdf45122.js";const r={},h=n('

    Apple 3

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),t("div",null,i)}const l=e(r,[["render",d],["__file","3.html.vue"]]);export{l as default}; diff --git a/assets/3.html-27d0420e.js b/assets/3.html-738d51ad.js similarity index 90% rename from assets/3.html-27d0420e.js rename to assets/3.html-738d51ad.js index 7caa4850..32d3e311 100644 --- a/assets/3.html-27d0420e.js +++ b/assets/3.html-738d51ad.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as n,f as t}from"./app-a79373b4.js";const r={},h=t('

    Banana 3

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),n("div",null,i)}const f=e(r,[["render",d],["__file","3.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as n,f as t}from"./app-bdf45122.js";const r={},h=t('

    Banana 3

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),n("div",null,i)}const f=e(r,[["render",d],["__file","3.html.vue"]]);export{f as default}; diff --git a/assets/3.html-817614d7.js b/assets/3.html-817614d7.js deleted file mode 100644 index c5d9ef90..00000000 --- a/assets/3.html-817614d7.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-7d70f19b","path":"/posts/banana/3.html","title":"香蕉 3","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-07T00:00:00.000Z","category":["香蕉"],"tag":["黄","弯曲的","长"],"description":"香蕉 3 标题 2 这里是内容。 标题 3 这里是内容。","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://luvsia.com/en/posts/banana/3.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/posts/banana/3.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"香蕉 3"}],["meta",{"property":"og:description","content":"香蕉 3 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"黄"}],["meta",{"property":"article:tag","content":"弯曲的"}],["meta",{"property":"article:tag","content":"长"}],["meta",{"property":"article:published_time","content":"2022-01-07T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"香蕉 3\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-07T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.12,"words":36},"filePathRelative":"posts/banana/3.md","localizedDate":"2022年1月7日","excerpt":"

    香蕉 3

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/3.html-c30956c8.js b/assets/3.html-c30956c8.js deleted file mode 100644 index 1308d533..00000000 --- a/assets/3.html-c30956c8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-a79373b4.js";const c={},h=t('

    香蕉 3

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","3.html.vue"]]);export{f as default}; diff --git a/assets/3.html-e0c9a155.js b/assets/3.html-e0c9a155.js deleted file mode 100644 index 54f9e6f2..00000000 --- a/assets/3.html-e0c9a155.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-e074c5f2","path":"/en/posts/banana/3.html","title":"Banana 3","lang":"en-US","frontmatter":{"icon":"pen-to-square","date":"2022-01-07T00:00:00.000Z","category":["Banana"],"tag":["yellow","curly","long"],"description":"Banana 3 Heading 2 Here is the content. Heading 3 Here is the content.","head":[["link",{"rel":"alternate","hreflang":"zh-tw","href":"https://luvsia.com/posts/banana/3.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/en/posts/banana/3.html"}],["meta",{"property":"og:site_name","content":"SpringVen2s"}],["meta",{"property":"og:title","content":"Banana 3"}],["meta",{"property":"og:description","content":"Banana 3 Heading 2 Here is the content. Heading 3 Here is the content."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"yellow"}],["meta",{"property":"article:tag","content":"curly"}],["meta",{"property":"article:tag","content":"long"}],["meta",{"property":"article:published_time","content":"2022-01-07T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Banana 3\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-07T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"Heading 2","slug":"heading-2","link":"#heading-2","children":[{"level":3,"title":"Heading 3","slug":"heading-3","link":"#heading-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"en/posts/banana/3.md","localizedDate":"January 7, 2022","excerpt":"

    Banana 3

    \\n

    Heading 2

    \\n

    Here is the content.

    \\n

    Heading 3

    \\n

    Here is the content.

    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/4.html-6d09feae.js b/assets/4.html-6d09feae.js deleted file mode 100644 index 8cfa0b02..00000000 --- a/assets/4.html-6d09feae.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-7f25ca3a","path":"/posts/banana/4.html","title":"香蕉 4","lang":"zh-TW","frontmatter":{"icon":"pen-to-square","date":"2022-01-08T00:00:00.000Z","category":["香蕉"],"tag":["黄","弯曲的","长"],"description":"香蕉 4 标题 2 这里是内容。 标题 3 这里是内容。","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://luvsia.com/en/posts/banana/4.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/posts/banana/4.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"香蕉 4"}],["meta",{"property":"og:description","content":"香蕉 4 标题 2 这里是内容。 标题 3 这里是内容。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"黄"}],["meta",{"property":"article:tag","content":"弯曲的"}],["meta",{"property":"article:tag","content":"长"}],["meta",{"property":"article:published_time","content":"2022-01-08T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"香蕉 4\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-08T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"标题 2","slug":"标题-2","link":"#标题-2","children":[{"level":3,"title":"标题 3","slug":"标题-3","link":"#标题-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.12,"words":36},"filePathRelative":"posts/banana/4.md","localizedDate":"2022年1月8日","excerpt":"

    香蕉 4

    \\n

    标题 2

    \\n

    这里是内容。

    \\n

    标题 3

    \\n

    这里是内容。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/4.html-a5613868.js b/assets/4.html-a5613868.js new file mode 100644 index 00000000..c55e412c --- /dev/null +++ b/assets/4.html-a5613868.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-dd0b14b4","path":"/en/posts/banana/4.html","title":"Banana 4","lang":"en-US","frontmatter":{"icon":"pen-to-square","date":"2022-01-08T00:00:00.000Z","category":["Banana"],"tag":["yellow","curly","long"],"description":"Banana 4 Heading 2 Here is the content. Heading 3 Here is the content.","head":[["meta",{"property":"og:url","content":"https://luvsia.com/en/posts/banana/4.html"}],["meta",{"property":"og:site_name","content":"SpringVen2s"}],["meta",{"property":"og:title","content":"Banana 4"}],["meta",{"property":"og:description","content":"Banana 4 Heading 2 Here is the content. Heading 3 Here is the content."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"yellow"}],["meta",{"property":"article:tag","content":"curly"}],["meta",{"property":"article:tag","content":"long"}],["meta",{"property":"article:published_time","content":"2022-01-08T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Banana 4\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-08T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"Heading 2","slug":"heading-2","link":"#heading-2","children":[{"level":3,"title":"Heading 3","slug":"heading-3","link":"#heading-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"en/posts/banana/4.md","localizedDate":"January 8, 2022","excerpt":"

    Banana 4

    \\n

    Heading 2

    \\n

    Here is the content.

    \\n

    Heading 3

    \\n

    Here is the content.

    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/4.html-ba1ff88e.js b/assets/4.html-ba1ff88e.js deleted file mode 100644 index 254f6f9b..00000000 --- a/assets/4.html-ba1ff88e.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as r,f as t}from"./app-a79373b4.js";const c={},h=t('

    香蕉 4

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    ',5),d=[h];function n(i,o){return a(),r("div",null,d)}const f=e(c,[["render",n],["__file","4.html.vue"]]);export{f as default}; diff --git a/assets/4.html-6392fedb.js b/assets/4.html-c278c91c.js similarity index 90% rename from assets/4.html-6392fedb.js rename to assets/4.html-c278c91c.js index feefdc02..ef156824 100644 --- a/assets/4.html-6392fedb.js +++ b/assets/4.html-c278c91c.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as n,f as t}from"./app-a79373b4.js";const r={},h=t('

    Banana 4

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),n("div",null,i)}const f=e(r,[["render",d],["__file","4.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as n,f as t}from"./app-bdf45122.js";const r={},h=t('

    Banana 4

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),n("div",null,i)}const f=e(r,[["render",d],["__file","4.html.vue"]]);export{f as default}; diff --git a/assets/4.html-dadcce07.js b/assets/4.html-dadcce07.js deleted file mode 100644 index b13e94d7..00000000 --- a/assets/4.html-dadcce07.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-dd0b14b4","path":"/en/posts/banana/4.html","title":"Banana 4","lang":"en-US","frontmatter":{"icon":"pen-to-square","date":"2022-01-08T00:00:00.000Z","category":["Banana"],"tag":["yellow","curly","long"],"description":"Banana 4 Heading 2 Here is the content. Heading 3 Here is the content.","head":[["link",{"rel":"alternate","hreflang":"zh-tw","href":"https://luvsia.com/posts/banana/4.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/en/posts/banana/4.html"}],["meta",{"property":"og:site_name","content":"SpringVen2s"}],["meta",{"property":"og:title","content":"Banana 4"}],["meta",{"property":"og:description","content":"Banana 4 Heading 2 Here is the content. Heading 3 Here is the content."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"yellow"}],["meta",{"property":"article:tag","content":"curly"}],["meta",{"property":"article:tag","content":"long"}],["meta",{"property":"article:published_time","content":"2022-01-08T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Banana 4\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-08T00:00:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\",\\"url\\":\\"https://luvsia.com\\"}]}"]]},"headers":[{"level":2,"title":"Heading 2","slug":"heading-2","link":"#heading-2","children":[{"level":3,"title":"Heading 3","slug":"heading-3","link":"#heading-3","children":[]}]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"en/posts/banana/4.md","localizedDate":"January 8, 2022","excerpt":"

    Banana 4

    \\n

    Heading 2

    \\n

    Here is the content.

    \\n

    Heading 3

    \\n

    Here is the content.

    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/4.html-f8c9175b.js b/assets/4.html-e3027249.js similarity index 90% rename from assets/4.html-f8c9175b.js rename to assets/4.html-e3027249.js index 3e397437..5ec2fc5b 100644 --- a/assets/4.html-f8c9175b.js +++ b/assets/4.html-e3027249.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as t,f as n}from"./app-a79373b4.js";const r={},h=n('

    Apple 4

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),t("div",null,i)}const l=e(r,[["render",d],["__file","4.html.vue"]]);export{l as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as a,c as t,f as n}from"./app-bdf45122.js";const r={},h=n('

    Apple 4

    Heading 2

    Here is the content.

    Heading 3

    Here is the content.

    ',5),i=[h];function d(c,o){return a(),t("div",null,i)}const l=e(r,[["render",d],["__file","4.html.vue"]]);export{l as default}; diff --git a/assets/404.html-ef7e8b04.js b/assets/404.html-501ad892.js similarity index 71% rename from assets/404.html-ef7e8b04.js rename to assets/404.html-501ad892.js index ce322a00..28a95f6e 100644 --- a/assets/404.html-ef7e8b04.js +++ b/assets/404.html-501ad892.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-a79373b4.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-bdf45122.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/5-8aad1104.js b/assets/5-8aad1104.js new file mode 100644 index 00000000..633b9186 --- /dev/null +++ b/assets/5-8aad1104.js @@ -0,0 +1 @@ +const o="/images/port-forwarding/1.png",r="/images/port-forwarding/2.png",s="/images/port-forwarding/3.png",a="/images/port-forwarding/4.png",p="/images/port-forwarding/5.png";export{o as _,r as a,s as b,a as c,p as d}; diff --git a/assets/Best-Emoji.html-f20e2288.js b/assets/Best-Emoji.html-dbb688c9.js similarity index 99% rename from assets/Best-Emoji.html-f20e2288.js rename to assets/Best-Emoji.html-dbb688c9.js index 3bd4dc63..64c3f530 100644 --- a/assets/Best-Emoji.html-f20e2288.js +++ b/assets/Best-Emoji.html-dbb688c9.js @@ -1 +1 @@ -import{_ as d}from"./plugin-vue_export-helper-c27b6911.js";import{r as n,o as l,c,a as t,b as r,d as a,f as o}from"./app-a79373b4.js";const i={},s=t("p",null,"Emoji表情",-1),g=t("p",null,"风至万始苏",-1),y={href:"https://github.com/ventusoon/README/blob/master/emoji.md",target:"_blank",rel:"noopener noreferrer"},x=o('

    将对应emoji表情的符号码复制后输入你的markdown文本即可显示emoji表情。
    如"😊",显示为😊

    人物

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bowtie::bowtie::smile:😄:laughing:😆
    :blush:😊:smiley:😃:relaxed:☺️
    :smirk:😏:heart_eyes:😍:kissing_heart:😘
    :kissing_closed_eyes:😚:flushed:😳:relieved:😌
    :satisfied:😆:grin:😁:wink:😉
    :stuck_out_tongue_winking_eye:😜:stuck_out_tongue_closed_eyes:😝:grinning:😀
    :kissing:😗:kissing_smiling_eyes:😙:stuck_out_tongue:😛
    :sleeping:😴:worried:😟:frowning:😦
    :anguished:😧:open_mouth:😮:grimacing:😬
    :confused:😕:hushed:😯:expressionless:😑
    :unamused:😒:sweat_smile:😅:sweat:😓
    :disappointed_relieved:😥:weary:😩:pensive:😔
    :disappointed:😞:confounded:😖:fearful:😨
    :cold_sweat:😰:persevere:😣:cry:😢
    :sob:😭:joy:😂:astonished:😲
    :scream:😱:neckbeard::neckbeard::tired_face:😫
    :angry:😠:rage:😡:triumph:😤
    :sleepy:😪:yum:😋:mask:😷
    :sunglasses:😎:dizzy_face:😵:imp:👿
    :smiling_imp:😈:neutral_face:😐:no_mouth:😶
    :innocent:😇:alien:👽:yellow_heart:💛
    :blue_heart:💙:purple_heart:💜:heart:❤️
    :green_heart:💚:broken_heart:💔:heartbeat:💓
    :heartpulse:💗:two_hearts:💕:revolving_hearts:💞
    :cupid:💘:sparkling_heart:💖:sparkles:
    :star::star2:🌟:dizzy:💫
    :boom:💥:collision:💥:anger:💢
    :exclamation::question::grey_exclamation:
    :grey_question::zzz:💤:dash:💨
    :sweat_drops:💦:notes:🎶:musical_note:🎵
    :fire:🔥:hankey:💩:poop:💩
    ::💩:+1:👍:thumbsup:👍
    :-1:👎:thumbsdown:👎:ok_hand:👌
    :punch:👊:facepunch:👊:fist:
    :v:✌️:wave:👋:hand:
    :raised_hand::open_hands:👐:point_up:☝️
    :point_down:👇:point_left:👈:point_right:👉
    :raised_hands:🙌:pray:🙏:point_up_2:👆
    :clap:👏:muscle:💪:metal:🤘
    :fu:🖕:walking:🚶:runner:🏃
    :running:🏃:couple:👫:family:👪
    :two_men_holding_hands:👬:two_women_holding_hands:👭:dancer:💃
    :dancers:👯:ok_woman:🙆‍♀️:no_good:🙅
    :information_desk_person:💁:raising_hand:🙋:bride_with_veil:👰‍♀️
    :person_with_pouting_face::person_with_pouting_face::person_frowning::person_frowning::bow:🙇
    :couplekiss:💏:couple_with_heart:💑:massage:💆
    :haircut:💇:nail_care:💅:boy:👦
    :girl:👧:woman:👩:man:👨
    :baby:👶:older_woman:👵:older_man:👴
    :person_with_blond_hair::person_with_blond_hair::man_with_gua_pi_mao:👲:man_with_turban:👳‍♂️
    :construction_worker:👷:cop:👮:angel:👼
    :princess:👸:smiley_cat:😺:smile_cat:😸
    :heart_eyes_cat:😻:kissing_cat:😽:smirk_cat:😼
    :scream_cat:🙀:crying_cat_face:😿:joy_cat:😹
    :pouting_cat:😾:japanese_ogre:👹:japanese_goblin:👺
    :see_no_evil:🙈:hear_no_evil:🙉:speak_no_evil:🙊
    :guardsman:💂‍♂️:skull:💀:feet:🐾
    :lips:👄:kiss:💋:droplet:💧
    :ear:👂:eyes:👀:nose:👃
    :tongue:👅:love_letter:💌:bust_in_silhouette:👤
    :busts_in_silhouette:👥:speech_balloon:💬:thought_balloon:💭
    :feelsgood::feelsgood::finnadie::finnadie::goberserk::goberserk:
    :godmode::godmode::hurtrealbad::hurtrealbad::rage1::rage1:
    :rage2::rage2::rage3::rage3::rage4::rage4:
    :suspect::suspect::trollface::trollface:

    自然

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :sunny:☀️:umbrella::cloud:☁️
    :snowflake:❄️:snowman::zap:
    :cyclone:🌀:foggy:🌁:ocean:🌊
    :cat:🐱:dog:🐶:mouse:🐭
    :hamster:🐹:rabbit:🐰:wolf:🐺
    :frog:🐸:tiger:🐯:koala:🐨
    :bear:🐻:pig:🐷:pig_nose:🐽
    :cow:🐮:boar:🐗:monkey_face:🐵
    :monkey:🐒:horse:🐴:racehorse:🐎
    :camel:🐫:sheep:🐑:elephant:🐘
    :panda_face:🐼:snake:🐍:bird:🐦
    :baby_chick:🐤:hatched_chick:🐥:hatching_chick:🐣
    :chicken:🐔:penguin:🐧:turtle:🐢
    :bug:🐛:honeybee:🐝:ant:🐜
    :beetle:🪲:snail:🐌:octopus:🐙
    :tropical_fish:🐠:fish:🐟:whale:🐳
    :whale2:🐋:dolphin:🐬:cow2:🐄
    :ram:🐏:rat:🐀:water_buffalo:🐃
    :tiger2:🐅:rabbit2:🐇:dragon:🐉
    :goat:🐐:rooster:🐓:dog2:🐕
    :pig2:🐖:mouse2:🐁:ox:🐂
    :dragon_face:🐲:blowfish:🐡:crocodile:🐊
    :dromedary_camel:🐪:leopard:🐆:cat2:🐈
    :poodle:🐩:paw_prints:🐾:bouquet:💐
    :cherry_blossom:🌸:tulip:🌷:four_leaf_clover:🍀
    :rose:🌹:sunflower:🌻:hibiscus:🌺
    :maple_leaf:🍁:leaves:🍃:fallen_leaf:🍂
    :herb:🌿:mushroom:🍄:cactus:🌵
    :palm_tree:🌴:evergreen_tree:🌲:deciduous_tree:🌳
    :chestnut:🌰:seedling:🌱:blossom:🌼
    :ear_of_rice:🌾:shell:🐚:globe_with_meridians:🌐
    :sun_with_face:🌞:full_moon_with_face:🌝:new_moon_with_face:🌚
    :new_moon:🌑:waxing_crescent_moon:🌒:first_quarter_moon:🌓
    :full_moon:🌕:waning_gibbous_moon:🌖:last_quarter_moon:🌗
    :waning_crescent_moon:🌘:last_quarter_moon_with_face:🌜:first_quarter_moon_with_face:🌛
    :moon:🌔:earth_africa:🌍:earth_americas:🌎
    :earth_asia:🌏:volcano:🌋:milky_way:🌌
    :partly_sunny::octocat::octocat::squirrel::squirrel:
    :waxing_gibbous_moon:🌔

    物体

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bamboo:🎍:gift_heart:💝:dolls:🎎
    :school_satchel:🎒:mortar_board:🎓:flags:🎏
    :fireworks:🎆:sparkler:🎇:wind_chime:🎐
    :rice_scene:🎑:jack_o_lantern:🎃:ghost:👻
    :santa:🎅:christmas_tree:🎄:gift:🎁
    :bell:🔔:no_bell:🔕:tanabata_tree:🎋
    :tada:🎉:confetti_ball:🎊:balloon:🎈
    :crystal_ball:🔮:cd:💿:dvd:📀
    :floppy_disk:💾:camera:📷:video_camera:📹
    :movie_camera:🎥:computer:💻:tv:📺
    :iphone:📱:phone:☎️:telephone:☎️
    :telephone_receiver:📞:pager:📟:fax:📠
    :minidisc:💽:vhs:📼:sound:🔉
    :speaker:🔈:mute:🔇:loudspeaker:📢
    :mega:📣:hourglass::hourglass_flowing_sand:
    :alarm_clock::watch::radio:📻
    :satellite:📡:loop::mag:🔍
    :mag_right:🔎:unlock:🔓:lock:🔒
    :lock_with_ink_pen:🔏:closed_lock_with_key:🔐:key:🔑
    :bulb:💡:flashlight:🔦:high_brightness:🔆
    :low_brightness:🔅:electric_plug:🔌:battery:🔋
    :calling:📲:email:📧:mailbox:📫
    :postbox:📮:bath:🛀:bathtub:🛁
    :shower:🚿:toilet:🚽:wrench:🔧
    :nut_and_bolt:🔩:hammer:🔨:seat:💺
    :moneybag:💰:yen:💴:dollar:💵
    :pound:💷:euro:💶:credit_card:💳
    :money_with_wings:💸:e-mail:📧:inbox_tray:📥
    :outbox_tray:📤:envelope:✉️:incoming_envelope:📨
    :postal_horn:📯:mailbox_closed:📪:mailbox_with_mail:📬
    :mailbox_with_no_mail:📭:door:🚪:smoking:🚬
    :bomb:💣:gun:🔫:hocho:🔪
    :pill:💊:syringe:💉:page_facing_up:📄
    :page_with_curl:📃:bookmark_tabs:📑:bar_chart:📊
    :chart_with_upwards_trend:📈:chart_with_downwards_trend:📉:scroll:📜
    :clipboard:📋:calendar:📆:date:📅
    :card_index:📇:file_folder:📁:open_file_folder:📂
    :scissors:✂️:pushpin:📌:paperclip:📎
    :black_nib:✒️:pencil2:✏️:straight_ruler:📏
    :triangular_ruler:📐:closed_book:📕:green_book:📗
    :blue_book:📘:orange_book:📙:notebook:📓
    :notebook_with_decorative_cover:📔:ledger:📒:books:📚
    :bookmark:🔖:microscope:🔬:telescope:🔭
    :name_badge:📛:newspaper:📰:football:🏈
    :basketball:🏀:soccer::baseball:
    :tennis:🎾:8ball:🎱:rugby_football:🏉
    :bowling:🎳:golf::mountain_bicyclist:🚵
    :bicyclist:🚴:horse_racing:🏇:snowboarder:🏂
    :swimmer:🏊:surfer:🏄:ski:🎿
    :spades:♠️:hearts:♥️:clubs:♣️
    :diamonds:♦️:gem:💎:ring:💍
    :trophy:🏆:musical_score:🎼:musical_keyboard:🎹
    :violin:🎻:space_invader:👾:video_game:🎮
    :black_joker:🃏:flower_playing_cards:🎴:game_die:🎲
    :dart:🎯:mahjong:🀄:clapper:🎬
    :memo:📝:pencil:📝:book:📖
    :art:🎨:microphone:🎤:headphones:🎧
    :trumpet:🎺:saxophone:🎷:guitar:🎸
    :shoe:👞:sandal:👡:high_heel:👠
    :lipstick:💄:boot:👢:shirt:👕
    :tshirt:👕:necktie:👔:womans_clothes:👚
    :dress:👗:running_shirt_with_sash:🎽:jeans:👖
    :kimono:👘:bikini:👙:ribbon:🎀
    :tophat:🎩:crown:👑:womans_hat:👒
    :mans_shoe:👞:closed_umbrella:🌂:briefcase:💼
    :handbag:👜:pouch:👝:purse:👛
    :eyeglasses:👓:fishing_pole_and_fish:🎣:coffee:
    :tea:🍵:sake:🍶:baby_bottle:🍼
    :beer:🍺:beers:🍻:cocktail:🍸
    :tropical_drink:🍹:wine_glass:🍷:fork_and_knife:🍴
    :pizza:🍕:hamburger:🍔:fries:🍟
    :poultry_leg:🍗:meat_on_bone:🍖:spaghetti:🍝
    :curry:🍛:fried_shrimp:🍤:bento:🍱
    :sushi:🍣:fish_cake:🍥:rice_ball:🍙
    :rice_cracker:🍘:rice:🍚:ramen:🍜
    :stew:🍲:oden:🍢:dango:🍡
    :egg:🥚:bread:🍞:doughnut:🍩
    :custard:🍮:icecream:🍦:ice_cream:🍨
    :shaved_ice:🍧:birthday:🎂:cake:🍰
    :cookie:🍪:chocolate_bar:🍫:candy:🍬
    :lollipop:🍭:honey_pot:🍯:apple:🍎
    :green_apple:🍏:tangerine:🍊:lemon:🍋
    :cherries:🍒:grapes:🍇:watermelon:🍉
    :strawberry:🍓:peach:🍑:melon:🍈
    :banana:🍌:pear:🍐:pineapple:🍍
    :sweet_potato:🍠:eggplant:🍆:tomato:🍅
    :corn:🌽

    地点

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :house:🏠:house_with_garden:🏡:school:🏫
    :office:🏢:post_office:🏣:hospital:🏥
    :bank:🏦:convenience_store:🏪:love_hotel:🏩
    :hotel:🏨:wedding:💒:church:
    :department_store:🏬:european_post_office:🏤:city_sunrise:🌇
    :city_sunset:🌆:japanese_castle:🏯:european_castle:🏰
    :tent::factory:🏭:tokyo_tower:🗼
    :japan:🗾:mount_fuji:🗻:sunrise_over_mountains:🌄
    :sunrise:🌅:stars:🌠:statue_of_liberty:🗽
    :bridge_at_night:🌉:carousel_horse:🎠:rainbow:🌈
    :ferris_wheel:🎡:fountain::roller_coaster:🎢
    :ship:🚢:speedboat:🚤:boat:
    :sailboat::rowboat:🚣:anchor:
    :rocket:🚀:airplane:✈️:helicopter:🚁
    :steam_locomotive:🚂:tram:🚊:mountain_railway:🚞
    :bike:🚲:aerial_tramway:🚡:suspension_railway:🚟
    :mountain_cableway:🚠:tractor:🚜:blue_car:🚙
    :oncoming_automobile:🚘:car:🚗:red_car:🚗
    :taxi:🚕:oncoming_taxi:🚖:articulated_lorry:🚛
    :bus:🚌:oncoming_bus:🚍:rotating_light:🚨
    :police_car:🚓:oncoming_police_car:🚔:fire_engine:🚒
    :ambulance:🚑:minibus:🚐:truck:🚚
    :train:🚋:station:🚉:train2:🚆
    :bullettrain_front:🚅:bullettrain_side:🚄:light_rail:🚈
    :monorail:🚝:railway_car:🚃:trolleybus:🚎
    :ticket:🎫:fuelpump::vertical_traffic_light:🚦
    :traffic_light:🚥:warning:⚠️:construction:🚧
    :beginner:🔰:atm:🏧:slot_machine:🎰
    :busstop:🚏:barber:💈:hotsprings:♨️
    :checkered_flag:🏁:crossed_flags:🎌:izakaya_lantern:🏮
    :moyai:🗿:circus_tent:🎪:performing_arts:🎭
    :round_pushpin:📍:triangular_flag_on_post:🚩:jp:🇯🇵
    :kr:🇰🇷:cn:🇨🇳:us:🇺🇸
    :fr:🇫🇷:es:🇪🇸:it:🇮🇹
    :ru:🇷🇺:gb:🇬🇧:uk:🇬🇧
    :de:🇩🇪

    符号

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :one:1️⃣:two:2️⃣:three:3️⃣
    :four:4️⃣:five:5️⃣:six:6️⃣
    :seven:7️⃣:eight:8️⃣:nine:9️⃣
    :keycap_ten:🔟:1234:🔢:zero:0️⃣
    :hash:#️⃣:symbols:🔣:arrow_backward:◀️
    :arrow_down:⬇️:arrow_forward:▶️:arrow_left:⬅️
    :capital_abcd:🔠:abcd:🔡:abc:🔤
    :arrow_lower_left:↙️:arrow_lower_right:↘️:arrow_right:➡️
    :arrow_up:⬆️:arrow_upper_left:↖️:arrow_upper_right:↗️
    :arrow_double_down::arrow_double_up::arrow_down_small:🔽
    :arrow_heading_down:⤵️:arrow_heading_up:⤴️:leftwards_arrow_with_hook:↩️
    :arrow_right_hook:↪️:left_right_arrow:↔️:arrow_up_down:↕️
    :arrow_up_small:🔼:arrows_clockwise:🔃:arrows_counterclockwise:🔄
    :rewind::fast_forward::information_source:ℹ️
    :ok:🆗:twisted_rightwards_arrows:🔀:repeat:🔁
    :repeat_one:🔂:new:🆕:top:🔝
    :up:🆙:cool:🆒:free:🆓
    :ng:🆖:cinema:🎦:koko:🈁
    :signal_strength:📶:u5272::u5272::u5408::u5408:
    :u55b6::u55b6::u6307::u6307::u6708::u6708:
    :u6709::u6709::u6e80:🈵:u7121::u7121:
    :u7533::u7533::u7a7a::u7a7a::u7981::u7981:
    :sa:🈂️:restroom:🚻:mens:🚹
    :womens:🚺:baby_symbol:🚼:no_smoking:🚭
    :parking:🅿️:wheelchair::metro:🚇
    :baggage_claim:🛄:accept:🉑:wc:🚾
    :potable_water:🚰:put_litter_in_its_place:🚮:secret:㊙️
    :congratulations:㊗️:m:Ⓜ️:passport_control:🛂
    :left_luggage:🛅:customs:🛃:ideograph_advantage:🉐
    :cl:🆑:sos:🆘:id:🆔
    :no_entry_sign:🚫:underage:🔞:no_mobile_phones:📵
    :do_not_litter:🚯:non-potable_water:🚱:no_bicycles:🚳
    :no_pedestrians:🚷:children_crossing:🚸:no_entry:
    :eight_spoked_asterisk:✳️:eight_pointed_black_star:✴️:heart_decoration:💟
    :vs:🆚:vibration_mode:📳:mobile_phone_off:📴
    :chart:💹:currency_exchange:💱:aries:
    :taurus::gemini::cancer:
    :leo::virgo::libra:
    :scorpius::sagittarius::capricorn:
    :aquarius::pisces::ophiuchus:
    :six_pointed_star:🔯:negative_squared_cross_mark::a:🅰️
    :b:🅱️:ab:🆎:o2:🅾️
    :diamond_shape_with_a_dot_inside:💠:recycle:♻️:end:🔚
    :on:🔛:soon:🔜:clock1:🕐
    :clock130:🕜:clock10:🕙:clock1030:🕥
    :clock11:🕚:clock1130:🕦:clock12:🕛
    :clock1230:🕧:clock2:🕑:clock230:🕝
    :clock3:🕒:clock330:🕞:clock4:🕓
    :clock430:🕟:clock5:🕔:clock530:🕠
    :clock6:🕕:clock630:🕡:clock7:🕖
    :clock730:🕢:clock8:🕗:clock830:🕣
    :clock9:🕘:clock930:🕤:heavy_dollar_sign:💲
    :copyright:©️:registered:®️:tm:™️
    :x::heavy_exclamation_mark::bangbang:‼️
    :interrobang:⁉️:o::heavy_multiplication_x:✖️
    :heavy_plus_sign::heavy_minus_sign::heavy_division_sign:
    :white_flower:💮:100:💯:heavy_check_mark:✔️
    :ballot_box_with_check:☑️:radio_button:🔘:link:🔗
    :curly_loop::wavy_dash:〰️:part_alternation_mark:〽️
    :trident:🔱:black_large_square::white_large_square:
    :white_check_mark::white_square_button:🔳:black_square_button:🔲
    :black_circle::white_circle::red_circle:🔴
    :large_blue_circle:🔵:large_blue_diamond:🔷:large_orange_diamond:🔶
    :small_blue_diamond:🔹:small_orange_diamond:🔸:small_red_triangle:🔺
    :small_red_triangle_down:🔻:shipit::shipit:
    ',11);function _(h,u){const e=n("ExternalLinkIcon");return l(),c("div",null,[s,g,t("p",null,[t("strong",null,[t("a",y,[r("原文"),a(e)])])]),x])}const m=d(i,[["render",_],["__file","Best-Emoji.html.vue"]]);export{m as default}; +import{_ as d}from"./plugin-vue_export-helper-c27b6911.js";import{r as n,o as l,c,a as t,b as r,d as a,f as o}from"./app-bdf45122.js";const i={},s=t("p",null,"Emoji表情",-1),g=t("p",null,"风至万始苏",-1),y={href:"https://github.com/ventusoon/README/blob/master/emoji.md",target:"_blank",rel:"noopener noreferrer"},x=o('

    将对应emoji表情的符号码复制后输入你的markdown文本即可显示emoji表情。
    如"😊",显示为😊

    人物

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bowtie::bowtie::smile:😄:laughing:😆
    :blush:😊:smiley:😃:relaxed:☺️
    :smirk:😏:heart_eyes:😍:kissing_heart:😘
    :kissing_closed_eyes:😚:flushed:😳:relieved:😌
    :satisfied:😆:grin:😁:wink:😉
    :stuck_out_tongue_winking_eye:😜:stuck_out_tongue_closed_eyes:😝:grinning:😀
    :kissing:😗:kissing_smiling_eyes:😙:stuck_out_tongue:😛
    :sleeping:😴:worried:😟:frowning:😦
    :anguished:😧:open_mouth:😮:grimacing:😬
    :confused:😕:hushed:😯:expressionless:😑
    :unamused:😒:sweat_smile:😅:sweat:😓
    :disappointed_relieved:😥:weary:😩:pensive:😔
    :disappointed:😞:confounded:😖:fearful:😨
    :cold_sweat:😰:persevere:😣:cry:😢
    :sob:😭:joy:😂:astonished:😲
    :scream:😱:neckbeard::neckbeard::tired_face:😫
    :angry:😠:rage:😡:triumph:😤
    :sleepy:😪:yum:😋:mask:😷
    :sunglasses:😎:dizzy_face:😵:imp:👿
    :smiling_imp:😈:neutral_face:😐:no_mouth:😶
    :innocent:😇:alien:👽:yellow_heart:💛
    :blue_heart:💙:purple_heart:💜:heart:❤️
    :green_heart:💚:broken_heart:💔:heartbeat:💓
    :heartpulse:💗:two_hearts:💕:revolving_hearts:💞
    :cupid:💘:sparkling_heart:💖:sparkles:
    :star::star2:🌟:dizzy:💫
    :boom:💥:collision:💥:anger:💢
    :exclamation::question::grey_exclamation:
    :grey_question::zzz:💤:dash:💨
    :sweat_drops:💦:notes:🎶:musical_note:🎵
    :fire:🔥:hankey:💩:poop:💩
    ::💩:+1:👍:thumbsup:👍
    :-1:👎:thumbsdown:👎:ok_hand:👌
    :punch:👊:facepunch:👊:fist:
    :v:✌️:wave:👋:hand:
    :raised_hand::open_hands:👐:point_up:☝️
    :point_down:👇:point_left:👈:point_right:👉
    :raised_hands:🙌:pray:🙏:point_up_2:👆
    :clap:👏:muscle:💪:metal:🤘
    :fu:🖕:walking:🚶:runner:🏃
    :running:🏃:couple:👫:family:👪
    :two_men_holding_hands:👬:two_women_holding_hands:👭:dancer:💃
    :dancers:👯:ok_woman:🙆‍♀️:no_good:🙅
    :information_desk_person:💁:raising_hand:🙋:bride_with_veil:👰‍♀️
    :person_with_pouting_face::person_with_pouting_face::person_frowning::person_frowning::bow:🙇
    :couplekiss:💏:couple_with_heart:💑:massage:💆
    :haircut:💇:nail_care:💅:boy:👦
    :girl:👧:woman:👩:man:👨
    :baby:👶:older_woman:👵:older_man:👴
    :person_with_blond_hair::person_with_blond_hair::man_with_gua_pi_mao:👲:man_with_turban:👳‍♂️
    :construction_worker:👷:cop:👮:angel:👼
    :princess:👸:smiley_cat:😺:smile_cat:😸
    :heart_eyes_cat:😻:kissing_cat:😽:smirk_cat:😼
    :scream_cat:🙀:crying_cat_face:😿:joy_cat:😹
    :pouting_cat:😾:japanese_ogre:👹:japanese_goblin:👺
    :see_no_evil:🙈:hear_no_evil:🙉:speak_no_evil:🙊
    :guardsman:💂‍♂️:skull:💀:feet:🐾
    :lips:👄:kiss:💋:droplet:💧
    :ear:👂:eyes:👀:nose:👃
    :tongue:👅:love_letter:💌:bust_in_silhouette:👤
    :busts_in_silhouette:👥:speech_balloon:💬:thought_balloon:💭
    :feelsgood::feelsgood::finnadie::finnadie::goberserk::goberserk:
    :godmode::godmode::hurtrealbad::hurtrealbad::rage1::rage1:
    :rage2::rage2::rage3::rage3::rage4::rage4:
    :suspect::suspect::trollface::trollface:

    自然

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :sunny:☀️:umbrella::cloud:☁️
    :snowflake:❄️:snowman::zap:
    :cyclone:🌀:foggy:🌁:ocean:🌊
    :cat:🐱:dog:🐶:mouse:🐭
    :hamster:🐹:rabbit:🐰:wolf:🐺
    :frog:🐸:tiger:🐯:koala:🐨
    :bear:🐻:pig:🐷:pig_nose:🐽
    :cow:🐮:boar:🐗:monkey_face:🐵
    :monkey:🐒:horse:🐴:racehorse:🐎
    :camel:🐫:sheep:🐑:elephant:🐘
    :panda_face:🐼:snake:🐍:bird:🐦
    :baby_chick:🐤:hatched_chick:🐥:hatching_chick:🐣
    :chicken:🐔:penguin:🐧:turtle:🐢
    :bug:🐛:honeybee:🐝:ant:🐜
    :beetle:🪲:snail:🐌:octopus:🐙
    :tropical_fish:🐠:fish:🐟:whale:🐳
    :whale2:🐋:dolphin:🐬:cow2:🐄
    :ram:🐏:rat:🐀:water_buffalo:🐃
    :tiger2:🐅:rabbit2:🐇:dragon:🐉
    :goat:🐐:rooster:🐓:dog2:🐕
    :pig2:🐖:mouse2:🐁:ox:🐂
    :dragon_face:🐲:blowfish:🐡:crocodile:🐊
    :dromedary_camel:🐪:leopard:🐆:cat2:🐈
    :poodle:🐩:paw_prints:🐾:bouquet:💐
    :cherry_blossom:🌸:tulip:🌷:four_leaf_clover:🍀
    :rose:🌹:sunflower:🌻:hibiscus:🌺
    :maple_leaf:🍁:leaves:🍃:fallen_leaf:🍂
    :herb:🌿:mushroom:🍄:cactus:🌵
    :palm_tree:🌴:evergreen_tree:🌲:deciduous_tree:🌳
    :chestnut:🌰:seedling:🌱:blossom:🌼
    :ear_of_rice:🌾:shell:🐚:globe_with_meridians:🌐
    :sun_with_face:🌞:full_moon_with_face:🌝:new_moon_with_face:🌚
    :new_moon:🌑:waxing_crescent_moon:🌒:first_quarter_moon:🌓
    :full_moon:🌕:waning_gibbous_moon:🌖:last_quarter_moon:🌗
    :waning_crescent_moon:🌘:last_quarter_moon_with_face:🌜:first_quarter_moon_with_face:🌛
    :moon:🌔:earth_africa:🌍:earth_americas:🌎
    :earth_asia:🌏:volcano:🌋:milky_way:🌌
    :partly_sunny::octocat::octocat::squirrel::squirrel:
    :waxing_gibbous_moon:🌔

    物体

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bamboo:🎍:gift_heart:💝:dolls:🎎
    :school_satchel:🎒:mortar_board:🎓:flags:🎏
    :fireworks:🎆:sparkler:🎇:wind_chime:🎐
    :rice_scene:🎑:jack_o_lantern:🎃:ghost:👻
    :santa:🎅:christmas_tree:🎄:gift:🎁
    :bell:🔔:no_bell:🔕:tanabata_tree:🎋
    :tada:🎉:confetti_ball:🎊:balloon:🎈
    :crystal_ball:🔮:cd:💿:dvd:📀
    :floppy_disk:💾:camera:📷:video_camera:📹
    :movie_camera:🎥:computer:💻:tv:📺
    :iphone:📱:phone:☎️:telephone:☎️
    :telephone_receiver:📞:pager:📟:fax:📠
    :minidisc:💽:vhs:📼:sound:🔉
    :speaker:🔈:mute:🔇:loudspeaker:📢
    :mega:📣:hourglass::hourglass_flowing_sand:
    :alarm_clock::watch::radio:📻
    :satellite:📡:loop::mag:🔍
    :mag_right:🔎:unlock:🔓:lock:🔒
    :lock_with_ink_pen:🔏:closed_lock_with_key:🔐:key:🔑
    :bulb:💡:flashlight:🔦:high_brightness:🔆
    :low_brightness:🔅:electric_plug:🔌:battery:🔋
    :calling:📲:email:📧:mailbox:📫
    :postbox:📮:bath:🛀:bathtub:🛁
    :shower:🚿:toilet:🚽:wrench:🔧
    :nut_and_bolt:🔩:hammer:🔨:seat:💺
    :moneybag:💰:yen:💴:dollar:💵
    :pound:💷:euro:💶:credit_card:💳
    :money_with_wings:💸:e-mail:📧:inbox_tray:📥
    :outbox_tray:📤:envelope:✉️:incoming_envelope:📨
    :postal_horn:📯:mailbox_closed:📪:mailbox_with_mail:📬
    :mailbox_with_no_mail:📭:door:🚪:smoking:🚬
    :bomb:💣:gun:🔫:hocho:🔪
    :pill:💊:syringe:💉:page_facing_up:📄
    :page_with_curl:📃:bookmark_tabs:📑:bar_chart:📊
    :chart_with_upwards_trend:📈:chart_with_downwards_trend:📉:scroll:📜
    :clipboard:📋:calendar:📆:date:📅
    :card_index:📇:file_folder:📁:open_file_folder:📂
    :scissors:✂️:pushpin:📌:paperclip:📎
    :black_nib:✒️:pencil2:✏️:straight_ruler:📏
    :triangular_ruler:📐:closed_book:📕:green_book:📗
    :blue_book:📘:orange_book:📙:notebook:📓
    :notebook_with_decorative_cover:📔:ledger:📒:books:📚
    :bookmark:🔖:microscope:🔬:telescope:🔭
    :name_badge:📛:newspaper:📰:football:🏈
    :basketball:🏀:soccer::baseball:
    :tennis:🎾:8ball:🎱:rugby_football:🏉
    :bowling:🎳:golf::mountain_bicyclist:🚵
    :bicyclist:🚴:horse_racing:🏇:snowboarder:🏂
    :swimmer:🏊:surfer:🏄:ski:🎿
    :spades:♠️:hearts:♥️:clubs:♣️
    :diamonds:♦️:gem:💎:ring:💍
    :trophy:🏆:musical_score:🎼:musical_keyboard:🎹
    :violin:🎻:space_invader:👾:video_game:🎮
    :black_joker:🃏:flower_playing_cards:🎴:game_die:🎲
    :dart:🎯:mahjong:🀄:clapper:🎬
    :memo:📝:pencil:📝:book:📖
    :art:🎨:microphone:🎤:headphones:🎧
    :trumpet:🎺:saxophone:🎷:guitar:🎸
    :shoe:👞:sandal:👡:high_heel:👠
    :lipstick:💄:boot:👢:shirt:👕
    :tshirt:👕:necktie:👔:womans_clothes:👚
    :dress:👗:running_shirt_with_sash:🎽:jeans:👖
    :kimono:👘:bikini:👙:ribbon:🎀
    :tophat:🎩:crown:👑:womans_hat:👒
    :mans_shoe:👞:closed_umbrella:🌂:briefcase:💼
    :handbag:👜:pouch:👝:purse:👛
    :eyeglasses:👓:fishing_pole_and_fish:🎣:coffee:
    :tea:🍵:sake:🍶:baby_bottle:🍼
    :beer:🍺:beers:🍻:cocktail:🍸
    :tropical_drink:🍹:wine_glass:🍷:fork_and_knife:🍴
    :pizza:🍕:hamburger:🍔:fries:🍟
    :poultry_leg:🍗:meat_on_bone:🍖:spaghetti:🍝
    :curry:🍛:fried_shrimp:🍤:bento:🍱
    :sushi:🍣:fish_cake:🍥:rice_ball:🍙
    :rice_cracker:🍘:rice:🍚:ramen:🍜
    :stew:🍲:oden:🍢:dango:🍡
    :egg:🥚:bread:🍞:doughnut:🍩
    :custard:🍮:icecream:🍦:ice_cream:🍨
    :shaved_ice:🍧:birthday:🎂:cake:🍰
    :cookie:🍪:chocolate_bar:🍫:candy:🍬
    :lollipop:🍭:honey_pot:🍯:apple:🍎
    :green_apple:🍏:tangerine:🍊:lemon:🍋
    :cherries:🍒:grapes:🍇:watermelon:🍉
    :strawberry:🍓:peach:🍑:melon:🍈
    :banana:🍌:pear:🍐:pineapple:🍍
    :sweet_potato:🍠:eggplant:🍆:tomato:🍅
    :corn:🌽

    地点

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :house:🏠:house_with_garden:🏡:school:🏫
    :office:🏢:post_office:🏣:hospital:🏥
    :bank:🏦:convenience_store:🏪:love_hotel:🏩
    :hotel:🏨:wedding:💒:church:
    :department_store:🏬:european_post_office:🏤:city_sunrise:🌇
    :city_sunset:🌆:japanese_castle:🏯:european_castle:🏰
    :tent::factory:🏭:tokyo_tower:🗼
    :japan:🗾:mount_fuji:🗻:sunrise_over_mountains:🌄
    :sunrise:🌅:stars:🌠:statue_of_liberty:🗽
    :bridge_at_night:🌉:carousel_horse:🎠:rainbow:🌈
    :ferris_wheel:🎡:fountain::roller_coaster:🎢
    :ship:🚢:speedboat:🚤:boat:
    :sailboat::rowboat:🚣:anchor:
    :rocket:🚀:airplane:✈️:helicopter:🚁
    :steam_locomotive:🚂:tram:🚊:mountain_railway:🚞
    :bike:🚲:aerial_tramway:🚡:suspension_railway:🚟
    :mountain_cableway:🚠:tractor:🚜:blue_car:🚙
    :oncoming_automobile:🚘:car:🚗:red_car:🚗
    :taxi:🚕:oncoming_taxi:🚖:articulated_lorry:🚛
    :bus:🚌:oncoming_bus:🚍:rotating_light:🚨
    :police_car:🚓:oncoming_police_car:🚔:fire_engine:🚒
    :ambulance:🚑:minibus:🚐:truck:🚚
    :train:🚋:station:🚉:train2:🚆
    :bullettrain_front:🚅:bullettrain_side:🚄:light_rail:🚈
    :monorail:🚝:railway_car:🚃:trolleybus:🚎
    :ticket:🎫:fuelpump::vertical_traffic_light:🚦
    :traffic_light:🚥:warning:⚠️:construction:🚧
    :beginner:🔰:atm:🏧:slot_machine:🎰
    :busstop:🚏:barber:💈:hotsprings:♨️
    :checkered_flag:🏁:crossed_flags:🎌:izakaya_lantern:🏮
    :moyai:🗿:circus_tent:🎪:performing_arts:🎭
    :round_pushpin:📍:triangular_flag_on_post:🚩:jp:🇯🇵
    :kr:🇰🇷:cn:🇨🇳:us:🇺🇸
    :fr:🇫🇷:es:🇪🇸:it:🇮🇹
    :ru:🇷🇺:gb:🇬🇧:uk:🇬🇧
    :de:🇩🇪

    符号

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :one:1️⃣:two:2️⃣:three:3️⃣
    :four:4️⃣:five:5️⃣:six:6️⃣
    :seven:7️⃣:eight:8️⃣:nine:9️⃣
    :keycap_ten:🔟:1234:🔢:zero:0️⃣
    :hash:#️⃣:symbols:🔣:arrow_backward:◀️
    :arrow_down:⬇️:arrow_forward:▶️:arrow_left:⬅️
    :capital_abcd:🔠:abcd:🔡:abc:🔤
    :arrow_lower_left:↙️:arrow_lower_right:↘️:arrow_right:➡️
    :arrow_up:⬆️:arrow_upper_left:↖️:arrow_upper_right:↗️
    :arrow_double_down::arrow_double_up::arrow_down_small:🔽
    :arrow_heading_down:⤵️:arrow_heading_up:⤴️:leftwards_arrow_with_hook:↩️
    :arrow_right_hook:↪️:left_right_arrow:↔️:arrow_up_down:↕️
    :arrow_up_small:🔼:arrows_clockwise:🔃:arrows_counterclockwise:🔄
    :rewind::fast_forward::information_source:ℹ️
    :ok:🆗:twisted_rightwards_arrows:🔀:repeat:🔁
    :repeat_one:🔂:new:🆕:top:🔝
    :up:🆙:cool:🆒:free:🆓
    :ng:🆖:cinema:🎦:koko:🈁
    :signal_strength:📶:u5272::u5272::u5408::u5408:
    :u55b6::u55b6::u6307::u6307::u6708::u6708:
    :u6709::u6709::u6e80:🈵:u7121::u7121:
    :u7533::u7533::u7a7a::u7a7a::u7981::u7981:
    :sa:🈂️:restroom:🚻:mens:🚹
    :womens:🚺:baby_symbol:🚼:no_smoking:🚭
    :parking:🅿️:wheelchair::metro:🚇
    :baggage_claim:🛄:accept:🉑:wc:🚾
    :potable_water:🚰:put_litter_in_its_place:🚮:secret:㊙️
    :congratulations:㊗️:m:Ⓜ️:passport_control:🛂
    :left_luggage:🛅:customs:🛃:ideograph_advantage:🉐
    :cl:🆑:sos:🆘:id:🆔
    :no_entry_sign:🚫:underage:🔞:no_mobile_phones:📵
    :do_not_litter:🚯:non-potable_water:🚱:no_bicycles:🚳
    :no_pedestrians:🚷:children_crossing:🚸:no_entry:
    :eight_spoked_asterisk:✳️:eight_pointed_black_star:✴️:heart_decoration:💟
    :vs:🆚:vibration_mode:📳:mobile_phone_off:📴
    :chart:💹:currency_exchange:💱:aries:
    :taurus::gemini::cancer:
    :leo::virgo::libra:
    :scorpius::sagittarius::capricorn:
    :aquarius::pisces::ophiuchus:
    :six_pointed_star:🔯:negative_squared_cross_mark::a:🅰️
    :b:🅱️:ab:🆎:o2:🅾️
    :diamond_shape_with_a_dot_inside:💠:recycle:♻️:end:🔚
    :on:🔛:soon:🔜:clock1:🕐
    :clock130:🕜:clock10:🕙:clock1030:🕥
    :clock11:🕚:clock1130:🕦:clock12:🕛
    :clock1230:🕧:clock2:🕑:clock230:🕝
    :clock3:🕒:clock330:🕞:clock4:🕓
    :clock430:🕟:clock5:🕔:clock530:🕠
    :clock6:🕕:clock630:🕡:clock7:🕖
    :clock730:🕢:clock8:🕗:clock830:🕣
    :clock9:🕘:clock930:🕤:heavy_dollar_sign:💲
    :copyright:©️:registered:®️:tm:™️
    :x::heavy_exclamation_mark::bangbang:‼️
    :interrobang:⁉️:o::heavy_multiplication_x:✖️
    :heavy_plus_sign::heavy_minus_sign::heavy_division_sign:
    :white_flower:💮:100:💯:heavy_check_mark:✔️
    :ballot_box_with_check:☑️:radio_button:🔘:link:🔗
    :curly_loop::wavy_dash:〰️:part_alternation_mark:〽️
    :trident:🔱:black_large_square::white_large_square:
    :white_check_mark::white_square_button:🔳:black_square_button:🔲
    :black_circle::white_circle::red_circle:🔴
    :large_blue_circle:🔵:large_blue_diamond:🔷:large_orange_diamond:🔶
    :small_blue_diamond:🔹:small_orange_diamond:🔸:small_red_triangle:🔺
    :small_red_triangle_down:🔻:shipit::shipit:
    ',11);function _(h,u){const e=n("ExternalLinkIcon");return l(),c("div",null,[s,g,t("p",null,[t("strong",null,[t("a",y,[r("原文"),a(e)])])]),x])}const m=d(i,[["render",_],["__file","Best-Emoji.html.vue"]]);export{m as default}; diff --git a/assets/ChatGPT-Porxy.html-1f69656f.js b/assets/ChatGPT-Porxy.html-1f69656f.js deleted file mode 100644 index 8694e034..00000000 --- a/assets/ChatGPT-Porxy.html-1f69656f.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-4e9249a7","path":"/zh/posts/Server/ChatGPT-Porxy.html","title":"ChatGPT-Porxy","lang":"zh-CN","frontmatter":{"title":"ChatGPT-Porxy","date":"2023-04-20T10:43:00.000Z","author":"Ven2s","summary":"***自建ChatGPT反向代理***","tag":["ChatGPT"],"description":"Build ChatGPT Reverse Proxy ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。","head":[["link",{"rel":"alternate","hreflang":"zh-tw","href":"https://luvsia.com/posts/Server/ChatGPT-Porxy.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/zh/posts/Server/ChatGPT-Porxy.html"}],["meta",{"property":"og:site_name","content":"风至万始苏"}],["meta",{"property":"og:title","content":"ChatGPT-Porxy"}],["meta",{"property":"og:description","content":"Build ChatGPT Reverse Proxy ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"zh-TW"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"ChatGPT"}],["meta",{"property":"article:published_time","content":"2023-04-20T10:43:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"ChatGPT-Porxy\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2023-04-20T10:43:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\"}]}"]]},"headers":[{"level":2,"title":"搭建步骤","slug":"搭建步骤","link":"#搭建步骤","children":[{"level":3,"title":"一、安装 Docker 及 Docker-compose","slug":"一、安装-docker-及-docker-compose","link":"#一、安装-docker-及-docker-compose","children":[]},{"level":3,"title":"二、安装 go-chatgpt-api","slug":"二、安装-go-chatgpt-api","link":"#二、安装-go-chatgpt-api","children":[]},{"level":3,"title":"三、使用自建反代","slug":"三、使用自建反代","link":"#三、使用自建反代","children":[]}]},{"level":2,"title":"完工","slug":"完工","link":"#完工","children":[]},{"level":2,"title":"本教程来源:","slug":"本教程来源","link":"#本教程来源","children":[]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":1.71,"words":513},"filePathRelative":"zh/posts/Server/ChatGPT-Porxy.md","localizedDate":"2023年4月20日","excerpt":"
    \\n

    Build ChatGPT Reverse Proxy

    \\n
    \\n","autoDesc":true}');export{e as data}; diff --git a/assets/ChatGPT-Porxy.html-b8c4b268.js b/assets/ChatGPT-Porxy.html-ba736115.js similarity index 99% rename from assets/ChatGPT-Porxy.html-b8c4b268.js rename to assets/ChatGPT-Porxy.html-ba736115.js index f5adc22d..48927450 100644 --- a/assets/ChatGPT-Porxy.html-b8c4b268.js +++ b/assets/ChatGPT-Porxy.html-ba736115.js @@ -1,4 +1,4 @@ -import{_ as l}from"./1-2e05d854.js";import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{r as o,o as r,c,a as e,b as n,d as s,f as i}from"./app-a79373b4.js";const d={},p=e("blockquote",null,[e("p",null,[e("em",null,[e("strong",null,"Build ChatGPT Reverse Proxy")])])],-1),u=e("em",null,"ChatGPT-Web",-1),m={href:"https://github.com/linweiyuan/go-chatgpt-api",target:"_blank",rel:"noopener noreferrer"},v=e("img",{src:"https://img.shields.io/badge/github-go--chatgpt--api-pink",alt:"",loading:"lazy"},null,-1),h=i(`

    搭建步骤

    一、安装 DockerDocker-compose

    #更新、安装必备软件
    +import{_ as l}from"./1-2e05d854.js";import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{r as o,o as r,c,a as e,b as n,d as s,f as i}from"./app-bdf45122.js";const d={},p=e("blockquote",null,[e("p",null,[e("em",null,[e("strong",null,"Build ChatGPT Reverse Proxy")])])],-1),u=e("em",null,"ChatGPT-Web",-1),m={href:"https://github.com/linweiyuan/go-chatgpt-api",target:"_blank",rel:"noopener noreferrer"},v=e("img",{src:"https://img.shields.io/badge/github-go--chatgpt--api-pink",alt:"",loading:"lazy"},null,-1),h=i(`

    搭建步骤

    一、安装 DockerDocker-compose

    • 安装 Docker
    #更新、安装必备软件
     
     apt-get update && apt-get install -y wget nano
     
    diff --git a/assets/ChatGPT-Porxy.html-cfe3314c.js b/assets/ChatGPT-Porxy.html-cfe3314c.js
    new file mode 100644
    index 00000000..cc2f992b
    --- /dev/null
    +++ b/assets/ChatGPT-Porxy.html-cfe3314c.js
    @@ -0,0 +1 @@
    +const e=JSON.parse('{"key":"v-4e9249a7","path":"/zh/posts/Server/ChatGPT-Porxy.html","title":"ChatGPT-Porxy","lang":"zh-CN","frontmatter":{"title":"ChatGPT-Porxy","date":"2023-04-20T10:43:00.000Z","author":"Ven2s","summary":"***自建ChatGPT反向代理***","tag":["ChatGPT"],"description":"Build ChatGPT Reverse Proxy ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。","head":[["meta",{"property":"og:url","content":"https://luvsia.com/zh/posts/Server/ChatGPT-Porxy.html"}],["meta",{"property":"og:site_name","content":"风至万始苏"}],["meta",{"property":"og:title","content":"ChatGPT-Porxy"}],["meta",{"property":"og:description","content":"Build ChatGPT Reverse Proxy ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"ChatGPT"}],["meta",{"property":"article:published_time","content":"2023-04-20T10:43:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"ChatGPT-Porxy\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2023-04-20T10:43:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\"}]}"]]},"headers":[{"level":2,"title":"搭建步骤","slug":"搭建步骤","link":"#搭建步骤","children":[{"level":3,"title":"一、安装 Docker 及 Docker-compose","slug":"一、安装-docker-及-docker-compose","link":"#一、安装-docker-及-docker-compose","children":[]},{"level":3,"title":"二、安装 go-chatgpt-api","slug":"二、安装-go-chatgpt-api","link":"#二、安装-go-chatgpt-api","children":[]},{"level":3,"title":"三、使用自建反代","slug":"三、使用自建反代","link":"#三、使用自建反代","children":[]}]},{"level":2,"title":"完工","slug":"完工","link":"#完工","children":[]},{"level":2,"title":"本教程来源:","slug":"本教程来源","link":"#本教程来源","children":[]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":1.71,"words":513},"filePathRelative":"zh/posts/Server/ChatGPT-Porxy.md","localizedDate":"2023年4月20日","excerpt":"
    \\n

    Build ChatGPT Reverse Proxy

    \\n
    \\n
      \\n
    • ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 \\"\\" 来解决代理问题。
    • \\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/ChatGPT-Porxy.html-de97ded1.js b/assets/ChatGPT-Porxy.html-de97ded1.js deleted file mode 100644 index a159b406..00000000 --- a/assets/ChatGPT-Porxy.html-de97ded1.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-35da9c94","path":"/posts/Server/ChatGPT-Porxy.html","title":"ChatGPT-Porxy","lang":"zh-TW","frontmatter":{"title":"ChatGPT-Porxy","date":"2023-04-20T10:43:00.000Z","author":"Ven2s","summary":"***自建ChatGPT反向代理***","tag":["ChatGPT"],"description":"Build ChatGPT Reverse Proxy ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://luvsia.com/zh/posts/Server/ChatGPT-Porxy.html"}],["meta",{"property":"og:url","content":"https://luvsia.com/posts/Server/ChatGPT-Porxy.html"}],["meta",{"property":"og:site_name","content":"風至萬始蘇"}],["meta",{"property":"og:title","content":"ChatGPT-Porxy"}],["meta",{"property":"og:description","content":"Build ChatGPT Reverse Proxy ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-TW"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-10-27T18:37:19.000Z"}],["meta",{"property":"article:author","content":"Ven2s"}],["meta",{"property":"article:tag","content":"ChatGPT"}],["meta",{"property":"article:published_time","content":"2023-04-20T10:43:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-10-27T18:37:19.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"ChatGPT-Porxy\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2023-04-20T10:43:00.000Z\\",\\"dateModified\\":\\"2023-10-27T18:37:19.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Ven2s\\"}]}"]]},"headers":[{"level":2,"title":"搭建步骤","slug":"搭建步骤","link":"#搭建步骤","children":[{"level":3,"title":"一、安装 Docker 及 Docker-compose","slug":"一、安装-docker-及-docker-compose","link":"#一、安装-docker-及-docker-compose","children":[]},{"level":3,"title":"二、安装 go-chatgpt-api","slug":"二、安装-go-chatgpt-api","link":"#二、安装-go-chatgpt-api","children":[]},{"level":3,"title":"三、使用自建反代","slug":"三、使用自建反代","link":"#三、使用自建反代","children":[]}]},{"level":2,"title":"完工","slug":"完工","link":"#完工","children":[]},{"level":2,"title":"本教程来源:","slug":"本教程来源","link":"#本教程来源","children":[]}],"git":{"createdTime":1698431839000,"updatedTime":1698431839000,"contributors":[{"name":"ventusoon","email":"sia@ik.me","commits":1}]},"readingTime":{"minutes":1.71,"words":513},"filePathRelative":"posts/Server/ChatGPT-Porxy.md","localizedDate":"2023年4月20日","excerpt":"
    \\n

    Build ChatGPT Reverse Proxy

    \\n
    \\n
      \\n
    • ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 \\"\\" 来解决代理问题。
    • \\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/DDNS.html-6831b75f.js b/assets/DDNS.html-6831b75f.js deleted file mode 100644 index fe3c567c..00000000 --- a/assets/DDNS.html-6831b75f.js +++ /dev/null @@ -1,3 +0,0 @@ -import{_ as s}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o as a,c as r,a as e,d as o,b as n,f as t}from"./app-a79373b4.js";const c="/images/DDNS/Z.jpg",d="/images/DDNS/B.jpg",m="/images/DDNS/0.jpg",u="/images/DDNS/1.png",_="/images/DDNS/2.png",g="/images/DDNS/3.png",p="/images/DDNS/4.png",h="/images/DDNS/5.png",D="/images/DDNS/6.png",f="/images/DDNS/7.png",b="/images/DDNS/8.png",N="/images/DDNS/9.png",S="/images/DDNS/10.png",v={},k=e("blockquote",null,[e("p",null,[e("em",null,[e("strong",null,"Using DDNS and Port forwarding to achieve remote access to devices on an internal network")])])],-1),P=e("h1",{id:"前言",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#前言","aria-hidden":"true"},"#"),n(" 前言")],-1),x=t('
  • 最近迷上了AI画图软件 stable-diffusion-webui ,由于它对 GPU 的依赖很大,我只能使用家里的电脑来炼丹(也就一张6年前的1060😥),奈何又在外地上班,只能走进了我一直望而却步的动态域名解析服务,来实现远程控制家中电脑,以及其他网络设备的目的。

    Z
    D
    B

  • 写本篇教程(备忘录),一是彰显成就感,二是带给大家一些思路,让有相同需求的朋友少走弯路(毕竟我找了很多教程都没有说清楚DDNS到底是个什么,又要怎么使用)。

  • ',2),I={href:"https://baike.baidu.com/item/ddns/670146",target:"_blank",rel:"noopener noreferrer"},y=e("em",null,"DDNS",-1),z=e("em",null,"Dynamic Domain Name Server",-1),G=e("code",null,"ipv4",-1),A={href:"https://www.cloudflare.com/",target:"_blank",rel:"noopener noreferrer"},O=e("em",null,"Cloudflare",-1),C={href:"https://github.com/jeessy2/ddns-go",target:"_blank",rel:"noopener noreferrer"},E=e("em",null,"DDNS-GO",-1),w={href:"https://baike.baidu.com/item/%E5%85%AC%E7%BD%91IP",target:"_blank",rel:"noopener noreferrer"},B=e("em",null,"IP",-1),V=e("em",null,[e("code",null,"IP")],-1),j=e("figure",null,[e("img",{src:u,alt:"RDP",tabindex:"0",loading:"lazy"}),e("figcaption",null,"可以看到这里的延迟十分之低")],-1),T=t('

    开工

    • 开始之前先简单说下我家里的网络布局,弱电箱一个光猫桥接模式,一个主路由负责拨号,卧室一个 K2P 路由 ap 模式,一个旧笔记本电脑充当软路由(旁路由),安装了 PVEPVE 上使用了 openWRT,还有一台台式电脑,忘了在 visio 上画出来。

      网络布局
      网络布局图
    • 不要问我为什么不在 openWRTDHCP ,我试了很多次都无法联网,可能是因为网口绑定了 MAC 地址,我也不知道怎么取消绑定,所以我只能在主路由上绑定我电脑的 MAC 才能上网。(可能也不是这个原因,我在 openWRT 上绑定 WAN 口地址也不能上网。)我家的网络环境真的太复杂了😥

    正式开始

    ',3),R={href:"https://github.com/jeessy2/ddns-go/releases",target:"_blank",rel:"noopener noreferrer"},W=e("em",null,[e("code",null,"DDNS-GO")],-1),L=t(`

    安装

    .\\ddns-go.exe -s install
    -

    卸载

    .\\ddns-go.exe -s uninstall
    -
    DDNS-GO
    DDNS-GO
    ',5),M=e("li",null,[e("p",null,[e("strong",null,[n("安装好后,在服务中可以看到 "),e("em",null,[e("code",null,"ddns-go")]),n(" 服务,并设置自启动")])]),e("figure",null,[e("img",{src:p,alt:"DDNS-GO服务",tabindex:"0",loading:"lazy"}),e("figcaption",null,"DDNS-GO服务开启")])],-1),U={href:"http://127.0.0.1:9876",target:"_blank",rel:"noopener noreferrer"},Z=e("em",null,[e("code",null,"http://127.0.0.1:9876")],-1),q=e("em",null,[e("code",null,"ddns-go")],-1),F=e("figure",null,[e("img",{src:h,alt:"DDNS-GO配置1",tabindex:"0",loading:"lazy"}),e("figcaption",null,"DDNS-GO页面")],-1),H=t('
  • cloudflare 获取 API 令牌既上图中的 Token ,重点注意区域资源要选所有区域

    cloudflare配置1
    cloudflare配置2

  • ',1),K=e("em",null,[e("code",null,"DDNS-GO")],-1),J=e("em",null,[e("code",null,"IPv4")],-1),Q=e("em",null,[e("code",null,"IPv6")],-1),X=e("code",null,"域名",-1),Y=e("em",null,[e("code",null,"IPv6")],-1),$={href:"https://cf-ns.com/cdn-cgi/trace",target:"_blank",rel:"noopener noreferrer"},ee=e("em",null,[e("code",null,"IP")],-1),ne=e("p",null,[e("img",{src:b,alt:"DDNS-GO配置2",title:"IPv4",loading:"lazy"}),e("br"),e("img",{src:N,alt:"DDNS-GO配置3",title:"IPv6",loading:"lazy"}),e("br"),e("img",{src:S,alt:"DDNS-GO配置4",title:"选择是否外网连接,以及设置访问账号密码",loading:"lazy"})],-1),le=e("li",null,[e("p",null,[e("strong",null,[n("点击保存后,成功后,你会在 "),e("em",null,"Cloudflare"),n(" 上你的域名 "),e("em",null,[e("code",null,"dns")]),n(" 服务中看到你已经解析了的A记录(IPv4地址)或者AAAA记录(IPv6地址),"),e("em",null,[e("code",null,"ddns-go")]),n(" 中你也可以看到解析成功的提示")])])],-1),oe=e("li",null,[e("p",null,[e("strong",null,"到此,你终于成功解析你的动态IP,在主路由、旁路由上设置好端口转发服务,就可以随时随地访问家中的设备。")])],-1),te=e("h2",{id:"抽时间-再把如何有效的进行端口转发记录下来-以防我这个狗脑子又忘了",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#抽时间-再把如何有效的进行端口转发记录下来-以防我这个狗脑子又忘了","aria-hidden":"true"},"#"),n(" 抽时间,再把如何有效的进行端口转发记录下来,以防我这个狗脑子又忘了")],-1);function se(ie,ae){const l=i("ExternalLinkIcon");return a(),r("div",null,[k,P,e("ul",null,[x,e("li",null,[e("p",null,[e("a",I,[y,o(l)]),n("(全名:"),z,n("),动态域名服务,说人话就是将家中内网的动态 "),G,n(" 地址映射到一个固定的域名解析服务上。")])]),e("li",null,[e("p",null,[e("a",A,[O,o(l)]),n(" 全球知名的DNS服务商。")])]),e("li",null,[e("p",null,[e("a",C,[E,o(l)]),n(" 超好用的DDNS解析服务工具。感谢作者大大解决了我最关键的问题。")])]),e("li",null,[e("p",null,[e("a",w,[n("公网 "),B,o(l)]),n(" 不得不说电信的服务水平,半天时间真就给我开通了,这里就不说这玩意儿怎么用了,接触网络的人基本都知道,虽然现在有很多办法可以绕过公网 "),V,n(" 来访问内网,但是通过我的测试,用了很多的远程连接服务和内网穿透工具,还是最原始的办法性价比更高,体验更是一流。")]),j])]),T,e("ul",null,[e("li",null,[e("strong",null,[n("下载"),e("a",R,[W,o(l)]),n("到本地并解压,使用管理员权限CD到根目录")])])]),L,e("ul",null,[M,e("li",null,[e("p",null,[e("strong",null,[n("打开 "),e("a",U,[Z,o(l)]),n(",可以看到 "),q,n(" 支持很多家动态解析服务商")])]),F]),H,e("li",null,[e("p",null,[e("strong",null,[n("回到 "),K,n(" 中如下图,像我一样配置即可,有公网的只勾选 "),J,n(" ,没有公网的选 "),Q,n(" (我两个都有,所以都选了,你也可以,经测试无伤大雅),在主机名后面填上你的"),X,n("。至于如何获得 "),Y,n(" ,这个我下次再做一个详细的教程。(推荐一个好用的"),e("a",$,[n("CF国内API"),o(l)]),n(",可以准确获取你的 "),ee,n(" 本地地址,无论你是否使用科学上网工具)")])]),ne]),le,oe]),te])}const de=s(v,[["render",se],["__file","DDNS.html.vue"]]);export{de as default}; diff --git a/assets/DDNS.html-cf95369f.js b/assets/DDNS.html-cf95369f.js new file mode 100644 index 00000000..306f01bf --- /dev/null +++ b/assets/DDNS.html-cf95369f.js @@ -0,0 +1,3 @@ +import{_ as s,a,b as i,c as r,d,e as c,f as u,g as _,h as m,i as p,j as h,k as g,l as f}from"./10-4225b4c6.js";import{_ as b}from"./plugin-vue_export-helper-c27b6911.js";import{r as D,o as v,c as k,a as e,d as o,b as l,f as t}from"./app-bdf45122.js";const N={},P=e("blockquote",null,[e("p",null,[e("em",null,[e("strong",null,"Using DDNS and Port forwarding to achieve remote access to devices on an internal network")])])],-1),S=e("h1",{id:"前言",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#前言","aria-hidden":"true"},"#"),l(" 前言")],-1),x=t('
  • 最近迷上了AI画图软件 stable-diffusion-webui ,由于它对 GPU 的依赖很大,我只能使用家里的电脑来炼丹(也就一张6年前的1060😥),奈何又在外地上班,只能走进了我一直望而却步的动态域名解析服务,来实现远程控制家中电脑,以及其他网络设备的目的。

    Z
    D
    B

  • 写本篇教程(备忘录),一是彰显成就感,二是带给大家一些思路,让有相同需求的朋友少走弯路(毕竟我找了很多教程都没有说清楚DDNS到底是个什么,又要怎么使用)。

  • ',2),I={href:"https://baike.baidu.com/item/ddns/670146",target:"_blank",rel:"noopener noreferrer"},y=e("em",null,"DDNS",-1),z=e("em",null,"Dynamic Domain Name Server",-1),G=e("code",null,"ipv4",-1),A={href:"https://www.cloudflare.com/",target:"_blank",rel:"noopener noreferrer"},O=e("em",null,"Cloudflare",-1),C={href:"https://github.com/jeessy2/ddns-go",target:"_blank",rel:"noopener noreferrer"},E=e("em",null,"DDNS-GO",-1),w={href:"https://baike.baidu.com/item/%E5%85%AC%E7%BD%91IP",target:"_blank",rel:"noopener noreferrer"},V=e("em",null,"IP",-1),B=e("em",null,[e("code",null,"IP")],-1),T=e("figure",null,[e("img",{src:s,alt:"RDP",tabindex:"0",loading:"lazy"}),e("figcaption",null,"可以看到这里的延迟十分之低")],-1),R=t('

    开工

    • 开始之前先简单说下我家里的网络布局,弱电箱一个光猫桥接模式,一个主路由负责拨号,卧室一个 K2P 路由 ap 模式,一个旧笔记本电脑充当软路由(旁路由),安装了 PVEPVE 上使用了 openWRT,还有一台台式电脑,忘了在 visio 上画出来。

      网络布局
      网络布局图
    • 不要问我为什么不在 openWRTDHCP ,我试了很多次都无法联网,可能是因为网口绑定了 MAC 地址,我也不知道怎么取消绑定,所以我只能在主路由上绑定我电脑的 MAC 才能上网。(可能也不是这个原因,我在 openWRT 上绑定 WAN 口地址也不能上网。)我家的网络环境真的太复杂了😥

    正式开始

    ',3),W={href:"https://github.com/jeessy2/ddns-go/releases",target:"_blank",rel:"noopener noreferrer"},j=e("em",null,[e("code",null,"DDNS-GO")],-1),L=t(`

    安装

    .\\ddns-go.exe -s install
    +

    卸载

    .\\ddns-go.exe -s uninstall
    +
    DDNS-GO
    DDNS-GO
    ',5),M=e("li",null,[e("p",null,[e("strong",null,[l("安装好后,在服务中可以看到 "),e("em",null,[e("code",null,"ddns-go")]),l(" 服务,并设置自启动")])]),e("figure",null,[e("img",{src:a,alt:"DDNS-GO服务",tabindex:"0",loading:"lazy"}),e("figcaption",null,"DDNS-GO服务开启")])],-1),U={href:"http://127.0.0.1:9876",target:"_blank",rel:"noopener noreferrer"},q=e("em",null,[e("code",null,"http://127.0.0.1:9876")],-1),F=e("em",null,[e("code",null,"ddns-go")],-1),H=e("figure",null,[e("img",{src:i,alt:"DDNS-GO配置1",tabindex:"0",loading:"lazy"}),e("figcaption",null,"DDNS-GO页面")],-1),K=t('
  • cloudflare 获取 API 令牌既上图中的 Token ,重点注意区域资源要选所有区域

    cloudflare配置1
    cloudflare配置2

  • ',1),Z=e("em",null,[e("code",null,"DDNS-GO")],-1),J=e("em",null,[e("code",null,"IPv4")],-1),Q=e("em",null,[e("code",null,"IPv6")],-1),X=e("code",null,"域名",-1),Y=e("em",null,[e("code",null,"IPv6")],-1),$={href:"https://cf-ns.com/cdn-cgi/trace",target:"_blank",rel:"noopener noreferrer"},ee=e("em",null,[e("code",null,"IP")],-1),le=e("p",null,[e("img",{src:r,alt:"DDNS-GO配置2",title:"IPv4",loading:"lazy"}),e("br"),e("img",{src:d,alt:"DDNS-GO配置3",title:"IPv6",loading:"lazy"}),e("br"),e("img",{src:c,alt:"DDNS-GO配置4",title:"选择是否外网连接,以及设置访问账号密码",loading:"lazy"})],-1),ne=e("li",null,[e("p",null,[e("strong",null,[l("点击保存后,成功后,你会在 "),e("em",null,"Cloudflare"),l(" 上你的域名 "),e("em",null,[e("code",null,"dns")]),l(" 服务中看到你已经解析了的A记录(IPv4地址)或者AAAA记录(IPv6地址),"),e("em",null,[e("code",null,"ddns-go")]),l(" 中你也可以看到解析成功的提示")])])],-1),oe=e("li",null,[e("p",null,[e("strong",null,"到此,你终于成功解析你的动态IP,在主路由、旁路由上设置好端口转发服务,就可以随时随地访问家中的设备。")])],-1),te=e("h2",{id:"抽时间-再把如何有效的进行端口转发记录下来-以防我这个狗脑子又忘了",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#抽时间-再把如何有效的进行端口转发记录下来-以防我这个狗脑子又忘了","aria-hidden":"true"},"#"),l(" 抽时间,再把如何有效的进行端口转发记录下来,以防我这个狗脑子又忘了")],-1);function se(ae,ie){const n=D("ExternalLinkIcon");return v(),k("div",null,[P,S,e("ul",null,[x,e("li",null,[e("p",null,[e("a",I,[y,o(n)]),l("(全名:"),z,l("),动态域名服务,说人话就是将家中内网的动态 "),G,l(" 地址映射到一个固定的域名解析服务上。")])]),e("li",null,[e("p",null,[e("a",A,[O,o(n)]),l(" 全球知名的DNS服务商。")])]),e("li",null,[e("p",null,[e("a",C,[E,o(n)]),l(" 超好用的DDNS解析服务工具。感谢作者大大解决了我最关键的问题。")])]),e("li",null,[e("p",null,[e("a",w,[l("公网 "),V,o(n)]),l(" 不得不说电信的服务水平,半天时间真就给我开通了,这里就不说这玩意儿怎么用了,接触网络的人基本都知道,虽然现在有很多办法可以绕过公网 "),B,l(" 来访问内网,但是通过我的测试,用了很多的远程连接服务和内网穿透工具,还是最原始的办法性价比更高,体验更是一流。")]),T])]),R,e("ul",null,[e("li",null,[e("strong",null,[l("下载"),e("a",W,[j,o(n)]),l("到本地并解压,使用管理员权限CD到根目录")])])]),L,e("ul",null,[M,e("li",null,[e("p",null,[e("strong",null,[l("打开 "),e("a",U,[q,o(n)]),l(",可以看到 "),F,l(" 支持很多家动态解析服务商")])]),H]),K,e("li",null,[e("p",null,[e("strong",null,[l("回到 "),Z,l(" 中如下图,像我一样配置即可,有公网的只勾选 "),J,l(" ,没有公网的选 "),Q,l(" (我两个都有,所以都选了,你也可以,经测试无伤大雅),在主机名后面填上你的"),X,l("。至于如何获得 "),Y,l(" ,这个我下次再做一个详细的教程。(推荐一个好用的"),e("a",$,[l("CF国内API"),o(n)]),l(",可以准确获取你的 "),ee,l(" 本地地址,无论你是否使用科学上网工具)")])]),le]),ne,oe]),te])}const ue=b(N,[["render",se],["__file","DDNS.html.vue"]]);export{ue as default}; diff --git a/assets/Everything.Search.Window-f42390fc.js b/assets/Everything.Search.Window-f42390fc.js new file mode 100644 index 00000000..83883737 --- /dev/null +++ b/assets/Everything.Search.Window-f42390fc.js @@ -0,0 +1 @@ +const o="/images/github-tools/1.png",s="/images/github-tools/xplorer/icon.png",t="/images/github-tools/xplorer/themed-xplorer.webp",i="/images/github-tools/xplorer/Xplorer_dark+.webp",r="/images/github-tools/xplorer/Xplorer_light.webp",e="/images/github-tools/xplorer/Xplorer_light+.webp",g="/images/github-tools/xplorer/Xplorer_mac_light.webp",p="/images/github-tools/xplorer/Xplorer_mac_dark.webp",a="/images/github-tools/xplorer/Xplorer_linux.webp",_="/images/github-tools/openai-translator/icon.png",l="/images/github-tools/openai-translator/1.png",n="/images/github-tools/openai-translator/2.png",m="/images/github-tools/openai-translator/3.gif",h="/images/github-tools/OcrHelper/1.png",c="/images/github-tools/OcrHelper/1.jpg",b="/images/github-tools/OcrHelper/2.jpg",u="/images/github-tools/OcrHelper/3.jpg",x="/images/github-tools/OcrHelper/4.jpg",w="/images/github-tools/Everything/1.png",v="/images/github-tools/Everything/2.png",y="/images/github-tools/Everything/EverythingToolbar.gif",E="/images/github-tools/Everything/Everything.Search.Window.png";export{s as _,_ as a,h as b,w as c,v as d,y as e,E as f,o as g,t as h,i,r as j,e as k,g as l,p as m,a as n,l as o,n as p,m as q,c as r,b as s,u as t,x as u}; diff --git a/assets/Hackintosh.html-bd376123.js b/assets/Hackintosh.html-bd376123.js new file mode 100644 index 00000000..4d0f4e66 --- /dev/null +++ b/assets/Hackintosh.html-bd376123.js @@ -0,0 +1 @@ +import{_ as l,a as o,b as i,c as d,d as a,e as g,f as c,g as h,h as _,i as y,j as x,k as p,l as m,m as u}from"./Python-d31beb86.js";import{_ as b}from"./plugin-vue_export-helper-c27b6911.js";import{r as f,o as w,c as S,a as t,b as e,d as r,f as s}from"./app-bdf45122.js";const D={},k=s('

    Hackintosh Reboot Plan

    闲话 回忆与现在

    • 从大学接触黑苹果开始,算起来已经有了8、9年的时光了,想起那会的“废寝忘食”,真是让人觉得虚度光阴、浪费精力。也许也是从那时候开始,养成了爱折腾的习惯。

    • 之前家里闲置的笔记本被我拿来做软路由,最开始只是在 pve 上跑 openWRT ,满足一些魔法需求,刚好最近又在搞内网穿透,这台单网口、传输速率低得吓人的设备实在无法满足现在愈来愈强的需求。

    • 故此,本意是在网上选购一台性价比较高的软路由,选着选着不知道怎就看到了一台十分合心意的小主机,实在按捺不住折腾的心情,就对老婆先斩后奏买了下来(幸得老婆宽厚,又加上我整天闹着要 NAS ,对比之下,这台小主机的价格还是让她允了下来)

    • 刚好因工作原因经常奔波两地,加上最近频繁地码字建站,用这台小主机组一台黑苹果,重温下精美的 MacOS ,既能在家里和单位用,也能提高码字的效率,办公、开发两不误。

    主机及配置

    • 在网上看了很多视频和教程,左挑右选,最终选择了惠普的 800-G4-DM 准系统主机,外加 I5 8500T 的8代 cpu。基本配置如下:

    • ||主机|惠普 HP EliteDesk 800 G4 DM||
      |:---😐:---😐:---😐:---😐
      ||主板|惠普Q370|||
      || CPU |酷睿 i5 8500T ||
      || 显卡 |集成 Intel UHD Graphics 630||
      || 内存 |DDR4 2400MHz 三星16GB(2X8GB)||
      ||无线网卡|博通 BCM94352Z 无线/蓝牙网卡|||
      ||固态硬盘|台电 256G SSD (加装2T SATA SSD)|||
      ||OpenCore|0.9.1|||
      ||MacOS|Ventura 13.3.1 (22E261)|||

    • 完美主义的黑苹果完美度:
    状态完美
    CPU睿频Yes✔︎
    VDA 解码器完全支持✔︎
    IGPU硬件加速(QE/CI)Yes✔︎
    Metal支持Yes✔︎
    USB定制/完整识别Yes✔︎
    网卡内建Yes✔︎
    WIFI免驱Yes✔︎
    蓝牙全功能YesHackintool无法识别,使用正常(又不是不能用.jpg)
    AirDrop全功能No仅支持从iOS端投送到Mac
    核显输出定制/全功能No截编时只完美一个“DP-HDMI”,其余两个输出口等有测试显示器再折腾
    声音全功能Yes✔︎
    序列号有效没有被用过的序列号Yes✔︎
    iMessage全功能Yes✔︎解放手机 Get
    随航功能Yes✔︎新功能真爽,iOS和 macOS无缝衔接
    HiDPi开启No能开,显示器物理分辨率太低,再开启HiDPi的分辨率更低,就很难受(有了4K显示器再说吧)
    睡眠开启Yes✔︎随睡随醒
    • 系统图鉴

    View More Screenshots

    1
    1

    ',10),M={href:"https://www.hacktiny.com/posts/2740.html",target:"_blank",rel:"noopener noreferrer"},P=s('
    1
    图鉴
    View More Screenshots

    工具及配参

    ',3),O={href:"https://sumingyd.github.io/OpenCore-Install-Guide/",target:"_blank",rel:"noopener noreferrer"},I=t("em",null,"opencore",-1),T=t("h3",{id:"所需工具",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#所需工具","aria-hidden":"true"},"#"),e(" 所需工具")],-1),C=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"用途"),t("th",{style:{"text-align":"center"}},"下载")])],-1),G=t("td",{style:{"text-align":"center"}},"SSDTTime",-1),Y=t("td",{style:{"text-align":"center"}},"获取DSDT、SSDT",-1),B={style:{"text-align":"center"}},H={href:"https://github.com/corpnewt/SSDTTime",target:"_blank",rel:"noopener noreferrer"},A=t("td",{style:{"text-align":"center"}},"ACPICA",-1),N=t("td",{style:{"text-align":"center"}},"编译和反编译DSDT",-1),V={style:{"text-align":"center"}},z={href:"https://acpica.org/downloads/binary-tools",target:"_blank",rel:"noopener noreferrer"},E=t("td",{style:{"text-align":"center"}},"OpenCorePkg",-1),U=t("td",{style:{"text-align":"center"}},"OpenCore引导加载程序",-1),v={style:{"text-align":"center"}},R={href:"https://github.com/acidanthera/OpenCorePkg/releases",target:"_blank",rel:"noopener noreferrer"},j=t("td",{style:{"text-align":"center"}},"ProperTree",-1),q=t("td",{style:{"text-align":"center"}},"跨平台GUIPlist编辑器",-1),L={style:{"text-align":"center"}},Q={href:"https://github.com/corpnewt/ProperTree",target:"_blank",rel:"noopener noreferrer"},W=t("td",{style:{"text-align":"center"}},"gibMacOS",-1),Z=t("td",{style:{"text-align":"center"}},"MacOS恢复镜像下载工具",-1),F={style:{"text-align":"center"}},K={href:"https://github.com/corpnewt/gibMacOS",target:"_blank",rel:"noopener noreferrer"},X=t("td",{style:{"text-align":"center"}},"GenSMBIOS",-1),J=t("td",{style:{"text-align":"center"}},"生成SMBIOS",-1),$={style:{"text-align":"center"}},tt={href:"https://github.com/corpnewt/GenSMBIOS",target:"_blank",rel:"noopener noreferrer"},et=t("h3",{id:"环境搭建",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#环境搭建","aria-hidden":"true"},"#"),e(" 环境搭建")],-1),nt={href:"https://www.7-zip.org/a/7z2201-x64.exe",target:"_blank",rel:"noopener noreferrer"},rt=t("em",null,"7-Zip windows",-1),st={href:"https://www.python.org/ftp/python/3.11.3/python-3.11.3-amd64.exe",target:"_blank",rel:"noopener noreferrer"},lt=t("em",null,"Python windows",-1),ot=t("em",null,"Add to Path",-1),it=t("em",null,"Python",-1),dt=t("figure",null,[t("img",{src:l,alt:"2",tabindex:"0",loading:"lazy"}),t("figcaption",null,"Python")],-1);function at(gt,ct){const n=f("ExternalLinkIcon");return w(),S("div",null,[k,t("ul",null,[t("li",null,[t("a",M,[e("主机图鉴"),r(n)])])]),P,t("ul",null,[t("li",null,[e("全部参考"),t("a",O,[I,e(" 中文安装指南"),r(n)]),e(" 进行操作和配置参数")])]),T,t("table",null,[C,t("tbody",null,[t("tr",null,[G,Y,t("td",B,[t("a",H,[e("Download"),r(n)])])]),t("tr",null,[A,N,t("td",V,[t("a",z,[e("Download"),r(n)])])]),t("tr",null,[E,U,t("td",v,[t("a",R,[e("Download"),r(n)])])]),t("tr",null,[j,q,t("td",L,[t("a",Q,[e("Download"),r(n)])])]),t("tr",null,[W,Z,t("td",F,[t("a",K,[e("Download"),r(n)])])]),t("tr",null,[X,J,t("td",$,[t("a",tt,[e("Download"),r(n)])])])])]),et,t("ul",null,[t("li",null,[t("p",null,[e("下载"),t("a",nt,[rt,e(),r(n)]),e("版本并安装。")])]),t("li",null,[t("p",null,[e("下载"),t("a",st,[lt,e(),r(n)]),e("最新版并安装,注意要选择 "),ot,e(" ,将 "),it,e(" 添加到系统环境。")]),dt])])])}const xt=b(D,[["render",at],["__file","Hackintosh.html.vue"]]);export{xt as default}; diff --git a/assets/Hackintosh.html-f365042e.js b/assets/Hackintosh.html-f365042e.js deleted file mode 100644 index 8080c056..00000000 --- a/assets/Hackintosh.html-f365042e.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l}from"./plugin-vue_export-helper-c27b6911.js";import{r as o,o as i,c as d,a as t,b as e,d as r,f as s}from"./app-a79373b4.js";const a="/images/Hackintosh/1.png",g="/images/Hackintosh/2.png",c="/images/Hackintosh//3.png",h="/images/Hackintosh//4.png",_="/images/Hackintosh/HP-EliteDesk-800-G4-35W-09.jpg",y="/images/Hackintosh/HP-EliteDesk-800-G4-35W-12.jpg",x="/images/Hackintosh/HP-EliteDesk-800-G4-35W-13.jpg",p="/images/Hackintosh/HP-EliteDesk-800-G4-35W-14.jpg",m="/images/Hackintosh/HP-EliteDesk-800-G4-35W-15.jpg",u="/images/Hackintosh/HP-EliteDesk-800-G4-35W-16.jpg",k="/images/Hackintosh/HP-EliteDesk-800-G4-DM-35W-dGPU-03.jpg",b="/images/Hackintosh/HP-EliteDesk-800-G4-DM-35W-Lock-01.jpg",f="/images/Hackintosh/HP-EliteDesk-800-G4-DM-35W-Lock-02.jpg",D="/images/Hackintosh/Python.png",w={},H=s('

    Hackintosh Reboot Plan

    闲话 回忆与现在

    • 从大学接触黑苹果开始,算起来已经有了8、9年的时光了,想起那会的“废寝忘食”,真是让人觉得虚度光阴、浪费精力。也许也是从那时候开始,养成了爱折腾的习惯。

    • 之前家里闲置的笔记本被我拿来做软路由,最开始只是在 pve 上跑 openWRT ,满足一些魔法需求,刚好最近又在搞内网穿透,这台单网口、传输速率低得吓人的设备实在无法满足现在愈来愈强的需求。

    • 故此,本意是在网上选购一台性价比较高的软路由,选着选着不知道怎就看到了一台十分合心意的小主机,实在按捺不住折腾的心情,就对老婆先斩后奏买了下来(幸得老婆宽厚,又加上我整天闹着要 NAS ,对比之下,这台小主机的价格还是让她允了下来)

    • 刚好因工作原因经常奔波两地,加上最近频繁地码字建站,用这台小主机组一台黑苹果,重温下精美的 MacOS ,既能在家里和单位用,也能提高码字的效率,办公、开发两不误。

    主机及配置

    • 在网上看了很多视频和教程,左挑右选,最终选择了惠普的 800-G4-DM 准系统主机,外加 I5 8500T 的8代 cpu。基本配置如下:

    • ||主机|惠普 HP EliteDesk 800 G4 DM||
      |:---😐:---😐:---😐:---😐
      ||主板|惠普Q370|||
      || CPU |酷睿 i5 8500T ||
      || 显卡 |集成 Intel UHD Graphics 630||
      || 内存 |DDR4 2400MHz 三星16GB(2X8GB)||
      ||无线网卡|博通 BCM94352Z 无线/蓝牙网卡|||
      ||固态硬盘|台电 256G SSD (加装2T SATA SSD)|||
      ||OpenCore|0.9.1|||
      ||MacOS|Ventura 13.3.1 (22E261)|||

    • 完美主义的黑苹果完美度:
    状态完美
    CPU睿频Yes✔︎
    VDA 解码器完全支持✔︎
    IGPU硬件加速(QE/CI)Yes✔︎
    Metal支持Yes✔︎
    USB定制/完整识别Yes✔︎
    网卡内建Yes✔︎
    WIFI免驱Yes✔︎
    蓝牙全功能YesHackintool无法识别,使用正常(又不是不能用.jpg)
    AirDrop全功能No仅支持从iOS端投送到Mac
    核显输出定制/全功能No截编时只完美一个“DP-HDMI”,其余两个输出口等有测试显示器再折腾
    声音全功能Yes✔︎
    序列号有效没有被用过的序列号Yes✔︎
    iMessage全功能Yes✔︎解放手机 Get
    随航功能Yes✔︎新功能真爽,iOS和 macOS无缝衔接
    HiDPi开启No能开,显示器物理分辨率太低,再开启HiDPi的分辨率更低,就很难受(有了4K显示器再说吧)
    睡眠开启Yes✔︎随睡随醒
    • 系统图鉴

    View More Screenshots

    1
    1

    ',10),S={href:"https://www.hacktiny.com/posts/2740.html",target:"_blank",rel:"noopener noreferrer"},P=s('
    1
    图鉴
    View More Screenshots

    工具及配参

    ',3),G={href:"https://sumingyd.github.io/OpenCore-Install-Guide/",target:"_blank",rel:"noopener noreferrer"},M=t("em",null,"opencore",-1),O=t("h3",{id:"所需工具",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#所需工具","aria-hidden":"true"},"#"),e(" 所需工具")],-1),E=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"用途"),t("th",{style:{"text-align":"center"}},"下载")])],-1),I=t("td",{style:{"text-align":"center"}},"SSDTTime",-1),T=t("td",{style:{"text-align":"center"}},"获取DSDT、SSDT",-1),C={style:{"text-align":"center"}},Y={href:"https://github.com/corpnewt/SSDTTime",target:"_blank",rel:"noopener noreferrer"},W=t("td",{style:{"text-align":"center"}},"ACPICA",-1),j=t("td",{style:{"text-align":"center"}},"编译和反编译DSDT",-1),B={style:{"text-align":"center"}},A={href:"https://acpica.org/downloads/binary-tools",target:"_blank",rel:"noopener noreferrer"},N=t("td",{style:{"text-align":"center"}},"OpenCorePkg",-1),V=t("td",{style:{"text-align":"center"}},"OpenCore引导加载程序",-1),z={style:{"text-align":"center"}},U={href:"https://github.com/acidanthera/OpenCorePkg/releases",target:"_blank",rel:"noopener noreferrer"},v=t("td",{style:{"text-align":"center"}},"ProperTree",-1),L=t("td",{style:{"text-align":"center"}},"跨平台GUIPlist编辑器",-1),R={style:{"text-align":"center"}},q={href:"https://github.com/corpnewt/ProperTree",target:"_blank",rel:"noopener noreferrer"},Q=t("td",{style:{"text-align":"center"}},"gibMacOS",-1),Z=t("td",{style:{"text-align":"center"}},"MacOS恢复镜像下载工具",-1),F={style:{"text-align":"center"}},K={href:"https://github.com/corpnewt/gibMacOS",target:"_blank",rel:"noopener noreferrer"},X=t("td",{style:{"text-align":"center"}},"GenSMBIOS",-1),J=t("td",{style:{"text-align":"center"}},"生成SMBIOS",-1),$={style:{"text-align":"center"}},tt={href:"https://github.com/corpnewt/GenSMBIOS",target:"_blank",rel:"noopener noreferrer"},et=t("h3",{id:"环境搭建",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#环境搭建","aria-hidden":"true"},"#"),e(" 环境搭建")],-1),nt={href:"https://www.7-zip.org/a/7z2201-x64.exe",target:"_blank",rel:"noopener noreferrer"},rt=t("em",null,"7-Zip windows",-1),st={href:"https://www.python.org/ftp/python/3.11.3/python-3.11.3-amd64.exe",target:"_blank",rel:"noopener noreferrer"},lt=t("em",null,"Python windows",-1),ot=t("em",null,"Add to Path",-1),it=t("em",null,"Python",-1),dt=t("figure",null,[t("img",{src:D,alt:"2",tabindex:"0",loading:"lazy"}),t("figcaption",null,"Python")],-1);function at(gt,ct){const n=o("ExternalLinkIcon");return i(),d("div",null,[H,t("ul",null,[t("li",null,[t("a",S,[e("主机图鉴"),r(n)])])]),P,t("ul",null,[t("li",null,[e("全部参考"),t("a",G,[M,e(" 中文安装指南"),r(n)]),e(" 进行操作和配置参数")])]),O,t("table",null,[E,t("tbody",null,[t("tr",null,[I,T,t("td",C,[t("a",Y,[e("Download"),r(n)])])]),t("tr",null,[W,j,t("td",B,[t("a",A,[e("Download"),r(n)])])]),t("tr",null,[N,V,t("td",z,[t("a",U,[e("Download"),r(n)])])]),t("tr",null,[v,L,t("td",R,[t("a",q,[e("Download"),r(n)])])]),t("tr",null,[Q,Z,t("td",F,[t("a",K,[e("Download"),r(n)])])]),t("tr",null,[X,J,t("td",$,[t("a",tt,[e("Download"),r(n)])])])])]),et,t("ul",null,[t("li",null,[t("p",null,[e("下载"),t("a",nt,[rt,e(),r(n)]),e("版本并安装。")])]),t("li",null,[t("p",null,[e("下载"),t("a",st,[lt,e(),r(n)]),e("最新版并安装,注意要选择 "),ot,e(" ,将 "),it,e(" 添加到系统环境。")]),dt])])])}const yt=l(w,[["render",at],["__file","Hackintosh.html.vue"]]);export{yt as default}; diff --git a/assets/Python-d31beb86.js b/assets/Python-d31beb86.js new file mode 100644 index 00000000..3630ac69 --- /dev/null +++ b/assets/Python-d31beb86.js @@ -0,0 +1 @@ +const s="/images/Hackintosh/1.png",t="/images/Hackintosh/2.png",i="/images/Hackintosh//3.png",o="/images/Hackintosh//4.png",a="/images/Hackintosh/HP-EliteDesk-800-G4-35W-09.jpg",e="/images/Hackintosh/HP-EliteDesk-800-G4-35W-12.jpg",n="/images/Hackintosh/HP-EliteDesk-800-G4-35W-13.jpg",c="/images/Hackintosh/HP-EliteDesk-800-G4-35W-14.jpg",g="/images/Hackintosh/HP-EliteDesk-800-G4-35W-15.jpg",m="/images/Hackintosh/HP-EliteDesk-800-G4-35W-16.jpg",p="/images/Hackintosh/HP-EliteDesk-800-G4-DM-35W-dGPU-03.jpg",_="/images/Hackintosh/HP-EliteDesk-800-G4-DM-35W-Lock-01.jpg",k="/images/Hackintosh/HP-EliteDesk-800-G4-DM-35W-Lock-02.jpg",H="/images/Hackintosh/Python.png";export{H as _,s as a,t as b,i as c,o as d,a as e,e as f,n as g,c as h,g as i,m as j,p as k,_ as l,k as m}; diff --git a/assets/app-a79373b4.js b/assets/app-a79373b4.js deleted file mode 100644 index 032f1120..00000000 --- a/assets/app-a79373b4.js +++ /dev/null @@ -1,1107 +0,0 @@ -const J1="modulepreload",Y1=function(e){return"/"+e},Nl={},v=function(t,n,r){if(!n||n.length===0)return t();const a=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=Y1(o),o in Nl)return;Nl[o]=!0;const l=o.endsWith(".css"),i=l?'[rel="stylesheet"]':"";if(!!r)for(let d=a.length-1;d>=0;d--){const p=a[d];if(p.href===o&&(!l||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${i}`))return;const c=document.createElement("link");if(c.rel=l?"stylesheet":J1,l||(c.as="script",c.crossOrigin=""),c.href=o,document.head.appendChild(c),l)return new Promise((d,p)=>{c.addEventListener("load",d),c.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o})};function Ho(e,t){const n=Object.create(null),r=e.split(",");for(let a=0;a!!n[a.toLowerCase()]:a=>!!n[a]}const xe={},Pn=[],gt=()=>{},Q1=()=>!1,Z1=/^on[^a-z]/,Dr=e=>Z1.test(e),No=e=>e.startsWith("onUpdate:"),Be=Object.assign,qo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},X1=Object.prototype.hasOwnProperty,ve=(e,t)=>X1.call(e,t),J=Array.isArray,Dn=e=>Cr(e)==="[object Map]",Jn=e=>Cr(e)==="[object Set]",ql=e=>Cr(e)==="[object Date]",ae=e=>typeof e=="function",se=e=>typeof e=="string",$n=e=>typeof e=="symbol",Ae=e=>e!==null&&typeof e=="object",xs=e=>(Ae(e)||ae(e))&&ae(e.then)&&ae(e.catch),ks=Object.prototype.toString,Cr=e=>ks.call(e),ed=e=>Cr(e).slice(8,-1),Ts=e=>Cr(e)==="[object Object]",jo=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,pr=Ho(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),wa=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},td=/-(\w)/g,ct=wa(e=>e.replace(td,(t,n)=>n?n.toUpperCase():"")),nd=/\B([A-Z])/g,Yn=wa(e=>e.replace(nd,"-$1").toLowerCase()),Or=wa(e=>e.charAt(0).toUpperCase()+e.slice(1)),Fa=wa(e=>e?`on${Or(e)}`:""),hn=(e,t)=>!Object.is(e,t),ca=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},pa=e=>{const t=parseFloat(e);return isNaN(t)?e:t},rd=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let jl;const po=()=>jl||(jl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xa(e){if(J(e)){const t={};for(let n=0;n{if(n){const r=n.split(od);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ka(e){let t="";if(se(e))t=e;else if(J(e))for(let n=0;ngn(n,t))}const K8=e=>se(e)?e:e==null?"":J(e)||Ae(e)&&(e.toString===ks||!ae(e.toString))?JSON.stringify(e,Is,2):String(e),Is=(e,t)=>t&&t.__v_isRef?Is(e,t.value):Dn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,a])=>(n[`${r} =>`]=a,n),{})}:Jn(t)?{[`Set(${t.size})`]:[...t.values()]}:Ae(t)&&!J(t)&&!Ts(t)?String(t):t;let Ze;class dd{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ze,!t&&Ze&&(this.index=(Ze.scopes||(Ze.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ze;try{return Ze=this,t()}finally{Ze=n}}}on(){Ze=this}off(){Ze=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Ds=e=>(e.w&en)>0,Cs=e=>(e.n&en)>0,vd=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(d==="length"||!$n(d)&&d>=u)&&i.push(c)})}else switch(n!==void 0&&i.push(l.get(n)),t){case"add":J(e)?jo(n)&&i.push(l.get("length")):(i.push(l.get(pn)),Dn(e)&&i.push(l.get(vo)));break;case"delete":J(e)||(i.push(l.get(pn)),Dn(e)&&i.push(l.get(vo)));break;case"set":Dn(e)&&i.push(l.get(pn));break}if(i.length===1)i[0]&&ho(i[0]);else{const u=[];for(const c of i)c&&u.push(...c);ho(Go(u))}}function ho(e,t){const n=J(e)?e:[...e];for(const r of n)r.computed&&Gl(r);for(const r of n)r.computed||Gl(r)}function Gl(e,t){(e!==vt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function gd(e,t){var n;return(n=fa.get(e))==null?void 0:n.get(t)}const md=Ho("__proto__,__v_isRef,__isVue"),Ss=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter($n)),Wl=_d();function _d(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=de(this);for(let o=0,l=this.length;o{e[t]=function(...n){Qn();const r=de(this)[t].apply(this,n);return Zn(),r}}),e}function yd(e){const t=de(this);return We(t,"has",e),t.hasOwnProperty(e)}class Bs{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,r){const a=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!a;if(n==="__v_isReadonly")return a;if(n==="__v_isShallow")return o;if(n==="__v_raw"&&r===(a?o?Od:zs:o?Ms:$s).get(t))return t;const l=J(t);if(!a){if(l&&ve(Wl,n))return Reflect.get(Wl,n,r);if(n==="hasOwnProperty")return yd}const i=Reflect.get(t,n,r);return($n(n)?Ss.has(n):md(n))||(a||We(t,"get",n),o)?i:Re(i)?l&&jo(n)?i:i.value:Ae(i)?a?zt(i):Rr(i):i}}class Vs extends Bs{constructor(t=!1){super(!1,t)}set(t,n,r,a){let o=t[n];if(Mn(o)&&Re(o)&&!Re(r))return!1;if(!this._shallow&&(!va(r)&&!Mn(r)&&(o=de(o),r=de(r)),!J(t)&&Re(o)&&!Re(r)))return o.value=r,!0;const l=J(t)&&jo(n)?Number(n)e,Ta=e=>Reflect.getPrototypeOf(e);function Wr(e,t,n=!1,r=!1){e=e.__v_raw;const a=de(e),o=de(t);n||(hn(t,o)&&We(a,"get",t),We(a,"get",o));const{has:l}=Ta(a),i=r?Ko:n?Qo:br;if(l.call(a,t))return i(e.get(t));if(l.call(a,o))return i(e.get(o));e!==a&&e.get(t)}function Kr(e,t=!1){const n=this.__v_raw,r=de(n),a=de(e);return t||(hn(e,a)&&We(r,"has",e),We(r,"has",a)),e===a?n.has(e):n.has(e)||n.has(a)}function Jr(e,t=!1){return e=e.__v_raw,!t&&We(de(e),"iterate",pn),Reflect.get(e,"size",e)}function Kl(e){e=de(e);const t=de(this);return Ta(t).has.call(t,e)||(t.add(e),Vt(t,"add",e,e)),this}function Jl(e,t){t=de(t);const n=de(this),{has:r,get:a}=Ta(n);let o=r.call(n,e);o||(e=de(e),o=r.call(n,e));const l=a.call(n,e);return n.set(e,t),o?hn(t,l)&&Vt(n,"set",e,t):Vt(n,"add",e,t),this}function Yl(e){const t=de(this),{has:n,get:r}=Ta(t);let a=n.call(t,e);a||(e=de(e),a=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return a&&Vt(t,"delete",e,void 0),o}function Ql(){const e=de(this),t=e.size!==0,n=e.clear();return t&&Vt(e,"clear",void 0,void 0),n}function Yr(e,t){return function(r,a){const o=this,l=o.__v_raw,i=de(l),u=t?Ko:e?Qo:br;return!e&&We(i,"iterate",pn),l.forEach((c,d)=>r.call(a,u(c),u(d),o))}}function Qr(e,t,n){return function(...r){const a=this.__v_raw,o=de(a),l=Dn(o),i=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,c=a[e](...r),d=n?Ko:t?Qo:br;return!t&&We(o,"iterate",u?vo:pn),{next(){const{value:p,done:f}=c.next();return f?{value:p,done:f}:{value:i?[d(p[0]),d(p[1])]:d(p),done:f}},[Symbol.iterator](){return this}}}}function qt(e){return function(...t){return e==="delete"?!1:this}}function xd(){const e={get(o){return Wr(this,o)},get size(){return Jr(this)},has:Kr,add:Kl,set:Jl,delete:Yl,clear:Ql,forEach:Yr(!1,!1)},t={get(o){return Wr(this,o,!1,!0)},get size(){return Jr(this)},has:Kr,add:Kl,set:Jl,delete:Yl,clear:Ql,forEach:Yr(!1,!0)},n={get(o){return Wr(this,o,!0)},get size(){return Jr(this,!0)},has(o){return Kr.call(this,o,!0)},add:qt("add"),set:qt("set"),delete:qt("delete"),clear:qt("clear"),forEach:Yr(!0,!1)},r={get(o){return Wr(this,o,!0,!0)},get size(){return Jr(this,!0)},has(o){return Kr.call(this,o,!0)},add:qt("add"),set:qt("set"),delete:qt("delete"),clear:qt("clear"),forEach:Yr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Qr(o,!1,!1),n[o]=Qr(o,!0,!1),t[o]=Qr(o,!1,!0),r[o]=Qr(o,!0,!0)}),[e,n,t,r]}const[kd,Td,Ld,Id]=xd();function Jo(e,t){const n=t?e?Id:Ld:e?Td:kd;return(r,a,o)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(ve(n,a)&&a in r?n:r,a,o)}const Pd={get:Jo(!1,!1)},Dd={get:Jo(!1,!0)},Cd={get:Jo(!0,!1)},$s=new WeakMap,Ms=new WeakMap,zs=new WeakMap,Od=new WeakMap;function Rd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Sd(e){return e.__v_skip||!Object.isExtensible(e)?0:Rd(ed(e))}function Rr(e){return Mn(e)?e:Yo(e,!1,Ed,Pd,$s)}function Fs(e){return Yo(e,!1,wd,Dd,Ms)}function zt(e){return Yo(e,!0,Ad,Cd,zs)}function Yo(e,t,n,r,a){if(!Ae(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=a.get(e);if(o)return o;const l=Sd(e);if(l===0)return e;const i=new Proxy(e,l===2?r:n);return a.set(e,i),i}function Cn(e){return Mn(e)?Cn(e.__v_raw):!!(e&&e.__v_isReactive)}function Mn(e){return!!(e&&e.__v_isReadonly)}function va(e){return!!(e&&e.__v_isShallow)}function Hs(e){return Cn(e)||Mn(e)}function de(e){const t=e&&e.__v_raw;return t?de(t):e}function Ns(e){return da(e,"__v_skip",!0),e}const br=e=>Ae(e)?Rr(e):e,Qo=e=>Ae(e)?zt(e):e;function Zo(e){Zt&&vt&&(e=de(e),Rs(e.dep||(e.dep=Go())))}function Xo(e,t){e=de(e);const n=e.dep;n&&ho(n)}function Re(e){return!!(e&&e.__v_isRef===!0)}function W(e){return qs(e,!1)}function Fe(e){return qs(e,!0)}function qs(e,t){return Re(e)?e:new Bd(e,t)}class Bd{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:de(t),this._value=n?t:br(t)}get value(){return Zo(this),this._value}set value(t){const n=this.__v_isShallow||va(t)||Mn(t);t=n?t:de(t),hn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:br(t),Xo(this))}}function fn(e){return Re(e)?e.value:e}const Vd={get:(e,t,n)=>fn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const a=e[t];return Re(a)&&!Re(n)?(a.value=n,!0):Reflect.set(e,t,n,r)}};function js(e){return Cn(e)?e:new Proxy(e,Vd)}class $d{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Zo(this),()=>Xo(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Us(e){return new $d(e)}class Md{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return gd(de(this._object),this._key)}}class zd{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Xn(e,t,n){return Re(e)?e:ae(e)?new zd(e):Ae(e)&&arguments.length>1?Fd(e,t,n):W(e)}function Fd(e,t,n){const r=e[t];return Re(r)?r:new Md(e,t,n)}class Hd{constructor(t,n,r,a){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Wo(t,()=>{this._dirty||(this._dirty=!0,Xo(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){const t=de(this);return Zo(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Nd(e,t,n=!1){let r,a;const o=ae(e);return o?(r=e,a=gt):(r=e.get,a=e.set),new Hd(r,a,o||!a,n)}function Xt(e,t,n,r){let a;try{a=r?e(...r):e()}catch(o){Sr(o,t,n)}return a}function lt(e,t,n,r){if(ae(e)){const o=Xt(e,t,n,r);return o&&xs(o)&&o.catch(l=>{Sr(l,t,n)}),o}const a=[];for(let o=0;o>>1,a=ze[r],o=Ar(a);oLt&&ze.splice(t,1)}function Gd(e){J(e)?On.push(...e):(!St||!St.includes(e,e.allowRecurse?sn+1:sn))&&On.push(e),Ws()}function Zl(e,t=Er?Lt+1:0){for(;tAr(n)-Ar(r)),sn=0;sne.id==null?1/0:e.id,Wd=(e,t)=>{const n=Ar(e)-Ar(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ks(e){go=!1,Er=!0,ze.sort(Wd);const t=gt;try{for(Lt=0;Ltse(h)?h.trim():h)),p&&(a=n.map(pa))}let i,u=r[i=Fa(t)]||r[i=Fa(ct(t))];!u&&o&&(u=r[i=Fa(Yn(t))]),u&<(u,e,6,a);const c=r[i+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,lt(c,e,6,a)}}function Js(e,t,n=!1){const r=t.emitsCache,a=r.get(e);if(a!==void 0)return a;const o=e.emits;let l={},i=!1;if(!ae(e)){const u=c=>{const d=Js(c,t,!0);d&&(i=!0,Be(l,d))};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!o&&!i?(Ae(e)&&r.set(e,null),null):(J(o)?o.forEach(u=>l[u]=null):Be(l,o),Ae(e)&&r.set(e,l),l)}function Ia(e,t){return!e||!Dr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ve(e,t[0].toLowerCase()+t.slice(1))||ve(e,Yn(t))||ve(e,t))}let et=null,Ys=null;function ga(e){const t=et;return et=e,Ys=e&&e.type.__scopeId||null,t}function Jd(e,t=et,n){if(!t||e._n)return e;const r=(...a)=>{r._d&&ui(-1);const o=ga(t);let l;try{l=e(...a)}finally{ga(o),r._d&&ui(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function Ha(e){const{type:t,vnode:n,proxy:r,withProxy:a,props:o,propsOptions:[l],slots:i,attrs:u,emit:c,render:d,renderCache:p,data:f,setupState:h,ctx:_,inheritAttrs:E}=e;let k,A;const I=ga(e);try{if(n.shapeFlag&4){const T=a||r;k=ft(d.call(T,T,p,o,h,f,_)),A=u}else{const T=t;k=ft(T.length>1?T(o,{attrs:u,slots:i,emit:c}):T(o,null)),A=t.props?u:Yd(u)}}catch(T){gr.length=0,Sr(T,e,1),k=Pe(it)}let b=k;if(A&&E!==!1){const T=Object.keys(A),{shapeFlag:$}=b;T.length&&$&7&&(l&&T.some(No)&&(A=Qd(A,l)),b=tn(b,A))}return n.dirs&&(b=tn(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),k=b,ga(I),k}const Yd=e=>{let t;for(const n in e)(n==="class"||n==="style"||Dr(n))&&((t||(t={}))[n]=e[n]);return t},Qd=(e,t)=>{const n={};for(const r in e)(!No(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Zd(e,t,n){const{props:r,children:a,component:o}=e,{props:l,children:i,patchFlag:u}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return r?Xl(r,l,c):!!l;if(u&8){const d=t.dynamicProps;for(let p=0;pe.__isSuspense;function Qs(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):Gd(e)}function Zs(e,t){return tl(e,null,t)}const Zr={};function ce(e,t,n){return tl(e,t,n)}function tl(e,t,{immediate:n,deep:r,flush:a,onTrack:o,onTrigger:l}=xe){var i;const u=Ps()===((i=Ve)==null?void 0:i.scope)?Ve:null;let c,d=!1,p=!1;if(Re(e)?(c=()=>e.value,d=va(e)):Cn(e)?(c=()=>e,r=!0):J(e)?(p=!0,d=e.some(T=>Cn(T)||va(T)),c=()=>e.map(T=>{if(Re(T))return T.value;if(Cn(T))return dn(T);if(ae(T))return Xt(T,u,2)})):ae(e)?t?c=()=>Xt(e,u,2):c=()=>{if(!(u&&u.isUnmounted))return f&&f(),lt(e,u,3,[h])}:c=gt,t&&r){const T=c;c=()=>dn(T())}let f,h=T=>{f=I.onStop=()=>{Xt(T,u,4)}},_;if(Hn)if(h=gt,t?n&<(t,u,3,[c(),p?[]:void 0,h]):c(),a==="sync"){const T=J0();_=T.__watcherHandles||(T.__watcherHandles=[])}else return gt;let E=p?new Array(e.length).fill(Zr):Zr;const k=()=>{if(I.active)if(t){const T=I.run();(r||d||(p?T.some(($,O)=>hn($,E[O])):hn(T,E)))&&(f&&f(),lt(t,u,3,[T,E===Zr?void 0:p&&E[0]===Zr?[]:E,h]),E=T)}else I.run()};k.allowRecurse=!!t;let A;a==="sync"?A=k:a==="post"?A=()=>Ue(k,u&&u.suspense):(k.pre=!0,u&&(k.id=u.uid),A=()=>La(k));const I=new Wo(c,A);t?n?k():E=I.run():a==="post"?Ue(I.run.bind(I),u&&u.suspense):I.run();const b=()=>{I.stop(),u&&u.scope&&qo(u.scope.effects,I)};return _&&_.push(b),b}function t0(e,t,n){const r=this.proxy,a=se(e)?e.includes(".")?Xs(r,e):()=>r[e]:e.bind(r,r);let o;ae(t)?o=t:(o=t.handler,n=t);const l=Ve;Fn(this);const i=tl(a,o.bind(r),n);return l?Fn(l):vn(),i}function Xs(e,t){const n=t.split(".");return()=>{let r=e;for(let a=0;a{dn(n,t)});else if(Ts(e))for(const n in e)dn(e[n],t);return e}function J8(e,t){const n=et;if(n===null)return e;const r=Ca(n)||n.proxy,a=e.dirs||(e.dirs=[]);for(let o=0;o{e.isMounted=!0}),rl(()=>{e.isUnmounting=!0}),e}const rt=[Function,Array],tc={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:rt,onEnter:rt,onAfterEnter:rt,onEnterCancelled:rt,onBeforeLeave:rt,onLeave:rt,onAfterLeave:rt,onLeaveCancelled:rt,onBeforeAppear:rt,onAppear:rt,onAfterAppear:rt,onAppearCancelled:rt},n0={name:"BaseTransition",props:tc,setup(e,{slots:t}){const n=yn(),r=ec();let a;return()=>{const o=t.default&&nl(t.default(),!0);if(!o||!o.length)return;let l=o[0];if(o.length>1){for(const E of o)if(E.type!==it){l=E;break}}const i=de(e),{mode:u}=i;if(r.isLeaving)return Na(l);const c=ei(l);if(!c)return Na(l);const d=wr(c,i,r,n);xr(c,d);const p=n.subTree,f=p&&ei(p);let h=!1;const{getTransitionKey:_}=c.type;if(_){const E=_();a===void 0?a=E:E!==a&&(a=E,h=!0)}if(f&&f.type!==it&&(!cn(c,f)||h)){const E=wr(f,i,r,n);if(xr(f,E),u==="out-in")return r.isLeaving=!0,E.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},Na(l);u==="in-out"&&c.type!==it&&(E.delayLeave=(k,A,I)=>{const b=nc(r,f);b[String(f.key)]=f,k[Jt]=()=>{A(),k[Jt]=void 0,delete d.delayedLeave},d.delayedLeave=I})}return l}}},r0=n0;function nc(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function wr(e,t,n,r){const{appear:a,mode:o,persisted:l=!1,onBeforeEnter:i,onEnter:u,onAfterEnter:c,onEnterCancelled:d,onBeforeLeave:p,onLeave:f,onAfterLeave:h,onLeaveCancelled:_,onBeforeAppear:E,onAppear:k,onAfterAppear:A,onAppearCancelled:I}=t,b=String(e.key),T=nc(n,e),$=(D,N)=>{D&<(D,r,9,N)},O=(D,N)=>{const q=N[1];$(D,N),J(D)?D.every(ee=>ee.length<=1)&&q():D.length<=1&&q()},M={mode:o,persisted:l,beforeEnter(D){let N=i;if(!n.isMounted)if(a)N=E||i;else return;D[Jt]&&D[Jt](!0);const q=T[b];q&&cn(e,q)&&q.el[Jt]&&q.el[Jt](),$(N,[D])},enter(D){let N=u,q=c,ee=d;if(!n.isMounted)if(a)N=k||u,q=A||c,ee=I||d;else return;let H=!1;const te=D[Xr]=Ie=>{H||(H=!0,Ie?$(ee,[D]):$(q,[D]),M.delayedLeave&&M.delayedLeave(),D[Xr]=void 0)};N?O(N,[D,te]):te()},leave(D,N){const q=String(e.key);if(D[Xr]&&D[Xr](!0),n.isUnmounting)return N();$(p,[D]);let ee=!1;const H=D[Jt]=te=>{ee||(ee=!0,N(),te?$(_,[D]):$(h,[D]),D[Jt]=void 0,T[q]===e&&delete T[q])};T[q]=e,f?O(f,[D,H]):H()},clone(D){return wr(D,t,n,r)}};return M}function Na(e){if(Br(e))return e=tn(e),e.children=null,e}function ei(e){return Br(e)?e.children?e.children[0]:void 0:e}function xr(e,t){e.shapeFlag&6&&e.component?xr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function nl(e,t=!1,n){let r=[],a=0;for(let o=0;o1)for(let o=0;oBe({name:e.name},t,{setup:e}))():e}const fr=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function y(e){ae(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:a=200,timeout:o,suspensible:l=!0,onError:i}=e;let u=null,c,d=0;const p=()=>(d++,u=null,f()),f=()=>{let h;return u||(h=u=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),i)return new Promise((E,k)=>{i(_,()=>E(p()),()=>k(_),d+1)});throw _}).then(_=>h!==u&&u?u:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),c=_,_)))};return B({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return c},setup(){const h=Ve;if(c)return()=>qa(c,h);const _=I=>{u=null,Sr(I,h,13,!r)};if(l&&h.suspense||Hn)return f().then(I=>()=>qa(I,h)).catch(I=>(_(I),()=>r?Pe(r,{error:I}):null));const E=W(!1),k=W(),A=W(!!a);return a&&setTimeout(()=>{A.value=!1},a),o!=null&&setTimeout(()=>{if(!E.value&&!k.value){const I=new Error(`Async component timed out after ${o}ms.`);_(I),k.value=I}},o),f().then(()=>{E.value=!0,h.parent&&Br(h.parent.vnode)&&La(h.parent.update)}).catch(I=>{_(I),k.value=I}),()=>{if(E.value&&c)return qa(c,h);if(k.value&&r)return Pe(r,{error:k.value});if(n&&!A.value)return Pe(n)}}})}function qa(e,t){const{ref:n,props:r,children:a,ce:o}=t.vnode,l=Pe(e,r,a);return l.ref=n,l.ce=o,delete t.vnode.ce,l}const Br=e=>e.type.__isKeepAlive;function a0(e,t){rc(e,"a",t)}function o0(e,t){rc(e,"da",t)}function rc(e,t,n=Ve){const r=e.__wdc||(e.__wdc=()=>{let a=n;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Pa(t,r,n),n){let a=n.parent;for(;a&&a.parent;)Br(a.parent.vnode)&&l0(r,t,n,a),a=a.parent}}function l0(e,t,n,r){const a=Pa(t,e,r,!0);Vr(()=>{qo(r[t],a)},n)}function Pa(e,t,n=Ve,r=!1){if(n){const a=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;Qn(),Fn(n);const i=lt(t,n,e,l);return vn(),Zn(),i});return r?a.unshift(o):a.push(o),o}}const Ft=e=>(t,n=Ve)=>(!Hn||e==="sp")&&Pa(e,(...r)=>t(...r),n),i0=Ft("bm"),_e=Ft("m"),s0=Ft("bu"),ac=Ft("u"),rl=Ft("bum"),Vr=Ft("um"),c0=Ft("sp"),u0=Ft("rtg"),d0=Ft("rtc");function p0(e,t=Ve){Pa("ec",e,t)}const oc="components";function tt(e,t){return v0(oc,e,!0,t)||e}const f0=Symbol.for("v-ndc");function v0(e,t,n=!0,r=!1){const a=et||Ve;if(a){const o=a.type;if(e===oc){const i=G0(o,!1);if(i&&(i===t||i===ct(t)||i===Or(ct(t))))return o}const l=ti(a[e]||o[e],t)||ti(a.appContext[e],t);return!l&&r?o:l}}function ti(e,t){return e&&(e[t]||e[ct(t)]||e[Or(ct(t))])}function Y8(e,t,n,r){let a;const o=n&&n[r];if(J(e)||se(e)){a=new Array(e.length);for(let l=0,i=e.length;lt(l,i,void 0,o&&o[i]));else{const l=Object.keys(e);a=new Array(l.length);for(let i=0,u=l.length;ie?yc(e)?Ca(e)||e.proxy:mo(e.parent):null,vr=Be(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>mo(e.parent),$root:e=>mo(e.root),$emit:e=>e.emit,$options:e=>al(e),$forceUpdate:e=>e.f||(e.f=()=>La(e.update)),$nextTick:e=>e.n||(e.n=an.bind(e.proxy)),$watch:e=>t0.bind(e)}),ja=(e,t)=>e!==xe&&!e.__isScriptSetup&&ve(e,t),h0={get({_:e},t){const{ctx:n,setupState:r,data:a,props:o,accessCache:l,type:i,appContext:u}=e;let c;if(t[0]!=="$"){const h=l[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return a[t];case 4:return n[t];case 3:return o[t]}else{if(ja(r,t))return l[t]=1,r[t];if(a!==xe&&ve(a,t))return l[t]=2,a[t];if((c=e.propsOptions[0])&&ve(c,t))return l[t]=3,o[t];if(n!==xe&&ve(n,t))return l[t]=4,n[t];_o&&(l[t]=0)}}const d=vr[t];let p,f;if(d)return t==="$attrs"&&We(e,"get",t),d(e);if((p=i.__cssModules)&&(p=p[t]))return p;if(n!==xe&&ve(n,t))return l[t]=4,n[t];if(f=u.config.globalProperties,ve(f,t))return f[t]},set({_:e},t,n){const{data:r,setupState:a,ctx:o}=e;return ja(a,t)?(a[t]=n,!0):r!==xe&&ve(r,t)?(r[t]=n,!0):ve(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:a,propsOptions:o}},l){let i;return!!n[l]||e!==xe&&ve(e,l)||ja(t,l)||(i=o[0])&&ve(i,l)||ve(r,l)||ve(vr,l)||ve(a.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ve(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ni(e){return J(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _o=!0;function g0(e){const t=al(e),n=e.proxy,r=e.ctx;_o=!1,t.beforeCreate&&ri(t.beforeCreate,e,"bc");const{data:a,computed:o,methods:l,watch:i,provide:u,inject:c,created:d,beforeMount:p,mounted:f,beforeUpdate:h,updated:_,activated:E,deactivated:k,beforeDestroy:A,beforeUnmount:I,destroyed:b,unmounted:T,render:$,renderTracked:O,renderTriggered:M,errorCaptured:D,serverPrefetch:N,expose:q,inheritAttrs:ee,components:H,directives:te,filters:Ie}=t;if(c&&m0(c,r,null),l)for(const ne in l){const Y=l[ne];ae(Y)&&(r[ne]=Y.bind(n))}if(a){const ne=a.call(n,n);Ae(ne)&&(e.data=Rr(ne))}if(_o=!0,o)for(const ne in o){const Y=o[ne],De=ae(Y)?Y.bind(n,n):ae(Y.get)?Y.get.bind(n,n):gt,wt=!ae(Y)&&ae(Y.set)?Y.set.bind(n):gt,nt=x({get:De,set:wt});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>nt.value,set:$e=>nt.value=$e})}if(i)for(const ne in i)lc(i[ne],r,n,ne);if(u){const ne=ae(u)?u.call(n):u;Reflect.ownKeys(ne).forEach(Y=>{mt(Y,ne[Y])})}d&&ri(d,e,"c");function G(ne,Y){J(Y)?Y.forEach(De=>ne(De.bind(n))):Y&&ne(Y.bind(n))}if(G(i0,p),G(_e,f),G(s0,h),G(ac,_),G(a0,E),G(o0,k),G(p0,D),G(d0,O),G(u0,M),G(rl,I),G(Vr,T),G(c0,N),J(q))if(q.length){const ne=e.exposed||(e.exposed={});q.forEach(Y=>{Object.defineProperty(ne,Y,{get:()=>n[Y],set:De=>n[Y]=De})})}else e.exposed||(e.exposed={});$&&e.render===gt&&(e.render=$),ee!=null&&(e.inheritAttrs=ee),H&&(e.components=H),te&&(e.directives=te)}function m0(e,t,n=gt){J(e)&&(e=yo(e));for(const r in e){const a=e[r];let o;Ae(a)?"default"in a?o=ge(a.from||r,a.default,!0):o=ge(a.from||r):o=ge(a),Re(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function ri(e,t,n){lt(J(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function lc(e,t,n,r){const a=r.includes(".")?Xs(n,r):()=>n[r];if(se(e)){const o=t[e];ae(o)&&ce(a,o)}else if(ae(e))ce(a,e.bind(n));else if(Ae(e))if(J(e))e.forEach(o=>lc(o,t,n,r));else{const o=ae(e.handler)?e.handler.bind(n):t[e.handler];ae(o)&&ce(a,o,e)}}function al(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:a,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,i=o.get(t);let u;return i?u=i:!a.length&&!n&&!r?u=t:(u={},a.length&&a.forEach(c=>ma(u,c,l,!0)),ma(u,t,l)),Ae(t)&&o.set(t,u),u}function ma(e,t,n,r=!1){const{mixins:a,extends:o}=t;o&&ma(e,o,n,!0),a&&a.forEach(l=>ma(e,l,n,!0));for(const l in t)if(!(r&&l==="expose")){const i=_0[l]||n&&n[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const _0={data:ai,props:oi,emits:oi,methods:dr,computed:dr,beforeCreate:Ne,created:Ne,beforeMount:Ne,mounted:Ne,beforeUpdate:Ne,updated:Ne,beforeDestroy:Ne,beforeUnmount:Ne,destroyed:Ne,unmounted:Ne,activated:Ne,deactivated:Ne,errorCaptured:Ne,serverPrefetch:Ne,components:dr,directives:dr,watch:b0,provide:ai,inject:y0};function ai(e,t){return t?e?function(){return Be(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function y0(e,t){return dr(yo(e),yo(t))}function yo(e){if(J(e)){const t={};for(let n=0;n1)return n&&ae(t)?t.call(r&&r.proxy):t}}function w0(e,t,n,r=!1){const a={},o={};da(o,Da,1),e.propsDefaults=Object.create(null),sc(e,t,a,o);for(const l in e.propsOptions[0])l in a||(a[l]=void 0);n?e.props=r?a:Fs(a):e.type.props?e.props=a:e.props=o,e.attrs=o}function x0(e,t,n,r){const{props:a,attrs:o,vnode:{patchFlag:l}}=e,i=de(a),[u]=e.propsOptions;let c=!1;if((r||l>0)&&!(l&16)){if(l&8){const d=e.vnode.dynamicProps;for(let p=0;p{u=!0;const[f,h]=cc(p,t,!0);Be(l,f),h&&i.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!o&&!u)return Ae(e)&&r.set(e,Pn),Pn;if(J(o))for(let d=0;d-1,h[1]=E<0||_-1||ve(h,"default"))&&i.push(p)}}}const c=[l,i];return Ae(e)&&r.set(e,c),c}function li(e){return e[0]!=="$"}function ii(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function si(e,t){return ii(e)===ii(t)}function ci(e,t){return J(t)?t.findIndex(n=>si(n,e)):ae(t)&&si(t,e)?0:-1}const uc=e=>e[0]==="_"||e==="$stable",ol=e=>J(e)?e.map(ft):[ft(e)],k0=(e,t,n)=>{if(t._n)return t;const r=Jd((...a)=>ol(t(...a)),n);return r._c=!1,r},dc=(e,t,n)=>{const r=e._ctx;for(const a in e){if(uc(a))continue;const o=e[a];if(ae(o))t[a]=k0(a,o,r);else if(o!=null){const l=ol(o);t[a]=()=>l}}},pc=(e,t)=>{const n=ol(t);e.slots.default=()=>n},T0=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=de(t),da(t,"_",n)):dc(t,e.slots={})}else e.slots={},t&&pc(e,t);da(e.slots,Da,1)},L0=(e,t,n)=>{const{vnode:r,slots:a}=e;let o=!0,l=xe;if(r.shapeFlag&32){const i=t._;i?n&&i===1?o=!1:(Be(a,t),!n&&i===1&&delete a._):(o=!t.$stable,dc(t,a)),l=t}else t&&(pc(e,t),l={default:1});if(o)for(const i in a)!uc(i)&&l[i]==null&&delete a[i]};function ya(e,t,n,r,a=!1){if(J(e)){e.forEach((f,h)=>ya(f,t&&(J(t)?t[h]:t),n,r,a));return}if(fr(r)&&!a)return;const o=r.shapeFlag&4?Ca(r.component)||r.component.proxy:r.el,l=a?null:o,{i,r:u}=e,c=t&&t.r,d=i.refs===xe?i.refs={}:i.refs,p=i.setupState;if(c!=null&&c!==u&&(se(c)?(d[c]=null,ve(p,c)&&(p[c]=null)):Re(c)&&(c.value=null)),ae(u))Xt(u,i,12,[l,d]);else{const f=se(u),h=Re(u);if(f||h){const _=()=>{if(e.f){const E=f?ve(p,u)?p[u]:d[u]:u.value;a?J(E)&&qo(E,o):J(E)?E.includes(o)||E.push(o):f?(d[u]=[o],ve(p,u)&&(p[u]=d[u])):(u.value=[o],e.k&&(d[e.k]=u.value))}else f?(d[u]=l,ve(p,u)&&(p[u]=l)):h&&(u.value=l,e.k&&(d[e.k]=l))};l?(_.id=-1,Ue(_,n)):_()}}}let jt=!1;const ea=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",ta=e=>e.nodeType===8;function I0(e){const{mt:t,p:n,o:{patchProp:r,createText:a,nextSibling:o,parentNode:l,remove:i,insert:u,createComment:c}}=e,d=(b,T)=>{if(!T.hasChildNodes()){n(null,b,T),ha(),T._vnode=b;return}jt=!1,p(T.firstChild,b,null,null,null),ha(),T._vnode=b,jt&&console.error("Hydration completed but contains mismatches.")},p=(b,T,$,O,M,D=!1)=>{const N=ta(b)&&b.data==="[",q=()=>E(b,T,$,O,M,N),{type:ee,ref:H,shapeFlag:te,patchFlag:Ie}=T;let Te=b.nodeType;T.el=b,Ie===-2&&(D=!1,T.dynamicChildren=null);let G=null;switch(ee){case zn:Te!==3?T.children===""?(u(T.el=a(""),l(b),b),G=b):G=q():(b.data!==T.children&&(jt=!0,b.data=T.children),G=o(b));break;case it:if(Te!==8||N)if(b.tagName.toLowerCase()==="template"){const ne=T.el.content.firstChild;A(ne,b,$),T.el=b=ne,G=o(b)}else G=q();else G=o(b);break;case hr:if(N&&(b=o(b),Te=b.nodeType),Te===1||Te===3){G=b;const ne=!T.children.length;for(let Y=0;Y{D=D||!!T.dynamicChildren;const{type:N,props:q,patchFlag:ee,shapeFlag:H,dirs:te,transition:Ie}=T,Te=N==="input"&&te||N==="option";if(Te||ee!==-1){if(te&&Tt(T,null,$,"created"),q)if(Te||!D||ee&48)for(const Y in q)(Te&&Y.endsWith("value")||Dr(Y)&&!pr(Y))&&r(b,Y,null,q[Y],!1,void 0,$);else q.onClick&&r(b,"onClick",null,q.onClick,!1,void 0,$);let G;(G=q&&q.onVnodeBeforeMount)&&at(G,$,T);let ne=!1;if(I(b)){ne=fc(O,Ie)&&$&&$.vnode.props&&$.vnode.props.appear;const Y=b.content.firstChild;ne&&Ie.beforeEnter(Y),A(Y,b,$),T.el=b=Y}if(te&&Tt(T,null,$,"beforeMount"),((G=q&&q.onVnodeMounted)||te||ne)&&Qs(()=>{G&&at(G,$,T),ne&&Ie.enter(b),te&&Tt(T,null,$,"mounted")},O),H&16&&!(q&&(q.innerHTML||q.textContent))){let Y=h(b.firstChild,T,b,$,O,M,D);for(;Y;){jt=!0;const De=Y;Y=Y.nextSibling,i(De)}}else H&8&&b.textContent!==T.children&&(jt=!0,b.textContent=T.children)}return b.nextSibling},h=(b,T,$,O,M,D,N)=>{N=N||!!T.dynamicChildren;const q=T.children,ee=q.length;for(let H=0;H{const{slotScopeIds:N}=T;N&&(M=M?M.concat(N):N);const q=l(b),ee=h(o(b),T,q,$,O,M,D);return ee&&ta(ee)&&ee.data==="]"?o(T.anchor=ee):(jt=!0,u(T.anchor=c("]"),q,ee),ee)},E=(b,T,$,O,M,D)=>{if(jt=!0,T.el=null,D){const ee=k(b);for(;;){const H=o(b);if(H&&H!==ee)i(H);else break}}const N=o(b),q=l(b);return i(b),n(null,T,q,N,$,O,ea(q),M),N},k=(b,T="[",$="]")=>{let O=0;for(;b;)if(b=o(b),b&&ta(b)&&(b.data===T&&O++,b.data===$)){if(O===0)return o(b);O--}return b},A=(b,T,$)=>{const O=T.parentNode;O&&O.replaceChild(b,T);let M=$;for(;M;)M.vnode.el===T&&(M.vnode.el=b,M.subTree.el=b),M=M.parent},I=b=>b.nodeType===1&&b.tagName.toLowerCase()==="template";return[d,p]}const Ue=Qs;function P0(e){return D0(e,I0)}function D0(e,t){const n=po();n.__VUE__=!0;const{insert:r,remove:a,patchProp:o,createElement:l,createText:i,createComment:u,setText:c,setElementText:d,parentNode:p,nextSibling:f,setScopeId:h=gt,insertStaticContent:_}=e,E=(g,m,w,L=null,C=null,R=null,j=!1,V=null,F=!!m.dynamicChildren)=>{if(g===m)return;g&&!cn(g,m)&&(L=P(g),$e(g,C,R,!0),g=null),m.patchFlag===-2&&(F=!1,m.dynamicChildren=null);const{type:S,ref:Z,shapeFlag:K}=m;switch(S){case zn:k(g,m,w,L);break;case it:A(g,m,w,L);break;case hr:g==null&&I(m,w,L,j);break;case Xe:H(g,m,w,L,C,R,j,V,F);break;default:K&1?$(g,m,w,L,C,R,j,V,F):K&6?te(g,m,w,L,C,R,j,V,F):(K&64||K&128)&&S.process(g,m,w,L,C,R,j,V,F,z)}Z!=null&&C&&ya(Z,g&&g.ref,R,m||g,!m)},k=(g,m,w,L)=>{if(g==null)r(m.el=i(m.children),w,L);else{const C=m.el=g.el;m.children!==g.children&&c(C,m.children)}},A=(g,m,w,L)=>{g==null?r(m.el=u(m.children||""),w,L):m.el=g.el},I=(g,m,w,L)=>{[g.el,g.anchor]=_(g.children,m,w,L,g.el,g.anchor)},b=({el:g,anchor:m},w,L)=>{let C;for(;g&&g!==m;)C=f(g),r(g,w,L),g=C;r(m,w,L)},T=({el:g,anchor:m})=>{let w;for(;g&&g!==m;)w=f(g),a(g),g=w;a(m)},$=(g,m,w,L,C,R,j,V,F)=>{j=j||m.type==="svg",g==null?O(m,w,L,C,R,j,V,F):N(g,m,C,R,j,V,F)},O=(g,m,w,L,C,R,j,V)=>{let F,S;const{type:Z,props:K,shapeFlag:X,transition:re,dirs:ie}=g;if(F=g.el=l(g.type,R,K&&K.is,K),X&8?d(F,g.children):X&16&&D(g.children,F,null,L,C,R&&Z!=="foreignObject",j,V),ie&&Tt(g,null,L,"created"),M(F,g,g.scopeId,j,L),K){for(const be in K)be!=="value"&&!pr(be)&&o(F,be,null,K[be],R,g.children,L,C,Ce);"value"in K&&o(F,"value",null,K.value),(S=K.onVnodeBeforeMount)&&at(S,L,g)}ie&&Tt(g,null,L,"beforeMount");const we=fc(C,re);we&&re.beforeEnter(F),r(F,m,w),((S=K&&K.onVnodeMounted)||we||ie)&&Ue(()=>{S&&at(S,L,g),we&&re.enter(F),ie&&Tt(g,null,L,"mounted")},C)},M=(g,m,w,L,C)=>{if(w&&h(g,w),L)for(let R=0;R{for(let S=F;S{const V=m.el=g.el;let{patchFlag:F,dynamicChildren:S,dirs:Z}=m;F|=g.patchFlag&16;const K=g.props||xe,X=m.props||xe;let re;w&&on(w,!1),(re=X.onVnodeBeforeUpdate)&&at(re,w,m,g),Z&&Tt(m,g,w,"beforeUpdate"),w&&on(w,!0);const ie=C&&m.type!=="foreignObject";if(S?q(g.dynamicChildren,S,V,w,L,ie,R):j||Y(g,m,V,null,w,L,ie,R,!1),F>0){if(F&16)ee(V,m,K,X,w,L,C);else if(F&2&&K.class!==X.class&&o(V,"class",null,X.class,C),F&4&&o(V,"style",K.style,X.style,C),F&8){const we=m.dynamicProps;for(let be=0;be{re&&at(re,w,m,g),Z&&Tt(m,g,w,"updated")},L)},q=(g,m,w,L,C,R,j)=>{for(let V=0;V{if(w!==L){if(w!==xe)for(const V in w)!pr(V)&&!(V in L)&&o(g,V,w[V],null,j,m.children,C,R,Ce);for(const V in L){if(pr(V))continue;const F=L[V],S=w[V];F!==S&&V!=="value"&&o(g,V,S,F,j,m.children,C,R,Ce)}"value"in L&&o(g,"value",w.value,L.value)}},H=(g,m,w,L,C,R,j,V,F)=>{const S=m.el=g?g.el:i(""),Z=m.anchor=g?g.anchor:i("");let{patchFlag:K,dynamicChildren:X,slotScopeIds:re}=m;re&&(V=V?V.concat(re):re),g==null?(r(S,w,L),r(Z,w,L),D(m.children,w,Z,C,R,j,V,F)):K>0&&K&64&&X&&g.dynamicChildren?(q(g.dynamicChildren,X,w,C,R,j,V),(m.key!=null||C&&m===C.subTree)&&vc(g,m,!0)):Y(g,m,w,Z,C,R,j,V,F)},te=(g,m,w,L,C,R,j,V,F)=>{m.slotScopeIds=V,g==null?m.shapeFlag&512?C.ctx.activate(m,w,L,j,F):Ie(m,w,L,C,R,j,F):Te(g,m,F)},Ie=(g,m,w,L,C,R,j)=>{const V=g.component=H0(g,L,C);if(Br(g)&&(V.ctx.renderer=z),N0(V),V.asyncDep){if(C&&C.registerDep(V,G),!g.el){const F=V.subTree=Pe(it);A(null,F,m,w)}return}G(V,g,m,w,C,R,j)},Te=(g,m,w)=>{const L=m.component=g.component;if(Zd(g,m,w))if(L.asyncDep&&!L.asyncResolved){ne(L,m,w);return}else L.next=m,Ud(L.update),L.update();else m.el=g.el,L.vnode=m},G=(g,m,w,L,C,R,j)=>{const V=()=>{if(g.isMounted){let{next:Z,bu:K,u:X,parent:re,vnode:ie}=g,we=Z,be;on(g,!1),Z?(Z.el=ie.el,ne(g,Z,j)):Z=ie,K&&ca(K),(be=Z.props&&Z.props.onVnodeBeforeUpdate)&&at(be,re,Z,ie),on(g,!0);const Oe=Ha(g),dt=g.subTree;g.subTree=Oe,E(dt,Oe,p(dt.el),P(dt),g,C,R),Z.el=Oe.el,we===null&&Xd(g,Oe.el),X&&Ue(X,C),(be=Z.props&&Z.props.onVnodeUpdated)&&Ue(()=>at(be,re,Z,ie),C)}else{let Z;const{el:K,props:X}=m,{bm:re,m:ie,parent:we}=g,be=fr(m);if(on(g,!1),re&&ca(re),!be&&(Z=X&&X.onVnodeBeforeMount)&&at(Z,we,m),on(g,!0),K&&pe){const Oe=()=>{g.subTree=Ha(g),pe(K,g.subTree,g,C,null)};be?m.type.__asyncLoader().then(()=>!g.isUnmounted&&Oe()):Oe()}else{const Oe=g.subTree=Ha(g);E(null,Oe,w,L,g,C,R),m.el=Oe.el}if(ie&&Ue(ie,C),!be&&(Z=X&&X.onVnodeMounted)){const Oe=m;Ue(()=>at(Z,we,Oe),C)}(m.shapeFlag&256||we&&fr(we.vnode)&&we.vnode.shapeFlag&256)&&g.a&&Ue(g.a,C),g.isMounted=!0,m=w=L=null}},F=g.effect=new Wo(V,()=>La(S),g.scope),S=g.update=()=>F.run();S.id=g.uid,on(g,!0),S()},ne=(g,m,w)=>{m.component=g;const L=g.vnode.props;g.vnode=m,g.next=null,x0(g,m.props,L,w),L0(g,m.children,w),Qn(),Zl(),Zn()},Y=(g,m,w,L,C,R,j,V,F=!1)=>{const S=g&&g.children,Z=g?g.shapeFlag:0,K=m.children,{patchFlag:X,shapeFlag:re}=m;if(X>0){if(X&128){wt(S,K,w,L,C,R,j,V,F);return}else if(X&256){De(S,K,w,L,C,R,j,V,F);return}}re&8?(Z&16&&Ce(S,C,R),K!==S&&d(w,K)):Z&16?re&16?wt(S,K,w,L,C,R,j,V,F):Ce(S,C,R,!0):(Z&8&&d(w,""),re&16&&D(K,w,L,C,R,j,V,F))},De=(g,m,w,L,C,R,j,V,F)=>{g=g||Pn,m=m||Pn;const S=g.length,Z=m.length,K=Math.min(S,Z);let X;for(X=0;XZ?Ce(g,C,R,!0,!1,K):D(m,w,L,C,R,j,V,F,K)},wt=(g,m,w,L,C,R,j,V,F)=>{let S=0;const Z=m.length;let K=g.length-1,X=Z-1;for(;S<=K&&S<=X;){const re=g[S],ie=m[S]=F?Yt(m[S]):ft(m[S]);if(cn(re,ie))E(re,ie,w,null,C,R,j,V,F);else break;S++}for(;S<=K&&S<=X;){const re=g[K],ie=m[X]=F?Yt(m[X]):ft(m[X]);if(cn(re,ie))E(re,ie,w,null,C,R,j,V,F);else break;K--,X--}if(S>K){if(S<=X){const re=X+1,ie=reX)for(;S<=K;)$e(g[S],C,R,!0),S++;else{const re=S,ie=S,we=new Map;for(S=ie;S<=X;S++){const Qe=m[S]=F?Yt(m[S]):ft(m[S]);Qe.key!=null&&we.set(Qe.key,S)}let be,Oe=0;const dt=X-ie+1;let En=!1,zl=0;const or=new Array(dt);for(S=0;S=dt){$e(Qe,C,R,!0);continue}let kt;if(Qe.key!=null)kt=we.get(Qe.key);else for(be=ie;be<=X;be++)if(or[be-ie]===0&&cn(Qe,m[be])){kt=be;break}kt===void 0?$e(Qe,C,R,!0):(or[kt-ie]=S+1,kt>=zl?zl=kt:En=!0,E(Qe,m[kt],w,null,C,R,j,V,F),Oe++)}const Fl=En?C0(or):Pn;for(be=Fl.length-1,S=dt-1;S>=0;S--){const Qe=ie+S,kt=m[Qe],Hl=Qe+1{const{el:R,type:j,transition:V,children:F,shapeFlag:S}=g;if(S&6){nt(g.component.subTree,m,w,L);return}if(S&128){g.suspense.move(m,w,L);return}if(S&64){j.move(g,m,w,z);return}if(j===Xe){r(R,m,w);for(let K=0;KV.enter(R),C);else{const{leave:K,delayLeave:X,afterLeave:re}=V,ie=()=>r(R,m,w),we=()=>{K(R,()=>{ie(),re&&re()})};X?X(R,ie,we):we()}else r(R,m,w)},$e=(g,m,w,L=!1,C=!1)=>{const{type:R,props:j,ref:V,children:F,dynamicChildren:S,shapeFlag:Z,patchFlag:K,dirs:X}=g;if(V!=null&&ya(V,null,w,g,!0),Z&256){m.ctx.deactivate(g);return}const re=Z&1&&X,ie=!fr(g);let we;if(ie&&(we=j&&j.onVnodeBeforeUnmount)&&at(we,m,g),Z&6)xt(g.component,w,L);else{if(Z&128){g.suspense.unmount(w,L);return}re&&Tt(g,null,m,"beforeUnmount"),Z&64?g.type.remove(g,m,w,C,z,L):S&&(R!==Xe||K>0&&K&64)?Ce(S,m,w,!1,!0):(R===Xe&&K&384||!C&&Z&16)&&Ce(F,m,w),L&&Ye(g)}(ie&&(we=j&&j.onVnodeUnmounted)||re)&&Ue(()=>{we&&at(we,m,g),re&&Tt(g,null,m,"unmounted")},w)},Ye=g=>{const{type:m,el:w,anchor:L,transition:C}=g;if(m===Xe){Pt(w,L);return}if(m===hr){T(g);return}const R=()=>{a(w),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(g.shapeFlag&1&&C&&!C.persisted){const{leave:j,delayLeave:V}=C,F=()=>j(w,R);V?V(g.el,R,F):F()}else R()},Pt=(g,m)=>{let w;for(;g!==m;)w=f(g),a(g),g=w;a(m)},xt=(g,m,w)=>{const{bum:L,scope:C,update:R,subTree:j,um:V}=g;L&&ca(L),C.stop(),R&&(R.active=!1,$e(j,g,m,w)),V&&Ue(V,m),Ue(()=>{g.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&g.asyncDep&&!g.asyncResolved&&g.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},Ce=(g,m,w,L=!1,C=!1,R=0)=>{for(let j=R;jg.shapeFlag&6?P(g.component.subTree):g.shapeFlag&128?g.suspense.next():f(g.anchor||g.el),U=(g,m,w)=>{g==null?m._vnode&&$e(m._vnode,null,null,!0):E(m._vnode||null,g,m,null,null,null,w),Zl(),ha(),m._vnode=g},z={p:E,um:$e,m:nt,r:Ye,mt:Ie,mc:D,pc:Y,pbc:q,n:P,o:e};let Q,pe;return t&&([Q,pe]=t(z)),{render:U,hydrate:Q,createApp:A0(U,Q)}}function on({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function fc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function vc(e,t,n=!1){const r=e.children,a=t.children;if(J(r)&&J(a))for(let o=0;o>1,e[n[i]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,l=n[o-1];o-- >0;)n[o]=l,l=t[l];return n}const O0=e=>e.__isTeleport,Xe=Symbol.for("v-fgt"),zn=Symbol.for("v-txt"),it=Symbol.for("v-cmt"),hr=Symbol.for("v-stc"),gr=[];let ht=null;function R0(e=!1){gr.push(ht=e?null:[])}function S0(){gr.pop(),ht=gr[gr.length-1]||null}let kr=1;function ui(e){kr+=e}function hc(e){return e.dynamicChildren=kr>0?ht||Pn:null,S0(),kr>0&&ht&&ht.push(e),e}function Q8(e,t,n,r,a,o){return hc(mc(e,t,n,r,a,o,!0))}function B0(e,t,n,r,a){return hc(Pe(e,t,n,r,a,!0))}function Eo(e){return e?e.__v_isVNode===!0:!1}function cn(e,t){return e.type===t.type&&e.key===t.key}const Da="__vInternal",gc=({key:e})=>e??null,ua=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||Re(e)||ae(e)?{i:et,r:e,k:t,f:!!n}:e:null);function mc(e,t=null,n=null,r=0,a=null,o=e===Xe?0:1,l=!1,i=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gc(t),ref:t&&ua(t),scopeId:Ys,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:et};return i?(ll(u,n),o&128&&e.normalize(u)):n&&(u.shapeFlag|=se(n)?8:16),kr>0&&!l&&ht&&(u.patchFlag>0||o&6)&&u.patchFlag!==32&&ht.push(u),u}const Pe=V0;function V0(e,t=null,n=null,r=0,a=null,o=!1){if((!e||e===f0)&&(e=it),Eo(e)){const i=tn(e,t,!0);return n&&ll(i,n),kr>0&&!o&&ht&&(i.shapeFlag&6?ht[ht.indexOf(e)]=i:ht.push(i)),i.patchFlag|=-2,i}if(W0(e)&&(e=e.__vccOpts),t){t=$0(t);let{class:i,style:u}=t;i&&!se(i)&&(t.class=ka(i)),Ae(u)&&(Hs(u)&&!J(u)&&(u=Be({},u)),t.style=xa(u))}const l=se(e)?1:e0(e)?128:O0(e)?64:Ae(e)?4:ae(e)?2:0;return mc(e,t,n,r,a,l,o,!0)}function $0(e){return e?Hs(e)||Da in e?Be({},e):e:null}function tn(e,t,n=!1){const{props:r,ref:a,patchFlag:o,children:l}=e,i=t?M0(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&gc(i),ref:t&&t.ref?n&&a?J(a)?a.concat(ua(t)):[a,ua(t)]:ua(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tn(e.ssContent),ssFallback:e.ssFallback&&tn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function _c(e=" ",t=0){return Pe(zn,null,e,t)}function Z8(e,t){const n=Pe(hr,null,e);return n.staticCount=t,n}function X8(e="",t=!1){return t?(R0(),B0(it,null,e)):Pe(it,null,e)}function ft(e){return e==null||typeof e=="boolean"?Pe(it):J(e)?Pe(Xe,null,e.slice()):typeof e=="object"?Yt(e):Pe(zn,null,String(e))}function Yt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tn(e)}function ll(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(r&65){const a=t.default;a&&(a._c&&(a._d=!1),ll(e,a()),a._c&&(a._d=!0));return}else{n=32;const a=t._;!a&&!(Da in t)?t._ctx=et:a===3&&et&&(et.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:et},n=32):(t=String(t),r&64?(n=16,t=[_c(t)]):n=8);e.children=t,e.shapeFlag|=n}function M0(...e){const t={};for(let n=0;nVe||et;let il,An,di="__VUE_INSTANCE_SETTERS__";(An=po()[di])||(An=po()[di]=[]),An.push(e=>Ve=e),il=e=>{An.length>1?An.forEach(t=>t(e)):An[0](e)};const Fn=e=>{il(e),e.scope.on()},vn=()=>{Ve&&Ve.scope.off(),il(null)};function yc(e){return e.vnode.shapeFlag&4}let Hn=!1;function N0(e,t=!1){Hn=t;const{props:n,children:r}=e.vnode,a=yc(e);w0(e,n,a,t),T0(e,r);const o=a?q0(e,t):void 0;return Hn=!1,o}function q0(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ns(new Proxy(e.ctx,h0));const{setup:r}=n;if(r){const a=e.setupContext=r.length>1?U0(e):null;Fn(e),Qn();const o=Xt(r,e,0,[e.props,a]);if(Zn(),vn(),xs(o)){if(o.then(vn,vn),t)return o.then(l=>{pi(e,l,t)}).catch(l=>{Sr(l,e,0)});e.asyncDep=o}else pi(e,o,t)}else bc(e,t)}function pi(e,t,n){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ae(t)&&(e.setupState=js(t)),bc(e,n)}let fi;function bc(e,t,n){const r=e.type;if(!e.render){if(!t&&fi&&!r.render){const a=r.template||al(e).template;if(a){const{isCustomElement:o,compilerOptions:l}=e.appContext.config,{delimiters:i,compilerOptions:u}=r,c=Be(Be({isCustomElement:o,delimiters:i},l),u);r.render=fi(a,c)}}e.render=r.render||gt}{Fn(e),Qn();try{g0(e)}finally{Zn(),vn()}}}function j0(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return We(e,"get","$attrs"),t[n]}}))}function U0(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return j0(e)},slots:e.slots,emit:e.emit,expose:t}}function Ca(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(js(Ns(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in vr)return vr[n](e)},has(t,n){return n in t||n in vr}}))}function G0(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function W0(e){return ae(e)&&"__vccOpts"in e}const x=(e,t)=>Nd(e,t,Hn);function s(e,t,n){const r=arguments.length;return r===2?Ae(t)&&!J(t)?Eo(t)?Pe(e,null,[t]):Pe(e,t):Pe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Eo(n)&&(n=[n]),Pe(e,t,n))}const K0=Symbol.for("v-scx"),J0=()=>ge(K0),Y0="3.3.7",Q0="http://www.w3.org/2000/svg",un=typeof document<"u"?document:null,vi=un&&un.createElement("template"),Z0={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const a=t?un.createElementNS(Q0,e):un.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>un.createTextNode(e),createComment:e=>un.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>un.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,a,o){const l=n?n.previousSibling:t.lastChild;if(a&&(a===o||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),n),!(a===o||!(a=a.nextSibling)););else{vi.innerHTML=r?`${e}`:e;const i=vi.content;if(r){const u=i.firstChild;for(;u.firstChild;)i.appendChild(u.firstChild);i.removeChild(u)}t.insertBefore(i,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ut="transition",lr="animation",Nn=Symbol("_vtc"),nn=(e,{slots:t})=>s(r0,Ac(e),t);nn.displayName="Transition";const Ec={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},X0=nn.props=Be({},tc,Ec),ln=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},hi=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function Ac(e){const t={};for(const H in e)H in Ec||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:r,duration:a,enterFromClass:o=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:i=`${n}-enter-to`,appearFromClass:u=o,appearActiveClass:c=l,appearToClass:d=i,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,_=e2(a),E=_&&_[0],k=_&&_[1],{onBeforeEnter:A,onEnter:I,onEnterCancelled:b,onLeave:T,onLeaveCancelled:$,onBeforeAppear:O=A,onAppear:M=I,onAppearCancelled:D=b}=t,N=(H,te,Ie)=>{Kt(H,te?d:i),Kt(H,te?c:l),Ie&&Ie()},q=(H,te)=>{H._isLeaving=!1,Kt(H,p),Kt(H,h),Kt(H,f),te&&te()},ee=H=>(te,Ie)=>{const Te=H?M:I,G=()=>N(te,H,Ie);ln(Te,[te,G]),gi(()=>{Kt(te,H?u:o),Ct(te,H?d:i),hi(Te)||mi(te,r,E,G)})};return Be(t,{onBeforeEnter(H){ln(A,[H]),Ct(H,o),Ct(H,l)},onBeforeAppear(H){ln(O,[H]),Ct(H,u),Ct(H,c)},onEnter:ee(!1),onAppear:ee(!0),onLeave(H,te){H._isLeaving=!0;const Ie=()=>q(H,te);Ct(H,p),xc(),Ct(H,f),gi(()=>{H._isLeaving&&(Kt(H,p),Ct(H,h),hi(T)||mi(H,r,k,Ie))}),ln(T,[H,Ie])},onEnterCancelled(H){N(H,!1),ln(b,[H])},onAppearCancelled(H){N(H,!0),ln(D,[H])},onLeaveCancelled(H){q(H),ln($,[H])}})}function e2(e){if(e==null)return null;if(Ae(e))return[Ua(e.enter),Ua(e.leave)];{const t=Ua(e);return[t,t]}}function Ua(e){return rd(e)}function Ct(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Nn]||(e[Nn]=new Set)).add(t)}function Kt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Nn];n&&(n.delete(t),n.size||(e[Nn]=void 0))}function gi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let t2=0;function mi(e,t,n,r){const a=e._endId=++t2,o=()=>{a===e._endId&&r()};if(n)return setTimeout(o,n);const{type:l,timeout:i,propCount:u}=wc(e,t);if(!l)return r();const c=l+"end";let d=0;const p=()=>{e.removeEventListener(c,f),o()},f=h=>{h.target===e&&++d>=u&&p()};setTimeout(()=>{d(n[_]||"").split(", "),a=r(`${Ut}Delay`),o=r(`${Ut}Duration`),l=_i(a,o),i=r(`${lr}Delay`),u=r(`${lr}Duration`),c=_i(i,u);let d=null,p=0,f=0;t===Ut?l>0&&(d=Ut,p=l,f=o.length):t===lr?c>0&&(d=lr,p=c,f=u.length):(p=Math.max(l,c),d=p>0?l>c?Ut:lr:null,f=d?d===Ut?o.length:u.length:0);const h=d===Ut&&/\b(transform|all)(,|$)/.test(r(`${Ut}Property`).toString());return{type:d,timeout:p,propCount:f,hasTransform:h}}function _i(e,t){for(;e.lengthyi(n)+yi(e[r])))}function yi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function xc(){return document.body.offsetHeight}function n2(e,t,n){const r=e[Nn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const sl=Symbol("_vod"),e5={beforeMount(e,{value:t},{transition:n}){e[sl]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):ir(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),ir(e,!0),r.enter(e)):r.leave(e,()=>{ir(e,!1)}):ir(e,t))},beforeUnmount(e,{value:t}){ir(e,t)}};function ir(e,t){e.style.display=t?e[sl]:"none"}function r2(e,t,n){const r=e.style,a=se(n);if(n&&!a){if(t&&!se(t))for(const o in t)n[o]==null&&Ao(r,o,"");for(const o in n)Ao(r,o,n[o])}else{const o=r.display;a?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),sl in e&&(r.display=o)}}const bi=/\s*!important$/;function Ao(e,t,n){if(J(n))n.forEach(r=>Ao(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=a2(e,t);bi.test(n)?e.setProperty(Yn(r),n.replace(bi,""),"important"):e[r]=n}}const Ei=["Webkit","Moz","ms"],Ga={};function a2(e,t){const n=Ga[t];if(n)return n;let r=ct(t);if(r!=="filter"&&r in e)return Ga[t]=r;r=Or(r);for(let a=0;aWa||(u2.then(()=>Wa=0),Wa=Date.now());function p2(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;lt(f2(r,n.value),t,5,[r])};return n.value=e,n.attached=d2(),n}function f2(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>a=>!a._stopped&&r&&r(a))}else return t}const ki=/^on[a-z]/,v2=(e,t,n,r,a=!1,o,l,i,u)=>{t==="class"?n2(e,r,a):t==="style"?r2(e,n,r):Dr(t)?No(t)||s2(e,t,n,r,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):h2(e,t,r,a))?l2(e,t,r,o,l,i,u):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),o2(e,t,r,a))};function h2(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&ki.test(t)&&ae(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||ki.test(t)&&se(n)?!1:t in e}const kc=new WeakMap,Tc=new WeakMap,ba=Symbol("_moveCb"),Ti=Symbol("_enterCb"),Lc={name:"TransitionGroup",props:Be({},X0,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=yn(),r=ec();let a,o;return ac(()=>{if(!a.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!E2(a[0].el,n.vnode.el,l))return;a.forEach(_2),a.forEach(y2);const i=a.filter(b2);xc(),i.forEach(u=>{const c=u.el,d=c.style;Ct(c,l),d.transform=d.webkitTransform=d.transitionDuration="";const p=c[ba]=f=>{f&&f.target!==c||(!f||/transform$/.test(f.propertyName))&&(c.removeEventListener("transitionend",p),c[ba]=null,Kt(c,l))};c.addEventListener("transitionend",p)})}),()=>{const l=de(e),i=Ac(l);let u=l.tag||Xe;a=o,o=t.default?nl(t.default()):[];for(let c=0;cdelete e.mode;Lc.props;const m2=Lc;function _2(e){const t=e.el;t[ba]&&t[ba](),t[Ti]&&t[Ti]()}function y2(e){Tc.set(e,e.el.getBoundingClientRect())}function b2(e){const t=kc.get(e),n=Tc.get(e),r=t.left-n.left,a=t.top-n.top;if(r||a){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${r}px,${a}px)`,o.transitionDuration="0s",e}}function E2(e,t,n){const r=e.cloneNode(),a=e[Nn];a&&a.forEach(i=>{i.split(/\s+/).forEach(u=>u&&r.classList.remove(u))}),n.split(/\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:l}=wc(r);return o.removeChild(r),l}const rn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return J(t)?n=>ca(t,n):t};function A2(e){e.target.composing=!0}function Li(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const st=Symbol("_assign"),Ii={created(e,{modifiers:{lazy:t,trim:n,number:r}},a){e[st]=rn(a);const o=r||a.props&&a.props.type==="number";Bt(e,t?"change":"input",l=>{if(l.target.composing)return;let i=e.value;n&&(i=i.trim()),o&&(i=pa(i)),e[st](i)}),n&&Bt(e,"change",()=>{e.value=e.value.trim()}),t||(Bt(e,"compositionstart",A2),Bt(e,"compositionend",Li),Bt(e,"change",Li))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:a}},o){if(e[st]=rn(o),e.composing||document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===t||(a||e.type==="number")&&pa(e.value)===t))return;const l=t??"";e.value!==l&&(e.value=l)}},w2={deep:!0,created(e,t,n){e[st]=rn(n),Bt(e,"change",()=>{const r=e._modelValue,a=qn(e),o=e.checked,l=e[st];if(J(r)){const i=Uo(r,a),u=i!==-1;if(o&&!u)l(r.concat(a));else if(!o&&u){const c=[...r];c.splice(i,1),l(c)}}else if(Jn(r)){const i=new Set(r);o?i.add(a):i.delete(a),l(i)}else l(Ic(e,o))})},mounted:Pi,beforeUpdate(e,t,n){e[st]=rn(n),Pi(e,t,n)}};function Pi(e,{value:t,oldValue:n},r){e._modelValue=t,J(t)?e.checked=Uo(t,r.props.value)>-1:Jn(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=gn(t,Ic(e,!0)))}const x2={created(e,{value:t},n){e.checked=gn(t,n.props.value),e[st]=rn(n),Bt(e,"change",()=>{e[st](qn(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[st]=rn(r),t!==n&&(e.checked=gn(t,r.props.value))}},k2={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const a=Jn(t);Bt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?pa(qn(l)):qn(l));e[st](e.multiple?a?new Set(o):o:o[0])}),e[st]=rn(r)},mounted(e,{value:t}){Di(e,t)},beforeUpdate(e,t,n){e[st]=rn(n)},updated(e,{value:t}){Di(e,t)}};function Di(e,t){const n=e.multiple;if(!(n&&!J(t)&&!Jn(t))){for(let r=0,a=e.options.length;r-1:o.selected=t.has(l);else if(gn(qn(o),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function qn(e){return"_value"in e?e._value:e.value}function Ic(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const t5={created(e,t,n){na(e,t,n,null,"created")},mounted(e,t,n){na(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){na(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){na(e,t,n,r,"updated")}};function T2(e,t){switch(e){case"SELECT":return k2;case"TEXTAREA":return Ii;default:switch(t){case"checkbox":return w2;case"radio":return x2;default:return Ii}}}function na(e,t,n,r,a){const l=T2(e.tagName,n.props&&n.props.type)[a];l&&l(e,t,n,r)}const L2=Be({patchProp:v2},Z0);let Ka,Ci=!1;function I2(){return Ka=Ci?Ka:P0(L2),Ci=!0,Ka}const P2=(...e)=>{const t=I2().createApp(...e),{mount:n}=t;return t.mount=r=>{const a=D2(r);if(a)return n(a,!0,a instanceof SVGElement)},t};function D2(e){return se(e)?document.querySelector(e):e}const C2={"v-8daa1a0e":()=>v(()=>import("./index.html-2174a2af.js"),[]).then(({data:e})=>e),"v-184f4da6":()=>v(()=>import("./intro.html-208ed657.js"),[]).then(({data:e})=>e),"v-2e3eac9e":()=>v(()=>import("./slides.html-ebe0e0e3.js"),[]).then(({data:e})=>e),"v-1473bf53":()=>v(()=>import("./index.html-4686c0ad.js"),[]).then(({data:e})=>e),"v-4e65ec78":()=>v(()=>import("./disable.html-78a046cc.js"),[]).then(({data:e})=>e),"v-c151bf32":()=>v(()=>import("./encrypt.html-988f9711.js"),[]).then(({data:e})=>e),"v-438ffe52":()=>v(()=>import("./markdown.html-46872f94.js"),[]).then(({data:e})=>e),"v-6e19edb7":()=>v(()=>import("./page.html-e5bbf2ec.js"),[]).then(({data:e})=>e),"v-2d0a870d":()=>v(()=>import("./index.html-33f47f55.js"),[]).then(({data:e})=>e),"v-5aa3d8ba":()=>v(()=>import("./intro.html-ff7ca9d0.js"),[]).then(({data:e})=>e),"v-367b840a":()=>v(()=>import("./slides.html-79167dbc.js"),[]).then(({data:e})=>e),"v-2bc6566a":()=>v(()=>import("./cherry.html-f2388573.js"),[]).then(({data:e})=>e),"v-24b7c48d":()=>v(()=>import("./dragonfruit.html-6efacfc7.js"),[]).then(({data:e})=>e),"v-f0ec4556":()=>v(()=>import("./strawberry.html-f188bdf7.js"),[]).then(({data:e})=>e),"v-df8b6e0c":()=>v(()=>import("./tomato.html-d4d71af4.js"),[]).then(({data:e})=>e),"v-2d0ad528":()=>v(()=>import("./index.html-e01d58e1.js"),[]).then(({data:e})=>e),"v-858cfdd6":()=>v(()=>import("./intro.html-d88a371c.js"),[]).then(({data:e})=>e),"v-269ae70f":()=>v(()=>import("./slides.html-4bd7292f.js"),[]).then(({data:e})=>e),"v-395cd082":()=>v(()=>import("./index.html-deb345b1.js"),[]).then(({data:e})=>e),"v-70eda030":()=>v(()=>import("./disable.html-3ec8de69.js"),[]).then(({data:e})=>e),"v-3777b6d3":()=>v(()=>import("./encrypt.html-f00fc6c2.js"),[]).then(({data:e})=>e),"v-4a2a37eb":()=>v(()=>import("./markdown.html-9c531858.js"),[]).then(({data:e})=>e),"v-0e4acecb":()=>v(()=>import("./page.html-f2efc410.js"),[]).then(({data:e})=>e),"v-fb852992":()=>v(()=>import("./cherry.html-be6b47f8.js"),[]).then(({data:e})=>e),"v-4fd051a1":()=>v(()=>import("./dragonfruit.html-a4c17e92.js"),[]).then(({data:e})=>e),"v-57615dc1":()=>v(()=>import("./strawberry.html-b3820174.js"),[]).then(({data:e})=>e),"v-285adf66":()=>v(()=>import("./tomato.html-9623d888.js"),[]).then(({data:e})=>e),"v-a774cac2":()=>v(()=>import("./1.html-99b00a11.js"),[]).then(({data:e})=>e),"v-a40b1984":()=>v(()=>import("./2.html-13787e11.js"),[]).then(({data:e})=>e),"v-35da9c94":()=>v(()=>import("./ChatGPT-Porxy.html-de97ded1.js"),[]).then(({data:e})=>e),"v-4a4bc7f0":()=>v(()=>import("./buildSUB.html-d4d5818c.js"),[]).then(({data:e})=>e),"v-8ab23706":()=>v(()=>import("./chatgpt.html-0e94b5e7.js"),[]).then(({data:e})=>e),"v-61324722":()=>v(()=>import("./github-actions-deploy.html-ecab9a4e.js"),[]).then(({data:e})=>e),"v-43216ef9":()=>v(()=>import("./hello-world.html-9cbd108a.js"),[]).then(({data:e})=>e),"v-31eb4ef5":()=>v(()=>import("./nginx-proxy-manager.html-13059ba0.js"),[]).then(({data:e})=>e),"v-0772a69c":()=>v(()=>import("./server-building.html-424f8839.js"),[]).then(({data:e})=>e),"v-7a07405d":()=>v(()=>import("./1.html-b8dbf94b.js"),[]).then(({data:e})=>e),"v-7bbc18fc":()=>v(()=>import("./2.html-5ee5455f.js"),[]).then(({data:e})=>e),"v-7d70f19b":()=>v(()=>import("./3.html-817614d7.js"),[]).then(({data:e})=>e),"v-7f25ca3a":()=>v(()=>import("./4.html-6d09feae.js"),[]).then(({data:e})=>e),"v-2b64e284":()=>v(()=>import("./index.html-0e085ef0.js"),[]).then(({data:e})=>e),"v-c1942916":()=>v(()=>import("./disable.html-61d68028.js"),[]).then(({data:e})=>e),"v-65c00218":()=>v(()=>import("./encrypt.html-8faba332.js"),[]).then(({data:e})=>e),"v-36295574":()=>v(()=>import("./markdown.html-fe0c1a9c.js"),[]).then(({data:e})=>e),"v-62ced1a6":()=>v(()=>import("./page.html-a33894fd.js"),[]).then(({data:e})=>e),"v-9ef49308":()=>v(()=>import("./cherry.html-a43df248.js"),[]).then(({data:e})=>e),"v-3fbd497c":()=>v(()=>import("./dragonfruit.html-a8a7fb22.js"),[]).then(({data:e})=>e),"v-46587e86":()=>v(()=>import("./strawberry.html-0eeb5d48.js"),[]).then(({data:e})=>e),"v-56a32aab":()=>v(()=>import("./tomato.html-afdbd350.js"),[]).then(({data:e})=>e),"v-58aa03b4":()=>v(()=>import("./1.html-a3f9308e.js"),[]).then(({data:e})=>e),"v-55405276":()=>v(()=>import("./2.html-8491e5cf.js"),[]).then(({data:e})=>e),"v-51d6a138":()=>v(()=>import("./3.html-9f696df2.js"),[]).then(({data:e})=>e),"v-4e6ceffa":()=>v(()=>import("./4.html-bdc6058b.js"),[]).then(({data:e})=>e),"v-e748286e":()=>v(()=>import("./1.html-1032a824.js"),[]).then(({data:e})=>e),"v-e3de7730":()=>v(()=>import("./2.html-bb863dbd.js"),[]).then(({data:e})=>e),"v-e074c5f2":()=>v(()=>import("./3.html-e0c9a155.js"),[]).then(({data:e})=>e),"v-dd0b14b4":()=>v(()=>import("./4.html-dadcce07.js"),[]).then(({data:e})=>e),"v-2dbba8f8":()=>v(()=>import("./1993.html-d706fdc4.js"),[]).then(({data:e})=>e),"v-341ff586":()=>v(()=>import("./Best-Emoji.html-af2a208a.js"),[]).then(({data:e})=>e),"v-5bfd020e":()=>v(()=>import("./beautification.html-8d019e22.js"),[]).then(({data:e})=>e),"v-5cd0d543":()=>v(()=>import("./Hackintosh.html-cfb7bd5c.js"),[]).then(({data:e})=>e),"v-7bfcd410":()=>v(()=>import("./1.html-449e07d3.js"),[]).then(({data:e})=>e),"v-7db1acaf":()=>v(()=>import("./2.html-aeec39e7.js"),[]).then(({data:e})=>e),"v-4e9249a7":()=>v(()=>import("./ChatGPT-Porxy.html-1f69656f.js"),[]).then(({data:e})=>e),"v-a7d18542":()=>v(()=>import("./buildSUB.html-196abc4b.js"),[]).then(({data:e})=>e),"v-41ef852e":()=>v(()=>import("./chatgpt.html-da63863a.js"),[]).then(({data:e})=>e),"v-3bcbf360":()=>v(()=>import("./github-actions-deploy.html-15f8f31c.js"),[]).then(({data:e})=>e),"v-824f61ac":()=>v(()=>import("./hello-world.html-1ad4eff2.js"),[]).then(({data:e})=>e),"v-4c4923b4":()=>v(()=>import("./nginx-proxy-manager.html-f3156cb9.js"),[]).then(({data:e})=>e),"v-04400c63":()=>v(()=>import("./server-building.html-b1f291a7.js"),[]).then(({data:e})=>e),"v-7e743fa4":()=>v(()=>import("./DDNS.html-916db36a.js"),[]).then(({data:e})=>e),"v-56f6d9f8":()=>v(()=>import("./github-tools.html-3f99a866.js"),[]).then(({data:e})=>e),"v-2f667f90":()=>v(()=>import("./kms.html-e9b66b86.js"),[]).then(({data:e})=>e),"v-3c555280":()=>v(()=>import("./port-forwarding.html-28419169.js"),[]).then(({data:e})=>e),"v-3706649a":()=>v(()=>import("./404.html-a1286a25.js"),[]).then(({data:e})=>e),"v-e1e3da16":()=>v(()=>import("./index.html-b58e281d.js"),[]).then(({data:e})=>e),"v-c8296fee":()=>v(()=>import("./index.html-f98124b1.js"),[]).then(({data:e})=>e),"v-1e55f097":()=>v(()=>import("./index.html-73f62d57.js"),[]).then(({data:e})=>e),"v-30be3cd5":()=>v(()=>import("./index.html-0f8d202f.js"),[]).then(({data:e})=>e),"v-564155e4":()=>v(()=>import("./index.html-0d9b3901.js"),[]).then(({data:e})=>e),"v-0852455e":()=>v(()=>import("./index.html-9af9f030.js"),[]).then(({data:e})=>e),"v-1d22e941":()=>v(()=>import("./index.html-4303aa5d.js"),[]).then(({data:e})=>e),"v-1033d682":()=>v(()=>import("./index.html-4dc0821b.js"),[]).then(({data:e})=>e),"v-0db6c3c0":()=>v(()=>import("./index.html-e44c0578.js"),[]).then(({data:e})=>e),"v-708d52c8":()=>v(()=>import("./index.html-0ac4f744.js"),[]).then(({data:e})=>e),"v-0c6e4410":()=>v(()=>import("./index.html-2a2e637f.js"),[]).then(({data:e})=>e),"v-5bc93818":()=>v(()=>import("./index.html-bb914c66.js"),[]).then(({data:e})=>e),"v-744d024e":()=>v(()=>import("./index.html-049a994e.js"),[]).then(({data:e})=>e),"v-e52c881c":()=>v(()=>import("./index.html-dd92bd1d.js"),[]).then(({data:e})=>e),"v-154dc4c4":()=>v(()=>import("./index.html-f562a673.js"),[]).then(({data:e})=>e),"v-01560935":()=>v(()=>import("./index.html-0cea9727.js"),[]).then(({data:e})=>e),"v-03d57386":()=>v(()=>import("./index.html-f5761f6a.js"),[]).then(({data:e})=>e),"v-83e1f92e":()=>v(()=>import("./index.html-4243404d.js"),[]).then(({data:e})=>e),"v-54d7ff21":()=>v(()=>import("./index.html-44d88349.js"),[]).then(({data:e})=>e),"v-2c3ee7f5":()=>v(()=>import("./index.html-9ddc3ed1.js"),[]).then(({data:e})=>e),"v-27b02be6":()=>v(()=>import("./index.html-5927d627.js"),[]).then(({data:e})=>e),"v-0c75a0f8":()=>v(()=>import("./index.html-5b9fef92.js"),[]).then(({data:e})=>e),"v-1e447d61":()=>v(()=>import("./index.html-7e8dd85b.js"),[]).then(({data:e})=>e),"v-506407f4":()=>v(()=>import("./index.html-5ef04573.js"),[]).then(({data:e})=>e),"v-37a8c5a0":()=>v(()=>import("./index.html-54df182a.js"),[]).then(({data:e})=>e),"v-0379cba1":()=>v(()=>import("./index.html-a6b949a6.js"),[]).then(({data:e})=>e),"v-226a68ec":()=>v(()=>import("./index.html-c0fde1da.js"),[]).then(({data:e})=>e),"v-484552dc":()=>v(()=>import("./index.html-24712add.js"),[]).then(({data:e})=>e),"v-12590846":()=>v(()=>import("./index.html-4e629551.js"),[]).then(({data:e})=>e),"v-a378ad66":()=>v(()=>import("./index.html-8e047b1f.js"),[]).then(({data:e})=>e),"v-247d58ff":()=>v(()=>import("./index.html-78be7d0e.js"),[]).then(({data:e})=>e),"v-7b167472":()=>v(()=>import("./index.html-acbf4d5d.js"),[]).then(({data:e})=>e),"v-76b80ea2":()=>v(()=>import("./index.html-6e221866.js"),[]).then(({data:e})=>e),"v-0f1d0e94":()=>v(()=>import("./index.html-761f915e.js"),[]).then(({data:e})=>e),"v-40b68770":()=>v(()=>import("./index.html-21229423.js"),[]).then(({data:e})=>e),"v-3e6b05e8":()=>v(()=>import("./index.html-87993c69.js"),[]).then(({data:e})=>e),"v-e686ee16":()=>v(()=>import("./index.html-007dbaa1.js"),[]).then(({data:e})=>e),"v-301b24f4":()=>v(()=>import("./index.html-dcc5f69d.js"),[]).then(({data:e})=>e),"v-4c41ef7e":()=>v(()=>import("./index.html-87b6652a.js"),[]).then(({data:e})=>e),"v-3ceeab45":()=>v(()=>import("./index.html-1a889665.js"),[]).then(({data:e})=>e),"v-fbb94a6e":()=>v(()=>import("./index.html-2becdb8e.js"),[]).then(({data:e})=>e),"v-3a8afeec":()=>v(()=>import("./index.html-2fc1fb87.js"),[]).then(({data:e})=>e),"v-2a32a3a8":()=>v(()=>import("./index.html-d18f86c2.js"),[]).then(({data:e})=>e),"v-6a4c233e":()=>v(()=>import("./index.html-ad570406.js"),[]).then(({data:e})=>e),"v-16890533":()=>v(()=>import("./index.html-ccb3bf30.js"),[]).then(({data:e})=>e),"v-1b3ae9cf":()=>v(()=>import("./index.html-9625f5db.js"),[]).then(({data:e})=>e),"v-d28a2a8a":()=>v(()=>import("./index.html-f8464440.js"),[]).then(({data:e})=>e),"v-2836033f":()=>v(()=>import("./index.html-19c228b2.js"),[]).then(({data:e})=>e),"v-1397518c":()=>v(()=>import("./index.html-c4006b01.js"),[]).then(({data:e})=>e),"v-42254370":()=>v(()=>import("./index.html-37dda41c.js"),[]).then(({data:e})=>e),"v-41412eae":()=>v(()=>import("./index.html-a121904d.js"),[]).then(({data:e})=>e),"v-3aafda76":()=>v(()=>import("./index.html-6d1eebb8.js"),[]).then(({data:e})=>e),"v-d908375e":()=>v(()=>import("./index.html-c41e65fa.js"),[]).then(({data:e})=>e),"v-624a9248":()=>v(()=>import("./index.html-c72f9553.js"),[]).then(({data:e})=>e),"v-072edc12":()=>v(()=>import("./index.html-3747f491.js"),[]).then(({data:e})=>e),"v-540234fd":()=>v(()=>import("./index.html-c9256ac9.js"),[]).then(({data:e})=>e),"v-acff42b8":()=>v(()=>import("./index.html-64d62604.js"),[]).then(({data:e})=>e),"v-03ba1c5a":()=>v(()=>import("./index.html-1218967e.js"),[]).then(({data:e})=>e),"v-5decfa84":()=>v(()=>import("./index.html-574c4b96.js"),[]).then(({data:e})=>e),"v-05bf9c12":()=>v(()=>import("./index.html-e650b7d7.js"),[]).then(({data:e})=>e),"v-0fe52c37":()=>v(()=>import("./index.html-4d2562e7.js"),[]).then(({data:e})=>e),"v-2e14b8c3":()=>v(()=>import("./index.html-cbdb6146.js"),[]).then(({data:e})=>e),"v-02c6a6b2":()=>v(()=>import("./index.html-a722279f.js"),[]).then(({data:e})=>e),"v-d4827004":()=>v(()=>import("./index.html-e06a6a85.js"),[]).then(({data:e})=>e),"v-2e75e8de":()=>v(()=>import("./index.html-2e8c79ab.js"),[]).then(({data:e})=>e),"v-ac203710":()=>v(()=>import("./index.html-065e1981.js"),[]).then(({data:e})=>e),"v-0e0b961f":()=>v(()=>import("./index.html-c7c398d8.js"),[]).then(({data:e})=>e),"v-03d1f283":()=>v(()=>import("./index.html-b37fb657.js"),[]).then(({data:e})=>e),"v-b6ff5888":()=>v(()=>import("./index.html-8a4eb19b.js"),[]).then(({data:e})=>e),"v-331fe9d7":()=>v(()=>import("./index.html-47b3a952.js"),[]).then(({data:e})=>e),"v-dbaf7c9c":()=>v(()=>import("./index.html-47866d65.js"),[]).then(({data:e})=>e),"v-24d008e3":()=>v(()=>import("./index.html-06b5c0ab.js"),[]).then(({data:e})=>e),"v-0564ef99":()=>v(()=>import("./index.html-e2d9b3f4.js"),[]).then(({data:e})=>e),"v-31a38f34":()=>v(()=>import("./index.html-036d5575.js"),[]).then(({data:e})=>e),"v-7b34f334":()=>v(()=>import("./index.html-012bd0f3.js"),[]).then(({data:e})=>e),"v-056557ee":()=>v(()=>import("./index.html-6f058255.js"),[]).then(({data:e})=>e),"v-e7d392ca":()=>v(()=>import("./index.html-b6b3695f.js"),[]).then(({data:e})=>e),"v-4e9025f0":()=>v(()=>import("./index.html-4cce6341.js"),[]).then(({data:e})=>e),"v-69f11ebc":()=>v(()=>import("./index.html-f9a257f5.js"),[]).then(({data:e})=>e),"v-1434d78e":()=>v(()=>import("./index.html-1f569943.js"),[]).then(({data:e})=>e),"v-62a85daf":()=>v(()=>import("./index.html-17df3c26.js"),[]).then(({data:e})=>e),"v-6d724c00":()=>v(()=>import("./index.html-a1d071f7.js"),[]).then(({data:e})=>e),"v-4ea8afad":()=>v(()=>import("./index.html-17082b8f.js"),[]).then(({data:e})=>e),"v-230c5884":()=>v(()=>import("./index.html-25a7a20d.js"),[]).then(({data:e})=>e),"v-bb53961e":()=>v(()=>import("./index.html-0c2f8d08.js"),[]).then(({data:e})=>e),"v-6de7b97b":()=>v(()=>import("./index.html-ce7f8a63.js"),[]).then(({data:e})=>e),"v-409d800e":()=>v(()=>import("./index.html-91ae13a7.js"),[]).then(({data:e})=>e),"v-075c6c62":()=>v(()=>import("./index.html-2ffe42fc.js"),[]).then(({data:e})=>e),"v-c6edb6ae":()=>v(()=>import("./index.html-1d3874dd.js"),[]).then(({data:e})=>e),"v-0017792c":()=>v(()=>import("./index.html-6fb777f3.js"),[]).then(({data:e})=>e),"v-6f7bfa04":()=>v(()=>import("./index.html-dd2110a7.js"),[]).then(({data:e})=>e),"v-7e751551":()=>v(()=>import("./index.html-b3e66cf8.js"),[]).then(({data:e})=>e),"v-29e33f95":()=>v(()=>import("./index.html-dbbb87a9.js"),[]).then(({data:e})=>e),"v-1e3e75c0":()=>v(()=>import("./index.html-d0b117c4.js"),[]).then(({data:e})=>e),"v-3de926ea":()=>v(()=>import("./index.html-d08a63ec.js"),[]).then(({data:e})=>e),"v-3c599b43":()=>v(()=>import("./index.html-7d27e18d.js"),[]).then(({data:e})=>e),"v-1e4ce2de":()=>v(()=>import("./index.html-391cd8a7.js"),[]).then(({data:e})=>e),"v-a0d528ce":()=>v(()=>import("./index.html-3d8ed229.js"),[]).then(({data:e})=>e),"v-231414e4":()=>v(()=>import("./index.html-f58c0db5.js"),[]).then(({data:e})=>e),"v-2ae80a11":()=>v(()=>import("./index.html-0fb55a0f.js"),[]).then(({data:e})=>e)},O2=JSON.parse('{"base":"/","lang":"en-US","title":"","description":"","head":[],"locales":{"/":{"lang":"zh-TW","title":"風至萬始蘇","description":"炆途博客"},"/zh/":{"lang":"zh-CN","title":"风至万始苏","description":"炆途博客"},"/en/":{"lang":"en-US","title":"SpringVen2s","description":"Ven2s`Blog"}}}');var R2=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),S2=e=>{const t=new Set,n=[];return e.forEach(r=>{const a=R2(r);t.has(a)||(t.add(a),n.push(r))}),n},B2=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,V2=e=>e.startsWith("ftp://"),bn=e=>/^(https?:)?\/\//.test(e),$2=/.md((\?|#).*)?$/,Tr=(e,t="/")=>!!(bn(e)||V2(e)||e.startsWith("/")&&!e.startsWith(t)&&!$2.test(e)),Pc=e=>/^mailto:/.test(e),M2=e=>/^tel:/.test(e),$r=e=>Object.prototype.toString.call(e)==="[object Object]",cl=e=>e[e.length-1]==="/"?e.slice(0,-1):e,Dc=e=>e[0]==="/"?e.slice(1):e,z2=(e,t)=>{const n=Object.keys(e).sort((r,a)=>{const o=a.split("/").length-r.split("/").length;return o!==0?o:a.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const Cc={"v-8daa1a0e":y(()=>v(()=>import("./index.html-9197d40a.js"),["assets/index.html-9197d40a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-184f4da6":y(()=>v(()=>import("./intro.html-344b44b3.js"),["assets/intro.html-344b44b3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2e3eac9e":y(()=>v(()=>import("./slides.html-da4b3301.js"),["assets/slides.html-da4b3301.js","assets/logo-a60c622a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1473bf53":y(()=>v(()=>import("./index.html-aaf3697f.js"),["assets/index.html-aaf3697f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4e65ec78":y(()=>v(()=>import("./disable.html-07e2f12d.js"),["assets/disable.html-07e2f12d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c151bf32":y(()=>v(()=>import("./encrypt.html-1fecc6d1.js"),["assets/encrypt.html-1fecc6d1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-438ffe52":y(()=>v(()=>import("./markdown.html-202ac50d.js"),["assets/markdown.html-202ac50d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6e19edb7":y(()=>v(()=>import("./page.html-0966e4c1.js"),["assets/page.html-0966e4c1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2d0a870d":y(()=>v(()=>import("./index.html-3a2d212f.js"),["assets/index.html-3a2d212f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5aa3d8ba":y(()=>v(()=>import("./intro.html-3aa982bb.js"),["assets/intro.html-3aa982bb.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-367b840a":y(()=>v(()=>import("./slides.html-0784e899.js"),["assets/slides.html-0784e899.js","assets/logo-a60c622a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2bc6566a":y(()=>v(()=>import("./cherry.html-64848783.js"),["assets/cherry.html-64848783.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-24b7c48d":y(()=>v(()=>import("./dragonfruit.html-60760284.js"),["assets/dragonfruit.html-60760284.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-f0ec4556":y(()=>v(()=>import("./strawberry.html-9f69b79b.js"),["assets/strawberry.html-9f69b79b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-df8b6e0c":y(()=>v(()=>import("./tomato.html-7bbdbf2c.js"),["assets/tomato.html-7bbdbf2c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2d0ad528":y(()=>v(()=>import("./index.html-fcf6aa01.js"),["assets/index.html-fcf6aa01.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-858cfdd6":y(()=>v(()=>import("./intro.html-5bd46b18.js"),["assets/intro.html-5bd46b18.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-269ae70f":y(()=>v(()=>import("./slides.html-ecba1088.js"),["assets/slides.html-ecba1088.js","assets/logo-a60c622a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-395cd082":y(()=>v(()=>import("./index.html-dce08821.js"),["assets/index.html-dce08821.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-70eda030":y(()=>v(()=>import("./disable.html-c470c395.js"),["assets/disable.html-c470c395.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3777b6d3":y(()=>v(()=>import("./encrypt.html-fa21a3e7.js"),["assets/encrypt.html-fa21a3e7.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4a2a37eb":y(()=>v(()=>import("./markdown.html-2bb2ac29.js"),["assets/markdown.html-2bb2ac29.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0e4acecb":y(()=>v(()=>import("./page.html-a303d126.js"),["assets/page.html-a303d126.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fb852992":y(()=>v(()=>import("./cherry.html-5df54d22.js"),["assets/cherry.html-5df54d22.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4fd051a1":y(()=>v(()=>import("./dragonfruit.html-fdae76db.js"),["assets/dragonfruit.html-fdae76db.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-57615dc1":y(()=>v(()=>import("./strawberry.html-b5eb1cc3.js"),["assets/strawberry.html-b5eb1cc3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-285adf66":y(()=>v(()=>import("./tomato.html-4c61087c.js"),["assets/tomato.html-4c61087c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a774cac2":y(()=>v(()=>import("./1.html-bb97d1e2.js"),["assets/1.html-bb97d1e2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a40b1984":y(()=>v(()=>import("./2.html-cc550f1b.js"),["assets/2.html-cc550f1b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-35da9c94":y(()=>v(()=>import("./ChatGPT-Porxy.html-d4917951.js"),["assets/ChatGPT-Porxy.html-d4917951.js","assets/1-2e05d854.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4a4bc7f0":y(()=>v(()=>import("./buildSUB.html-372a093e.js"),["assets/buildSUB.html-372a093e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-8ab23706":y(()=>v(()=>import("./chatgpt.html-581152ce.js"),["assets/chatgpt.html-581152ce.js","assets/3-47e785b4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-61324722":y(()=>v(()=>import("./github-actions-deploy.html-c7656f1e.js"),["assets/github-actions-deploy.html-c7656f1e.js","assets/4-8d3c8c2c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43216ef9":y(()=>v(()=>import("./hello-world.html-7afd7a15.js"),["assets/hello-world.html-7afd7a15.js","assets/gitlab-240b439b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-31eb4ef5":y(()=>v(()=>import("./nginx-proxy-manager.html-cfe76f33.js"),["assets/nginx-proxy-manager.html-cfe76f33.js","assets/3-834f457d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0772a69c":y(()=>v(()=>import("./server-building.html-cc75cf19.js"),["assets/server-building.html-cc75cf19.js","assets/live-torrent-6fc3c6a8.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7a07405d":y(()=>v(()=>import("./1.html-d52f6bd7.js"),["assets/1.html-d52f6bd7.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7bbc18fc":y(()=>v(()=>import("./2.html-ab96963d.js"),["assets/2.html-ab96963d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7d70f19b":y(()=>v(()=>import("./3.html-c30956c8.js"),["assets/3.html-c30956c8.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7f25ca3a":y(()=>v(()=>import("./4.html-ba1ff88e.js"),["assets/4.html-ba1ff88e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2b64e284":y(()=>v(()=>import("./index.html-a4ac88dd.js"),["assets/index.html-a4ac88dd.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c1942916":y(()=>v(()=>import("./disable.html-55d3ff70.js"),["assets/disable.html-55d3ff70.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-65c00218":y(()=>v(()=>import("./encrypt.html-33c2ad73.js"),["assets/encrypt.html-33c2ad73.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-36295574":y(()=>v(()=>import("./markdown.html-824b090a.js"),["assets/markdown.html-824b090a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-62ced1a6":y(()=>v(()=>import("./page.html-5118fdff.js"),["assets/page.html-5118fdff.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-9ef49308":y(()=>v(()=>import("./cherry.html-efbd7cf6.js"),["assets/cherry.html-efbd7cf6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3fbd497c":y(()=>v(()=>import("./dragonfruit.html-2981b961.js"),["assets/dragonfruit.html-2981b961.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-46587e86":y(()=>v(()=>import("./strawberry.html-06d5cb3a.js"),["assets/strawberry.html-06d5cb3a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-56a32aab":y(()=>v(()=>import("./tomato.html-fb607432.js"),["assets/tomato.html-fb607432.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-58aa03b4":y(()=>v(()=>import("./1.html-1b77b33d.js"),["assets/1.html-1b77b33d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-55405276":y(()=>v(()=>import("./2.html-44d6ebcf.js"),["assets/2.html-44d6ebcf.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-51d6a138":y(()=>v(()=>import("./3.html-f565a574.js"),["assets/3.html-f565a574.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4e6ceffa":y(()=>v(()=>import("./4.html-f8c9175b.js"),["assets/4.html-f8c9175b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e748286e":y(()=>v(()=>import("./1.html-98ae9950.js"),["assets/1.html-98ae9950.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e3de7730":y(()=>v(()=>import("./2.html-7ce1d342.js"),["assets/2.html-7ce1d342.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e074c5f2":y(()=>v(()=>import("./3.html-27d0420e.js"),["assets/3.html-27d0420e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-dd0b14b4":y(()=>v(()=>import("./4.html-6392fedb.js"),["assets/4.html-6392fedb.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2dbba8f8":y(()=>v(()=>import("./1993.html-92084bbf.js"),["assets/1993.html-92084bbf.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-341ff586":y(()=>v(()=>import("./Best-Emoji.html-f20e2288.js"),["assets/Best-Emoji.html-f20e2288.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5bfd020e":y(()=>v(()=>import("./beautification.html-fef69c2e.js"),["assets/beautification.html-fef69c2e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5cd0d543":y(()=>v(()=>import("./Hackintosh.html-f365042e.js"),["assets/Hackintosh.html-f365042e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7bfcd410":y(()=>v(()=>import("./1.html-ee75ce2f.js"),["assets/1.html-ee75ce2f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7db1acaf":y(()=>v(()=>import("./2.html-c5325a92.js"),["assets/2.html-c5325a92.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4e9249a7":y(()=>v(()=>import("./ChatGPT-Porxy.html-b8c4b268.js"),["assets/ChatGPT-Porxy.html-b8c4b268.js","assets/1-2e05d854.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a7d18542":y(()=>v(()=>import("./buildSUB.html-5bb91694.js"),["assets/buildSUB.html-5bb91694.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-41ef852e":y(()=>v(()=>import("./chatgpt.html-d82356fb.js"),["assets/chatgpt.html-d82356fb.js","assets/3-47e785b4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3bcbf360":y(()=>v(()=>import("./github-actions-deploy.html-6320dba9.js"),["assets/github-actions-deploy.html-6320dba9.js","assets/4-8d3c8c2c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-824f61ac":y(()=>v(()=>import("./hello-world.html-d946c09a.js"),["assets/hello-world.html-d946c09a.js","assets/gitlab-240b439b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4c4923b4":y(()=>v(()=>import("./nginx-proxy-manager.html-85195b3b.js"),["assets/nginx-proxy-manager.html-85195b3b.js","assets/3-834f457d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-04400c63":y(()=>v(()=>import("./server-building.html-e3ea9bf5.js"),["assets/server-building.html-e3ea9bf5.js","assets/live-torrent-6fc3c6a8.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7e743fa4":y(()=>v(()=>import("./DDNS.html-6831b75f.js"),["assets/DDNS.html-6831b75f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-56f6d9f8":y(()=>v(()=>import("./github-tools.html-f87cd25b.js"),["assets/github-tools.html-f87cd25b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2f667f90":y(()=>v(()=>import("./kms.html-a229f521.js"),["assets/kms.html-a229f521.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3c555280":y(()=>v(()=>import("./port-forwarding.html-b9ee78ef.js"),["assets/port-forwarding.html-b9ee78ef.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3706649a":y(()=>v(()=>import("./404.html-ef7e8b04.js"),["assets/404.html-ef7e8b04.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e1e3da16":y(()=>v(()=>import("./index.html-456ff801.js"),["assets/index.html-456ff801.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c8296fee":y(()=>v(()=>import("./index.html-c7db71a1.js"),["assets/index.html-c7db71a1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1e55f097":y(()=>v(()=>import("./index.html-101efe7b.js"),["assets/index.html-101efe7b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-30be3cd5":y(()=>v(()=>import("./index.html-aac4257a.js"),["assets/index.html-aac4257a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-564155e4":y(()=>v(()=>import("./index.html-10468c79.js"),["assets/index.html-10468c79.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0852455e":y(()=>v(()=>import("./index.html-e69b26cd.js"),["assets/index.html-e69b26cd.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1d22e941":y(()=>v(()=>import("./index.html-d11764b4.js"),["assets/index.html-d11764b4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1033d682":y(()=>v(()=>import("./index.html-e196db01.js"),["assets/index.html-e196db01.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0db6c3c0":y(()=>v(()=>import("./index.html-f6ac2579.js"),["assets/index.html-f6ac2579.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-708d52c8":y(()=>v(()=>import("./index.html-1df40c55.js"),["assets/index.html-1df40c55.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0c6e4410":y(()=>v(()=>import("./index.html-4d6b105e.js"),["assets/index.html-4d6b105e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5bc93818":y(()=>v(()=>import("./index.html-e7408614.js"),["assets/index.html-e7408614.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-744d024e":y(()=>v(()=>import("./index.html-f87e4690.js"),["assets/index.html-f87e4690.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e52c881c":y(()=>v(()=>import("./index.html-649061df.js"),["assets/index.html-649061df.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-154dc4c4":y(()=>v(()=>import("./index.html-7d92832d.js"),["assets/index.html-7d92832d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-01560935":y(()=>v(()=>import("./index.html-1de971c5.js"),["assets/index.html-1de971c5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-03d57386":y(()=>v(()=>import("./index.html-18076c7d.js"),["assets/index.html-18076c7d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-83e1f92e":y(()=>v(()=>import("./index.html-ec94f03e.js"),["assets/index.html-ec94f03e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-54d7ff21":y(()=>v(()=>import("./index.html-b7be8319.js"),["assets/index.html-b7be8319.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2c3ee7f5":y(()=>v(()=>import("./index.html-61c6447f.js"),["assets/index.html-61c6447f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-27b02be6":y(()=>v(()=>import("./index.html-9dc06c33.js"),["assets/index.html-9dc06c33.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0c75a0f8":y(()=>v(()=>import("./index.html-b3fca096.js"),["assets/index.html-b3fca096.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1e447d61":y(()=>v(()=>import("./index.html-00cc47c6.js"),["assets/index.html-00cc47c6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-506407f4":y(()=>v(()=>import("./index.html-5ca916c3.js"),["assets/index.html-5ca916c3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-37a8c5a0":y(()=>v(()=>import("./index.html-a3b2bf68.js"),["assets/index.html-a3b2bf68.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0379cba1":y(()=>v(()=>import("./index.html-34a79b2b.js"),["assets/index.html-34a79b2b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-226a68ec":y(()=>v(()=>import("./index.html-c49f44b5.js"),["assets/index.html-c49f44b5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-484552dc":y(()=>v(()=>import("./index.html-77532a05.js"),["assets/index.html-77532a05.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-12590846":y(()=>v(()=>import("./index.html-50b87f34.js"),["assets/index.html-50b87f34.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a378ad66":y(()=>v(()=>import("./index.html-7089d4c1.js"),["assets/index.html-7089d4c1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-247d58ff":y(()=>v(()=>import("./index.html-ec10a100.js"),["assets/index.html-ec10a100.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7b167472":y(()=>v(()=>import("./index.html-75ba41b4.js"),["assets/index.html-75ba41b4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-76b80ea2":y(()=>v(()=>import("./index.html-a2a46730.js"),["assets/index.html-a2a46730.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0f1d0e94":y(()=>v(()=>import("./index.html-f00c54e3.js"),["assets/index.html-f00c54e3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-40b68770":y(()=>v(()=>import("./index.html-3981a791.js"),["assets/index.html-3981a791.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3e6b05e8":y(()=>v(()=>import("./index.html-e2eaf40c.js"),["assets/index.html-e2eaf40c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e686ee16":y(()=>v(()=>import("./index.html-085457ef.js"),["assets/index.html-085457ef.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-301b24f4":y(()=>v(()=>import("./index.html-5b334f4b.js"),["assets/index.html-5b334f4b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4c41ef7e":y(()=>v(()=>import("./index.html-b5358a32.js"),["assets/index.html-b5358a32.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3ceeab45":y(()=>v(()=>import("./index.html-0ba17664.js"),["assets/index.html-0ba17664.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fbb94a6e":y(()=>v(()=>import("./index.html-ad3476cf.js"),["assets/index.html-ad3476cf.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3a8afeec":y(()=>v(()=>import("./index.html-9812f1d1.js"),["assets/index.html-9812f1d1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2a32a3a8":y(()=>v(()=>import("./index.html-9a871292.js"),["assets/index.html-9a871292.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6a4c233e":y(()=>v(()=>import("./index.html-36a6d502.js"),["assets/index.html-36a6d502.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-16890533":y(()=>v(()=>import("./index.html-dfa339e6.js"),["assets/index.html-dfa339e6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1b3ae9cf":y(()=>v(()=>import("./index.html-6b308685.js"),["assets/index.html-6b308685.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d28a2a8a":y(()=>v(()=>import("./index.html-bf63e649.js"),["assets/index.html-bf63e649.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2836033f":y(()=>v(()=>import("./index.html-23746eb6.js"),["assets/index.html-23746eb6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1397518c":y(()=>v(()=>import("./index.html-be229628.js"),["assets/index.html-be229628.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-42254370":y(()=>v(()=>import("./index.html-d37c3e51.js"),["assets/index.html-d37c3e51.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-41412eae":y(()=>v(()=>import("./index.html-7762bfef.js"),["assets/index.html-7762bfef.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3aafda76":y(()=>v(()=>import("./index.html-aa990eab.js"),["assets/index.html-aa990eab.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d908375e":y(()=>v(()=>import("./index.html-7086177d.js"),["assets/index.html-7086177d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-624a9248":y(()=>v(()=>import("./index.html-2cc23513.js"),["assets/index.html-2cc23513.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-072edc12":y(()=>v(()=>import("./index.html-1c728ff6.js"),["assets/index.html-1c728ff6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-540234fd":y(()=>v(()=>import("./index.html-cce00685.js"),["assets/index.html-cce00685.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-acff42b8":y(()=>v(()=>import("./index.html-2affe164.js"),["assets/index.html-2affe164.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-03ba1c5a":y(()=>v(()=>import("./index.html-62b19be6.js"),["assets/index.html-62b19be6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5decfa84":y(()=>v(()=>import("./index.html-109ce180.js"),["assets/index.html-109ce180.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-05bf9c12":y(()=>v(()=>import("./index.html-4a895b29.js"),["assets/index.html-4a895b29.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0fe52c37":y(()=>v(()=>import("./index.html-10e6cd2d.js"),["assets/index.html-10e6cd2d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2e14b8c3":y(()=>v(()=>import("./index.html-23976703.js"),["assets/index.html-23976703.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-02c6a6b2":y(()=>v(()=>import("./index.html-5f31ab53.js"),["assets/index.html-5f31ab53.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d4827004":y(()=>v(()=>import("./index.html-6ea2158d.js"),["assets/index.html-6ea2158d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2e75e8de":y(()=>v(()=>import("./index.html-edf47e06.js"),["assets/index.html-edf47e06.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-ac203710":y(()=>v(()=>import("./index.html-36d2f91f.js"),["assets/index.html-36d2f91f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0e0b961f":y(()=>v(()=>import("./index.html-7b939600.js"),["assets/index.html-7b939600.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-03d1f283":y(()=>v(()=>import("./index.html-dcf2fbc3.js"),["assets/index.html-dcf2fbc3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b6ff5888":y(()=>v(()=>import("./index.html-b81c6e06.js"),["assets/index.html-b81c6e06.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-331fe9d7":y(()=>v(()=>import("./index.html-1329c3c9.js"),["assets/index.html-1329c3c9.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-dbaf7c9c":y(()=>v(()=>import("./index.html-b0290fe3.js"),["assets/index.html-b0290fe3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-24d008e3":y(()=>v(()=>import("./index.html-7fc48fad.js"),["assets/index.html-7fc48fad.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0564ef99":y(()=>v(()=>import("./index.html-9309dd01.js"),["assets/index.html-9309dd01.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-31a38f34":y(()=>v(()=>import("./index.html-5f359b39.js"),["assets/index.html-5f359b39.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7b34f334":y(()=>v(()=>import("./index.html-2f3fe9bc.js"),["assets/index.html-2f3fe9bc.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-056557ee":y(()=>v(()=>import("./index.html-25f7212d.js"),["assets/index.html-25f7212d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e7d392ca":y(()=>v(()=>import("./index.html-b955bc96.js"),["assets/index.html-b955bc96.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4e9025f0":y(()=>v(()=>import("./index.html-d4ec45cd.js"),["assets/index.html-d4ec45cd.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-69f11ebc":y(()=>v(()=>import("./index.html-ec28f009.js"),["assets/index.html-ec28f009.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1434d78e":y(()=>v(()=>import("./index.html-b624943d.js"),["assets/index.html-b624943d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-62a85daf":y(()=>v(()=>import("./index.html-3aeaf578.js"),["assets/index.html-3aeaf578.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6d724c00":y(()=>v(()=>import("./index.html-ef8b292f.js"),["assets/index.html-ef8b292f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4ea8afad":y(()=>v(()=>import("./index.html-751252d1.js"),["assets/index.html-751252d1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-230c5884":y(()=>v(()=>import("./index.html-105b1b35.js"),["assets/index.html-105b1b35.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-bb53961e":y(()=>v(()=>import("./index.html-9a15ffe2.js"),["assets/index.html-9a15ffe2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6de7b97b":y(()=>v(()=>import("./index.html-b92ecfa7.js"),["assets/index.html-b92ecfa7.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-409d800e":y(()=>v(()=>import("./index.html-b28cc0c7.js"),["assets/index.html-b28cc0c7.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-075c6c62":y(()=>v(()=>import("./index.html-92bed389.js"),["assets/index.html-92bed389.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c6edb6ae":y(()=>v(()=>import("./index.html-2714e901.js"),["assets/index.html-2714e901.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0017792c":y(()=>v(()=>import("./index.html-41ab6a7b.js"),["assets/index.html-41ab6a7b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6f7bfa04":y(()=>v(()=>import("./index.html-56cea16c.js"),["assets/index.html-56cea16c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7e751551":y(()=>v(()=>import("./index.html-8eadff0b.js"),["assets/index.html-8eadff0b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-29e33f95":y(()=>v(()=>import("./index.html-278e2ed4.js"),["assets/index.html-278e2ed4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1e3e75c0":y(()=>v(()=>import("./index.html-a60a424a.js"),["assets/index.html-a60a424a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3de926ea":y(()=>v(()=>import("./index.html-d23ca039.js"),["assets/index.html-d23ca039.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3c599b43":y(()=>v(()=>import("./index.html-e66637eb.js"),["assets/index.html-e66637eb.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1e4ce2de":y(()=>v(()=>import("./index.html-8b7ea1e5.js"),["assets/index.html-8b7ea1e5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a0d528ce":y(()=>v(()=>import("./index.html-e54fef37.js"),["assets/index.html-e54fef37.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-231414e4":y(()=>v(()=>import("./index.html-99071040.js"),["assets/index.html-99071040.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2ae80a11":y(()=>v(()=>import("./index.html-c41bb7d4.js"),["assets/index.html-c41bb7d4.js","assets/plugin-vue_export-helper-c27b6911.js"]))};var F2=Symbol(""),Oc=Symbol(""),H2=zt({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),ue=()=>{const e=ge(Oc);if(!e)throw new Error("pageData() is called without provider.");return e},Rc=Symbol(""),ye=()=>{const e=ge(Rc);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Sc=Symbol(""),N2=()=>{const e=ge(Sc);if(!e)throw new Error("usePageHead() is called without provider.");return e},q2=Symbol(""),Bc=Symbol(""),ul=()=>{const e=ge(Bc);if(!e)throw new Error("usePageLang() is called without provider.");return e},Vc=Symbol(""),j2=()=>{const e=ge(Vc);if(!e)throw new Error("usePageLayout() is called without provider.");return e},U2=W(C2),dl=Symbol(""),It=()=>{const e=ge(dl);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},Ln=W(O2),$c=()=>Ln,Mc=Symbol(""),er=()=>{const e=ge(Mc);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},G2=Symbol(""),W2="Layout",K2="NotFound",Ot=Rr({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=U2.value[e];return await(t==null?void 0:t())??H2},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=se(t.description)?t.description:n.description,a=[...J(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return S2(a)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;se(r)?n=r:n=W2}else n=K2;return t[n]},resolveRouteLocale:(e,t)=>z2(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),Oa=B({name:"ClientOnly",setup(e,t){const n=W(!1);return _e(()=>{n.value=!0}),()=>{var r,a;return n.value?(a=(r=t.slots).default)==null?void 0:a.call(r):null}}}),zc=B({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=ue(),n=x(()=>Cc[e.pageKey||t.value.key]);return()=>n.value?s(n.value):s("div","404 Not Found")}}),At=(e={})=>e,Le=e=>bn(e)?e:`/${Dc(e)}`;const J2={};/*! - * vue-router v4.2.5 - * (c) 2023 Eduardo San Martin Morote - * @license MIT - */const kn=typeof window<"u";function Y2(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const me=Object.assign;function Ja(e,t){const n={};for(const r in t){const a=t[r];n[r]=yt(a)?a.map(e):e(a)}return n}const mr=()=>{},yt=Array.isArray,Q2=/\/$/,Z2=e=>e.replace(Q2,"");function Ya(e,t,n="/"){let r,a={},o="",l="";const i=t.indexOf("#");let u=t.indexOf("?");return i=0&&(u=-1),u>-1&&(r=t.slice(0,u),o=t.slice(u+1,i>-1?i:t.length),a=e(o)),i>-1&&(r=r||t.slice(0,i),l=t.slice(i,t.length)),r=n3(r??t,n),{fullPath:r+(o&&"?")+o+l,path:r,query:a,hash:l}}function X2(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Oi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function e3(e,t,n){const r=t.matched.length-1,a=n.matched.length-1;return r>-1&&r===a&&jn(t.matched[r],n.matched[a])&&Fc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function jn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Fc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!t3(e[n],t[n]))return!1;return!0}function t3(e,t){return yt(e)?Ri(e,t):yt(t)?Ri(t,e):e===t}function Ri(e,t){return yt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function n3(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),a=r[r.length-1];(a===".."||a===".")&&r.push("");let o=n.length-1,l,i;for(l=0;l1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(l-(l===r.length?1:0)).join("/")}var Lr;(function(e){e.pop="pop",e.push="push"})(Lr||(Lr={}));var _r;(function(e){e.back="back",e.forward="forward",e.unknown=""})(_r||(_r={}));function r3(e){if(!e)if(kn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Z2(e)}const a3=/^[^#]+#/;function o3(e,t){return e.replace(a3,"#")+t}function l3(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Ra=()=>({left:window.pageXOffset,top:window.pageYOffset});function i3(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),a=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!a)return;t=l3(a,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function Si(e,t){return(history.state?history.state.position-t:-1)+e}const wo=new Map;function s3(e,t){wo.set(e,t)}function c3(e){const t=wo.get(e);return wo.delete(e),t}let u3=()=>location.protocol+"//"+location.host;function Hc(e,t){const{pathname:n,search:r,hash:a}=t,o=e.indexOf("#");if(o>-1){let i=a.includes(e.slice(o))?e.slice(o).length:1,u=a.slice(i);return u[0]!=="/"&&(u="/"+u),Oi(u,"")}return Oi(n,e)+r+a}function d3(e,t,n,r){let a=[],o=[],l=null;const i=({state:f})=>{const h=Hc(e,location),_=n.value,E=t.value;let k=0;if(f){if(n.value=h,t.value=f,l&&l===_){l=null;return}k=E?f.position-E.position:0}else r(h);a.forEach(A=>{A(n.value,_,{delta:k,type:Lr.pop,direction:k?k>0?_r.forward:_r.back:_r.unknown})})};function u(){l=n.value}function c(f){a.push(f);const h=()=>{const _=a.indexOf(f);_>-1&&a.splice(_,1)};return o.push(h),h}function d(){const{history:f}=window;f.state&&f.replaceState(me({},f.state,{scroll:Ra()}),"")}function p(){for(const f of o)f();o=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:u,listen:c,destroy:p}}function Bi(e,t,n,r=!1,a=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:a?Ra():null}}function p3(e){const{history:t,location:n}=window,r={value:Hc(e,n)},a={value:t.state};a.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(u,c,d){const p=e.indexOf("#"),f=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+u:u3()+e+u;try{t[d?"replaceState":"pushState"](c,"",f),a.value=c}catch(h){console.error(h),n[d?"replace":"assign"](f)}}function l(u,c){const d=me({},t.state,Bi(a.value.back,u,a.value.forward,!0),c,{position:a.value.position});o(u,d,!0),r.value=u}function i(u,c){const d=me({},a.value,t.state,{forward:u,scroll:Ra()});o(d.current,d,!0);const p=me({},Bi(r.value,u,null),{position:d.position+1},c);o(u,p,!1),r.value=u}return{location:r,state:a,push:i,replace:l}}function f3(e){e=r3(e);const t=p3(e),n=d3(e,t.state,t.location,t.replace);function r(o,l=!0){l||n.pauseListeners(),history.go(o)}const a=me({location:"",base:e,go:r,createHref:o3.bind(null,e)},t,n);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>t.state.value}),a}function v3(e){return typeof e=="string"||e&&typeof e=="object"}function Nc(e){return typeof e=="string"||typeof e=="symbol"}const Rt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},qc=Symbol("");var Vi;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Vi||(Vi={}));function Un(e,t){return me(new Error,{type:e,[qc]:!0},t)}function Dt(e,t){return e instanceof Error&&qc in e&&(t==null||!!(e.type&t))}const $i="[^/]+?",h3={sensitive:!1,strict:!1,start:!0,end:!0},g3=/[.+*?^${}()[\]/\\]/g;function m3(e,t){const n=me({},h3,t),r=[];let a=n.start?"^":"";const o=[];for(const c of e){const d=c.length?[]:[90];n.strict&&!c.length&&(a+="/");for(let p=0;pt.length?t.length===1&&t[0]===40+40?1:-1:0}function y3(e,t){let n=0;const r=e.score,a=t.score;for(;n0&&t[t.length-1]<0}const b3={type:0,value:""},E3=/[a-zA-Z0-9_]/;function A3(e){if(!e)return[[]];if(e==="/")return[[b3]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=0,r=n;const a=[];let o;function l(){o&&a.push(o),o=[]}let i=0,u,c="",d="";function p(){c&&(n===0?o.push({type:0,value:c}):n===1||n===2||n===3?(o.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function f(){c+=u}for(;i{l(I)}:mr}function l(d){if(Nc(d)){const p=r.get(d);p&&(r.delete(d),n.splice(n.indexOf(p),1),p.children.forEach(l),p.alias.forEach(l))}else{const p=n.indexOf(d);p>-1&&(n.splice(p,1),d.record.name&&r.delete(d.record.name),d.children.forEach(l),d.alias.forEach(l))}}function i(){return n}function u(d){let p=0;for(;p=0&&(d.record.path!==n[p].record.path||!jc(d,n[p]));)p++;n.splice(p,0,d),d.record.name&&!Fi(d)&&r.set(d.record.name,d)}function c(d,p){let f,h={},_,E;if("name"in d&&d.name){if(f=r.get(d.name),!f)throw Un(1,{location:d});E=f.record.name,h=me(zi(p.params,f.keys.filter(I=>!I.optional).map(I=>I.name)),d.params&&zi(d.params,f.keys.map(I=>I.name))),_=f.stringify(h)}else if("path"in d)_=d.path,f=n.find(I=>I.re.test(_)),f&&(h=f.parse(_),E=f.record.name);else{if(f=p.name?r.get(p.name):n.find(I=>I.re.test(p.path)),!f)throw Un(1,{location:d,currentLocation:p});E=f.record.name,h=me({},p.params,d.params),_=f.stringify(h)}const k=[];let A=f;for(;A;)k.unshift(A.record),A=A.parent;return{name:E,path:_,params:h,matched:k,meta:L3(k)}}return e.forEach(d=>o(d)),{addRoute:o,resolve:c,removeRoute:l,getRoutes:i,getRecordMatcher:a}}function zi(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function k3(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:T3(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function T3(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Fi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function L3(e){return e.reduce((t,n)=>me(t,n.meta),{})}function Hi(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function jc(e,t){return t.children.some(n=>n===e||jc(e,n))}const Uc=/#/g,I3=/&/g,P3=/\//g,D3=/=/g,C3=/\?/g,Gc=/\+/g,O3=/%5B/g,R3=/%5D/g,Wc=/%5E/g,S3=/%60/g,Kc=/%7B/g,B3=/%7C/g,Jc=/%7D/g,V3=/%20/g;function pl(e){return encodeURI(""+e).replace(B3,"|").replace(O3,"[").replace(R3,"]")}function $3(e){return pl(e).replace(Kc,"{").replace(Jc,"}").replace(Wc,"^")}function xo(e){return pl(e).replace(Gc,"%2B").replace(V3,"+").replace(Uc,"%23").replace(I3,"%26").replace(S3,"`").replace(Kc,"{").replace(Jc,"}").replace(Wc,"^")}function M3(e){return xo(e).replace(D3,"%3D")}function z3(e){return pl(e).replace(Uc,"%23").replace(C3,"%3F")}function F3(e){return e==null?"":z3(e).replace(P3,"%2F")}function Ea(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function H3(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let a=0;ao&&xo(o)):[r&&xo(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function N3(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=yt(r)?r.map(a=>a==null?null:""+a):r==null?r:""+r)}return t}const q3=Symbol(""),qi=Symbol(""),Sa=Symbol(""),fl=Symbol(""),ko=Symbol("");function sr(){let e=[];function t(r){return e.push(r),()=>{const a=e.indexOf(r);a>-1&&e.splice(a,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Qt(e,t,n,r,a){const o=r&&(r.enterCallbacks[a]=r.enterCallbacks[a]||[]);return()=>new Promise((l,i)=>{const u=p=>{p===!1?i(Un(4,{from:n,to:t})):p instanceof Error?i(p):v3(p)?i(Un(2,{from:t,to:p})):(o&&r.enterCallbacks[a]===o&&typeof p=="function"&&o.push(p),l())},c=e.call(r&&r.instances[a],t,n,u);let d=Promise.resolve(c);e.length<3&&(d=d.then(u)),d.catch(p=>i(p))})}function Qa(e,t,n,r){const a=[];for(const o of e)for(const l in o.components){let i=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(j3(i)){const c=(i.__vccOpts||i)[t];c&&a.push(Qt(c,n,r,o,l))}else{let u=i();a.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${o.path}"`));const d=Y2(c)?c.default:c;o.components[l]=d;const f=(d.__vccOpts||d)[t];return f&&Qt(f,n,r,o,l)()}))}}return a}function j3(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function To(e){const t=ge(Sa),n=ge(fl),r=x(()=>t.resolve(fn(e.to))),a=x(()=>{const{matched:u}=r.value,{length:c}=u,d=u[c-1],p=n.matched;if(!d||!p.length)return-1;const f=p.findIndex(jn.bind(null,d));if(f>-1)return f;const h=ji(u[c-2]);return c>1&&ji(d)===h&&p[p.length-1].path!==h?p.findIndex(jn.bind(null,u[c-2])):f}),o=x(()=>a.value>-1&&K3(n.params,r.value.params)),l=x(()=>a.value>-1&&a.value===n.matched.length-1&&Fc(n.params,r.value.params));function i(u={}){return W3(u)?t[fn(e.replace)?"replace":"push"](fn(e.to)).catch(mr):Promise.resolve()}return{route:r,href:x(()=>r.value.href),isActive:o,isExactActive:l,navigate:i}}const U3=B({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:To,setup(e,{slots:t}){const n=Rr(To(e)),{options:r}=ge(Sa),a=x(()=>({[Ui(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ui(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:s("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:a.value},o)}}}),G3=U3;function W3(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function K3(e,t){for(const n in t){const r=t[n],a=e[n];if(typeof r=="string"){if(r!==a)return!1}else if(!yt(a)||a.length!==r.length||r.some((o,l)=>o!==a[l]))return!1}return!0}function ji(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ui=(e,t,n)=>e??t??n,J3=B({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=ge(ko),a=x(()=>e.route||r.value),o=ge(qi,0),l=x(()=>{let c=fn(o);const{matched:d}=a.value;let p;for(;(p=d[c])&&!p.components;)c++;return c}),i=x(()=>a.value.matched[l.value]);mt(qi,x(()=>l.value+1)),mt(q3,i),mt(ko,a);const u=W();return ce(()=>[u.value,i.value,e.name],([c,d,p],[f,h,_])=>{d&&(d.instances[p]=c,h&&h!==d&&c&&c===f&&(d.leaveGuards.size||(d.leaveGuards=h.leaveGuards),d.updateGuards.size||(d.updateGuards=h.updateGuards))),c&&d&&(!h||!jn(d,h)||!f)&&(d.enterCallbacks[p]||[]).forEach(E=>E(c))},{flush:"post"}),()=>{const c=a.value,d=e.name,p=i.value,f=p&&p.components[d];if(!f)return Gi(n.default,{Component:f,route:c});const h=p.props[d],_=h?h===!0?c.params:typeof h=="function"?h(c):h:null,k=s(f,me({},_,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(p.instances[d]=null)},ref:u}));return Gi(n.default,{Component:k,route:c})||k}}});function Gi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Yc=J3;function Y3(e){const t=x3(e.routes,e),n=e.parseQuery||H3,r=e.stringifyQuery||Ni,a=e.history,o=sr(),l=sr(),i=sr(),u=Fe(Rt);let c=Rt;kn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Ja.bind(null,P=>""+P),p=Ja.bind(null,F3),f=Ja.bind(null,Ea);function h(P,U){let z,Q;return Nc(P)?(z=t.getRecordMatcher(P),Q=U):Q=P,t.addRoute(Q,z)}function _(P){const U=t.getRecordMatcher(P);U&&t.removeRoute(U)}function E(){return t.getRoutes().map(P=>P.record)}function k(P){return!!t.getRecordMatcher(P)}function A(P,U){if(U=me({},U||u.value),typeof P=="string"){const w=Ya(n,P,U.path),L=t.resolve({path:w.path},U),C=a.createHref(w.fullPath);return me(w,L,{params:f(L.params),hash:Ea(w.hash),redirectedFrom:void 0,href:C})}let z;if("path"in P)z=me({},P,{path:Ya(n,P.path,U.path).path});else{const w=me({},P.params);for(const L in w)w[L]==null&&delete w[L];z=me({},P,{params:p(w)}),U.params=p(U.params)}const Q=t.resolve(z,U),pe=P.hash||"";Q.params=d(f(Q.params));const g=X2(r,me({},P,{hash:$3(pe),path:Q.path})),m=a.createHref(g);return me({fullPath:g,hash:pe,query:r===Ni?N3(P.query):P.query||{}},Q,{redirectedFrom:void 0,href:m})}function I(P){return typeof P=="string"?Ya(n,P,u.value.path):me({},P)}function b(P,U){if(c!==P)return Un(8,{from:U,to:P})}function T(P){return M(P)}function $(P){return T(me(I(P),{replace:!0}))}function O(P){const U=P.matched[P.matched.length-1];if(U&&U.redirect){const{redirect:z}=U;let Q=typeof z=="function"?z(P):z;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=I(Q):{path:Q},Q.params={}),me({query:P.query,hash:P.hash,params:"path"in Q?{}:P.params},Q)}}function M(P,U){const z=c=A(P),Q=u.value,pe=P.state,g=P.force,m=P.replace===!0,w=O(z);if(w)return M(me(I(w),{state:typeof w=="object"?me({},pe,w.state):pe,force:g,replace:m}),U||z);const L=z;L.redirectedFrom=U;let C;return!g&&e3(r,Q,z)&&(C=Un(16,{to:L,from:Q}),nt(Q,Q,!0,!1)),(C?Promise.resolve(C):q(L,Q)).catch(R=>Dt(R)?Dt(R,2)?R:wt(R):Y(R,L,Q)).then(R=>{if(R){if(Dt(R,2))return M(me({replace:m},I(R.to),{state:typeof R.to=="object"?me({},pe,R.to.state):pe,force:g}),U||L)}else R=H(L,Q,!0,m,pe);return ee(L,Q,R),R})}function D(P,U){const z=b(P,U);return z?Promise.reject(z):Promise.resolve()}function N(P){const U=Pt.values().next().value;return U&&typeof U.runWithContext=="function"?U.runWithContext(P):P()}function q(P,U){let z;const[Q,pe,g]=Q3(P,U);z=Qa(Q.reverse(),"beforeRouteLeave",P,U);for(const w of Q)w.leaveGuards.forEach(L=>{z.push(Qt(L,P,U))});const m=D.bind(null,P,U);return z.push(m),Ce(z).then(()=>{z=[];for(const w of o.list())z.push(Qt(w,P,U));return z.push(m),Ce(z)}).then(()=>{z=Qa(pe,"beforeRouteUpdate",P,U);for(const w of pe)w.updateGuards.forEach(L=>{z.push(Qt(L,P,U))});return z.push(m),Ce(z)}).then(()=>{z=[];for(const w of g)if(w.beforeEnter)if(yt(w.beforeEnter))for(const L of w.beforeEnter)z.push(Qt(L,P,U));else z.push(Qt(w.beforeEnter,P,U));return z.push(m),Ce(z)}).then(()=>(P.matched.forEach(w=>w.enterCallbacks={}),z=Qa(g,"beforeRouteEnter",P,U),z.push(m),Ce(z))).then(()=>{z=[];for(const w of l.list())z.push(Qt(w,P,U));return z.push(m),Ce(z)}).catch(w=>Dt(w,8)?w:Promise.reject(w))}function ee(P,U,z){i.list().forEach(Q=>N(()=>Q(P,U,z)))}function H(P,U,z,Q,pe){const g=b(P,U);if(g)return g;const m=U===Rt,w=kn?history.state:{};z&&(Q||m?a.replace(P.fullPath,me({scroll:m&&w&&w.scroll},pe)):a.push(P.fullPath,pe)),u.value=P,nt(P,U,z,m),wt()}let te;function Ie(){te||(te=a.listen((P,U,z)=>{if(!xt.listening)return;const Q=A(P),pe=O(Q);if(pe){M(me(pe,{replace:!0}),Q).catch(mr);return}c=Q;const g=u.value;kn&&s3(Si(g.fullPath,z.delta),Ra()),q(Q,g).catch(m=>Dt(m,12)?m:Dt(m,2)?(M(m.to,Q).then(w=>{Dt(w,20)&&!z.delta&&z.type===Lr.pop&&a.go(-1,!1)}).catch(mr),Promise.reject()):(z.delta&&a.go(-z.delta,!1),Y(m,Q,g))).then(m=>{m=m||H(Q,g,!1),m&&(z.delta&&!Dt(m,8)?a.go(-z.delta,!1):z.type===Lr.pop&&Dt(m,20)&&a.go(-1,!1)),ee(Q,g,m)}).catch(mr)}))}let Te=sr(),G=sr(),ne;function Y(P,U,z){wt(P);const Q=G.list();return Q.length?Q.forEach(pe=>pe(P,U,z)):console.error(P),Promise.reject(P)}function De(){return ne&&u.value!==Rt?Promise.resolve():new Promise((P,U)=>{Te.add([P,U])})}function wt(P){return ne||(ne=!P,Ie(),Te.list().forEach(([U,z])=>P?z(P):U()),Te.reset()),P}function nt(P,U,z,Q){const{scrollBehavior:pe}=e;if(!kn||!pe)return Promise.resolve();const g=!z&&c3(Si(P.fullPath,0))||(Q||!z)&&history.state&&history.state.scroll||null;return an().then(()=>pe(P,U,g)).then(m=>m&&i3(m)).catch(m=>Y(m,P,U))}const $e=P=>a.go(P);let Ye;const Pt=new Set,xt={currentRoute:u,listening:!0,addRoute:h,removeRoute:_,hasRoute:k,getRoutes:E,resolve:A,options:e,push:T,replace:$,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:o.add,beforeResolve:l.add,afterEach:i.add,onError:G.add,isReady:De,install(P){const U=this;P.component("RouterLink",G3),P.component("RouterView",Yc),P.config.globalProperties.$router=U,Object.defineProperty(P.config.globalProperties,"$route",{enumerable:!0,get:()=>fn(u)}),kn&&!Ye&&u.value===Rt&&(Ye=!0,T(a.location).catch(pe=>{}));const z={};for(const pe in Rt)Object.defineProperty(z,pe,{get:()=>u.value[pe],enumerable:!0});P.provide(Sa,U),P.provide(fl,Fs(z)),P.provide(ko,u);const Q=P.unmount;Pt.add(P),P.unmount=function(){Pt.delete(P),Pt.size<1&&(c=Rt,te&&te(),te=null,u.value=Rt,Ye=!1,ne=!1),Q()}}};function Ce(P){return P.reduce((U,z)=>U.then(()=>N(z)),Promise.resolve())}return xt}function Q3(e,t){const n=[],r=[],a=[],o=Math.max(t.matched.length,e.matched.length);for(let l=0;ljn(c,i))?r.push(i):n.push(i));const u=e.matched[l];u&&(t.matched.find(c=>jn(c,u))||a.push(u))}return[n,r,a]}function He(){return ge(Sa)}function ut(){return ge(fl)}var qe=Uint8Array,In=Uint16Array,Z3=Int32Array,Qc=new qe([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Zc=new qe([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),X3=new qe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Xc=function(e,t){for(var n=new In(31),r=0;r<31;++r)n[r]=t+=1<>1|(ke&21845)<<1;Gt=(Gt&52428)>>2|(Gt&13107)<<2,Gt=(Gt&61680)>>4|(Gt&3855)<<4,Lo[ke]=((Gt&65280)>>8|(Gt&255)<<8)>>1}var yr=function(e,t,n){for(var r=e.length,a=0,o=new In(t);a>u]=c}else for(i=new In(r),a=0;a>15-e[a]);return i},Mr=new qe(288);for(var ke=0;ke<144;++ke)Mr[ke]=8;for(var ke=144;ke<256;++ke)Mr[ke]=9;for(var ke=256;ke<280;++ke)Mr[ke]=7;for(var ke=280;ke<288;++ke)Mr[ke]=8;var nu=new qe(32);for(var ke=0;ke<32;++ke)nu[ke]=5;var r4=yr(Mr,9,1),a4=yr(nu,5,1),Za=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},pt=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},Xa=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},o4=function(e){return(e+7)/8|0},vl=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new qe(e.subarray(t,n))},l4=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ot=function(e,t,n){var r=new Error(t||l4[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,ot),!n)throw r;return r},i4=function(e,t,n,r){var a=e.length,o=r?r.length:0;if(!a||t.f&&!t.l)return n||new qe(0);var l=!n,i=l||t.i!=2,u=t.i;l&&(n=new qe(a*3));var c=function(pe){var g=n.length;if(pe>g){var m=new qe(Math.max(g*2,pe));m.set(n),n=m}},d=t.f||0,p=t.p||0,f=t.b||0,h=t.l,_=t.d,E=t.m,k=t.n,A=a*8;do{if(!h){d=pt(e,p,1);var I=pt(e,p+1,3);if(p+=3,I)if(I==1)h=r4,_=a4,E=9,k=5;else if(I==2){var O=pt(e,p,31)+257,M=pt(e,p+10,15)+4,D=O+pt(e,p+5,31)+1;p+=14;for(var N=new qe(D),q=new qe(19),ee=0;ee>4;if(b<16)N[ee++]=b;else{var G=0,ne=0;for(b==16?(ne=3+pt(e,p,3),p+=2,G=N[ee-1]):b==17?(ne=3+pt(e,p,7),p+=3):b==18&&(ne=11+pt(e,p,127),p+=7);ne--;)N[ee++]=G}}var Y=N.subarray(0,O),De=N.subarray(O);E=Za(Y),k=Za(De),h=yr(Y,E,1),_=yr(De,k,1)}else ot(1);else{var b=o4(p)+4,T=e[b-4]|e[b-3]<<8,$=b+T;if($>a){u&&ot(0);break}i&&c(f+T),n.set(e.subarray(b,$),f),t.b=f+=T,t.p=p=$*8,t.f=d;continue}if(p>A){u&&ot(0);break}}i&&c(f+131072);for(var wt=(1<>4;if(p+=G&15,p>A){u&&ot(0);break}if(G||ot(2),Ye<256)n[f++]=Ye;else if(Ye==256){$e=p,h=null;break}else{var Pt=Ye-254;if(Ye>264){var ee=Ye-257,xt=Qc[ee];Pt=pt(e,p,(1<>4;Ce||ot(3),p+=Ce&15;var De=n4[P];if(P>3){var xt=Zc[P];De+=Xa(e,p)&(1<A){u&&ot(0);break}i&&c(f+131072);var U=f+Pt;if(f>4>7||(e[0]<<8|e[1])%31)&&ot(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&ot(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function u4(e,t){return i4(e.subarray(c4(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}var Wi=typeof TextEncoder<"u"&&new TextEncoder,Io=typeof TextDecoder<"u"&&new TextDecoder,d4=0;try{Io.decode(s4,{stream:!0}),d4=1}catch{}var p4=function(e){for(var t="",n=0;;){var r=e[n++],a=(r>127)+(r>223)+(r>239);if(n+a>e.length)return{s:t,r:vl(e,n-1)};a?a==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):a&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function f4(e,t){if(t){for(var n=new qe(e.length),r=0;r>1)),l=0,i=function(d){o[l++]=d},r=0;ro.length){var u=new qe(l+8+(a-r<<1));u.set(o),o=u}var c=e.charCodeAt(r);c<128||t?i(c):c<2048?(i(192|c>>6),i(128|c&63)):c>55295&&c<57344?(c=65536+(c&1047552)|e.charCodeAt(++r)&1023,i(240|c>>18),i(128|c>>12&63),i(128|c>>6&63),i(128|c&63)):(i(224|c>>12),i(128|c>>6&63),i(128|c&63))}return vl(o,0,l)}function v4(e,t){if(t){for(var n="",r=0;r{var r;return s("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":`${e} icon`},(r=n.default)==null?void 0:r.call(n))};oe.displayName="IconBase";const hl=({size:e=48,stroke:t=4,wrapper:n=!0,height:r=2*e})=>{const a=s("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,preserveAspectRatio:"xMidYMid",viewBox:"25 25 50 50"},[s("animateTransform",{attributeName:"transform",type:"rotate",dur:"2s",keyTimes:"0;1",repeatCount:"indefinite",values:"0;360"}),s("circle",{cx:"50",cy:"50",r:"20",fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round"},[s("animate",{attributeName:"stroke-dasharray",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"1,200;90,200;1,200"}),s("animate",{attributeName:"stroke-dashoffset",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"0;-35px;-125px"})])]);return n?s("div",{class:"loading-icon-wrapper",style:`display:flex;align-items:center;justify-content:center;height:${r}px`},a):a};hl.displayName="LoadingIcon";const ru=(e,{slots:t})=>{var n;return(n=t.default)==null?void 0:n.call(t)},gl=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},Ba=(e,t)=>{let n=1;for(let r=0;r>6;return n+=n<<3,n^=n>>11,n%t},au=Array.isArray,h4=e=>typeof e=="function",g4=e=>typeof e=="string";var m4=e=>e.startsWith("ftp://"),ml=e=>/^(https?:)?\/\//.test(e),_4=/.md((\?|#).*)?$/,y4=(e,t="/")=>!!(ml(e)||m4(e)||e.startsWith("/")&&!e.startsWith(t)&&!_4.test(e)),ou=e=>Object.prototype.toString.call(e)==="[object Object]";function b4(){const e=W(!1);return yn()&&_e(()=>{e.value=!0}),e}function E4(e){return b4(),x(()=>!!e())}const Mt=e=>typeof e=="string",Gn=(e,t)=>Mt(e)&&e.startsWith(t),wn=(e,t)=>Mt(e)&&e.endsWith(t),tr=Object.entries,A4=Object.fromEntries,Ke=Object.keys,w4=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),lu=e=>{const[t,n=""]=e.split("#");return t?`${w4(t)}${n?`#${n}`:""}`:e},Ki=e=>ou(e)&&Mt(e.name),Ir=(e,t=!1)=>e?au(e)?e.map(n=>Mt(n)?{name:n}:Ki(n)?n:null).filter(n=>n!==null):Mt(e)?[{name:e}]:Ki(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],iu=(e,t)=>{if(e){if(au(e)&&e.every(Mt))return e;if(Mt(e))return[e];console.error(`Expect ${t||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},su=e=>iu(e,"category"),cu=e=>iu(e,"tag"),Va=e=>Gn(e,"/");let x4=class{constructor(){this.messageElements={};const t="message-container",n=document.getElementById(t);n?this.containerElement=n:(this.containerElement=document.createElement("div"),this.containerElement.id=t,document.body.appendChild(this.containerElement))}pop(t,n=2e3){const r=document.createElement("div"),a=Date.now();return r.className="message move-in",r.innerHTML=t,this.containerElement.appendChild(r),this.messageElements[a]=r,n>0&&setTimeout(()=>{this.close(a)},n),a}close(t){if(t){const n=this.messageElements[t];n.classList.remove("move-in"),n.classList.add("move-out"),n.addEventListener("animationend",()=>{n.remove(),delete this.messageElements[t]})}else Ke(this.messageElements).forEach(n=>this.close(Number(n)))}destroy(){document.body.removeChild(this.containerElement)}};const uu=/#.*$/u,k4=e=>{const t=uu.exec(e);return t?t[0]:""},Ji=e=>decodeURI(e).replace(uu,"").replace(/(index)?\.(md|html)$/,""),_l=(e,t)=>{if(t===void 0)return!1;const n=Ji(e.path),r=Ji(t),a=k4(t);return a?a===e.hash&&(!r||n===r):n===r},Yi=e=>{const t=atob(e);return v4(u4(f4(t,!0)))},T4=e=>ml(e)?e:`https://github.com/${e}`,du=e=>!ml(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Wn=(e,...t)=>{const n=e.resolve(...t),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:a}=r,o=h4(a)?a(n):a,l=g4(o)?{path:o}:o;return Wn(e,{hash:n.hash,query:n.query,params:n.params,...l})},L4=e=>{var t;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((t=e.currentTarget.getAttribute("target"))!=null&&t.match(/\b_blank\b/i))))return e.preventDefault(),!0},Se=({to:e="",class:t="",...n},{slots:r})=>{var l;const a=He(),o=(i={})=>L4(i)?a.push(e).catch():Promise.resolve();return s("a",{...n,class:["vp-link",t],href:Le(lu(e)),onClick:o},(l=r.default)==null?void 0:l.call(r))};Se.displayName="VPLink";const pu=()=>s(oe,{name:"github"},()=>s("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));pu.displayName="GitHubIcon";const fu=()=>s(oe,{name:"gitlab"},()=>s("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));fu.displayName="GitLabIcon";const vu=()=>s(oe,{name:"gitee"},()=>s("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));vu.displayName="GiteeIcon";const hu=()=>s(oe,{name:"bitbucket"},()=>s("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));hu.displayName="BitbucketIcon";const gu=()=>s(oe,{name:"source"},()=>s("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));gu.displayName="SourceIcon";const _t=(e,t)=>{const n=t?t._instance:yn();return ou(n==null?void 0:n.appContext.components)&&(e in n.appContext.components||ct(e)in n.appContext.components||Or(ct(e))in n.appContext.components)},I4=()=>E4(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),P4=()=>{const e=I4();return x(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},nr=e=>{const t=It();return x(()=>e[t.value])};function Qi(e,t){var n;const r=Fe();return Zs(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),zt(r)}function D4(e,t){let n,r,a;const o=W(!0),l=()=>{o.value=!0,a()};ce(e,l,{flush:"sync"});const i=typeof t=="function"?t:t.get,u=typeof t=="function"?void 0:t.set,c=Us((d,p)=>(r=d,a=p,{get(){return o.value&&(n=i(),o.value=!1),r(),n},set(f){u==null||u(f)}}));return Object.isExtensible(c)&&(c.trigger=l),c}function bt(e){return Ps()?(fd(e),!0):!1}function Me(e){return typeof e=="function"?e():fn(e)}const mn=typeof window<"u"&&typeof document<"u",C4=Object.prototype.toString,O4=e=>C4.call(e)==="[object Object]",_n=()=>{},Zi=R4();function R4(){var e;return mn&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function yl(e,t){function n(...r){return new Promise((a,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(a).catch(o)})}return n}const mu=e=>e();function S4(e,t={}){let n,r,a=_n;const o=i=>{clearTimeout(i),a(),a=_n};return i=>{const u=Me(e),c=Me(t.maxWait);return n&&o(n),u<=0||c!==void 0&&c<=0?(r&&(o(r),r=null),Promise.resolve(i())):new Promise((d,p)=>{a=t.rejectOnCancel?p:d,c&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,d(i())},c)),n=setTimeout(()=>{r&&o(r),r=null,d(i())},u)})}}function B4(e,t=!0,n=!0,r=!1){let a=0,o,l=!0,i=_n,u;const c=()=>{o&&(clearTimeout(o),o=void 0,i(),i=_n)};return p=>{const f=Me(e),h=Date.now()-a,_=()=>u=p();return c(),f<=0?(a=Date.now(),_()):(h>f&&(n||!l)?(a=Date.now(),_()):t&&(u=new Promise((E,k)=>{i=r?k:E,o=setTimeout(()=>{a=Date.now(),l=!0,E(_()),c()},Math.max(0,f-h))})),!n&&!o&&(o=setTimeout(()=>l=!0,f)),l=!1,u)}}function V4(e=mu){const t=W(!0);function n(){t.value=!1}function r(){t.value=!0}const a=(...o)=>{t.value&&e(...o)};return{isActive:zt(t),pause:n,resume:r,eventFilter:a}}function $4(...e){if(e.length!==1)return Xn(...e);const t=e[0];return typeof t=="function"?zt(Us(()=>({get:t,set:_n}))):W(t)}function r5(e,t=200,n={}){return yl(S4(t,n),e)}function M4(e,t=200,n=!1,r=!0,a=!1){return yl(B4(t,n,r,a),e)}function z4(e,t,n={}){const{eventFilter:r=mu,...a}=n;return ce(e,yl(r,t),a)}function F4(e,t,n={}){const{eventFilter:r,...a}=n,{eventFilter:o,pause:l,resume:i,isActive:u}=V4(r);return{stop:z4(e,t,{...a,eventFilter:o}),pause:l,resume:i,isActive:u}}function bl(e,t=!0){yn()?_e(e):t?e():an(e)}function H4(e){yn()&&Vr(e)}function N4(e,t=1e3,n={}){const{immediate:r=!0,immediateCallback:a=!1}=n;let o=null;const l=W(!1);function i(){o&&(clearInterval(o),o=null)}function u(){l.value=!1,i()}function c(){const d=Me(t);d<=0||(l.value=!0,a&&e(),i(),o=setInterval(e,d))}if(r&&mn&&c(),Re(t)||typeof t=="function"){const d=ce(t,()=>{l.value&&mn&&c()});bt(d)}return bt(u),{isActive:l,pause:u,resume:c}}function q4(e,t,n={}){const{immediate:r=!0}=n,a=W(!1);let o=null;function l(){o&&(clearTimeout(o),o=null)}function i(){a.value=!1,l()}function u(...c){l(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=null,e(...c)},Me(t))}return r&&(a.value=!0,mn&&u()),bt(i),{isPending:zt(a),start:u,stop:i}}function Po(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,a=Re(e),o=W(e);function l(i){if(arguments.length)return o.value=i,o.value;{const u=Me(n);return o.value=o.value===u?Me(r):u,o.value}}return a?l:[o,l]}function $t(e){var t;const n=Me(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Et=mn?window:void 0,El=mn?window.document:void 0,j4=mn?window.navigator:void 0;function Je(...e){let t,n,r,a;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,a]=e,t=Et):[t,n,r,a]=e,!t)return _n;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],l=()=>{o.forEach(d=>d()),o.length=0},i=(d,p,f,h)=>(d.addEventListener(p,f,h),()=>d.removeEventListener(p,f,h)),u=ce(()=>[$t(t),Me(a)],([d,p])=>{if(l(),!d)return;const f=O4(p)?{...p}:p;o.push(...n.flatMap(h=>r.map(_=>i(d,h,_,f))))},{immediate:!0,flush:"post"}),c=()=>{u(),l()};return bt(c),c}function U4(){const e=W(!1);return yn()&&_e(()=>{e.value=!0}),e}function zr(e){const t=U4();return x(()=>(t.value,!!e()))}function G4(e,t={}){const{immediate:n=!0,fpsLimit:r=void 0,window:a=Et}=t,o=W(!1),l=r?1e3/r:null;let i=0,u=null;function c(f){if(!o.value||!a)return;const h=f-(i||f);if(l&&hn&&"matchMedia"in n&&typeof n.matchMedia=="function");let a;const o=W(!1),l=c=>{o.value=c.matches},i=()=>{a&&("removeEventListener"in a?a.removeEventListener("change",l):a.removeListener(l))},u=Zs(()=>{r.value&&(i(),a=n.matchMedia(Me(e)),"addEventListener"in a?a.addEventListener("change",l):a.addListener(l),o.value=a.matches)});return bt(()=>{u(),i(),a=void 0}),o}function W4(e={}){const{navigator:t=j4,read:n=!1,source:r,copiedDuring:a=1500,legacy:o=!1}=e,l=zr(()=>t&&"clipboard"in t),i=x(()=>l.value||o),u=W(""),c=W(!1),d=q4(()=>c.value=!1,a);function p(){l.value?t.clipboard.readText().then(E=>{u.value=E}):u.value=_()}i.value&&n&&Je(["copy","cut"],p);async function f(E=Me(r)){i.value&&E!=null&&(l.value?await t.clipboard.writeText(E):h(E),u.value=E,c.value=!0,d.start())}function h(E){const k=document.createElement("textarea");k.value=E??"",k.style.position="absolute",k.style.opacity="0",document.body.appendChild(k),k.select(),document.execCommand("copy"),k.remove()}function _(){var E,k,A;return(A=(k=(E=document==null?void 0:document.getSelection)==null?void 0:E.call(document))==null?void 0:k.toString())!=null?A:""}return{isSupported:i,text:u,copied:c,copy:f}}const ra=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},aa="__vueuse_ssr_handlers__",K4=J4();function J4(){return aa in ra||(ra[aa]=ra[aa]||{}),ra[aa]}function Y4(e,t){return K4[e]||t}function Q4(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Z4={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Xi="vueuse-storage";function rr(e,t,n,r={}){var a;const{flush:o="pre",deep:l=!0,listenToStorageChanges:i=!0,writeDefaults:u=!0,mergeDefaults:c=!1,shallow:d,window:p=Et,eventFilter:f,onError:h=D=>{console.error(D)}}=r,_=(d?Fe:W)(t);if(!n)try{n=Y4("getDefaultStorage",()=>{var D;return(D=Et)==null?void 0:D.localStorage})()}catch(D){h(D)}if(!n)return _;const E=Me(t),k=Q4(E),A=(a=r.serializer)!=null?a:Z4[k],{pause:I,resume:b}=F4(_,()=>T(_.value),{flush:o,deep:l,eventFilter:f});return p&&i&&(Je(p,"storage",M),Je(p,Xi,O)),M(),_;function T(D){try{if(D==null)n.removeItem(e);else{const N=A.write(D),q=n.getItem(e);q!==N&&(n.setItem(e,N),p&&p.dispatchEvent(new CustomEvent(Xi,{detail:{key:e,oldValue:q,newValue:N,storageArea:n}})))}}catch(N){h(N)}}function $(D){const N=D?D.newValue:n.getItem(e);if(N==null)return u&&E!==null&&n.setItem(e,A.write(E)),E;if(!D&&c){const q=A.read(N);return typeof c=="function"?c(q,E):k==="object"&&!Array.isArray(q)?{...E,...q}:q}else return typeof N!="string"?N:A.read(N)}function O(D){M(D.detail)}function M(D){if(!(D&&D.storageArea!==n)){if(D&&D.key==null){_.value=E;return}if(!(D&&D.key!==e)){I();try{(D==null?void 0:D.newValue)!==A.write(_.value)&&(_.value=$(D))}catch(N){h(N)}finally{D?an(b):b()}}}}}function X4(e){return _u("(prefers-color-scheme: dark)",e)}function ep(e,t,n={}){const{window:r=Et,...a}=n;let o;const l=zr(()=>r&&"MutationObserver"in r),i=()=>{o&&(o.disconnect(),o=void 0)},u=ce(()=>$t(e),d=>{i(),l.value&&r&&d&&(o=new MutationObserver(t),o.observe(d,a))},{immediate:!0}),c=()=>{i(),u()};return bt(c),{isSupported:l,stop:c}}function tp(e,t,n={}){const{window:r=Et,...a}=n;let o;const l=zr(()=>r&&"ResizeObserver"in r),i=()=>{o&&(o.disconnect(),o=void 0)},u=x(()=>Array.isArray(e)?e.map(p=>$t(p)):[$t(e)]),c=ce(u,p=>{if(i(),l.value&&r){o=new ResizeObserver(t);for(const f of p)f&&o.observe(f,a)}},{immediate:!0,flush:"post",deep:!0}),d=()=>{i(),c()};return bt(d),{isSupported:l,stop:d}}function np(e,t={width:0,height:0},n={}){const{window:r=Et,box:a="content-box"}=n,o=x(()=>{var u,c;return(c=(u=$t(e))==null?void 0:u.namespaceURI)==null?void 0:c.includes("svg")}),l=W(t.width),i=W(t.height);return tp(e,([u])=>{const c=a==="border-box"?u.borderBoxSize:a==="content-box"?u.contentBoxSize:u.devicePixelContentBoxSize;if(r&&o.value){const d=$t(e);if(d){const p=r.getComputedStyle(d);l.value=Number.parseFloat(p.width),i.value=Number.parseFloat(p.height)}}else if(c){const d=Array.isArray(c)?c:[c];l.value=d.reduce((p,{inlineSize:f})=>p+f,0),i.value=d.reduce((p,{blockSize:f})=>p+f,0)}else l.value=u.contentRect.width,i.value=u.contentRect.height},n),ce(()=>$t(e),u=>{l.value=u?t.width:0,i.value=u?t.height:0}),{width:l,height:i}}const es=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Al(e,t={}){const{document:n=El,autoExit:r=!1}=t,a=x(()=>{var A;return(A=$t(e))!=null?A:n==null?void 0:n.querySelector("html")}),o=W(!1),l=x(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(A=>n&&A in n||a.value&&A in a.value)),i=x(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(A=>n&&A in n||a.value&&A in a.value)),u=x(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(A=>n&&A in n||a.value&&A in a.value)),c=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(A=>n&&A in n),d=zr(()=>a.value&&n&&l.value!==void 0&&i.value!==void 0&&u.value!==void 0),p=()=>c?(n==null?void 0:n[c])===a.value:!1,f=()=>{if(u.value){if(n&&n[u.value]!=null)return n[u.value];{const A=a.value;if((A==null?void 0:A[u.value])!=null)return!!A[u.value]}}return!1};async function h(){if(!(!d.value||!o.value)){if(i.value)if((n==null?void 0:n[i.value])!=null)await n[i.value]();else{const A=a.value;(A==null?void 0:A[i.value])!=null&&await A[i.value]()}o.value=!1}}async function _(){if(!d.value||o.value)return;f()&&await h();const A=a.value;l.value&&(A==null?void 0:A[l.value])!=null&&(await A[l.value](),o.value=!0)}async function E(){await(o.value?h():_())}const k=()=>{const A=f();(!A||A&&p())&&(o.value=A)};return Je(n,es,k,!1),Je(()=>$t(a),es,k,!1),r&&bt(h),{isSupported:d,isFullscreen:o,enter:_,exit:h,toggle:E}}function eo(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function a5(e={}){const{controls:t=!1,interval:n="requestAnimationFrame"}=e,r=W(new Date),a=()=>r.value=new Date,o=n==="requestAnimationFrame"?G4(a,{immediate:!0}):N4(a,n,{immediate:!0});return t?{now:r,...o}:r}function to(e,t=_n,n={}){const{immediate:r=!0,manual:a=!1,type:o="text/javascript",async:l=!0,crossOrigin:i,referrerPolicy:u,noModule:c,defer:d,document:p=El,attrs:f={}}=n,h=W(null);let _=null;const E=I=>new Promise((b,T)=>{const $=D=>(h.value=D,b(D),D);if(!p){b(!1);return}let O=!1,M=p.querySelector(`script[src="${Me(e)}"]`);M?M.hasAttribute("data-loaded")&&$(M):(M=p.createElement("script"),M.type=o,M.async=l,M.src=Me(e),d&&(M.defer=d),i&&(M.crossOrigin=i),c&&(M.noModule=c),u&&(M.referrerPolicy=u),Object.entries(f).forEach(([D,N])=>M==null?void 0:M.setAttribute(D,N)),O=!0),M.addEventListener("error",D=>T(D)),M.addEventListener("abort",D=>T(D)),M.addEventListener("load",()=>{M.setAttribute("data-loaded","true"),t(M),$(M)}),O&&(M=p.head.appendChild(M)),I||$(M)}),k=(I=!0)=>(_||(_=E(I)),_),A=()=>{if(!p)return;_=null,h.value&&(h.value=null);const I=p.querySelector(`script[src="${Me(e)}"]`);I&&p.head.removeChild(I)};return r&&!a&&bl(k),a||H4(A),{scriptTag:h,load:k,unload:A}}function yu(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function bu(e,t=!1){const n=W(t);let r=null,a;ce($4(e),i=>{const u=eo(Me(i));if(u){const c=u;a=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const o=()=>{const i=eo(Me(e));!i||n.value||(Zi&&(r=Je(i,"touchmove",u=>{rp(u)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},l=()=>{const i=eo(Me(e));!i||!n.value||(Zi&&(r==null||r()),i.style.overflow=a,n.value=!1)};return bt(l),x({get(){return n.value},set(i){i?o():l()}})}function Eu(e,t,n={}){const{window:r=Et}=n;return rr(e,t,r==null?void 0:r.sessionStorage,n)}let ap=0;function o5(e,t={}){const n=W(!1),{document:r=El,immediate:a=!0,manual:o=!1,id:l=`vueuse_styletag_${++ap}`}=t,i=W(e);let u=()=>{};const c=()=>{if(!r)return;const p=r.getElementById(l)||r.createElement("style");p.isConnected||(p.id=l,t.media&&(p.media=t.media),r.head.appendChild(p)),!n.value&&(u=ce(i,f=>{p.textContent=f},{immediate:!0}),n.value=!0)},d=()=>{!r||!n.value||(u(),r.head.removeChild(r.getElementById(l)),n.value=!1)};return a&&!o&&bl(c),o||bt(d),{id:l,css:i,unload:d,load:c,isLoaded:zt(n)}}function op(e={}){const{window:t=Et}=e;if(!t)return{x:W(0),y:W(0)};const n=W(t.scrollX),r=W(t.scrollY);return Je(t,"scroll",()=>{n.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:n,y:r}}function lp(e={}){const{window:t=Et,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:a=!0,includeScrollbar:o=!0}=e,l=W(n),i=W(r),u=()=>{t&&(o?(l.value=t.innerWidth,i.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,i.value=t.document.documentElement.clientHeight))};if(u(),bl(u),Je("resize",u,{passive:!0}),a){const c=_u("(orientation: portrait)");ce(c,()=>u())}return{width:l,height:i}}const Au=({type:e="info",text:t="",vertical:n,color:r},{slots:a})=>{var o;return s("span",{class:["vp-badge",e,{diy:r}],style:{verticalAlign:n??!1,backgroundColor:r??!1}},((o=a.default)==null?void 0:o.call(a))||t)};Au.displayName="Badge";var ip=B({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const t=x(()=>{const r=["font-icon icon"],a=`fas fa-${e.icon}`;return r.push("fa-fw fa-sm"),r.push(e.icon.includes(" ")?e.icon:a),r}),n=x(()=>{const r={};return e.color&&(r.color=e.color),e.size&&(r["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),Ke(r).length?r:null});return()=>e.icon?s("span",{key:e.icon,class:t.value,style:n.value}):null}});const wu=()=>s(oe,{name:"back-to-top"},()=>[s("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),s("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);wu.displayName="BackToTopIcon";var sp=B({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const t=ye(),n=nr({"/zh/":{backToTop:"返回顶部"},"/en/":{backToTop:"Back to top"},"/":{backToTop:"返回頂部"}}),r=Fe(),{height:a}=np(r),{height:o}=lp(),{y:l}=op(),i=x(()=>t.value.backToTop!==!1&&l.value>e.threshold),u=x(()=>l.value/(a.value-o.value));return _e(()=>{r.value=document.body}),()=>s(nn,{name:"fade"},()=>i.value?s("button",{type:"button",class:"vp-back-to-top-button","aria-label":n.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:s("svg",{class:"vp-scroll-progress"},s("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*u.value*100}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}})),s(wu)]):null)}});const cp=At({enhance:({app:e})=>{_t("Badge")||e.component("Badge",Au),_t("FontIcon")||e.component("FontIcon",ip)},setup:()=>{to("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/brands.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),to("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/solid.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),to("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/fontawesome.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}})},rootComponents:[()=>s(sp,{})]});function up(e,t,n){var r,a,o;t===void 0&&(t=50),n===void 0&&(n={});var l=(r=n.isImmediate)!=null&&r,i=(a=n.callback)!=null&&a,u=n.maxWait,c=Date.now(),d=[];function p(){if(u!==void 0){var h=Date.now()-c;if(h+t>=u)return u-h}return t}var f=function(){var h=[].slice.call(arguments),_=this;return new Promise(function(E,k){var A=l&&o===void 0;if(o!==void 0&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,c=Date.now(),!l){var b=e.apply(_,h);i&&i(b),d.forEach(function(T){return(0,T.resolve)(b)}),d=[]}},p()),A){var I=e.apply(_,h);return i&&i(I),E(I)}d.push({resolve:E,reject:k})})};return f.cancel=function(h){o!==void 0&&clearTimeout(o),d.forEach(function(_){return(0,_.reject)(h)}),d=[]},f}const dp=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const a=He(),l=up(()=>{var E,k;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)f.some(I=>I.hash===A.hash));for(let A=0;A<_.length;A++){const I=_[A],b=_[A+1],T=i>=(((E=I.parentElement)==null?void 0:E.offsetTop)??0)-r,$=!b||i<(((k=b.parentElement)==null?void 0:k.offsetTop)??0)-r;if(!(T&&$))continue;const M=decodeURIComponent(a.currentRoute.value.hash),D=decodeURIComponent(I.hash);if(M===D)return;if(p){for(let N=A+1;N<_.length;N++)if(M===decodeURIComponent(_[N].hash))return}ts(a,D);return}},n);_e(()=>{window.addEventListener("scroll",l)}),rl(()=>{window.removeEventListener("scroll",l)})},ts=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},pp=".vp-sidebar-link, .toc-link",fp=".header-anchor",vp=200,hp=5,gp=At({setup(){dp({headerLinkSelector:pp,headerAnchorSelector:fp,delay:vp,offset:hp})}});let xu=()=>null;const ku=Symbol(""),mp=e=>{xu=e},_p=()=>ge(ku),yp=e=>{e.provide(ku,xu)};var bp=B({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean,indexType:{type:String,default:"ul"},hideHeading:Boolean},setup(e){const t=_p(),n=nr({"/zh/":{title:"目录",empty:"暂无目录"},"/en/":{title:"Catalog",empty:"No catalog"},"/":{title:"目錄",empty:"暫無目錄"}}),r=ue(),a=He(),o=$c(),l=c=>{const d=c.I;return typeof d>"u"||d},i=()=>{const c=e.base||r.value.path.replace(/\/[^/]+$/,"/"),d=a.getRoutes(),p=[];return d.filter(({meta:f,path:h})=>{if(!Gn(h,c)||h===c)return!1;if(c==="/"){const _=Ke(o.value.locales).filter(E=>E!=="/");if(h==="/404.html"||_.some(E=>Gn(h,E)))return!1}return(wn(h,".html")&&!wn(h,"/index.html")||wn(h,"/"))&&l(f)}).map(({path:f,meta:h})=>{const _=f.substring(c.length).split("/").length;return{title:h.t||"",icon:h.i,base:f.replace(/\/[^/]+\/?$/,"/"),order:h.O||null,level:wn(f,"/")?_-1:_,path:f}}).filter(({title:f,level:h})=>f&&h<=e.level).sort(({title:f,level:h,path:_,order:E},{title:k,level:A,path:I,order:b})=>h-A||(wn(_,"/index.html")?-1:wn(I,"/index.html")?1:E===null?b===null?f.localeCompare(k):b:b===null?E:E>0?b>0?E-b:-1:b<0?E-b:1)).forEach(f=>{var E;const{base:h,level:_}=f;switch(_){case 1:p.push(f);break;case 2:{const k=p.find(A=>A.path===h);k&&(k.children??(k.children=[])).push(f);break}default:{const k=p.find(A=>A.path===h.replace(/\/[^/]+\/$/,"/"));if(k){const A=(E=k.children)==null?void 0:E.find(I=>I.path===h);A&&(A.children??(A.children=[])).push(f)}}}}),p},u=x(()=>i());return()=>s("div",{class:"vp-catalog"},[e.hideHeading?null:s("h2",{class:"vp-catalog-main-title"},n.value.title),u.value.length?u.value.map(({children:c=[],icon:d,path:p,title:f},h)=>[s("h3",{id:f,class:["vp-catalog-child-title",{"has-children":c.length}]},[s("a",{href:`#${f}`,class:"header-anchor","aria-hidden":!0},"#"),s(Se,{class:"vp-catalog-title",to:p},()=>[e.index?`${h+1}.`:null,d&&t?s(t,{icon:d}):null,f||p])]),c.length?s(e.index&&e.indexType==="ol"?"ol":"ul",{class:"vp-catalog-child-catalogs"},c.map(({children:_=[],icon:E,path:k,title:A},I)=>s("li",{class:"vp-child-catalog"},[s("div",{class:["vp-catalog-sub-title",{"has-children":_.length}]},[s("a",{href:`#${A}`,class:"header-anchor"},"#"),s(Se,{class:"vp-catalog-title",to:k},()=>[e.index?`${h+1}.${I+1}`:null,E&&t?s(t,{icon:E}):null,A||k])]),_.length?s("div",{class:"v-sub-catalogs"},_.map(({icon:b,path:T,title:$},O)=>s(Se,{class:"vp-sub-catalog",to:T},()=>[e.index&&e.indexType!=="ol"?`${h+1}.${I+1}.${O+1}`:null,b&&t?s(t,{icon:b}):null,$||T]))):null]))):null]):s("p",{class:"vp-empty-catalog"},n.value.empty)])}}),Ep=At({enhance:({app:e})=>{yp(e),_t("AutoCatalog",e)||e.component("AutoCatalog",bp)}});const Ap=s("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[s("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),s("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),Tu=B({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=It(),n=x(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>s("span",[Ap,s("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}}),wp={},xp=At({enhance({app:e}){e.component("ExternalLinkIcon",s(Tu,{locales:wp}))}});/** - * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT - */const fe={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
    '},status:null,set:e=>{const t=fe.isStarted();e=no(e,fe.settings.minimum,1),fe.status=e===1?null:e;const n=fe.render(!t),r=n.querySelector(fe.settings.barSelector),a=fe.settings.speed,o=fe.settings.easing;return n.offsetWidth,kp(l=>{oa(r,{transform:"translate3d("+ns(e)+"%,0,0)",transition:"all "+a+"ms "+o}),e===1?(oa(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){oa(n,{transition:"all "+a+"ms linear",opacity:"0"}),setTimeout(function(){fe.remove(),l()},a)},a)):setTimeout(()=>l(),a)}),fe},isStarted:()=>typeof fe.status=="number",start:()=>{fe.status||fe.set(0);const e=()=>{setTimeout(()=>{fe.status&&(fe.trickle(),e())},fe.settings.trickleSpeed)};return fe.settings.trickle&&e(),fe},done:e=>!e&&!fe.status?fe:fe.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=fe.status;return t?(typeof e!="number"&&(e=(1-t)*no(Math.random()*t,.1,.95)),t=no(t+e,0,.994),fe.set(t)):fe.start()},trickle:()=>fe.inc(Math.random()*fe.settings.trickleRate),render:e=>{if(fe.isRendered())return document.getElementById("nprogress");rs(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=fe.settings.template;const n=t.querySelector(fe.settings.barSelector),r=e?"-100":ns(fe.status||0),a=document.querySelector(fe.settings.parent);return oa(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),a!==document.body&&rs(a,"nprogress-custom-parent"),a==null||a.appendChild(t),t},remove:()=>{as(document.documentElement,"nprogress-busy"),as(document.querySelector(fe.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&Tp(e)},isRendered:()=>!!document.getElementById("nprogress")},no=(e,t,n)=>en?n:e,ns=e=>(-1+e)*100,kp=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),oa=function(){const e=["Webkit","O","Moz","ms"],t={};function n(l){return l.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(i,u){return u.toUpperCase()})}function r(l){const i=document.body.style;if(l in i)return l;let u=e.length;const c=l.charAt(0).toUpperCase()+l.slice(1);let d;for(;u--;)if(d=e[u]+c,d in i)return d;return l}function a(l){return l=n(l),t[l]??(t[l]=r(l))}function o(l,i,u){i=a(i),l.style[i]=u}return function(l,i){for(const u in i){const c=i[u];c!==void 0&&Object.prototype.hasOwnProperty.call(i,u)&&o(l,u,c)}}}(),Lu=(e,t)=>(typeof e=="string"?e:wl(e)).indexOf(" "+t+" ")>=0,rs=(e,t)=>{const n=wl(e),r=n+t;Lu(n,t)||(e.className=r.substring(1))},as=(e,t)=>{const n=wl(e);if(!Lu(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},wl=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),Tp=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const Lp=()=>{_e(()=>{const e=He(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||fe.start()}),e.afterEach(n=>{t.add(n.path),fe.done()})})},Ip=At({setup(){Lp()}}),Pp=JSON.parse(`{"encrypt":{"config":{"/demo/encrypt.html":["$2a$10$Ej9gFqMdCa06xu2VhmHZBeGm7Es3D.dvuJTzMdEghqGOAUdzVrLLi"],"/zh/demo/encrypt.html":["$2a$10$ch52rownJsJncyeRtyyGtOaBXiBQYgzEP81KvK1JAu.l/Ea5DClZ."],"/en/demo/encrypt.html":["$2a$10$w5vqqMO/qr5PL3gdZet1Z.mU6f1VZbkXG9GUww2onnnnAnomCffSe"]}},"author":{"name":"Ven2s","url":"https://luvsia.com"},"logo":"/images/pinkbitch.png","repo":"ventusoon/LuvSia","docsDir":"src/","blog":{"medias":{"Discord":"https://discord.com/channels/ven2s_","Email":"mailto:sia@ik.me","Gitee":"https://gitee.com/ventusoon","GitHub":"https://github.com/ventusoon","Gitlab":"https://gitlab.com/ventusoon","Instagram":"https://instagram.com/ventusoon","Steam":"https://steamcommunity.com/id/ventusyu","Twitter":"https://x.com/ventusoon"}},"locales":{"/zh/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"在 GitHub 上编辑此页","print":"打印"},"blogLocales":{"article":"文章","articleList":"文章列表","category":"分类","tag":"标签","timeline":"时间轴","timelineTitle":"昨日不在","all":"全部","intro":"个人介绍","star":"收藏"},"paginationLocales":{"prev":"上一页","next":"下一页","navigate":"跳转到","action":"前往","errorText":"请输入 1 到 $page 之前的页码!"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"encryptLocales":{"iconLabel":"文章已加密","placeholder":"输入密码","remember":"记住密码","errorHint":"请输入正确的密码"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":["/zh/",{"text":"Linux","icon":"code","prefix":"/zh/posts/","children":[{"text":"建站","icon":"pen-to-square","prefix":"Server/","children":[{"text":"苹果1","icon":"pen-to-square","link":"1"},{"text":"苹果2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"香蕉","icon":"pen-to-square","prefix":"banana/","children":[{"text":"香蕉 1","icon":"pen-to-square","link":"1"},{"text":"香蕉 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"樱桃","icon":"pen-to-square","link":"cherry"},{"text":"火龙果","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]},{"text":"Windows","icon":"screwdriver-wrench","prefix":"/zh/posts/","children":[{"text":"建站","icon":"pen-to-square","prefix":"Server/","children":[{"text":"苹果1","icon":"pen-to-square","link":"1"},{"text":"苹果2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"香蕉","icon":"pen-to-square","prefix":"banana/","children":[{"text":"香蕉 1","icon":"pen-to-square","link":"1"},{"text":"香蕉 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"樱桃","icon":"pen-to-square","link":"cherry"},{"text":"火龙果","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]},{"text":"MacOS","icon":"apple-whole","prefix":"/zh/posts/","children":[{"text":"建站","icon":"pen-to-square","prefix":"Server/","children":[{"text":"苹果1","icon":"pen-to-square","link":"1"},{"text":"苹果2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"香蕉","icon":"pen-to-square","prefix":"banana/","children":[{"text":"香蕉 1","icon":"pen-to-square","link":"1"},{"text":"香蕉 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"樱桃","icon":"pen-to-square","link":"cherry"},{"text":"火龙果","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]}],"sidebar":{"/zh/":["",{"text":"如何使用","icon":"laptop-code","prefix":"demo/","link":"demo/","children":"structure"},{"text":"文章","icon":"book","prefix":"posts/","children":"structure"},"intro","slides"]},"footer":"默认页脚","displayFooter":true,"blog":{"description":"一个前端菜鸟","intro":"/zh/intro.html"}},"/en/":{"lang":"en-US","navbarLocales":{"langName":"English","selectLangAriaLabel":"Select language"},"metaLocales":{"author":"Author","date":"Writing Date","origin":"Original","views":"Page views","category":"Category","tag":"Tag","readingTime":"Reading Time","words":"Words","toc":"On This Page","prev":"Prev","next":"Next","lastUpdated":"Last update","contributors":"Contributors","editLink":"Edit this page on GitHub","print":"Print"},"blogLocales":{"article":"Articles","articleList":"Article List","category":"Category","tag":"Tag","timeline":"Timeline","timelineTitle":"Yesterday Once More!","all":"All","intro":"Personal Intro","star":"Star"},"paginationLocales":{"prev":"Prev","next":"Next","navigate":"Jump to","action":"Go","errorText":"Please enter a number between 1 and $page !"},"outlookLocales":{"themeColor":"Theme Color","darkmode":"Theme Mode","fullscreen":"Full Screen"},"encryptLocales":{"iconLabel":"Page Encrypted","placeholder":"Enter password","remember":"Remember password","errorHint":"Please enter the correct password!"},"routeLocales":{"skipToContent":"Skip to main content","notFoundTitle":"Page not found","notFoundMsg":["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],"back":"Go back","home":"Take me home","openInNewWindow":"Open in new window"},"navbar":["/en/",{"text":"Linux","icon":"code","prefix":"/en/posts/","children":[{"text":"Apple","icon":"pen-to-square","prefix":"apple/","children":[{"text":"Apple1","icon":"pen-to-square","link":"1"},{"text":"Apple2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"Banana","icon":"pen-to-square","prefix":"banana/","children":[{"text":"Banana 1","icon":"pen-to-square","link":"1"},{"text":"Banana 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"Cherry","icon":"pen-to-square","link":"cherry"},{"text":"Dragon Fruit","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]},{"text":"Windows","icon":"screwdriver-wrench","prefix":"/en/posts/","children":[{"text":"Apple","icon":"pen-to-square","prefix":"apple/","children":[{"text":"Apple1","icon":"pen-to-square","link":"1"},{"text":"Apple2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"Banana","icon":"pen-to-square","prefix":"banana/","children":[{"text":"Banana 1","icon":"pen-to-square","link":"1"},{"text":"Banana 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"Cherry","icon":"pen-to-square","link":"cherry"},{"text":"Dragon Fruit","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]},{"text":"MacOS","icon":"apple-whole","prefix":"/en/posts/","children":[{"text":"Apple","icon":"pen-to-square","prefix":"apple/","children":[{"text":"Apple1","icon":"pen-to-square","link":"1"},{"text":"Apple2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"Banana","icon":"pen-to-square","prefix":"banana/","children":[{"text":"Banana 1","icon":"pen-to-square","link":"1"},{"text":"Banana 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"Cherry","icon":"pen-to-square","link":"cherry"},{"text":"Dragon Fruit","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]}],"sidebar":{"/en/":["",{"text":"Demo","icon":"laptop-code","prefix":"demo/","link":"demo/","children":"structure"},{"text":"Articles","icon":"book","prefix":"posts/","children":"structure"},"intro","slides"]},"footer":"Default footer","displayFooter":true,"blog":{"description":"A FrontEnd noob","intro":"/en/intro.html"}},"/":{"lang":"zh-TW","navbarLocales":{"langName":"繁體中文","selectLangAriaLabel":"選擇語言"},"metaLocales":{"author":"作者","date":"寫作日期","origin":"原創","views":"訪問量","category":"分類","tag":"標籤","readingTime":"閱讀時間","words":"字數","toc":"此頁內容","prev":"上一頁","next":"下一頁","lastUpdated":"上次編輯於","contributors":"貢獻者","editLink":"在 GitHub 上編輯此頁","print":"打印"},"blogLocales":{"article":"文章","articleList":"文章列表","category":"分類","tag":"標籤","timeline":"時間軸","timelineTitle":"昨日不在","all":"全部","intro":"個人介紹","star":"收藏"},"paginationLocales":{"prev":"上一頁","next":"下一頁","navigate":"跳轉到","action":"前往","errorText":"請輸入 1 到 $page 之前的頁碼!"},"outlookLocales":{"themeColor":"主題色","darkmode":"主題模式","fullscreen":"全屏"},"encryptLocales":{"iconLabel":"頁面已加密","placeholder":"輸入密碼","remember":"記憶密碼","errorHint":"請輸入正確密碼"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"頁面不存在","notFoundMsg":["這裡什麼也沒有","我們是怎麼來到這兒的?","這 是 四 零 四 !","看起来你訪問了一個失效的鏈結"],"back":"返回上一頁","home":"帶我回家","openInNewWindow":"Open in new window"},"navbar":["/",{"text":"Linux","icon":"code","prefix":"/posts/","children":[{"text":"建站","icon":"pen-to-square","prefix":"Server/","children":[{"text":"苹果1","icon":"pen-to-square","link":"1"},{"text":"苹果2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"香蕉","icon":"pen-to-square","prefix":"banana/","children":[{"text":"香蕉 1","icon":"pen-to-square","link":"1"},{"text":"香蕉 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"樱桃","icon":"pen-to-square","link":"cherry"},{"text":"火龙果","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]},{"text":"Windows","icon":"screwdriver-wrench","prefix":"/posts/","children":[{"text":"建站","icon":"pen-to-square","prefix":"Server/","children":[{"text":"苹果1","icon":"pen-to-square","link":"1"},{"text":"苹果2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"香蕉","icon":"pen-to-square","prefix":"banana/","children":[{"text":"香蕉 1","icon":"pen-to-square","link":"1"},{"text":"香蕉 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"樱桃","icon":"pen-to-square","link":"cherry"},{"text":"火龙果","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]},{"text":"MacOS","icon":"apple-whole","prefix":"/posts/","children":[{"text":"建站","icon":"pen-to-square","prefix":"Server/","children":[{"text":"苹果1","icon":"pen-to-square","link":"1"},{"text":"苹果2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"香蕉","icon":"pen-to-square","prefix":"banana/","children":[{"text":"香蕉 1","icon":"pen-to-square","link":"1"},{"text":"香蕉 2","icon":"pen-to-square","link":"2"},"3","4"]},{"text":"樱桃","icon":"pen-to-square","link":"cherry"},{"text":"火龙果","icon":"pen-to-square","link":"dragonfruit"},"tomato","strawberry"]}],"sidebar":{"/tw/":["",{"text":"如何使用","icon":"laptop-code","prefix":"demo/","link":"demo/","children":"structure"},{"text":"文章","icon":"book","prefix":"posts/","children":"structure"},"intro","slides"]},"footer":"默認業腳","displayFooter":true,"blog":{"description":"一个前端麻瓜","intro":"/intro.html"}}}}`),Dp=W(Pp),Iu=()=>Dp,Pu=Symbol(""),Cp=()=>{const e=ge(Pu);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},Op=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},Rp=At({enhance({app:e}){const t=Iu(),n=e._context.provides[dl],r=x(()=>Op(t.value,n.value));e.provide(Pu,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),Sp={"Content-Type":"application/json"},Bp=({serverURL:e,lang:t,paths:n,signal:r})=>(({serverURL:a,lang:o,paths:l,type:i,signal:u})=>fetch(`${a}/article?path=${encodeURIComponent(l.join(","))}&type=${encodeURIComponent(i.join(","))}&lang=${o}`,{signal:u}).then(c=>c.json()))({serverURL:e,lang:t,paths:n,type:["time"],signal:r}).then(a=>Array.isArray(a)?a:[a]),Vp=e=>(({serverURL:t,lang:n,path:r,type:a,action:o})=>fetch(`${t}/article?lang=${n}`,{method:"POST",headers:Sp,body:JSON.stringify({path:r,type:a,action:o})}).then(l=>l.json()))({...e,type:"time",action:"inc"}),os=e=>{const t=((n="")=>n.replace(/\/$/u,""))(e);return/^(https?:)?\/\//.test(t)?t:`https://${t}`},$p=e=>{e.name!=="AbortError"&&console.error(e.message)},ls=e=>e.dataset.path||e.getAttribute("id"),is=(e,t)=>{t.forEach((n,r)=>{n.innerText=e[r].toString()})},Mp=({serverURL:e,path:t=window.location.pathname,selector:n=".waline-pageview-count",update:r=!0,lang:a=navigator.language})=>{const o=new AbortController,l=Array.from(document.querySelectorAll(n)),i=c=>{const d=ls(c);return d!==null&&t!==d},u=c=>Bp({serverURL:os(e),paths:c.map(d=>ls(d)||t),lang:a,signal:o.signal}).then(d=>is(d,c)).catch($p);if(r){const c=l.filter(p=>!i(p)),d=l.filter(i);Vp({serverURL:os(e),path:t,lang:a}).then(p=>is(new Array(c.length).fill(p),c)),d.length&&u(d)}else u(l);return o.abort.bind(o)};const zp={provider:"Waline",dark:'html[data-theme="dark"]',serverURL:"https://waline-comment.vuejs.press"};let Fp=zp;const Du=Symbol(""),Cu=()=>ge(Du),Hp=Cu,Np=e=>{e.provide(Du,Fp)},qp={"/zh/":{placeholder:"请留言。(填写邮箱可在被回复时收到邮件提醒)"},"/en/":{placeholder:"Write a comment here (Fill in the email address to receive an email notification when being replied)"},"/":{placeholder:"請留言。(填寫信箱可在被回覆時收到郵件提醒)"}};v(()=>import("./waline-meta-56fbc549.js"),[]);var jp=B({name:"WalineComment",props:{identifier:{type:String,required:!0}},setup(e){const t=Hp(),n=ye(),r=ul(),a=nr(qp);let o;const l=!!t.serverURL,i=x(()=>{if(!l)return!1;const c=t.pageview!==!1,d=n.value.pageview;return!!d||c!==!1&&d!==!1}),u=x(()=>({lang:r.value==="zh-CN"?"zh-CN":"en",locale:a.value,dark:"html.dark",...t,path:e.identifier}));return _e(()=>{ce(()=>e.identifier,()=>{o==null||o(),i.value&&an().then(()=>{setTimeout(()=>{o=Mp({serverURL:t.serverURL,path:e.identifier})},t.delay||800)})},{immediate:!0})}),()=>l?s("div",{id:"comment",class:"waline-wrapper"},s(y({loader:async()=>(await v(()=>import("./component-6f5dbbe9.js"),[])).Waline,loadingComponent:hl}),u.value)):null}}),Up=B({name:"CommentService",props:{darkmode:Boolean},setup(e){const t=Cu(),n=ue(),r=ye(),a=t.comment!==!1,o=x(()=>r.value.comment||a&&r.value.comment!==!1);return()=>s(jp,{identifier:r.value.commentID||n.value.path,darkmode:e.darkmode,style:{display:o.value?"block":"none"}})}}),Gp=At({enhance:({app:e})=>{Np(e),e.component("CommentService",Up)}});const Wp=800,Kp=2e3,Jp={"/zh/":{copy:"复制代码",copied:"已复制",hint:"复制成功"},"/en/":{copy:"Copy code",copied:"Copied",hint:"Copied successfully"},"/":{copy:"複製代碼",copied:"已複製",hint:"複製成功"}},Yp=!1,Qp=['.theme-hope-content div[class*="language-"] pre'],ss=!1,ro=new Map,Zp=()=>{const{copy:e}=W4({legacy:!0}),t=nr(Jp),n=ue(),r=P4(),a=i=>{if(!i.hasAttribute("copy-code-registered")){const u=document.createElement("button");u.type="button",u.classList.add("copy-code-button"),u.innerHTML='
    ',u.setAttribute("aria-label",t.value.copy),u.setAttribute("data-copied",t.value.copied),i.parentElement&&i.parentElement.insertBefore(u,i),i.setAttribute("copy-code-registered","")}},o=()=>an().then(()=>new Promise(i=>{setTimeout(()=>{Qp.forEach(u=>{document.querySelectorAll(u).forEach(a)}),i()},Wp)})),l=(i,u,c)=>{let{innerText:d=""}=u;/language-(shellscript|shell|bash|sh|zsh)/.test(i.classList.toString())&&(d=d.replace(/^ *(\$|>) /gm,"")),e(d).then(()=>{c.classList.add("copied"),clearTimeout(ro.get(c));const p=setTimeout(()=>{c.classList.remove("copied"),c.blur(),ro.delete(c)},Kp);ro.set(c,p)})};_e(()=>{(!r.value||ss)&&o(),Je("click",i=>{const u=i.target;if(u.matches('div[class*="language-"] > button.copy')){const c=u.parentElement,d=u.nextElementSibling;d&&l(c,d,u)}else if(u.matches('div[class*="language-"] div.copy-icon')){const c=u.parentElement,d=c.parentElement,p=c.nextElementSibling;p&&l(d,p,c)}}),ce(()=>n.value.path,()=>{(!r.value||ss)&&o()})})};var Xp=At({setup:()=>{Zp()}});const Ou=({title:e,desc:t="",logo:n="",color:r="",link:a=""})=>{const o=[s("img",{class:"vp-card-logo",src:Le(n)}),s("div",{class:"vp-card-content"},[s("div",{class:"vp-card-title",innerHTML:e}),s("hr"),s("div",{class:"vp-card-desc",innerHTML:t})])],l={class:"vp-card"};return r&&(l.style={background:r}),Tr(a)?s("a",{href:a,target:"_blank",...l},o):s(Se,{to:a,...l},()=>o)};Ou.displayName="VPCard";const la=rr("VUEPRESS_CODE_TAB_STORE",{});var e6=B({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=W(e.active),r=Fe([]),a=()=>{e.tabId&&(la.value[e.tabId]=e.data[n.value].id)},o=(c=n.value)=>{n.value=c{n.value=c>0?c-1:r.value.length-1,r.value[n.value].focus()},i=(c,d)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=d):c.key==="ArrowRight"?(c.preventDefault(),o()):c.key==="ArrowLeft"&&(c.preventDefault(),l()),e.tabId&&(la.value[e.tabId]=e.data[n.value].id)},u=()=>{if(e.tabId){const c=e.data.findIndex(({id:d})=>la.value[e.tabId]===d);if(c!==-1)return c}return e.active};return _e(()=>{n.value=u(),ce(()=>la.value[e.tabId],(c,d)=>{if(e.tabId&&c!==d){const p=e.data.findIndex(({id:f})=>f===c);p!==-1&&(n.value=p)}})}),()=>e.data.length?s("div",{class:"vp-code-tabs"},[s("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:c},d)=>{const p=d===n.value;return s("button",{type:"button",ref:f=>{f&&(r.value[d]=f)},class:["vp-code-tab-nav",{active:p}],role:"tab","aria-controls":`codetab-${e.id}-${d}`,"aria-selected":p,onClick:()=>{n.value=d,a()},onKeydown:f=>i(f,d)},t[`title${d}`]({value:c,isActive:p}))})),e.data.map(({id:c},d)=>{const p=d===n.value;return s("div",{class:["vp-code-tab",{active:p}],id:`codetab-${e.id}-${d}`,role:"tabpanel","aria-expanded":p},t[`tab${d}`]({value:c,isActive:p}))})]):null}});const Ru=({active:e=!1},{slots:t})=>{var n;return s("div",{class:["code-group-item",{active:e}],"aria-selected":e},(n=t.default)==null?void 0:n.call(t))};Ru.displayName="CodeGroupItem";const t6=B({name:"CodeGroup",slots:Object,setup(e,{slots:t}){const n=W(-1),r=Fe([]),a=(i=n.value)=>{n.value=i{n.value=i>0?i-1:r.value.length-1,r.value[n.value].focus()},l=(i,u)=>{i.key===" "||i.key==="Enter"?(i.preventDefault(),n.value=u):i.key==="ArrowRight"?(i.preventDefault(),a(u)):i.key==="ArrowLeft"&&(i.preventDefault(),o(u))};return()=>{var u;const i=(((u=t.default)==null?void 0:u.call(t))||[]).filter(c=>c.type.name==="CodeGroupItem").map(c=>(c.props===null&&(c.props={}),c));return i.length===0?null:(n.value<0||n.value>i.length-1?(n.value=i.findIndex(c=>"active"in c.props),n.value===-1&&(n.value=0)):i.forEach((c,d)=>{c.props.active=d===n.value}),s("div",{class:"code-group"},[s("div",{class:"code-group-nav"},i.map((c,d)=>{const p=d===n.value;return s("button",{type:"button",ref:f=>{f&&(r.value[d]=f)},class:["code-group-nav-tab",{active:p}],"aria-pressed":p,"aria-expanded":p,onClick:()=>{n.value=d},onKeydown:f=>l(f,d)},c.props.title)})),i]))}}});const n6='',r6='',a6='';const ao={useBabel:!1,jsLib:[],cssLib:[],codepenLayout:"left",codepenEditors:"101",babel:"https://unpkg.com/@babel/standalone/babel.min.js",vue:"https://unpkg.com/vue/dist/vue.global.prod.js",react:"https://unpkg.com/react/umd/react.production.min.js",reactDOM:"https://unpkg.com/react-dom/umd/react-dom.production.min.js"},cs={html:{types:["html","slim","haml","md","markdown","vue"],map:{html:"none",vue:"none",md:"markdown"}},js:{types:["js","javascript","coffee","coffeescript","ts","typescript","ls","livescript"],map:{js:"none",javascript:"none",coffee:"coffeescript",ls:"livescript",ts:"typescript"}},css:{types:["css","less","sass","scss","stylus","styl"],map:{css:"none",styl:"stylus"}}},o6=(e,t,n)=>{const r=document.createElement(e);return $r(t)&&Ke(t).forEach(a=>{if(a.indexOf("data"))r[a]=t[a];else{const o=a.replace("data","");r.dataset[o]=t[a]}}),n&&n.forEach(a=>{r.appendChild(a)}),r},xl=e=>({...ao,...e,jsLib:Array.from(new Set([...ao.jsLib||[],...e.jsLib||[]])),cssLib:Array.from(new Set([...ao.cssLib||[],...e.cssLib||[]]))}),Rn=(e,t)=>{if(e[t]!==void 0)return e[t];const n=new Promise(r=>{var o;const a=document.createElement("script");a.src=t,(o=document.querySelector("body"))==null||o.appendChild(a),a.onload=()=>{r()}});return e[t]=n,n},l6=(e,t)=>{if(t.css&&Array.from(e.childNodes).every(n=>n.nodeName!=="STYLE")){const n=o6("style",{innerHTML:t.css});e.appendChild(n)}},i6=(e,t,n)=>{const r=n.getScript();if(r&&Array.from(t.childNodes).every(a=>a.nodeName!=="SCRIPT")){const a=document.createElement("script");a.appendChild(document.createTextNode(`{const document=window.document.querySelector('#${e} .vp-code-demo-display').shadowRoot; -${r}}`)),t.appendChild(a)}},s6=e=>{const t=Ke(e),n={html:[],js:[],css:[],isLegal:!1};return["html","js","css"].forEach(r=>{const a=t.filter(o=>cs[r].types.includes(o));if(a.length){const o=a[0];n[r]=[e[o].replace(/^\n|\n$/g,""),cs[r].map[o]||o]}}),n.isLegal=(!n.html.length||n.html[1]==="none")&&(!n.js.length||n.js[1]==="none")&&(!n.css.length||n.css[1]==="none"),n},Su=e=>e.replace(/
    /g,"
    ").replace(/<((\S+)[^<]*?)\s+\/>/g,"<$1>"),Bu=e=>`
    -${Su(e)} -
    `,c6=e=>`${e.replace("export default ","const $reactApp = ").replace(/App\.__style__(\s*)=(\s*)`([\s\S]*)?`/,"")}; -ReactDOM.createRoot(document.getElementById("app")).render(React.createElement($reactApp))`,u6=e=>e.replace(/export\s+default\s*\{(\n*[\s\S]*)\n*\}\s*;?$/u,"Vue.createApp({$1}).mount('#app')").replace(/export\s+default\s*define(Async)?Component\s*\(\s*\{(\n*[\s\S]*)\n*\}\s*\)\s*;?$/u,"Vue.createApp({$1}).mount('#app')").trim(),Vu=e=>`(function(exports){var module={};module.exports=exports;${e};return module.exports.__esModule?module.exports.default:module.exports;})({})`,d6=(e,t)=>{const n=xl(t),r=e.js[0]||"";return{...n,html:Su(e.html[0]||""),js:r,css:e.css[0]||"",isLegal:e.isLegal,getScript:()=>{var a;return n.useBabel?((a=window.Babel.transform(r,{presets:["es2015"]}))==null?void 0:a.code)||"":r}}},p6=/
    1. This is footnote content ↩︎

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - + diff --git a/en/demo/page.html b/en/demo/page.html index d14f414c..dcb99764 100644 --- a/en/demo/page.html +++ b/en/demo/page.html @@ -31,10 +31,10 @@ } - +
    Skip to main content
    Page Config

    Page Config

    Ms.Hope...Less than 1 minuteGuidePage configGuide

    Content before more comment is regarded as page excerpt.

    Page Information

    You can set page information in Markdown's Frontmatter.

    • The author is Ms.Hope.
    • The writing date is January 1, 2020
    • Category is "Guide"
    • Tags are "Page Config" and "Guide"

    Page Content

    You are free to write your Markdown here.

    Assets

    • You can place images besides your Markdown files, but you should use relative links (i.e.: starting with ./) for them.

    • For images in .vuepress/public directory, please use absolute links (i.e.: starting with /) for them.

    The theme contains a custom badge:

    A dark blue badge text badge at the end of line. Badge text

    Page Structure

    This page should contain:

    You can customize them in theme options and page frontmatter.

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - + diff --git a/en/index.html b/en/index.html index 00d8fa51..e2f63e7c 100644 --- a/en/index.html +++ b/en/index.html @@ -31,7 +31,7 @@ } - +
    Skip to main content
    The name of your blog

    The name of your blog

    You can put your slogan here

    project name
    project detailed description
    link name
    link detailed description
    book name
    Detailed description of the book
    article name
    Detailed description of the article
    friend name
    Detailed description of friend
    custom item
    custom item
    Detailed description of this custom item
    Tomato

    Tomato

    @@ -79,6 +79,6 @@

    Heading 2

    Heading 3

    Here is the content.


    Ven2s...Less than 1 minuteDragon FruitFruitredbig
    2

    This is a blog home page demo.

    To use this layout, you should set both layout: BlogHome and home: true in the page front matter.

    For related configuration docs, please see blog homepageopen in new window.

    - + diff --git a/en/intro.html b/en/intro.html index cf08927d..e54480c8 100644 --- a/en/intro.html +++ b/en/intro.html @@ -31,10 +31,10 @@ } - + - + diff --git a/en/posts/apple/1.html b/en/posts/apple/1.html index cf2f2fc5..3af84b1d 100644 --- a/en/posts/apple/1.html +++ b/en/posts/apple/1.html @@ -31,10 +31,10 @@ } - + - + diff --git a/en/posts/apple/2.html b/en/posts/apple/2.html index 7ae79b5e..4a52b187 100644 --- a/en/posts/apple/2.html +++ b/en/posts/apple/2.html @@ -31,10 +31,10 @@ } - + - + diff --git a/en/posts/apple/3.html b/en/posts/apple/3.html index 4d7457b5..6c17caaa 100644 --- a/en/posts/apple/3.html +++ b/en/posts/apple/3.html @@ -31,10 +31,10 @@ } - + - + diff --git a/en/posts/apple/4.html b/en/posts/apple/4.html index a228688d..9cba2385 100644 --- a/en/posts/apple/4.html +++ b/en/posts/apple/4.html @@ -31,10 +31,10 @@ } - + - + diff --git a/en/posts/apple/index.html b/en/posts/apple/index.html index 72e535f5..d33f4a45 100644 --- a/en/posts/apple/index.html +++ b/en/posts/apple/index.html @@ -31,10 +31,10 @@ } - + - + diff --git a/en/posts/banana/1.html b/en/posts/banana/1.html index bcbd2409..b576f64a 100644 --- a/en/posts/banana/1.html +++ b/en/posts/banana/1.html @@ -5,7 +5,7 @@ - Banana 1 | SpringVen2s + Banana 1 | SpringVen2s + + + + + +
    跳至主要內容

    苹果 1

    Ven2s...小於 1 分鐘苹果

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    + + + diff --git a/note/1993.html b/note/1993.html new file mode 100644 index 00000000..c8a66345 --- /dev/null +++ b/note/1993.html @@ -0,0 +1,40 @@ + + + + + + + + 一九九三 | 風至萬始蘇 + + + + + + + + + + diff --git a/note/index.html b/note/index.html new file mode 100644 index 00000000..83c2ac71 --- /dev/null +++ b/note/index.html @@ -0,0 +1,40 @@ + + + + + + + + Note | 風至萬始蘇 + + + + + + + + + + diff --git a/posts/Server/1.html b/posts/Server/1.html deleted file mode 100644 index 1088552f..00000000 --- a/posts/Server/1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 苹果 1 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    苹果 1

    Ven2s...小於 1 分鐘苹果

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/2.html b/posts/Server/2.html deleted file mode 100644 index a016435c..00000000 --- a/posts/Server/2.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 苹果 2 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    苹果 2

    Ven2s...小於 1 分鐘苹果

    苹果 2

    一个被星标了的苹果文章。

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/ChatGPT-Porxy.html b/posts/Server/ChatGPT-Porxy.html deleted file mode 100644 index 87718b1a..00000000 --- a/posts/Server/ChatGPT-Porxy.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - ChatGPT-Porxy | 風至萬始蘇 - - - - - - -
    跳至主要內容

    ChatGPT-Porxy

    Ven2s...大约 2 分鐘ChatGPT

    Build ChatGPT Reverse Proxy

    • ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 open in new window 来解决代理问题。

    搭建步骤

    一、安装 DockerDocker-compose

    • 安装 Docker
    #更新、安装必备软件
    -
    -apt-get update && apt-get install -y wget nano
    -
    -#安装docker:
    -
    -curl -sSL https://get.docker.com/ | sh
    -
    -
    -#开机自动启动
    -
    -systemctl start docker
    -
    -systemctl enable docker
    -
    • 安装 Docker-compose
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    -sudo chmod +x /usr/local/bin/docker-compose
    -

    二、安装 go-chatgpt-api open in new window

    • 创建目录
    mkdir -p /data/docker_data/go-chatgpt-api
    -cd /data/docker_data/go-chatgpt-api
    -
    • 创建 docker-compose.yml 文件
    nano docker-compose.yml
    -
    • 在文件中填入以下内容,然后 Ctrl+X 保存,按 Y 退出
    version: "3"
    -services:
    -  go-chatgpt-api:
    -    container_name: go-chatgpt-api
    -    image: linweiyuan/go-chatgpt-api
    -    ports:
    -      - 8080:8080  # 容器端口映射到宿主机8080端口;宿主机监听端口可按需改为其它端口
    -    environment:
    -      - GIN_MODE=release
    -      - CHATGPT_PROXY_SERVER=http://chatgpt-proxy-server:9515
    -      #- NETWORK_PROXY_SERVER=http://host:port     # NETWORK_PROXY_SERVER:科学上网代理地址,例如:http://10.0.5.10:7890
    -      #- NETWORK_PROXY_SERVER=socks5://host:port   # NETWORK_PROXY_SERVER:科学上网代理地址
    -    depends_on:
    -      - chatgpt-proxy-server
    -    restart: unless-stopped
    -
    -  chatgpt-proxy-server:
    -    container_name: chatgpt-proxy-server
    -    image: linweiyuan/chatgpt-proxy-server
    -    restart: unless-stopped
    -
    • 创建完成后,运行
    docker-compose up -d
    -
    • 检查运行的容器;确保容器状态为UP
    docker ps
    -
    • 检测容器映射到宿主机的监听端口是否监听
    ss -tnlp|grep 8080
    -

    三、使用自建反代

    # 反向代理,可选
    -    API_REVERSE_PROXY: https://example.com/conversation
    -
    • 现在我们访问chatgpt-web,查看是否可以正常使用,注意确保 chatgpt-proxy-server 运行正常, go-chatgpt-api 需要初始化启动需要耐心等待
    # 查看容器日志是否运行正常
    -docker logs -f chatgpt-proxy-server
    -docker logs -f go-chatgpt-api
    -

    完工

    1
    😏

    本教程来源:open in new window

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/buildSUB.html b/posts/Server/buildSUB.html deleted file mode 100644 index 353c6604..00000000 --- a/posts/Server/buildSUB.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - 搭建属于自己的订阅转换链接 | 風至萬始蘇 - - - - - - -
    跳至主要內容
    搭建属于自己的订阅转换链接

    搭建属于自己的订阅转换链接

    Ven2s...大约 5 分鐘Server

    Sub-Web-Modify前端搭建open in new window

    本项目open in new window基于CareyWang/sub-webopen in new window,重制CSS样式,解决大部分布局细节问题,增加“暗黑模式”,默认自动切换亮/暗模式(点击“太阳/月亮”图标可手动切换),增加“高级功能”点击显示/隐藏,添加短链接选择/自定义功能,增加近百条远程配置,新增sub-web聚合APIopen in new window,增加上传自定义远程配置/JS进阶排序节点/JS进阶筛选节点等功能!

    更新系统并安装 Node 与 Yarn

    依次运行下面四行代码,若是 CentOS 系统,请自行替换下面前两行命令中的 aptyum

    apt update -y
    -apt install -y curl wget sudo nodejs git
    -apt install npm
    -npm install -g yarn
    -

    命令执行完毕以后,请运行下面的代码查询 Node 与 Yarn 是否安装成功,若是成功会返回版本号。

    node -v
    -yarn --version
    -

    下载并安装 sub-web-modify

    拉取 sub-web-modify 程序,并进入 sub-web-modify 文件夹

    git clone https://github.com/youshandefeiyang/sub-web-modify.git
    -cd sub-web-modify
    -

    在项目目录中安装构建依赖项,构建的过程稍微有点长

    yarn install
    -

    使用 webpack 运行 Web 客户端以进行本地开发。

    yarn serve
    -

    出现下图则表示前端调试模式启动成功

    yarn-success
    yarn-success

    这时,我们浏览器访问 http://服务器ip:8080/open in new window 应该可以进行前端 sub-web-modify 的预览了

    记住8082端口的防火墙和安全组要开放

    修改默认后端地址并增加远程规则

    找到 VPS /root/sub-web-modify/src/views/Subconverter.vue 文件用编辑器打开

    找到 backendOptions:将你解析好的后端地址输入进去。域名为你刚才准备的后端域名,要将http改成https,并且增加/sub?的后缀。(这样选项下面就会出现自己的后端地址)

    如果不想用后端作者默认提供的转换那可以把 const defaultBackend = 也改成你自己的域名记得加上 ""。

    找到 remoteConfig: [ 后回车将喜欢的规则复制进去即可。

    配置完毕后打包网站

    配置完毕以后,程序会自动更新,再次刷新前端网页,会出现刚才添加的相关规则。

    经过上面的修改默认后端地址和原程配置的规则就修改好了。

    至此,我们的前端调试完毕,我们现在需要打包,生成一个发布目录并将他发布了。

    首先停止调试程序,CTRL+C ,退出当前调试,然后执行下面的命令进行打包:

    yarn build
    -

    执行以下打包命令,在 /root/sub-web-modify 下面会生成一个 dist 目录,这个目录即为网页的发布目录。

    将这个目录的里面的文件复制到你站点的根目录即可。

    一键搭建前端

    cd /root && git clone https://github.com/youshandefeiyang/sub-web-modify.git && chmod -R 755 sub-web-modify && cd sub-web-modify && yarn install && yarn build
    -

    发布前端

    没有安装宝塔的去宝塔官网看教程安装.

    在宝塔面板中点击增加站点分别将前端站点增加上去,并配置好ssl证书。

    将 /root/sub-web/dist文件夹内的所有文件复制到前端站点的根目录下即可。

    访问该网站,前端就部署好了。

    SubConverter后端搭建open in new window

    新建后端站点并进行反向代理

    在宝塔面板中新建后端的站点,同样配置好ssl并将设置站点的反向代理到25500。

    点击新建好的后端网站的网站名在弹出来的消息盒子中点击反向代理添加发现代理。

    反向代理配置方法方法如图:

    反代
    反代

    设置完毕后我们开始安装后端

    搭建后端程序

    这里我们可以用两种方法搭建后端程序,第一种是用二进制文件搭建,第二种为使用Docker搭建。我个人比较推荐Docker配置简单一行命令即可搞定

    方法一 二进制文件搭建

    下载并解压 subconverter 二进制文件
    cd /root
    -wget https://github.com/tindy2013/subconverter/releases/download/v0.7.2/subconverter_linux64.tar.gz
    -tar -zxvf subconverter_linux64.tar.gz
    -

    完成以后,在 /root 文件夹下会多出一个 subconverter 的文件夹,这个就是我们的后端程序

    修改配置文件参数

    现在我们需要修改后端配置文件中的一些参数

    找到VPS文件 /root/subconverter/pref.ini ,找到如下参数进行修改

    api_access_token=123123dfsdsdfsdfsdf            #随意设置自己知道就行
    -managed_config_prefix=https://sub.yourdomin.com  #设置成我们刚刚解析的后端域名
    -listen=127.0.0.1                                #这里改成 127.0.0.1 进行反代
    -
    创建服务进程并启动

    接下来我们需要创建一个服务,让VPS每次重启或是开机自动运行后端程序

    找到VPS目录 /etc/systemd/system,创建一个名为 sub.service 的文件

    打开文件,贴入以下内容,保存。

    [Unit]
    -Description=A API For Subscription Convert
    -After=network.target
    - 
    -[Service]
    -Type=simple
    -ExecStart=/root/subconverter/subconverter
    -WorkingDirectory=/root/subconverter
    -Restart=always
    -RestartSec=10
    - 
    -[Install]
    -WantedBy=multi-user.target
    -
    检查运行状态以及设置开机自启
    systemctl daemon-reload
    -systemctl start sub
    -systemctl enable sub
    -systemctl status sub
    -

    到这里,后端也就搭建完毕了,我们现在可以在浏览器里面访问我们的后端了,访问后端域名后端搭建成功!

    方法二 Docker容器搭建

    如果服务器安装了Docker可以使用命令:

    docker run -d --restart=always -p 25500:25500 tindy2013/subconverter:latest
    -

    然后再用下面的命令确认一下状态

    curl http://localhost:25500/version
    -curl http://localhost:25500/version
    -

    如果输出当前 subconverter 容器版本几位搭建成功。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/chatgpt.html b/posts/Server/chatgpt.html deleted file mode 100644 index ff7ea127..00000000 --- a/posts/Server/chatgpt.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - Wonderful ChatGPT | 風至萬始蘇 - - - - - - -
    跳至主要內容

    Wonderful ChatGPT

    Ven2s...大约 2 分鐘ChatGPT

    3 Steps Build Your Own ChatGPT Web

    • ChatGPTopen in new window(全名:Chat Generative Pre-trained Transformer),美国OpenAI研发的聊天机器人程序,于2022年11月30日发布。

    • ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。

    ChatGPT-Webopen in new window

    • 支持双模型,提供了两种非官方 ChatGPT API 方法

    介绍

    方式免费?可靠性质量
    ChatGPTAPI(gpt-3.5-turbo-0301)可靠相对较笨
    ChatGPTUnofficialProxyAPI(网页 accessToken)相对不可靠聪明
    • 对比:
    1. ChatGPTAPI(gpt-3.5-turbo-0301)open in new window 使用 gpt-3.5-turbo-0301 通过官方 OpenAI 补全 API 模拟 ChatGPT (最稳健的方法,但它不是免费的,并且没有使用针对聊天进行微调的模型)
    2. ChatGPTUnofficialProxyAPIopen in new window 使用非官方代理服务器访问 ChatGPT 的后端 API,绕过 Cloudflare(使用真实的的 ChatGPT,非常轻量级,但依赖于第三方服务器,并且有速率限制)

    感谢原作者Chanzhaoyu的辛苦付出

    搭建步骤

    一、安装 DockerDocker-compose

    • 安装 Docker
    #更新、安装必备软件
    -
    -apt-get update && apt-get install -y wget nano
    -
    -#安装docker:
    -
    -curl -sSL https://get.docker.com/ | sh
    -
    -
    -#开机自动启动
    -
    -systemctl start docker
    -
    -systemctl enable docker
    -
    • 安装 Docker-compose
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    -sudo chmod +x /usr/local/bin/docker-compose
    -

    二、安装 ChatGPT-Web

    • 创建目录
    mkdir -p /data/docker_data/chatgpt
    -cd /data/docker_data/chatgpt
    -
    • 创建 docker-compose.yml 文件
    nano docker-compose.yml
    -
    • 在文件中填入以下内容,然后 Ctrl+X 保存,按 Y 退出
    version: '3'
    -
    -services:
    -  app:
    -    image: luvsia/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
    -    ports:
    -      - 3002:3002
    -    environment:
    -      # 二选一
    -      OPENAI_API_KEY: 
    -      # 二选一
    -      OPENAI_ACCESS_TOKEN: 
    -      # API接口地址,可选,设置 OPENAI_API_KEY 时可用
    -      OPENAI_API_BASE_URL:
    -      # API模型,可选,设置 OPENAI_API_KEY 时可用
    -      OPENAI_API_MODEL:
    -      # 反向代理,可选
    -      API_REVERSE_PROXY:
    -      # 访问权限密钥,可选
    -      AUTH_SECRET_KEY:
    -      # 超时,单位毫秒,可选
    -      TIMEOUT_MS: 100000
    -      # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
    -      SOCKS_PROXY_HOST:
    -      # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
    -      SOCKS_PROXY_PORT:
    -
    -
    • 创建完成后,运行
    docker-compose up -d
    -
    • 然后就可以通过 IP:3002 来访问 ChatGPT

    三、反代 ChatGPT 并使用打字机效果

    • 宝塔面板中新建网站chat.example.com并注册证书、开启HTTPS
    ChatGPT
    ChatGPT
    • 反向代理
    ChatGPT
    ChatGPT
    • 修改反向代理配置文件,实现打字机效果
    #设置反向代理参数以支持流式输出
    -proxy_buffering off;
    -chunked_transfer_encoding on;
    -tcp_nopush on;
    -tcp_nodelay on;
    -keepalive_timeout 65;
    -
    ChatGPT
    ChatGPT

    大功告成,Enjoy

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/github-actions-deploy.html b/posts/Server/github-actions-deploy.html deleted file mode 100644 index cf3d0e8e..00000000 --- a/posts/Server/github-actions-deploy.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - 利用GitHub Actions自动部署前端到服务器 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    利用GitHub Actions自动部署前端到服务器

    Ven2s...大约 6 分鐘ServerFrontEnd

    Automatically deploying the Front End to the server using GitHub Actions

    GitHub Actions介绍及原理

    • 接触 GitHub Actions 也有一段时间了,目前此blog就是利用 GitHub Action 自动部署到GitHub托管的。今天把此次前端页面成功部署到服务器端的操作方法详细记录下来,顺便按自己理解写些心得。抽空再码字完善(下班时间开工😭)。

    • GitHub Actions 官方文档open in new window:在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。

    • 通过文档可以看出 GitHub Action 其强大的代码管理、运行部署、测试推送等一体化自动发布部署功能,省去了大量的重复性工作。由于通过ssh客户端连接到服务器,直接进行前端部署,需要安装各种各样的依赖,很大程度上降低了服务器运行效率,且不易对代码进行修正。

    • 本教程是在《用Nginx Proxy Manager部署静态网页》基础上延伸出的思路,省去了安装node环境和各种依赖的步骤,直接在 GitHub Action 中部署前端。每次在本地对后端文件进行修正后,直接将前端发布到服务器。起到一劳永逸的效果。

    GitHub Action 成功示图
    GitHub Action成功界面
    GitHub Action成功界面
    name: luvsia-hugo-blog-autodeploy # 工作流程名称,自行命名
    -
    -on:
    -  push: # 什么时候请求触发
    -    branches:
    -      - main  # 作用分支,这里是main,也可是master
    -  pull_request:
    -
    -jobs: # 将工作流文件中运行的所有任务分组在一起
    -  deploy:
    -    runs-on: ubuntu-latest
    -    concurrency:
    -      group: ${{ github.workflow }}-${{ github.ref }}
    -    steps:
    -      - uses: actions/checkout@v2
    -        with:               # 如果你安装主题时用的是git submodule add
    -          submodules: true  # 那么这三行不必注释掉,这一行填写 true
    -          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod
    -
    -      - name: Setup Hugo
    -        uses: peaceiris/actions-hugo@v2
    -        with:
    -          hugo-version: 'latest'  # 获取最新版本的hugo
    -          extended: true          # 如果你使用的不是extended版本的hugo,将true改为false
    -
    -      - name: Build
    -        run: hugo   # 使用hugo构建静态网页
    -
    -      - name: Deploy to github
    -        uses: peaceiris/actions-gh-pages@v3
    -        if: ${{ github.ref == 'refs/heads/main' }}  # 注意填写main或者master
    -        with:
    -          personal_token: ${{ secrets.PERSONAL_TOKEN }} # 如果secret取了其他名称,将PERSONAL_TOKEN替换掉
    -          external_repository: ventusoon/LuvSia # 填写远程 public 仓库 
    -          publish_dir: ./public
    -          cname: luvsia.com        # 填写自定义域名
    -
    • 按照示例分析,可以得出简单的 GitHub Actions 步骤图如下

    Action

    1️⃣作用条件

    时间节点

    分支

    2️⃣工作任务

    运行环境

    步骤一

    步骤二

    步骤 N

    直接发布到服务器/本地/托管页面

    实战演练

    • 因为要部署到服务器端,所以要了解连接到服务器的方式,这里选择ssh连接,网上有很多教程也用了sftp连接,都可以。

    • GitHub Actions 部署文件通常以 xxx.yml 命名,路径为项目根目录下 /.github/workflows/xxx.yml

    • GitHub 页面下编辑 xxx.yml ,可以发现右侧的应用商城中有很多特色Actions,因为是ssh连接,在这里选择评分较高的 ssh-deploy 应用,并使用最新版。

    ssh-deploy 应用
    ssh-deploy
    ssh-deploy
    • open in new window项目中的 README 中,可以看到其主要配置名称及用途如下。
    配置名称用途示例
    SSH_PRIVATE_KEYSSH密钥密钥应使用PEM格式生成
    REMOTE_HOST远程主机10.10.10.10
    REMOTE_USER用户root
    REMOTE_PORT端口默认22
    SOURCE源,需要部署的内容/dist
    TARGET对象,要部署的路径/data/docker_data/npm/data/sub.ven2s.cn/
    ARGS传递给rsync(同步时)的参数-avz --delete
    SSH_CMD_ARGS一组ssh参数,它们必须以-o为前缀,用逗号分隔-o SomeArgument=no,-o SomeOtherArgument=5
    EXCLUDE要排除的路径,用逗号分隔/dist/, /node_modules/
    SCRIPT_BEFORE在同步之前在主机上运行的脚本mkdir -p /data/docker_data/npm/data/sub.ven2s.cn
    SCRIPT_AFTER在同步之后在主机上运行的脚本reboot
    • 做好以上前期工作,现在可以开始操作了

    在服务器端配置密钥

    • root 目录下,输入
    ssh-keygen -m PEM -t rsa -b 4096
    -
    -# 生成密钥文件,连续按下两次回车。
    -# 请注意:您不应该为您生成的私钥设置密码(将其保留为空)。因为 rsync ssh(用于部署)不支持将私钥密码作为命令行参数输入。
    -
    • 此时, /root/.ssh/ 下生成了私钥文件 id_dsa 、公钥文件id_dsa.pub ,根据公钥文件生成authorized_keys ,并给以上三个文件分别设置权限。
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    -
    chmod 600 ~/.ssh/id_rsa
    -
    chmod 600 ~/.ssh/id_rsa.pub
    -
    chmod 600 ~/.ssh/authorized_keys
    -
    • 此时,客观上服务器端的工作就完成了,如果连接中遇到各种错误提示,请自行 goggle ,这里就不赘述了。

    项目中设置仓库密钥

    • 说来真是坑,最开始把仓库密钥错填到代码空间机密中,一直连接不上,我还以为是服务器的问题,前天甚至弄恍惚了,不小心 rm -rf / 了......
    仓库机密在GitHub项目中设置的位置
    • 在服务器中 cat 密钥,将所有内容复制到上图的 SSH_PRIVATE_KEY 中,并填入服务器IP到 REMOTE_HOST ,填入 rootREMOTE_USER。(或者直接在yml文件中填入 "root"
    cat ~/.ssh/id_rsa
    -

    或者

    REMOTE_USER: "root"
    -

    发布部署文件到远端

    • 我把自动发布nginx-proxy-manager静态页面的文件po在下面,请根据自身的运行环境和依赖进行修改配置即可。
    # 当前工作流的名称
    -name: sub-web-deploy
    -on:
    -  push:
    -    branches:
    -      - master
    -
    -jobs: # 构建的任务,一个工作流有多个构建任务,
    -  build-and-deploy:
    -    runs-on: ubuntu-latest # 在什么服务器上面执行这些任务,这里使用最新版本的ubuntu
    -    
    -    steps: # 构建任务的步骤,一个任务可分为多个步骤
    -      # 切换分支
    -      - name: Checkout
    -        uses: actions/checkout@v4
    -      # 步骤2 给当前服务器安装node
    -      - name: use node
    -        uses: actions/setup-node@v3.8.1
    -        with:
    -          node-version: 18
    -          cache: "yarn"
    -      # 步骤3 下载项目依赖    
    -      - name: install
    -        run: yarn install
    -      # 步骤4 打包node项目
    -      - name: build
    -        run: yarn build
    -      # 步骤5 部署项目到服务器
    -      - name: ssh deploy
    -        uses: easingthemes/ssh-deploy@v4.1.10
    -        with:
    -      # Private key part of an SSH key pair
    -          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
    -      # Remote host
    -          REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
    -      # Remote user
    -          REMOTE_USER: ${{ secrets.REMOTE_USER }}
    -      # Source directory, path relative to `$GITHUB_WORKSPACE` root, eg: `dist/`
    -          SOURCE: "/dist/"
    -      # Script to run on host machine before rsync
    -          SCRIPT_BEFORE: "mkdir -p /data/docker_data/npm/data/sub.ven2s.cn"
    -      # Target directory
    -          TARGET: "/data/docker_data/npm/data/sub.ven2s.cn/"
    -

    如果喜欢请分享此页面,如有疑问请按F5,再进行评论。哈哈

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/hello-world.html b/posts/Server/hello-world.html deleted file mode 100644 index 3f005f6c..00000000 --- a/posts/Server/hello-world.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - Hello World | 風至萬始蘇 - - - - - - -
    跳至主要內容

    Hello World

    Ven2s...大约 15 分鐘ServerBlog

    Build this site Hugo Blog 实战

    + 2022.02.11 add 侧边栏 鼠标指针 样式
    -
    + 2022.01.26 Update autodeploy.yml 实现 Hugo Blog 源码github  gitee  gitlab三端同步 (可以没有 | 就很帅)
    -
    + 2022.01.26 Done 😎
    -
    + 2022.01.26 <争取一口气把剩下的内容填完> 并没有 | Markdown的排版比码字更费事 💦
    -
    + 2022.01.24 简简单单的两个美化项目又变成了好几个      😥 😥 😥
    -
    + 2022.01.23 前言 <写了一些废话>
    -
    + 2022.01.20 萌生写下这篇文章的想法 并把大纲po在这里
    -

    闲言碎语

    从信用卡聊到陈年往事

    • 前段时间,在老婆的支持下(“盗”刷老婆信用卡,orz),买了一个十年的域名,起初拿来也就无非是给服务器套个域名,加个SSL,反代一些需要用到的web工具。想着这个域名好歹也是千挑万选出来的(Sia刚好与老婆名字谐音,所以自然而然地在前面加个Luv不过分吧,2333),现在的朋友圈基本上也没咋发过东西,全都是一些工作上的琐事。不如开个博客,记录一下生活(主要是用着这么有内涵的域名,让老婆感受一下应有的尊重,还能升华彼此的感情,哈哈哈,扯远了),还可以把自己“搞机爱好”(折腾癖好)的过程记录下,把READMEopen in new window中所说的Ctrl+CCtrl+V变为自己的知识,而不是只会复制粘贴,成了一个工具人。让这项爱好不至于太肤浅,还能真正掌握一下基础的编程知识。

    • 这篇博客,主要是记录下整个Blog的搭建基本思路与部署过程,Blog完成Hello World之后,后续一直在跟进基础美化、插件适配的工作,所以这篇文章也就搁置如今。“简简单单”的~两个美化项目~,碍于能力有限,三天时间才完成80%,真tm惨...

    • 在刚接触到Blog搭建还是在近6年以前,也是搞了个域名,搭了服务器,并把博客部署在服务器上,用的是WordPress。在当时,WordPress就已经是一个成熟的网站建设工具。WordPress功能是挺强大,主题、插件多,用户量基数也大,很容易就可以找到一些自己喜欢的“小物件”放到自己的博客上。奈何当时对代码之类的东西一窍不通,完全是通过可视化操作去完成的,也就不知道Go语言与PHP语言的区别,当然PHP语言在当时依然是主流。那会儿不仅要把精力放在服务器的维护上,还要把网站的Blog给弄好,还要用到Nginx、Mysql、phpmyadmin一大堆工具,还要在数据库中修改才能满足一些自己的需求,可以说是十分的繁琐。后来因为原服务器废弃,数据也没有转移,也没有本地保存,折腾的东西也就随之而去了...

    • 很久没有接触这方面的知识,现在就相当于回炉重造。了解了一下目前主流的Blog建站工具之后,Hexo和Hugo进入我的眼帘。从搜索引擎的数据上来看,Hexo的内容量与Hugo相比,完全不在一个数量级...
      Hexo
      Hugo

    • 传统在服务器部署,虽然本地也可以操作,修改内容,但大部分人都是仅仅只在服务器上完成,省去了本地修改、远程部署的步骤。导致服务器一崩,所有数据都随风而去...比如我自己在几年前也是如此。现如今,静态网站成为主流,Go语言也让国际大厂争先使用,像Google,Dropbox,SoundCloud,Twitter,PayPal等公司都用 Go 语言构建了他们的后端系统。

    如何选择Hexo与Hugo?

    Hugo中文文档:

    • Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。当前的静态网站生成工具对环境依赖过多,性能较差,于是使用 Go 语言写了一个静态网站生成器 Hugo。不仅解决了环境依赖、性能较差的问题,还有使用简单、部署方便等诸多优点,通过 LiveReload 实时刷新,极大的优化文章的写作体验。Hugo 能做什么?通过 Hugo 你可以快速搭建你的静态网站,比如博客系统、文档介绍、公司主页、产品介绍等等。

    Hexo中文文档:

    • 什么是Hexo ? Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Heroku上,是搭建博客的首选框架。

    最终选择

    • 可以看出,Hexo与Hugo都是静态网站生成器的首选,而且都可以用上Github-Pagesopen in new window。在网上筛选了使用者反馈信息之后,最终我还是选择了用Go语言编写的Hugo+Github-Pages+CDN来搭建此Blog。

    准备工作

    安装环境和工具

    环境工具
    WindowsHugoGitVS codegithub-pages
    • VS Codeopen in new window:巨硬出品的一款开发集成工具。功能之强大让我感觉,我之前的传统敲代码、找依赖的方式太2了。

    • Gitopen in new window:一个版本控制系统,连接 Github 的钥匙。

    • Github-pagesopen in new window:Github出品,必属精品!等等,这句话怎么这么耳熟?又想到github也被巨硬收购了...细思极恐...

    • Hugoopen in new window:今天的主角,本地新建一个名为"Hugo"的目录、一个名为"Sites"的用于存放所有博客站点的目录,Hugo 目录下应有三个文件;同时,下载好 Git 程序。

    开始实战

    本地搭建

    将 hugo 添加到环境变量

    • WIN+R 输入 sysdm.cpl高级===>> 环境变量 ===>> Path ===>> 添加刚才新建的 Hugo 中的 bin 目录, bin 中放进刚刚下载的 hugo.exe

    Hugo

    bin

    hugo.exe

    Site

    example

    Git Bash

    • 进入 Site 文件夹,鼠标右键 Git Bash 或打开 Git Bashcd 到这个目录,创建 hugo 博客所在目录
    hugo new site <example>
    -

    文件夹内容目录

    example

    archetypes # 存放模板

    default.mdopen in new window # 模板

    config.toml # 基础配置文件

    content # 存放 page 与 post,所有新博文都要存放在 content 中

    data # 存放数据模板

    layouts # 存放布局模板文件,如果想要调整主题中的页面布局,可以在 layouts 中放入同名文件,hugo 将优先读取根目录中的 layouts 文件,避免直接修改主题文件,导致不必要的错误

    static # 存放静态资源,比如自定义 css、图片图标等

    themes # 主题文件夹

    安装 VS code 插件

    • 打开 VS Code 软件。点击Extensions,安装所需插件。推荐几个必备和好用的插件。

      • gpm 用来管理 Github 上的文件。 必备

      • Setting Sync 同步 Github 与本地文件。 必备

      • Markdown All in One 使用 Markdown 写作的利器。必备

      • Chinese Language Pack for Visual Studio Code VS Code 的汉化插件。 推荐

      • Auto Rename Tag 如果涉及修改代码的时候,非常好用。推荐

      • Material Icon Theme 一套个性的图标主题。 推荐

    生成 git 本地仓库

    • 进入新生成的博客文件夹并初始化一个空的 git 本地仓库,之后博客文件夹里会出现一个隐藏的.git 文件夹
    cd <example>
    -
    git init
    -

    生成 SSH 密钥

    仅首次,后面可以记录下,以备使用

    • SSH key 一般存储在系统盘 C: \Users<用户名>.ssh 目录中,git 全局设置存在 C: \Users<用户名>.gitconfig 文件中。
    ssh-keygen -t rsa -C "example@email.com" #最好是github账号邮箱。
    -
    • 之后会跳出一堆提示,在系统提示输入 passphrase 时直接回车不添加。生成的密钥对会储存在 C: \Users<用户名>.ssh 中,公钥存放在 id_rsa.pub 里,私钥存放在 id_rsa 里,妥善保管密钥对,公钥稍后需要使用,私钥非极特殊情况勿上传!

    • 在博客根目录进行 git 的配置。最好是github账号、邮箱。本地提交 commit 时 github 上可以查看提交者信息。

    git config user.name "examplename"
    -
    git config user.email "example@email.com"
    -

    安装主题

    • 找到喜欢的主题open in new window,在themes目录下 git clone 或者 git submodule add ,模块化安装能够方便升级主题(根目录上传到GitHub后,themes文件夹会链接到主题仓库界面,后面要用到的action要想跑起来一定要记得加上submodule的配置)。

    • 以本博客主题为例,用模块方式安装, themes/github-style 为安装到目标文件夹

    git submodule add git@github.com:MeiK2333/github-style.git themes/github-style
    -
    • 打开新的 config.toml 文件,修改 theme = “example-theme” 为你安装的主题名,主题名要与 themes 中的主题文件夹名称一致。

    本地搭建预览

    • 至此,本地博客就搭建好了。在博客根目录下 git bash,使用 hugo server 来看下主题的效果!(hugo server -D 的话草稿也会显示,注意是大写 D)跳出一大堆提示后,在任意浏览器打开 http://localhost:1313open in new window 就能实时查看博客效果与调整。如果的博客设置有误,页面会无法查看,请先排除错误后再进行尝试。不需要查看后 Ctrl+C 退出即可。

    根目录同步私有仓库

    源码& Public 分开存放

    • 建两个 repositories ,一个存放根目录文件,设置为私密,另一个用来存放 public 中的内容,设置为公开

    上传公钥

    这里选择直接上传到该 github 用户的 setting 里

    • 点击 github 页面右上角头像右侧下拉按钮,进入 Settings,找到左侧页面 SSH and GPG keys ,点击 New SSH key ,取一个便于识别的名称,下方填入之前生成的id_rsa.pub中的内容(以"ssh-rsa"开头,以邮箱结尾)。

    远程连接测试

    ssh -T git@github.com
    -

    显示 successfully 字样即可

    Hi <github-username>! You've successfully authenticated, but GitHub does not provide shell access.
    -

    生成 Token,用于连接两个仓库

    • 右上角 Settings 里找到 Developer settings ,再点 Personal access tokensGenerate new token 生成新的 token ,有效期可选永久生效。

    • Select scopes 里勾选 repo 全部内容与 workflow。最后点击绿色按钮生成。

    • 页面刷新后这个 Token 将不再显示,所以在导入前不要弄丢!

    Push 本地到私有仓库

    • 打开刚刚建立的私有仓库,复制SSH克隆代码,在 VS code 中的项目管理中点 + 克隆,粘贴,回车即可克隆。前提:本地的公钥与 github 设置里的公钥信息要一致。至此远程与本地即可连接成功。

    • 将本地的博客根目录内容全部粘贴到连接好的私有仓库,开始 push。git 默认的分支应该是(master),因为现在 github 的默认分支从 master 换成了 main(详见 GitHub 将替换掉 master 等术语 ),我们先切换分支到main:

    git checkout -b main
    -
    • push 命令三件套
    git add . # 添加目录下全部内容
    -git commit -m "new job" # 提交说明,出问题了可以回退到之前的commit
    -git push -u origin main # 将本地内容推送到远程
    -
    • 有时候新提交的本地有删除的内容,但是远端并没有删除,将 -m 改为 -am 即可

    • 空文件夹不会被 push 上去,不管;如果有其他文件、文件夹不想 push 上去,在根目录下新建 .gitignore 文件,里面存放不想 push 的内容。

      idea/            //忽略idea目录下的所有文件
    -  /idea/do.txt     //忽略某个具体文件
    -  !test.txt        //不忽略 test.txt 文件
    -  /TODO            //仅仅忽略项目根目录下的 TODO 文件,不包括 test/TODO
    -  *.zip            //忽略所有.zip结尾的文件
    -  doc/*.txt        //忽略 doc/notes.txt,但不包括 doc/server/arch.txt
    -  git rm -r --cached idea/do.txt    //-r为递归
    -

    私有仓库生成 Secrets

    • 这一步为自动部署到 public 做准备,进入刚刚建好的 repository,点进它的 Settings 中,找到 Secrets,点击 New repository secret,名称为 PERSONAL_TOKEN ,内容为之前备份下来的 Token

    自动部署到公开仓库

    Github Action

    • 进入博客根目录仓库,点上方的 Actions,set up a workflow yourself,之后你会发现 github 会在根目录下新建/.github/workflows/xxx.yml 文件。我的文件名 autodeploy.yml
    name: luvsia-hugo-blog-autodeploy # 自行命名
    -
    -on:
    -  push:
    -    branches:
    -      - main  # 博客根目录的默认分支,这里是main,也可是master
    -  pull_request:
    -
    -jobs:
    -  deploy:
    -    runs-on: ubuntu-latest
    -    concurrency:
    -      group: ${{ github.workflow }}-${{ github.ref }}
    -    steps:
    -      - uses: actions/checkout@v2
    -        with:               # 如果你安装主题时用的是git submodule add
    -          submodules: true  # 那么这三行不必注释掉,这一行填写 true
    -          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod
    -
    -      - name: Setup Hugo
    -        uses: peaceiris/actions-hugo@v2
    -        with:
    -          hugo-version: 'latest'  # 获取最新版本的hugo
    -          extended: true          # 如果你使用的不是extended版本的hugo,将true改为false
    -
    -      - name: Build
    -        run: hugo   # 使用hugo构建静态网页
    -
    -      - name: Deploy to github
    -        uses: peaceiris/actions-gh-pages@v3
    -        if: ${{ github.ref == 'refs/heads/main' }}  # 注意填写main或者master
    -        with:
    -          personal_token: ${{ secrets.PERSONAL_TOKEN }} # 如果secret取了其他名称,将PERSONAL_TOKEN替换掉
    -          external_repository: ventusoon/LuvSia # 填写远程 public 仓库 
    -          publish_dir: ./public
    -          cname: luvsia.com        # 填写自定义域名
    -
    • 格式参考GitHub Pages actionopen in new window

    • 提交 commit ,保存, Action 变成绿色即成功!

    • 这时公开仓库已经自动建了一个名为 gh-pages 的分支,里面出现的东西就是源码通过 Hugo 命令生成的静态网页文件,此时打开博客域名就可以看到博客内容。

    • 根目录下的 config 文件中 base url 更换为自定义域名。

    CDN加速

    A @ 185.199.108.153
    -A @ 185.199.109.153
    -A @ 185.199.110.153
    -A @ 185.199.111.153
    -CNAME @ 指向公开仓库的github域名
    -CNAME WWW 指向公开仓库的github域名
    -
    • 进入公开仓库 SettingsPages 页面添加自定义域名,等待 DNS 检验成功,在此页面即可看到 仓库的github域名` 。

    • 使用了 CDN,github 上的 强制https 按钮可能不能点;如果无法正常显示 https,也可以在Cloudflare建立 强制https 规则。

    大功告成

    填坑后记

    1. 写新文章最好用命令行新建 md 文件,文件名为英文名最佳,增加解析效率。
    hugo new post/first-post.md
    -
    1. 如在远程端操作过,则在本地执行操作前,都要 git pull 拉取远端数据,同步到本地。上面我们在远程博客根目录新建了 workflow,在本地开始写新的博文前,先在本地的博客根目录进行同步,不然会报错:
    git pull
    -
    1. 执行 hugo server 过程中错误退出 git,导致之后执行时 1313 端口被占用,windows+r 输入 cmd 或者在VS code中打开 powershell 窗口:
    netstat -aon|findstr "1313"  #筛选使用1313端口的进程
    -taskkill /f /PID xxxxx  #杀死占用的进程
    -
    1. 重大更新!!!实现 Hugo Blog 源码github、gitee、gitlab三端同步,特别注意『格式』,最好在github中添加,避免出错!
    • 分别在gitee、gitlab上新建公钥文件,取名分别为GITEE_KEY、GITLAB_KEY

    • 更新 autodeploy.yml 文件,在后面加上如下代码

      mirror_to_gitee:
    -    runs-on: ubuntu-latest
    -    steps:
    -      - name: 'Checkout'
    -        uses: actions/checkout@v1
    -      - name: 'Mirror to gitee'
    -        uses: pixta-dev/repository-mirroring-action@v1
    -        with:
    -          target_repo_url:
    -            git@gitee.com:ventusoon/LuvSia.com.git  # gitee仓库链接
    -          ssh_private_key:
    -            ${{ secrets.GITEE_KEY }}  # 新建的GITEE_KEY
    -
    -  mirror_to_gitlab:
    -    runs-on: ubuntu-latest
    -    steps:
    -      - name: 'Checkout'
    -        uses: actions/checkout@v1
    -      - name: 'Mirror to gitlab'
    -        uses: pixta-dev/repository-mirroring-action@v1
    -        with:
    -          target_repo_url:
    -            git@gitlab.com:ventusoon/LuvSia.com.git  # gitlab仓库链接
    -          ssh_private_key:
    -            ${{ secrets.GITLAB_KEY }}  # 新建的GILAB_KEY
    -
    • Gitee
    gitee
    gitee
    • Gitlab
    gitlab
    gitlab
    1. 新增 小康博客open in new window 鼠标指针、侧边栏样式。
    • extended_head.html 中添加以下
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/static-butterfly/dist/css/index.min.css">
    -

    写在最后

    本篇文章的部署流程对网上教程进行了整合,再加上自己的理解而成。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/index.html b/posts/Server/index.html deleted file mode 100644 index da30d36b..00000000 --- a/posts/Server/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - Server | 風至萬始蘇 - - - - - - - - - - diff --git a/posts/Server/nginx-proxy-manager.html b/posts/Server/nginx-proxy-manager.html deleted file mode 100644 index ca86cc90..00000000 --- a/posts/Server/nginx-proxy-manager.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - 用Nginx Proxy Manager部署静态网页 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    用Nginx Proxy Manager部署静态网页

    Ven2s...大约 2 分鐘ServerBlog

    Deploying Static Web Pages with Nginx Proxy Manager

    • 搭建的 web 服务因使用了 宝塔面板 抽风不能 CDN ,导致访问失败,一气之下重装了系统,重新搭建了所有 web,并使用 Nginx Proxy Manager 管理 web 服务。

    • 某些 web 服务需要在 Nginx Proxy Manager 的目录下构建,故在此记录下部署静态网页的流程备忘。

    搭建步骤

    一、安装 DockerDocker-compose

    • 安装 Docker
    #更新、安装必备软件
    -
    -apt-get update && apt-get install -y wget nano
    -
    -#安装docker:
    -
    -curl -sSL https://get.docker.com/ | sh
    -
    -
    -#开机自动启动
    -
    -systemctl start docker
    -
    -systemctl enable docker
    -
    • 安装 Docker-compose
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    -sudo chmod +x /usr/local/bin/docker-compose
    -

    二、安装 Nginx Proxy Manager 中文版open in new window

    • 创建目录
    mkdir -p /data/docker_data/npm
    -cd /data/docker_data/npm
    -
    • 创建 docker-compose.yml 文件
    nano docker-compose.yml
    -
    • 在文件中填入以下内容,然后 Ctrl+X 保存,按 Y 退出
    version: '3'
    -services:
    -  app:
    -    image: 'chishin/nginx-proxy-manager-zh:latest'
    -    restart: always
    -    ports:
    -      - '80:80'
    -      - '81:81'
    -      - '443:443'
    -    volumes:
    -      - ./data:/data
    -      - ./letsencrypt:/etc/letsencrypt
    -
    • 创建完成后,运行
    docker-compose up -d
    -
    • 然后就可以通过 IP:81 来访问 Nginx Proxy Manager ,用初始账号密码登陆并修改。
    Email:     admin@example.com
    -Password:  changeme
    -
    • 反代 Nginx Proxy Manager,并添加 SSL
    View Screenshots

    1
    2

    三、创建静态网站目录,添加内容并反代

    • 在挂载的 data 文件夹里面创建一个新的网站文件夹
    mkdir -p /data/docker_data/npm/data/sub.ven2s.cn
    -
    • 将带有html文件的内容放到这个文件夹里面
    # 将/sub-web-modify/dist/文件夹下的所用文件移动到/data/docker_data/npm/data/sub.ven2s.cn/下
    -mv ~/sub-web-modify/dist/* /data/docker_data/npm/data/sub.ven2s.cn/
    -
    location / {
    -    root /data/sub.ven2s.cn;
    -    index index.html index.htm;
    -    error_page 404 /index.html;
    -}
    -

    大功告成

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/Server/server-building.html b/posts/Server/server-building.html deleted file mode 100644 index a3dba15a..00000000 --- a/posts/Server/server-building.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - 从零开始的服务器搭建纪实 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    从零开始的服务器搭建纪实

    Ventus...大约 6 分鐘建站Server

    LuvSia

    Server Building

    准备工作

    VPSDomain
    dmitopen in new windowexample.comopen in new windownginxopen in new windowmysqlopen in new windowphpopen in new windowphpmyadminopen in new windowcloudflareopen in new window

    更新软件源

    apt update
    -

    搭建思路

    预留一级域名搭建网站给各个应用添加前端网页根路径。

    后因部分应用无法添加二级目录(网页根路径),所以这里只能使用添加二级域名的思路,区别各个应用。

    再通过添加反向代理,实现分域名访问不同前端应用。

    开始搭建

    宝塔面板

    WorkWeb
    宝塔面板btopen in new window

    1.使用一键配置工具。
    一键脚本集成工具

    wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
    -

    wget -O install.sh http://io.bt.sy/install/install-ubuntu_6.0.sh && bash install.sh
    -

    2.安装nginx-1.21mysql-5.5php-7.4phpmyadmin-5.0四件套

    3.添加站点。

    WorkDomain
    alista.example.comopen in new window正常
    宝塔面板b.example.comopen in new window正常
    Transmissiont.example.comopen in new window正常
    X-UIx.example.comopen in new window正常

    4.设置,添加SSL,强制开启https

    记录证书路径,证书可以直接在宝塔面板进行更新,或是设置定时任务自动更新;

    宝塔面板申请的证书在如下目录:/www/server/panel/vhost/cert/你的域名/ 目录之下。

    强制开启https

    5.关闭面板安全入户,即删除二级目录

    rm -f /www/server/panel/data/admin_path.pl
    -

    6.在Cloudflare中解析二级域名b.example.com

    7.添加反向代理到b.example.com

    代理名称 宝塔面板
    -目标URL  http://127.0.0.1:8888  发送域名 $host
    -

    8.安装docker安装器。

    X-UI

    WorkWebTools
    x-uixuiopen in new windowdockeropen in new window

    1.镜像源

    enwaiax/x-ui:latest
    -

    2.安装运行

    mkdir x-ui && cd x-ui
    -docker run -itd --network=host \
    -    -v $PWD/db/:/etc/x-ui/ \
    -    -v $PWD/cert/:/root/cert/ \
    -    --name x-ui --restart=unless-stopped \
    -    enwaiax/x-ui:latest
    -

    3.在Cloudflare中解析二级域名x.example.com

    4.添加反向代理到x.example.com

    代理名称 x-ui
    -目标URL  http://127.0.0.1:54321  发送域名 $host
    -

    5.配置VMess协议,开启ws,路径/xiya

    6.开启CDN加速,在nginx配置文件中添加如下。

    location /xiya {
    -        proxy_redirect off;
    -        proxy_pass http://127.0.0.1:22513;
    -        proxy_http_version 1.1;
    -        proxy_set_header Upgrade $http_upgrade;
    -        proxy_set_header Connection "upgrade";
    -        proxy_set_header Host $http_host;
    -        proxy_read_timeout 300s;
    -        # Show realip in v2ray access.log
    -        proxy_set_header X-Real-IP $remote_addr;
    -        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    -  }
    -

    7.开启Cloudflare小云朵,并优选IP。

    8.下载优选IPopen in new window ,选出优选IP后,客户端如下配置

    + 填入优选IP
    -+ 更改端口为443;
    -+ host设置x.example.com;
    -+ 开启tls。
    -

    9.Surge配置

    🇭🇰 VMess = vmess, 104.19.79.223, 443, username=2d285385-836d-4b30-f32c-11cdd637aeed, tls=true, tls13=false, ws=true, ws-path=/xiya, sni=example.com, ws-headers=Host:example.com, skip-cert-verify=0, tfo=false, udp-relay=true
    -

    Alist

    WorkWebTools
    Alistalistopen in new windowdockeropen in new window

    1.添加镜像源

    xhofe/alist:latest
    -

    2.不配置容器,使用代码

    docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 --name="alist" xhofe/alist:latest
    -

    3.在Cloudflare中解析二级域名a.example.com

    4.添加反向代理到a.example.comopen in new window

    代理名称 alist
    -目标URL  http://127.0.0.1:5244  发送域名 $host
    -

    Transmission

    WorkWebTools
    Transmissiontransmissionopen in new windowdockeropen in new window

    1.Docker安装

    构建镜像

    # 克隆仓库
    -git clone https://github.com/helloxz/docker-transmission.git
    -# 进入仓库目录
    -cd docker-transmission
    -# 构建Docker镜像
    -docker build -t luvsia:transmission
    -

    运行镜像

    docker run -d --name="transmission" \
    -  -e USERNAME=ventus \
    -  -e PASSWORD=ysw554247430 \
    -  -p 9091:9091 \
    -  -p 51413:51413 \
    -  -p 51413:51413/udp \
    -  -v /GoogleDrive:/Downloads \
    -  --restart=always \
    -  luvsia:transmission
    -

    /GoogleDrive:本地下载目录为Rclone mount GoogleDrive中的谷歌云盘目录,自动下载到谷歌云盘,实现无线网盘

    2-1.普通安装

    安装transmission-daemon

    apt-get install transmission-daemon
    -

    首先执行一次启动和停止命令,防止配置文件被覆盖

    启动

    service transmission-daemon start
    -

    停止

    service transmission-daemon stop
    -

    重启

    service transmission-daemon restart
    -

    修改transmission-daemon配置文件

    nano /var/lib/transmission-daemon/info/settings.json
    -
    "rpc-host-whitelist": "*",  //域名白名单,*为允许所有
    -"rpc-host-whitelist-enabled": false, //是否开启白名单,false为否
    -"rpc-password": "远程登录密码",
    -"rpc-port": 9091, //远程登录端口
    -"rpc-username": "远程帐号",
    -"rpc-whitelist": "*", //ip白名单
    -"rpc-whitelist-enabled": false,  //是否开启ip白名单,false为否
    -

    执行启动命令

    service transmission-daemon start
    -
    systemctl enable transmission-daemon.service
    -

    2-2.transmission web control

    获取安装脚本

    wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh
    -

    执行安装脚本

    bash install-tr-control-cn.sh
    -

    3.在Cloudflare中解析二级域名t.example.com

    4.添加反向代理到t.example.comopen in new window

    代理名称 transmission
    -目标URL  http://127.0.0.1:9091  发送域名 $host
    -

    5.修改默认保存目录/GoogleDrive,启用临时目录/Downloads,记得给!权限!

    把`/Downloads`赋予777权限
    -

    Rclone

    WorkWebTools
    Rclonercloneopen in new windowgoogledriveopen in new window

    1.安装Rclone

    wget https://www.moerats.com/usr/shell/rclone_debian.sh && bash rclone_debian.sh
    -

    2.初始化配置

    rclone config
    -

    3.选择GoogleDrive,剩余操作参考这里open in new window

    CMD开启代理

    set http_proxy=socks5://127.0.0.1:10808 #端口号为http的socks5实际端口
    -set https_proxy=socks5://127.0.0.1:10808 #端口号为https的socks5实际端口
    -

    4.挂载磁盘

    mkdir -p /GoogleDrive
    -
    mkdir -p /Downloads
    -

    提示

    确认安装了FUSE3

    apt install fuse3
    -
    rclone mount ventusoon:ventus /GoogleDrive \
    - --umask 0000 \
    - --default-permissions \
    - --allow-non-empty \
    - --allow-other \
    - --transfers 4 \
    - --buffer-size 32M \
    - --low-level-retries 200
    - --dir-cache-time 12h
    - --vfs-read-chunk-size 32M
    - --vfs-read-chunk-size-limit 1G
    -

    5.配置开机自动挂载

    cat > /etc/systemd/system/rclone.service <<EOF
    -[Unit]
    -Description=Rclone
    -AssertPathIsDirectory=LocalFolder
    -After=network-online.target
    -[Service]
    -Type=simple
    -ExecStart=/usr/bin/rclone mount ventusoon:ventus /GoogleDrive \
    - --umask 0000 \
    - --default-permissions \
    - --allow-non-empty \
    - --allow-other \
    - --buffer-size 32M \
    - --dir-cache-time 12h \
    - --vfs-read-chunk-size 64M \
    - --vfs-read-chunk-size-limit 1G
    -ExecStop=/bin/fusermount -u LocalFolder
    -Restart=on-abort
    -User=root
    -[Install]
    -WantedBy=default.target
    -EOF
    -

    挂载成功后,输入df -h命令即可看到挂载的磁盘

    6.常用命令

    systemctl start rclone
    -
    systemctl enable rclone
    -
    systemctl stop rclone
    -
    systemctl status rclone
    -

    7.Transmission添加rlone挂载在GoogleDrive上的路径

    /GoogleDrive
    -

    Live-torrent

    WorkWebTools
    live-torrentlive-torrentopen in new windowdockeropen in new window

    1.镜像源

    davenchy/live-torrent
    -

    2.安装运行

    docker run --restart=always --name live-torrent -d -p 8080:8080 davenchy/live-torrent
    -

    3.在Cloudflare中解析二级域名live.example.com

    4.添加反向代理到live.example.com

    代理名称 Live-torrent
    -目标URL  http://127.0.0.1:8080  发送域名 $host
    -

    Cloudflare WARP

    WorkWebUse
    Cloudflare WARPcloudflareopen in new window使用教程open in new window

    功能菜单

    bash <(curl -fsSL git.io/warp.sh) menu
    -

    WARP WireGuard 双栈全局网络

    bash <(curl -fsSL git.io/warp.sh) d
    -

    IPv4 网络

    bash <(curl -fsSL git.io/warp.sh) 4
    -

    IPv6 网络

    bash <(curl -fsSL git.io/warp.sh) 6
    -

    WARP 官方客户端 SOCKS5 代理

    bash <(curl -fsSL git.io/warp.sh) s5
    -

    后记

    感谢

    @guodongxiarenopen in new window
    @HostCLiopen in new window
    @jinwypopen in new window
    @Xhofeopen in new window
    @vaxiluopen in new window
    @enwaiaxopen in new window
    @XIU2open in new window
    @helloxzopen in new window
    @moeratsopen in new window
    @P3TERXopen in new window


    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/banana/1.html b/posts/banana/1.html deleted file mode 100644 index 6c828372..00000000 --- a/posts/banana/1.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 香蕉 1 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    香蕉 1

    Ven2s...小於 1 分鐘香蕉水果弯曲的

    香蕉 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/banana/2.html b/posts/banana/2.html index 6330c17c..28d3536d 100644 --- a/posts/banana/2.html +++ b/posts/banana/2.html @@ -31,10 +31,10 @@ } - + -
    跳至主要內容

    香蕉 2

    Ven2s...小於 1 分鐘香蕉水果弯曲的

    香蕉 2

    一个被数字 10 星标了的香蕉文章。

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - +
    跳至主要內容

    香蕉 2

    Ven2s...小於 1 分鐘香蕉水果弯曲的

    香蕉 2

    一个被数字 10 星标了的香蕉文章。

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    + diff --git a/posts/banana/3.html b/posts/banana/3.html deleted file mode 100644 index d356bf88..00000000 --- a/posts/banana/3.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 香蕉 3 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    香蕉 3

    Ven2s...小於 1 分鐘香蕉弯曲的

    香蕉 3

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/banana/4.html b/posts/banana/4.html deleted file mode 100644 index 888b6960..00000000 --- a/posts/banana/4.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 香蕉 4 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    香蕉 4

    Ven2s...小於 1 分鐘香蕉弯曲的

    香蕉 4

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/banana/index.html b/posts/banana/index.html index 6067eeef..ffe0010b 100644 --- a/posts/banana/index.html +++ b/posts/banana/index.html @@ -31,10 +31,10 @@ } - + - - + + diff --git a/posts/cherry.html b/posts/cherry.html deleted file mode 100644 index 02b009dc..00000000 --- a/posts/cherry.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 樱桃 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    樱桃

    Ven2s...小於 1 分鐘樱桃

    樱桃

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/dragonfruit.html b/posts/dragonfruit.html deleted file mode 100644 index 582afc48..00000000 --- a/posts/dragonfruit.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 火龙果 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    火龙果

    Ven2s...小於 1 分鐘火龙果水果

    火龙果

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/index.html b/posts/index.html index a65fe7f2..796c2c1e 100644 --- a/posts/index.html +++ b/posts/index.html @@ -31,10 +31,10 @@ } - + - - + + diff --git a/posts/strawberry.html b/posts/strawberry.html deleted file mode 100644 index 7e4d0214..00000000 --- a/posts/strawberry.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - 草莓 | 風至萬始蘇 - - - - - - -
    跳至主要內容

    草莓

    Ven2s...小於 1 分鐘水果草莓

    草莓

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - - - diff --git a/posts/tomato.html b/posts/tomato.html index a5d92a7c..c026a0fc 100644 --- a/posts/tomato.html +++ b/posts/tomato.html @@ -31,10 +31,10 @@ } - + -
    跳至主要內容
    番茄

    番茄

    Ven2s...小於 1 分鐘蔬菜

    番茄

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    - +
    跳至主要內容
    番茄

    番茄

    Ven2s...小於 1 分鐘蔬菜

    番茄

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    Comments
    • Latest
    • Oldest
    • Hottest
    Powered by Waline v2.15.8
    + diff --git a/sitemap.xml b/sitemap.xml index 1148a7a7..621d7cfe 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,3 +1,3 @@ -https://luvsia.com/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/intro.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/slides.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/disable.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/encrypt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/markdown.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/page.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/intro.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/slides.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/cherry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/dragonfruit.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/strawberry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/tomato.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/intro.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/slides.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/disable.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/encrypt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/markdown.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/page.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/cherry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/dragonfruit.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/strawberry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/tomato.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/ChatGPT-Porxy.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/buildSUB.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/chatgpt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/github-actions-deploy.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/hello-world.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/nginx-proxy-manager.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/Server/server-building.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/banana/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/banana/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/banana/3.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/banana/4.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/disable.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/encrypt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/markdown.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/page.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/cherry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/dragonfruit.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/strawberry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/tomato.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/3.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/4.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/3.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/4.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Linux/1993.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Linux/Best-Emoji.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Linux/beautification.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/MacOS/Hackintosh.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/ChatGPT-Porxy.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/buildSUB.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/chatgpt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/github-actions-deploy.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/hello-world.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/nginx-proxy-manager.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/server-building.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/DDNS.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/github-tools.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/kms.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/port-forwarding.html2023-10-27T18:37:19.000Zdaily \ No newline at end of file +https://luvsia.com/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/intro.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/slides.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/code/2.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/beautification.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/best-emoji.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/build-sub.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/chatgpt-porxy.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/chatgpt.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/ddns.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/github-actions-deploy.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/github-tools.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/hackintosh.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/hello-world.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/kms.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/nginx-proxy-manager.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/port-forwarding.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/code/server-building.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/demo/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/disable.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/encrypt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/markdown.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/demo/page.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/intro.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/slides.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/note/1.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/note/1993.html2023-10-29T23:09:45.000Zdailyhttps://luvsia.com/posts/tomato.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/intro.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/slides.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/disable.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/encrypt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/markdown.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/demo/page.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/cherry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/dragonfruit.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/strawberry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/tomato.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/posts/banana/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/disable.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/encrypt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/markdown.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/demo/page.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/cherry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/dragonfruit.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/strawberry.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/tomato.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/3.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/apple/4.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/3.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/en/posts/banana/4.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Linux/1993.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Linux/Best-Emoji.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Linux/beautification.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/MacOS/Hackintosh.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/1.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/2.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/ChatGPT-Porxy.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/buildSUB.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/chatgpt.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/github-actions-deploy.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/hello-world.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/nginx-proxy-manager.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Server/server-building.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/DDNS.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/github-tools.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/kms.html2023-10-27T18:37:19.000Zdailyhttps://luvsia.com/zh/posts/Windows/port-forwarding.html2023-10-27T18:37:19.000Zdaily \ No newline at end of file diff --git a/slides.html b/slides.html index 7f3f20e6..e79ef03f 100644 --- a/slides.html +++ b/slides.html @@ -31,10 +31,10 @@ } - +
    - + diff --git a/star/index.html b/star/index.html index 4caa91d0..20bca10c 100644 --- a/star/index.html +++ b/star/index.html @@ -31,20 +31,37 @@ } - + -
    跳至主要內容
    香蕉 2

    香蕉 2

    +
    跳至主要內容
    香蕉 2

    香蕉 2

    一个被数字 10 星标了的香蕉文章。

    -

    Ven2s...小於 1 分鐘香蕉水果弯曲的
    番茄

    番茄

    +

    Ven2s...小於 1 分鐘香蕉水果弯曲的
    利用GitHub Actions自动部署前端到服务器
    +

    Automatically deploying the Front End to the server using GitHub Actions

    +
    +

    GitHub Actions介绍及原理

    +
      +
    • +

      接触 GitHub Actions 也有一段时间了,目前此blog就是利用 GitHub Action 自动部署到GitHub托管的。今天把此次前端页面成功部署到服务器端的操作方法详细记录下来,顺便按自己理解写些心得。抽空再码字完善(下班时间开工😭)。

      +
    • +
    • +

      GitHub Actions 官方文档:在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。 您可以发现、创建和共享操作以执行您喜欢的任何作业(包括 CI/CD),并将操作合并到完全自定义的工作流程中。

      +
    • +
    • +

      通过文档可以看出 GitHub Action 其强大的代码管理、运行部署、测试推送等一体化自动发布部署功能,省去了大量的重复性工作。由于通过ssh客户端连接到服务器,直接进行前端部署,需要安装各种各样的依赖,很大程度上降低了服务器运行效率,且不易对代码进行修正。

      +
    • +
    • +

      本教程是在《用Nginx Proxy Manager部署静态网页》基础上延伸出的思路,省去了安装node环境和各种依赖的步骤,直接在 GitHub Action 中部署前端。每次在本地对后端文件进行修正后,直接将前端发布到服务器。起到一劳永逸的效果。

      +
    • +

    Ven2s...大约 6 分鐘linuxServerFrontEnd
    番茄

    番茄

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    -

    Ven2s...小於 1 分鐘蔬菜
    苹果 2

    苹果 2

    一个被星标了的苹果文章。

    -

    Ven2s...小於 1 分鐘苹果
    页面配置

    more 注释之前的内容被视为文章摘要。

    -

    Ms.Hope...大约 1 分鐘使用指南页面配置使用指南
    - +

    Ven2s...小於 1 分鐘苹果
    页面配置

    more 注释之前的内容被视为文章摘要。

    +

    Ms.Hope...大约 1 分鐘使用指南页面配置使用指南
    + diff --git a/tag/blog/index.html b/tag/blog/index.html index 5b652a41..738f8f51 100644 --- a/tag/blog/index.html +++ b/tag/blog/index.html @@ -31,10 +31,10 @@ } - + -
    跳至主要內容
    用Nginx Proxy Manager部署静态网页
    +
    跳至主要內容
    用Nginx Proxy Manager部署静态网页

    Deploying Static Web Pages with Nginx Proxy Manager

      @@ -44,7 +44,549 @@
    • 某些 web 服务需要在 Nginx Proxy Manager 的目录下构建,故在此记录下部署静态网页的流程备忘。

    • -

    Ven2s...大约 2 分鐘ServerBlog
    超酷的Emoji表情!

    Emoji表情

    +

    风至万始苏

    +

    原文

    +

    将对应emoji表情的符号码复制后输入你的markdown文本即可显示emoji表情。
    +如"😊",显示为😊

    +

    人物

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bowtie::bowtie::smile:😄:laughing:😆
    :blush:😊:smiley:😃:relaxed:☺️
    :smirk:😏:heart_eyes:😍:kissing_heart:😘
    :kissing_closed_eyes:😚:flushed:😳:relieved:😌
    :satisfied:😆:grin:😁:wink:😉
    :stuck_out_tongue_winking_eye:😜:stuck_out_tongue_closed_eyes:😝:grinning:😀
    :kissing:😗:kissing_smiling_eyes:😙:stuck_out_tongue:😛
    :sleeping:😴:worried:😟:frowning:😦
    :anguished:😧:open_mouth:😮:grimacing:😬
    :confused:😕:hushed:😯:expressionless:😑
    :unamused:😒:sweat_smile:😅:sweat:😓
    :disappointed_relieved:😥:weary:😩:pensive:😔
    :disappointed:😞:confounded:😖:fearful:😨
    :cold_sweat:😰:persevere:😣:cry:😢
    :sob:😭:joy:😂:astonished:😲
    :scream:😱:neckbeard::neckbeard::tired_face:😫
    :angry:😠:rage:😡:triumph:😤
    :sleepy:😪:yum:😋:mask:😷
    :sunglasses:😎:dizzy_face:😵:imp:👿
    :smiling_imp:😈:neutral_face:😐:no_mouth:😶
    :innocent:😇:alien:👽:yellow_heart:💛
    :blue_heart:💙:purple_heart:💜:heart:❤️
    :green_heart:💚:broken_heart:💔:heartbeat:💓
    :heartpulse:💗:two_hearts:💕:revolving_hearts:💞
    :cupid:💘:sparkling_heart:💖:sparkles:
    :star::star2:🌟:dizzy:💫
    :boom:💥:collision:💥:anger:💢
    :exclamation::question::grey_exclamation:
    :grey_question::zzz:💤:dash:💨
    :sweat_drops:💦:notes:🎶:musical_note:🎵
    :fire:🔥:hankey:💩:poop:💩
    ::💩:+1:👍:thumbsup:👍
    :-1:👎:thumbsdown:👎:ok_hand:👌
    :punch:👊:facepunch:👊:fist:
    :v:✌️:wave:👋:hand:
    :raised_hand::open_hands:👐:point_up:☝️
    :point_down:👇:point_left:👈:point_right:👉
    :raised_hands:🙌:pray:🙏:point_up_2:👆
    :clap:👏:muscle:💪:metal:🤘
    :fu:🖕:walking:🚶:runner:🏃
    :running:🏃:couple:👫:family:👪
    :two_men_holding_hands:👬:two_women_holding_hands:👭:dancer:💃
    :dancers:👯:ok_woman:🙆‍♀️:no_good:🙅
    :information_desk_person:💁:raising_hand:🙋:bride_with_veil:👰‍♀️
    :person_with_pouting_face::person_with_pouting_face::person_frowning::person_frowning::bow:🙇
    :couplekiss:💏:couple_with_heart:💑:massage:💆
    :haircut:💇:nail_care:💅:boy:👦
    :girl:👧:woman:👩:man:👨
    :baby:👶:older_woman:👵:older_man:👴
    :person_with_blond_hair::person_with_blond_hair::man_with_gua_pi_mao:👲:man_with_turban:👳‍♂️
    :construction_worker:👷:cop:👮:angel:👼
    :princess:👸:smiley_cat:😺:smile_cat:😸
    :heart_eyes_cat:😻:kissing_cat:😽:smirk_cat:😼
    :scream_cat:🙀:crying_cat_face:😿:joy_cat:😹
    :pouting_cat:😾:japanese_ogre:👹:japanese_goblin:👺
    :see_no_evil:🙈:hear_no_evil:🙉:speak_no_evil:🙊
    :guardsman:💂‍♂️:skull:💀:feet:🐾
    :lips:👄:kiss:💋:droplet:💧
    :ear:👂:eyes:👀:nose:👃
    :tongue:👅:love_letter:💌:bust_in_silhouette:👤
    :busts_in_silhouette:👥:speech_balloon:💬:thought_balloon:💭
    :feelsgood::feelsgood::finnadie::finnadie::goberserk::goberserk:
    :godmode::godmode::hurtrealbad::hurtrealbad::rage1::rage1:
    :rage2::rage2::rage3::rage3::rage4::rage4:
    :suspect::suspect::trollface::trollface:

    Ven2s...大约 6 分鐘MarkdownBlog
    - +

    Ven2s...大约 15 分鐘ServerBlog
    + diff --git a/tag/chatgpt/index.html b/tag/chatgpt/index.html index 5fa41878..be6537c9 100644 --- a/tag/chatgpt/index.html +++ b/tag/chatgpt/index.html @@ -31,15 +31,15 @@ } - + -
    跳至主要內容
    ChatGPT-Porxy
    +
    跳至主要內容
    ChatGPT-Porxy

    Build ChatGPT Reverse Proxy

    • ChatGPT-Web 项目的免费代理挂了,故此,选择本项目 来解决代理问题。
    • -

    Ven2s...大约 2 分鐘ChatGPT
    Wonderful ChatGPT

    3 Steps Build Your Own ChatGPT Web

      @@ -49,7 +49,7 @@
    • ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。

    • -

    Ven2s...大约 2 分鐘ChatGPT
    - +

    Ven2s...大约 2 分鐘ChatGPT
    + diff --git a/tag/ddns/index.html b/tag/ddns/index.html new file mode 100644 index 00000000..318578ff --- /dev/null +++ b/tag/ddns/index.html @@ -0,0 +1,67 @@ + + + + + + + + 標籤: DDNS | 風至萬始蘇 + + + + + + +
    跳至主要內容
    Cloudflare + DDNS-GO + RDP
    +

    Using DDNS and Port forwarding to achieve remote access to devices on an internal network

    +
    +

    前言

    +
      +
    • +

      最近迷上了AI画图软件 stable-diffusion-webui ,由于它对 GPU 的依赖很大,我只能使用家里的电脑来炼丹(也就一张6年前的1060😥),奈何又在外地上班,只能走进了我一直望而却步的动态域名解析服务,来实现远程控制家中电脑,以及其他网络设备的目的。

      +

      Z
      +D
      +B

      +
    • +
    • +

      写本篇教程(备忘录),一是彰显成就感,二是带给大家一些思路,让有相同需求的朋友少走弯路(毕竟我找了很多教程都没有说清楚DDNS到底是个什么,又要怎么使用)。

      +
    • +
    • +

      DDNS(全名:Dynamic Domain Name Server),动态域名服务,说人话就是将家中内网的动态 ipv4 地址映射到一个固定的域名解析服务上。

      +
    • +
    • +

      Cloudflare 全球知名的DNS服务商。

      +
    • +
    • +

      DDNS-GO 超好用的DDNS解析服务工具。感谢作者大大解决了我最关键的问题。

      +
    • +
    • +

      公网 IP 不得不说电信的服务水平,半天时间真就给我开通了,这里就不说这玩意儿怎么用了,接触网络的人基本都知道,虽然现在有很多办法可以绕过公网 IP 来访问内网,但是通过我的测试,用了很多的远程连接服务和内网穿透工具,还是最原始的办法性价比更高,体验更是一流。

      +
      RDP
      可以看到这里的延迟十分之低
      +
    • +

    Ven2s...大约 4 分鐘DDNSnetwork
    + + + diff --git a/tag/frontend/index.html b/tag/frontend/index.html index 18cd490e..5e3ddc38 100644 --- a/tag/frontend/index.html +++ b/tag/frontend/index.html @@ -31,10 +31,10 @@ } - + -
    跳至主要內容
    利用GitHub Actions自动部署前端到服务器
    +
    跳至主要內容
    利用GitHub Actions自动部署前端到服务器

    Automatically deploying the Front End to the server using GitHub Actions

    GitHub Actions介绍及原理

    @@ -51,7 +51,7 @@

    GitHub Actions介绍及原理

  • 本教程是在《用Nginx Proxy Manager部署静态网页》基础上延伸出的思路,省去了安装node环境和各种依赖的步骤,直接在 GitHub Action 中部署前端。每次在本地对后端文件进行修正后,直接将前端发布到服务器。起到一劳永逸的效果。

  • -

    Ven2s...大约 6 分鐘ServerFrontEnd
    - +

    Ven2s...大约 6 分鐘linuxServerFrontEnd
    + diff --git a/tag/hackintosh/index.html b/tag/hackintosh/index.html new file mode 100644 index 00000000..86e13f34 --- /dev/null +++ b/tag/hackintosh/index.html @@ -0,0 +1,57 @@ + + + + + + + + 標籤: Hackintosh | 風至萬始蘇 + + + + + + +
    跳至主要內容
    Hackintosh
    +

    Hackintosh Reboot Plan

    +
    +

    闲话 回忆与现在

    +
      +
    • +

      从大学接触黑苹果开始,算起来已经有了8、9年的时光了,想起那会的“废寝忘食”,真是让人觉得虚度光阴、浪费精力。也许也是从那时候开始,养成了爱折腾的习惯。

      +
    • +
    • +

      之前家里闲置的笔记本被我拿来做软路由,最开始只是在 pve 上跑 openWRT ,满足一些魔法需求,刚好最近又在搞内网穿透,这台单网口、传输速率低得吓人的设备实在无法满足现在愈来愈强的需求。

      +
    • +
    • +

      故此,本意是在网上选购一台性价比较高的软路由,选着选着不知道怎就看到了一台十分合心意的小主机,实在按捺不住折腾的心情,就对老婆先斩后奏买了下来(幸得老婆宽厚,又加上我整天闹着要 NAS ,对比之下,这台小主机的价格还是让她允了下来)

      +
    • +
    • +

      刚好因工作原因经常奔波两地,加上最近频繁地码字建站,用这台小主机组一台黑苹果,重温下精美的 MacOS ,既能在家里和单位用,也能提高码字的效率,办公、开发两不误。

      +
    • +

    Ven2s...大约 3 分鐘Hackintosh
    + + + diff --git a/tag/index.html b/tag/index.html index d22e41bd..fc11f7fd 100644 --- a/tag/index.html +++ b/tag/index.html @@ -31,10 +31,10 @@ } - + - - + + diff --git a/tag/kms/index.html b/tag/kms/index.html new file mode 100644 index 00000000..4f5eb14e --- /dev/null +++ b/tag/kms/index.html @@ -0,0 +1,53 @@ + + + + + + + + 標籤: kms | 風至萬始蘇 + + + + + + +
    跳至主要內容
    KMS 服务端安装部署教程
    +

    KMS Server Installation and Deployment Tutorial

    +
    +

    关于脚本

    +
      +
    • KMS 服务安装完成后会加入开机自启动。
    • +
    • 默认记录日志,其日志位于 /var/log/vlmcsd.log。
    • +
    +

    开始部署

    +
      +
    • 使用 root 用户登录,运行以下命令:
    • +
    +
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/kms.sh && chmod +x kms.sh && ./kms.sh
    +

    Ven2s...大约 5 分鐘kmstools
    + + + diff --git a/tag/markdown/index.html b/tag/markdown/index.html index b0a16d02..e2464334 100644 --- a/tag/markdown/index.html +++ b/tag/markdown/index.html @@ -31,12 +31,551 @@ } - + -
    跳至主要內容
    Markdown 展示

    VuePress 主要从 Markdown 文件生成页面。因此,你可以使用它轻松生成文档或博客站点。

    + - +

    Ven2s...大约 3 分鐘使用指南Markdown
    超酷的Emoji表情!

    Emoji表情

    +

    风至万始苏

    +

    原文

    +

    将对应emoji表情的符号码复制后输入你的markdown文本即可显示emoji表情。
    +如"😊",显示为😊

    +

    人物

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bowtie::bowtie::smile:😄:laughing:😆
    :blush:😊:smiley:😃:relaxed:☺️
    :smirk:😏:heart_eyes:😍:kissing_heart:😘
    :kissing_closed_eyes:😚:flushed:😳:relieved:😌
    :satisfied:😆:grin:😁:wink:😉
    :stuck_out_tongue_winking_eye:😜:stuck_out_tongue_closed_eyes:😝:grinning:😀
    :kissing:😗:kissing_smiling_eyes:😙:stuck_out_tongue:😛
    :sleeping:😴:worried:😟:frowning:😦
    :anguished:😧:open_mouth:😮:grimacing:😬
    :confused:😕:hushed:😯:expressionless:😑
    :unamused:😒:sweat_smile:😅:sweat:😓
    :disappointed_relieved:😥:weary:😩:pensive:😔
    :disappointed:😞:confounded:😖:fearful:😨
    :cold_sweat:😰:persevere:😣:cry:😢
    :sob:😭:joy:😂:astonished:😲
    :scream:😱:neckbeard::neckbeard::tired_face:😫
    :angry:😠:rage:😡:triumph:😤
    :sleepy:😪:yum:😋:mask:😷
    :sunglasses:😎:dizzy_face:😵:imp:👿
    :smiling_imp:😈:neutral_face:😐:no_mouth:😶
    :innocent:😇:alien:👽:yellow_heart:💛
    :blue_heart:💙:purple_heart:💜:heart:❤️
    :green_heart:💚:broken_heart:💔:heartbeat:💓
    :heartpulse:💗:two_hearts:💕:revolving_hearts:💞
    :cupid:💘:sparkling_heart:💖:sparkles:
    :star::star2:🌟:dizzy:💫
    :boom:💥:collision:💥:anger:💢
    :exclamation::question::grey_exclamation:
    :grey_question::zzz:💤:dash:💨
    :sweat_drops:💦:notes:🎶:musical_note:🎵
    :fire:🔥:hankey:💩:poop:💩
    ::💩:+1:👍:thumbsup:👍
    :-1:👎:thumbsdown:👎:ok_hand:👌
    :punch:👊:facepunch:👊:fist:
    :v:✌️:wave:👋:hand:
    :raised_hand::open_hands:👐:point_up:☝️
    :point_down:👇:point_left:👈:point_right:👉
    :raised_hands:🙌:pray:🙏:point_up_2:👆
    :clap:👏:muscle:💪:metal:🤘
    :fu:🖕:walking:🚶:runner:🏃
    :running:🏃:couple:👫:family:👪
    :two_men_holding_hands:👬:two_women_holding_hands:👭:dancer:💃
    :dancers:👯:ok_woman:🙆‍♀️:no_good:🙅
    :information_desk_person:💁:raising_hand:🙋:bride_with_veil:👰‍♀️
    :person_with_pouting_face::person_with_pouting_face::person_frowning::person_frowning::bow:🙇
    :couplekiss:💏:couple_with_heart:💑:massage:💆
    :haircut:💇:nail_care:💅:boy:👦
    :girl:👧:woman:👩:man:👨
    :baby:👶:older_woman:👵:older_man:👴
    :person_with_blond_hair::person_with_blond_hair::man_with_gua_pi_mao:👲:man_with_turban:👳‍♂️
    :construction_worker:👷:cop:👮:angel:👼
    :princess:👸:smiley_cat:😺:smile_cat:😸
    :heart_eyes_cat:😻:kissing_cat:😽:smirk_cat:😼
    :scream_cat:🙀:crying_cat_face:😿:joy_cat:😹
    :pouting_cat:😾:japanese_ogre:👹:japanese_goblin:👺
    :see_no_evil:🙈:hear_no_evil:🙉:speak_no_evil:🙊
    :guardsman:💂‍♂️:skull:💀:feet:🐾
    :lips:👄:kiss:💋:droplet:💧
    :ear:👂:eyes:👀:nose:👃
    :tongue:👅:love_letter:💌:bust_in_silhouette:👤
    :busts_in_silhouette:👥:speech_balloon:💬:thought_balloon:💭
    :feelsgood::feelsgood::finnadie::finnadie::goberserk::goberserk:
    :godmode::godmode::hurtrealbad::hurtrealbad::rage1::rage1:
    :rage2::rage2::rage3::rage3::rage4::rage4:
    :suspect::suspect::trollface::trollface:

    Ven2s...大约 6 分鐘MarkdownBlog
    + diff --git a/tag/my-birthday/index.html b/tag/my-birthday/index.html new file mode 100644 index 00000000..37dc41c5 --- /dev/null +++ b/tag/my-birthday/index.html @@ -0,0 +1,40 @@ + + + + + + + + 標籤: My Birthday | 風至萬始蘇 + + + + + + + + + + diff --git a/tag/network/index.html b/tag/network/index.html new file mode 100644 index 00000000..87212658 --- /dev/null +++ b/tag/network/index.html @@ -0,0 +1,87 @@ + + + + + + + + 標籤: network | 風至萬始蘇 + + + + + + +
    跳至主要內容
    Port Forward
    +

    Internal network port forwarding

    +
    +

    前言

    +
      +
    • +

      在进行好上篇文章的所有操作后,通过远程 ping 域名,是可以 ping 通家里的 IPv4 地址的,但不知为何,通过域名+端口进行远程访问,是失败的,这说明很有可能是端口没有映射成功,于是我又 ping 了下端口,果然,状态显示是关闭了的。

      +
      1
      😏
      +
    • +
    • +

      来到主路由上的设置,可以看到这是我对 openWRT 这个设备进行了端口映射,以及设置为 DMZ 主机。网上很多人说只要设置了 DMZ 主机,是可以不用设置端口映射的,经我测试,我这里的设备是行不通的,所以我依然进行了端口映射到 openWRT

      +
    • +
    • +

      其实在设置 openWRT 为端口映射的设备之前,我一直映射的是台式主机的内网地址。我的思路是,既然要在电脑上使用 stable-diffusion-webui ,那我肯定只需要映射外网端口到电脑主机的内网端口就行了,事实证明,由于我家里网络的复杂程度,这种思路是完全错误的,这也是导致了我频繁映射失败,而无法访问内网的直接原因,因为我跳过了电脑主机网关是 openWRT 这一情况。所以当我把映射设备改成 openWRT 后,一下就成功了。(当然, openWRT 上也必须要对端口进行映射,映射到电脑主机的内网地址)

      +
    • +
    • +

      综上,因为我自己大脑宕机,花了超过24个小时的时间来研究内网穿透,实际上就是一个小小的思路上的错误而导致的,这也是为什么我给标题的“复杂”二字加了引号。

      +
      2
      😏
      +
      2
      😏
      +
    • +

    Ven2s...大约 3 分鐘port forwardnetwork
    Cloudflare + DDNS-GO + RDP
    +

    Using DDNS and Port forwarding to achieve remote access to devices on an internal network

    +
    +

    前言

    +
      +
    • +

      最近迷上了AI画图软件 stable-diffusion-webui ,由于它对 GPU 的依赖很大,我只能使用家里的电脑来炼丹(也就一张6年前的1060😥),奈何又在外地上班,只能走进了我一直望而却步的动态域名解析服务,来实现远程控制家中电脑,以及其他网络设备的目的。

      +

      Z
      +D
      +B

      +
    • +
    • +

      写本篇教程(备忘录),一是彰显成就感,二是带给大家一些思路,让有相同需求的朋友少走弯路(毕竟我找了很多教程都没有说清楚DDNS到底是个什么,又要怎么使用)。

      +
    • +
    • +

      DDNS(全名:Dynamic Domain Name Server),动态域名服务,说人话就是将家中内网的动态 ipv4 地址映射到一个固定的域名解析服务上。

      +
    • +
    • +

      Cloudflare 全球知名的DNS服务商。

      +
    • +
    • +

      DDNS-GO 超好用的DDNS解析服务工具。感谢作者大大解决了我最关键的问题。

      +
    • +
    • +

      公网 IP 不得不说电信的服务水平,半天时间真就给我开通了,这里就不说这玩意儿怎么用了,接触网络的人基本都知道,虽然现在有很多办法可以绕过公网 IP 来访问内网,但是通过我的测试,用了很多的远程连接服务和内网穿透工具,还是最原始的办法性价比更高,体验更是一流。

      +
      RDP
      可以看到这里的延迟十分之低
      +
    • +

    Ven2s...大约 4 分鐘DDNSnetwork
    + + + diff --git a/tag/port-forward/index.html b/tag/port-forward/index.html new file mode 100644 index 00000000..08821d27 --- /dev/null +++ b/tag/port-forward/index.html @@ -0,0 +1,60 @@ + + + + + + + + 標籤: port forward | 風至萬始蘇 + + + + + + +
    跳至主要內容
    Port Forward
    +

    Internal network port forwarding

    +
    +

    前言

    +
      +
    • +

      在进行好上篇文章的所有操作后,通过远程 ping 域名,是可以 ping 通家里的 IPv4 地址的,但不知为何,通过域名+端口进行远程访问,是失败的,这说明很有可能是端口没有映射成功,于是我又 ping 了下端口,果然,状态显示是关闭了的。

      +
      1
      😏
      +
    • +
    • +

      来到主路由上的设置,可以看到这是我对 openWRT 这个设备进行了端口映射,以及设置为 DMZ 主机。网上很多人说只要设置了 DMZ 主机,是可以不用设置端口映射的,经我测试,我这里的设备是行不通的,所以我依然进行了端口映射到 openWRT

      +
    • +
    • +

      其实在设置 openWRT 为端口映射的设备之前,我一直映射的是台式主机的内网地址。我的思路是,既然要在电脑上使用 stable-diffusion-webui ,那我肯定只需要映射外网端口到电脑主机的内网端口就行了,事实证明,由于我家里网络的复杂程度,这种思路是完全错误的,这也是导致了我频繁映射失败,而无法访问内网的直接原因,因为我跳过了电脑主机网关是 openWRT 这一情况。所以当我把映射设备改成 openWRT 后,一下就成功了。(当然, openWRT 上也必须要对端口进行映射,映射到电脑主机的内网地址)

      +
    • +
    • +

      综上,因为我自己大脑宕机,花了超过24个小时的时间来研究内网穿透,实际上就是一个小小的思路上的错误而导致的,这也是为什么我给标题的“复杂”二字加了引号。

      +
      2
      😏
      +
      2
      😏
      +
    • +

    Ven2s...大约 3 分鐘port forwardnetwork
    + + + diff --git a/tag/server/index.html b/tag/server/index.html index ccbc35ad..d803b877 100644 --- a/tag/server/index.html +++ b/tag/server/index.html @@ -31,10 +31,10 @@ } - + -
    跳至主要內容
    利用GitHub Actions自动部署前端到服务器
    +
    跳至主要內容
    利用GitHub Actions自动部署前端到服务器

    Automatically deploying the Front End to the server using GitHub Actions

    GitHub Actions介绍及原理

    @@ -51,7 +51,7 @@

    GitHub Actions介绍及原理

  • 本教程是在《用Nginx Proxy Manager部署静态网页》基础上延伸出的思路,省去了安装node环境和各种依赖的步骤,直接在 GitHub Action 中部署前端。每次在本地对后端文件进行修正后,直接将前端发布到服务器。起到一劳永逸的效果。

  • -

    Ven2s...大约 6 分鐘ServerFrontEnd
    用Nginx Proxy Manager部署静态网页

    Deploying Static Web Pages with Nginx Proxy Manager

      @@ -61,10 +61,10 @@

      GitHub Actions介绍及原理

    • 某些 web 服务需要在 Nginx Proxy Manager 的目录下构建,故在此记录下部署静态网页的流程备忘。

    • -

    Ven2s...大约 2 分鐘ServerBlog
    搭建属于自己的订阅转换链接

    Sub-Web-Modify前端搭建

    -

    本项目基于CareyWang/sub-web,重制CSS样式,解决大部分布局细节问题,增加“暗黑模式”,默认自动切换亮/暗模式(点击“太阳/月亮”图标可手动切换),增加“高级功能”点击显示/隐藏,添加短链接选择/自定义功能,增加近百条远程配置,新增sub-web聚合API,增加上传自定义远程配置/JS进阶排序节点/JS进阶筛选节点等功能!


    Ven2s...大约 5 分鐘Server
    Hello World
    +

    本项目基于CareyWang/sub-web,重制CSS样式,解决大部分布局细节问题,增加“暗黑模式”,默认自动切换亮/暗模式(点击“太阳/月亮”图标可手动切换),增加“高级功能”点击显示/隐藏,添加短链接选择/自定义功能,增加近百条远程配置,新增sub-web聚合API,增加上传自定义远程配置/JS进阶排序节点/JS进阶筛选节点等功能!


    Ven2s...大约 5 分鐘Server
    - +

    Ventus...大约 6 分鐘建站Server
    + diff --git a/tag/tools/index.html b/tag/tools/index.html new file mode 100644 index 00000000..1367d1ec --- /dev/null +++ b/tag/tools/index.html @@ -0,0 +1,71 @@ + + + + + + + + 標籤: tools | 風至萬始蘇 + + + + + + +
    跳至主要內容
    KMS 服务端安装部署教程
    +

    KMS Server Installation and Deployment Tutorial

    +
    +

    关于脚本

    +
      +
    • KMS 服务安装完成后会加入开机自启动。
    • +
    • 默认记录日志,其日志位于 /var/log/vlmcsd.log。
    • +
    +

    开始部署

    +
      +
    • 使用 root 用户登录,运行以下命令:
    • +
    +
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/kms.sh && chmod +x kms.sh && ./kms.sh
    +

    Ven2s...大约 5 分鐘kmstools
    + + + diff --git "a/tag/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" "b/tag/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" index f59dc0a5..ba0fc6e2 100644 --- "a/tag/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" +++ "b/tag/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" @@ -31,11 +31,11 @@ } - + - - + + diff --git "a/tag/\345\234\206/index.html" "b/tag/\345\234\206/index.html" index 36bf95c3..97bb0cae 100644 --- "a/tag/\345\234\206/index.html" +++ "b/tag/\345\234\206/index.html" @@ -31,27 +31,22 @@ } - + -
    跳至主要內容
    番茄

    番茄

    +
    跳至主要內容
    番茄

    番茄

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    -

    Ven2s...小於 1 分鐘蔬菜
    樱桃

    樱桃

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘樱桃
    苹果 2

    苹果 2

    一个被星标了的苹果文章。

    -

    Ven2s...小於 1 分鐘苹果
    苹果 1

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    -

    Ven2s...小於 1 分鐘苹果
    - +

    Ven2s...小於 1 分鐘苹果
    + diff --git "a/tag/\345\244\247/index.html" "b/tag/\345\244\247/index.html" index 3a6f899b..6a80f5b1 100644 --- "a/tag/\345\244\247/index.html" +++ "b/tag/\345\244\247/index.html" @@ -31,22 +31,17 @@ } - + -
    跳至主要內容
    + diff --git "a/tag/\345\260\217/index.html" "b/tag/\345\260\217/index.html" deleted file mode 100644 index 72576053..00000000 --- "a/tag/\345\260\217/index.html" +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - 標籤: 小 | 風至萬始蘇 - - - - - - - - - - diff --git "a/tag/\345\274\257\346\233\262\347\232\204/index.html" "b/tag/\345\274\257\346\233\262\347\232\204/index.html" index f5825728..fd15521a 100644 --- "a/tag/\345\274\257\346\233\262\347\232\204/index.html" +++ "b/tag/\345\274\257\346\233\262\347\232\204/index.html" @@ -31,27 +31,12 @@ } - + -
    跳至主要內容
    香蕉 4

    香蕉 4

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘香蕉弯曲的
    香蕉 3

    香蕉 3

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘香蕉弯曲的
    香蕉 2

    香蕉 2

    + - +

    Ven2s...小於 1 分鐘香蕉水果弯曲的
    + diff --git "a/tag/\346\226\207\347\253\240\345\212\240\345\257\206/index.html" "b/tag/\346\226\207\347\253\240\345\212\240\345\257\206/index.html" index 54fadfdd..5311916d 100644 --- "a/tag/\346\226\207\347\253\240\345\212\240\345\257\206/index.html" +++ "b/tag/\346\226\207\347\253\240\345\212\240\345\257\206/index.html" @@ -31,10 +31,10 @@ } - + - - + + diff --git "a/tag/\346\230\223/index.html" "b/tag/\346\230\223/index.html" new file mode 100644 index 00000000..2b958d39 --- /dev/null +++ "b/tag/\346\230\223/index.html" @@ -0,0 +1,40 @@ + + + + + + + + 標籤: 易 | 風至萬始蘇 + + + + + + + + + + diff --git "a/tag/\347\246\201\347\224\250/index.html" "b/tag/\347\246\201\347\224\250/index.html" index 0e6a5a1a..a8434a8f 100644 --- "a/tag/\347\246\201\347\224\250/index.html" +++ "b/tag/\347\246\201\347\224\250/index.html" @@ -31,11 +31,11 @@ } - + - - + + diff --git "a/tag/\347\272\242/index.html" "b/tag/\347\272\242/index.html" index a049e24d..f6a543c8 100644 --- "a/tag/\347\272\242/index.html" +++ "b/tag/\347\272\242/index.html" @@ -31,37 +31,22 @@ } - + -
    跳至主要內容
    番茄

    番茄

    +
    跳至主要內容
    番茄

    番茄

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    -

    Ven2s...小於 1 分鐘蔬菜
    草莓

    草莓

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘水果草莓
    火龙果

    火龙果

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘火龙果水果
    樱桃

    樱桃

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘樱桃
    苹果 2

    苹果 2

    一个被星标了的苹果文章。

    -

    Ven2s...小於 1 分鐘苹果
    苹果 1

    苹果 1

    标题 2

    这里是内容。

    标题 3

    这里是内容。

    -

    Ven2s...小於 1 分鐘苹果
    - +

    Ven2s...小於 1 分鐘苹果
    + diff --git "a/tag/\351\225\277/index.html" "b/tag/\351\225\277/index.html" index 827fc0ed..a9c96116 100644 --- "a/tag/\351\225\277/index.html" +++ "b/tag/\351\225\277/index.html" @@ -31,27 +31,12 @@ } - + -
    跳至主要內容
    香蕉 4

    香蕉 4

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘香蕉弯曲的
    香蕉 3

    香蕉 3

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘香蕉弯曲的
    香蕉 2

    香蕉 2

    + - +

    Ven2s...小於 1 分鐘香蕉水果弯曲的
    + diff --git "a/tag/\351\241\265\351\235\242\351\205\215\347\275\256/index.html" "b/tag/\351\241\265\351\235\242\351\205\215\347\275\256/index.html" index 8894ba39..905e301a 100644 --- "a/tag/\351\241\265\351\235\242\351\205\215\347\275\256/index.html" +++ "b/tag/\351\241\265\351\235\242\351\205\215\347\275\256/index.html" @@ -31,11 +31,11 @@ } - + - - + + diff --git "a/tag/\351\273\204/index.html" "b/tag/\351\273\204/index.html" index 724b3c5e..4802eef3 100644 --- "a/tag/\351\273\204/index.html" +++ "b/tag/\351\273\204/index.html" @@ -31,27 +31,12 @@ } - + -
    跳至主要內容
    香蕉 4

    香蕉 4

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘香蕉弯曲的
    香蕉 3

    香蕉 3

    -

    标题 2

    -

    这里是内容。

    -

    标题 3

    -

    这里是内容。

    -

    Ven2s...小於 1 分鐘香蕉弯曲的
    香蕉 2

    香蕉 2

    + - +

    Ven2s...小於 1 分鐘香蕉水果弯曲的
    + diff --git a/timeline/index.html b/timeline/index.html index 6d86ee65..6a4df874 100644 --- a/timeline/index.html +++ b/timeline/index.html @@ -31,10 +31,10 @@ } - + - - + + diff --git a/zh/article/index.html b/zh/article/index.html index abb66bbb..1506b277 100644 --- a/zh/article/index.html +++ b/zh/article/index.html @@ -31,7 +31,7 @@ } - + - + diff --git a/zh/category/index.html b/zh/category/index.html index dd8b7ce2..e4e6a2e0 100644 --- a/zh/category/index.html +++ b/zh/category/index.html @@ -31,10 +31,10 @@ } - + - + diff --git "a/zh/category/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" "b/zh/category/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" index 32030a15..ce0fcc00 100644 --- "a/zh/category/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" +++ "b/zh/category/\344\275\277\347\224\250\346\214\207\345\215\227/index.html" @@ -31,7 +31,7 @@ } - +
    跳至主要內容
    页面配置

    more 注释之前的内容被视为文章摘要。

    @@ -53,6 +53,6 @@

    Ven2s...小于 1 分钟使用指南禁用
    Markdown 展示

    VuePress 主要从 Markdown 文件生成页面。因此,你可以使用它轻松生成文档或博客站点。

    你应该创建和编写 Markdown 文件,以便 VuePress 可以根据文件结构将它们转换为不同的页面。


    Ven2s...大约 3 分钟使用指南Markdown
    - + diff --git "a/zh/category/\345\273\272\347\253\231/index.html" "b/zh/category/\345\273\272\347\253\231/index.html" index 387f1529..1159a6e7 100644 --- "a/zh/category/\345\273\272\347\253\231/index.html" +++ "b/zh/category/\345\273\272\347\253\231/index.html" @@ -31,7 +31,7 @@ } - + - + diff --git "a/zh/category/\346\250\261\346\241\203/index.html" "b/zh/category/\346\250\261\346\241\203/index.html" index bd6ba418..a039490e 100644 --- "a/zh/category/\346\250\261\346\241\203/index.html" +++ "b/zh/category/\346\250\261\346\241\203/index.html" @@ -31,15 +31,15 @@ } - + -
    跳至主要內容
    樱桃

    樱桃

    + - + diff --git "a/zh/category/\346\260\264\346\236\234/index.html" "b/zh/category/\346\260\264\346\236\234/index.html" index 5072e293..498933b0 100644 --- "a/zh/category/\346\260\264\346\236\234/index.html" +++ "b/zh/category/\346\260\264\346\236\234/index.html" @@ -31,7 +31,7 @@ } - + - + diff --git "a/zh/category/\347\201\253\351\276\231\346\236\234/index.html" "b/zh/category/\347\201\253\351\276\231\346\236\234/index.html" index 2dcf1931..9d89354e 100644 --- "a/zh/category/\347\201\253\351\276\231\346\236\234/index.html" +++ "b/zh/category/\347\201\253\351\276\231\346\236\234/index.html" @@ -31,15 +31,15 @@ } - + -
    跳至主要內容
    火龙果

    火龙果

    + - + diff --git "a/zh/category/\350\213\271\346\236\234/index.html" "b/zh/category/\350\213\271\346\236\234/index.html" index e7acc67f..9f1f4ba7 100644 --- "a/zh/category/\350\213\271\346\236\234/index.html" +++ "b/zh/category/\350\213\271\346\236\234/index.html" @@ -31,7 +31,7 @@ } - + - + diff --git "a/zh/category/\350\215\211\350\216\223/index.html" "b/zh/category/\350\215\211\350\216\223/index.html" index 2a9a9c74..0035e598 100644 --- "a/zh/category/\350\215\211\350\216\223/index.html" +++ "b/zh/category/\350\215\211\350\216\223/index.html" @@ -31,15 +31,15 @@ } - + -
    跳至主要內容
    草莓

    草莓

    + - + diff --git "a/zh/category/\350\224\254\350\217\234/index.html" "b/zh/category/\350\224\254\350\217\234/index.html" index e055c10e..a6ca0d87 100644 --- "a/zh/category/\350\224\254\350\217\234/index.html" +++ "b/zh/category/\350\224\254\350\217\234/index.html" @@ -31,7 +31,7 @@ } - + - + diff --git a/zh/demo/disable.html b/zh/demo/disable.html index c64b198e..3442ad7b 100644 --- a/zh/demo/disable.html +++ b/zh/demo/disable.html @@ -31,10 +31,10 @@ } - +
    跳至主要內容

    布局与功能禁用


    你可以通过设置页面的 Frontmatter,在页面禁用功能与布局。

    本页面就是一个示例,禁用了如下功能:

    • 导航栏
    • 侧边栏
    • 路径导航
    • 页面信息
    • 贡献者
    • 编辑此页链接
    • 更新时间
    • 上一篇/下一篇 链接
    • 评论
    • 页脚
    • 返回顶部按钮
    - + diff --git a/zh/demo/encrypt.html b/zh/demo/encrypt.html index 1360ca2d..5bf4bf1b 100644 --- a/zh/demo/encrypt.html +++ b/zh/demo/encrypt.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/demo/index.html b/zh/demo/index.html index 14bd489f..3a0eec07 100644 --- a/zh/demo/index.html +++ b/zh/demo/index.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/demo/markdown.html b/zh/demo/markdown.html index 06bc528f..46bec342 100644 --- a/zh/demo/markdown.html +++ b/zh/demo/markdown.html @@ -31,7 +31,7 @@ } - +
    跳至主要內容

    Markdown 展示

    Ven2s...大约 3 分钟使用指南Markdown

    VuePress 主要从 Markdown 文件生成页面。因此,你可以使用它轻松生成文档或博客站点。

    你应该创建和编写 Markdown 文件,以便 VuePress 可以根据文件结构将它们转换为不同的页面。

    Markdown 介绍

    如果你是一个新手,还不会编写 Markdown,请先阅读 Markdown 介绍open in new windowMarkdown 演示open in new window

    Markdown 配置

    VuePress 通过 Frontmatter 为每个 Markdown 页面引入配置。

    相关信息

    Frontmatter 是 VuePress 中很重要的一个概念,如果你不了解它,你需要阅读 Frontmatter 介绍open in new window

    Markdown 扩展

    VuePress 会使用 markdown-itopen in new window 来解析 Markdown 内容,因此可以借助于 markdown-it 插件来实现 语法扩展open in new window

    VuePress 扩展

    为了丰富文档写作,VuePress 对 Markdown 语法进行了扩展。

    关于这些扩展,请阅读 VuePress 中的 Markdown 扩展open in new window

    主题扩展

    通过 vuepress-plugin-md-enhanceopen in new window,主题扩展了更多 Markdown 语法,提供更加丰富的写作功能。

    自定义容器

    安全的在 Markdown 中使用 {{ variable }}。

    自定义标题

    信息容器,包含 代码链接

    const a = 1;
    @@ -126,6 +126,6 @@
     </template>
     

    :::

    幻灯片

    @slidestart

    幻灯片 1

    一个有文字和 链接open in new window 的段落


    幻灯片 2

    • 项目 1
    • 项目 2

    幻灯片 3.1

    const a = 1;
     

    --

    幻灯片 3.2

    $$
    J(\theta_0,\theta_1) = \sum_{i=0}
    $$

    @slideend


    1. 这是脚注内容 ↩︎

    评论
    • 按正序
    • 按倒序
    • 按热度
    Powered by Waline v2.15.8
    - + diff --git a/zh/demo/page.html b/zh/demo/page.html index aff38851..e943e4ef 100644 --- a/zh/demo/page.html +++ b/zh/demo/page.html @@ -31,10 +31,10 @@ } - +
    跳至主要內容
    页面配置

    页面配置

    Ms.Hope...大约 1 分钟使用指南页面配置使用指南

    more 注释之前的内容被视为文章摘要。

    页面信息

    你可以在 Markdown 的 Frontmatter 中设置页面信息。

    • 作者设置为 Ms.Hope。
    • 写作日期为 2020 年 1 月 1 日
    • 分类为 “使用指南”
    • 标签为 “页面配置” 和 “使用指南”

    页面内容

    你可以自由在这里书写你的 Markdown。

    提示

    • 你可以将图片和 Markdown 文件放置在一起,但是你需要使用相对链接./ 进行引用。

    • 对于 .vuepress/public 文件夹的图片,请使用绝对链接 / 进行引用。

    主题包含了一个自定义徽章可以使用:

    文字结尾应该有深蓝色的 徽章文字 徽章。 徽章文字

    页面结构

    此页面应当包含:

    你可以通过主题选项和页面 Frontmatter 自定义它们。

    评论
    • 按正序
    • 按倒序
    • 按热度
    Powered by Waline v2.15.8
    - + diff --git a/zh/index.html b/zh/index.html index 843bc2b2..d81691f6 100644 --- a/zh/index.html +++ b/zh/index.html @@ -31,7 +31,7 @@ } - +
    跳至主要內容
    你博客的名称

    你博客的名称

    你可以在这里放置你的口号与标语

    项目名称
    项目详细描述
    链接名称
    链接详细描述
    书籍名称
    书籍详细描述
    文章名称
    文章详细描述
    伙伴名称
    伙伴详细介绍
    自定义项目
    自定义项目
    自定义详细介绍
    番茄

    番茄

    @@ -101,6 +101,6 @@

    开始部署

    wget --no-check-certificate https://github.com/teddysun/across/raw/master/kms.sh && chmod +x kms.sh && ./kms.sh
     

    Ven2s...大约 5 分钟kmstools
    2
    3

    这是一个博客主页的案例。

    要使用此布局,你应该在页面前端设置 layout: BlogHomehome: true

    相关配置文档请见 博客主页open in new window

    - + diff --git a/zh/intro.html b/zh/intro.html index 69be3f36..bcbb36f4 100644 --- a/zh/intro.html +++ b/zh/intro.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/posts/Linux/1993.html b/zh/posts/Linux/1993.html index d153c942..d1db2e74 100644 --- a/zh/posts/Linux/1993.html +++ b/zh/posts/Linux/1993.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/posts/Linux/Best-Emoji.html b/zh/posts/Linux/Best-Emoji.html index 65259f5c..5afe741c 100644 --- a/zh/posts/Linux/Best-Emoji.html +++ b/zh/posts/Linux/Best-Emoji.html @@ -31,10 +31,10 @@ } - +
    跳至主要內容

    超酷的Emoji表情!

    Ven2s...大约 6 分钟MarkdownBlog

    Emoji表情

    风至万始苏

    原文open in new window

    将对应emoji表情的符号码复制后输入你的markdown文本即可显示emoji表情。
    如"😊",显示为😊

    人物

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bowtie::bowtie::smile:😄:laughing:😆
    :blush:😊:smiley:😃:relaxed:☺️
    :smirk:😏:heart_eyes:😍:kissing_heart:😘
    :kissing_closed_eyes:😚:flushed:😳:relieved:😌
    :satisfied:😆:grin:😁:wink:😉
    :stuck_out_tongue_winking_eye:😜:stuck_out_tongue_closed_eyes:😝:grinning:😀
    :kissing:😗:kissing_smiling_eyes:😙:stuck_out_tongue:😛
    :sleeping:😴:worried:😟:frowning:😦
    :anguished:😧:open_mouth:😮:grimacing:😬
    :confused:😕:hushed:😯:expressionless:😑
    :unamused:😒:sweat_smile:😅:sweat:😓
    :disappointed_relieved:😥:weary:😩:pensive:😔
    :disappointed:😞:confounded:😖:fearful:😨
    :cold_sweat:😰:persevere:😣:cry:😢
    :sob:😭:joy:😂:astonished:😲
    :scream:😱:neckbeard::neckbeard::tired_face:😫
    :angry:😠:rage:😡:triumph:😤
    :sleepy:😪:yum:😋:mask:😷
    :sunglasses:😎:dizzy_face:😵:imp:👿
    :smiling_imp:😈:neutral_face:😐:no_mouth:😶
    :innocent:😇:alien:👽:yellow_heart:💛
    :blue_heart:💙:purple_heart:💜:heart:❤️
    :green_heart:💚:broken_heart:💔:heartbeat:💓
    :heartpulse:💗:two_hearts:💕:revolving_hearts:💞
    :cupid:💘:sparkling_heart:💖:sparkles:
    :star::star2:🌟:dizzy:💫
    :boom:💥:collision:💥:anger:💢
    :exclamation::question::grey_exclamation:
    :grey_question::zzz:💤:dash:💨
    :sweat_drops:💦:notes:🎶:musical_note:🎵
    :fire:🔥:hankey:💩:poop:💩
    ::💩:+1:👍:thumbsup:👍
    :-1:👎:thumbsdown:👎:ok_hand:👌
    :punch:👊:facepunch:👊:fist:
    :v:✌️:wave:👋:hand:
    :raised_hand::open_hands:👐:point_up:☝️
    :point_down:👇:point_left:👈:point_right:👉
    :raised_hands:🙌:pray:🙏:point_up_2:👆
    :clap:👏:muscle:💪:metal:🤘
    :fu:🖕:walking:🚶:runner:🏃
    :running:🏃:couple:👫:family:👪
    :two_men_holding_hands:👬:two_women_holding_hands:👭:dancer:💃
    :dancers:👯:ok_woman:🙆‍♀️:no_good:🙅
    :information_desk_person:💁:raising_hand:🙋:bride_with_veil:👰‍♀️
    :person_with_pouting_face::person_with_pouting_face::person_frowning::person_frowning::bow:🙇
    :couplekiss:💏:couple_with_heart:💑:massage:💆
    :haircut:💇:nail_care:💅:boy:👦
    :girl:👧:woman:👩:man:👨
    :baby:👶:older_woman:👵:older_man:👴
    :person_with_blond_hair::person_with_blond_hair::man_with_gua_pi_mao:👲:man_with_turban:👳‍♂️
    :construction_worker:👷:cop:👮:angel:👼
    :princess:👸:smiley_cat:😺:smile_cat:😸
    :heart_eyes_cat:😻:kissing_cat:😽:smirk_cat:😼
    :scream_cat:🙀:crying_cat_face:😿:joy_cat:😹
    :pouting_cat:😾:japanese_ogre:👹:japanese_goblin:👺
    :see_no_evil:🙈:hear_no_evil:🙉:speak_no_evil:🙊
    :guardsman:💂‍♂️:skull:💀:feet:🐾
    :lips:👄:kiss:💋:droplet:💧
    :ear:👂:eyes:👀:nose:👃
    :tongue:👅:love_letter:💌:bust_in_silhouette:👤
    :busts_in_silhouette:👥:speech_balloon:💬:thought_balloon:💭
    :feelsgood::feelsgood::finnadie::finnadie::goberserk::goberserk:
    :godmode::godmode::hurtrealbad::hurtrealbad::rage1::rage1:
    :rage2::rage2::rage3::rage3::rage4::rage4:
    :suspect::suspect::trollface::trollface:

    自然

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :sunny:☀️:umbrella::cloud:☁️
    :snowflake:❄️:snowman::zap:
    :cyclone:🌀:foggy:🌁:ocean:🌊
    :cat:🐱:dog:🐶:mouse:🐭
    :hamster:🐹:rabbit:🐰:wolf:🐺
    :frog:🐸:tiger:🐯:koala:🐨
    :bear:🐻:pig:🐷:pig_nose:🐽
    :cow:🐮:boar:🐗:monkey_face:🐵
    :monkey:🐒:horse:🐴:racehorse:🐎
    :camel:🐫:sheep:🐑:elephant:🐘
    :panda_face:🐼:snake:🐍:bird:🐦
    :baby_chick:🐤:hatched_chick:🐥:hatching_chick:🐣
    :chicken:🐔:penguin:🐧:turtle:🐢
    :bug:🐛:honeybee:🐝:ant:🐜
    :beetle:🪲:snail:🐌:octopus:🐙
    :tropical_fish:🐠:fish:🐟:whale:🐳
    :whale2:🐋:dolphin:🐬:cow2:🐄
    :ram:🐏:rat:🐀:water_buffalo:🐃
    :tiger2:🐅:rabbit2:🐇:dragon:🐉
    :goat:🐐:rooster:🐓:dog2:🐕
    :pig2:🐖:mouse2:🐁:ox:🐂
    :dragon_face:🐲:blowfish:🐡:crocodile:🐊
    :dromedary_camel:🐪:leopard:🐆:cat2:🐈
    :poodle:🐩:paw_prints:🐾:bouquet:💐
    :cherry_blossom:🌸:tulip:🌷:four_leaf_clover:🍀
    :rose:🌹:sunflower:🌻:hibiscus:🌺
    :maple_leaf:🍁:leaves:🍃:fallen_leaf:🍂
    :herb:🌿:mushroom:🍄:cactus:🌵
    :palm_tree:🌴:evergreen_tree:🌲:deciduous_tree:🌳
    :chestnut:🌰:seedling:🌱:blossom:🌼
    :ear_of_rice:🌾:shell:🐚:globe_with_meridians:🌐
    :sun_with_face:🌞:full_moon_with_face:🌝:new_moon_with_face:🌚
    :new_moon:🌑:waxing_crescent_moon:🌒:first_quarter_moon:🌓
    :full_moon:🌕:waning_gibbous_moon:🌖:last_quarter_moon:🌗
    :waning_crescent_moon:🌘:last_quarter_moon_with_face:🌜:first_quarter_moon_with_face:🌛
    :moon:🌔:earth_africa:🌍:earth_americas:🌎
    :earth_asia:🌏:volcano:🌋:milky_way:🌌
    :partly_sunny::octocat::octocat::squirrel::squirrel:
    :waxing_gibbous_moon:🌔

    物体

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :bamboo:🎍:gift_heart:💝:dolls:🎎
    :school_satchel:🎒:mortar_board:🎓:flags:🎏
    :fireworks:🎆:sparkler:🎇:wind_chime:🎐
    :rice_scene:🎑:jack_o_lantern:🎃:ghost:👻
    :santa:🎅:christmas_tree:🎄:gift:🎁
    :bell:🔔:no_bell:🔕:tanabata_tree:🎋
    :tada:🎉:confetti_ball:🎊:balloon:🎈
    :crystal_ball:🔮:cd:💿:dvd:📀
    :floppy_disk:💾:camera:📷:video_camera:📹
    :movie_camera:🎥:computer:💻:tv:📺
    :iphone:📱:phone:☎️:telephone:☎️
    :telephone_receiver:📞:pager:📟:fax:📠
    :minidisc:💽:vhs:📼:sound:🔉
    :speaker:🔈:mute:🔇:loudspeaker:📢
    :mega:📣:hourglass::hourglass_flowing_sand:
    :alarm_clock::watch::radio:📻
    :satellite:📡:loop::mag:🔍
    :mag_right:🔎:unlock:🔓:lock:🔒
    :lock_with_ink_pen:🔏:closed_lock_with_key:🔐:key:🔑
    :bulb:💡:flashlight:🔦:high_brightness:🔆
    :low_brightness:🔅:electric_plug:🔌:battery:🔋
    :calling:📲:email:📧:mailbox:📫
    :postbox:📮:bath:🛀:bathtub:🛁
    :shower:🚿:toilet:🚽:wrench:🔧
    :nut_and_bolt:🔩:hammer:🔨:seat:💺
    :moneybag:💰:yen:💴:dollar:💵
    :pound:💷:euro:💶:credit_card:💳
    :money_with_wings:💸:e-mail:📧:inbox_tray:📥
    :outbox_tray:📤:envelope:✉️:incoming_envelope:📨
    :postal_horn:📯:mailbox_closed:📪:mailbox_with_mail:📬
    :mailbox_with_no_mail:📭:door:🚪:smoking:🚬
    :bomb:💣:gun:🔫:hocho:🔪
    :pill:💊:syringe:💉:page_facing_up:📄
    :page_with_curl:📃:bookmark_tabs:📑:bar_chart:📊
    :chart_with_upwards_trend:📈:chart_with_downwards_trend:📉:scroll:📜
    :clipboard:📋:calendar:📆:date:📅
    :card_index:📇:file_folder:📁:open_file_folder:📂
    :scissors:✂️:pushpin:📌:paperclip:📎
    :black_nib:✒️:pencil2:✏️:straight_ruler:📏
    :triangular_ruler:📐:closed_book:📕:green_book:📗
    :blue_book:📘:orange_book:📙:notebook:📓
    :notebook_with_decorative_cover:📔:ledger:📒:books:📚
    :bookmark:🔖:microscope:🔬:telescope:🔭
    :name_badge:📛:newspaper:📰:football:🏈
    :basketball:🏀:soccer::baseball:
    :tennis:🎾:8ball:🎱:rugby_football:🏉
    :bowling:🎳:golf::mountain_bicyclist:🚵
    :bicyclist:🚴:horse_racing:🏇:snowboarder:🏂
    :swimmer:🏊:surfer:🏄:ski:🎿
    :spades:♠️:hearts:♥️:clubs:♣️
    :diamonds:♦️:gem:💎:ring:💍
    :trophy:🏆:musical_score:🎼:musical_keyboard:🎹
    :violin:🎻:space_invader:👾:video_game:🎮
    :black_joker:🃏:flower_playing_cards:🎴:game_die:🎲
    :dart:🎯:mahjong:🀄:clapper:🎬
    :memo:📝:pencil:📝:book:📖
    :art:🎨:microphone:🎤:headphones:🎧
    :trumpet:🎺:saxophone:🎷:guitar:🎸
    :shoe:👞:sandal:👡:high_heel:👠
    :lipstick:💄:boot:👢:shirt:👕
    :tshirt:👕:necktie:👔:womans_clothes:👚
    :dress:👗:running_shirt_with_sash:🎽:jeans:👖
    :kimono:👘:bikini:👙:ribbon:🎀
    :tophat:🎩:crown:👑:womans_hat:👒
    :mans_shoe:👞:closed_umbrella:🌂:briefcase:💼
    :handbag:👜:pouch:👝:purse:👛
    :eyeglasses:👓:fishing_pole_and_fish:🎣:coffee:
    :tea:🍵:sake:🍶:baby_bottle:🍼
    :beer:🍺:beers:🍻:cocktail:🍸
    :tropical_drink:🍹:wine_glass:🍷:fork_and_knife:🍴
    :pizza:🍕:hamburger:🍔:fries:🍟
    :poultry_leg:🍗:meat_on_bone:🍖:spaghetti:🍝
    :curry:🍛:fried_shrimp:🍤:bento:🍱
    :sushi:🍣:fish_cake:🍥:rice_ball:🍙
    :rice_cracker:🍘:rice:🍚:ramen:🍜
    :stew:🍲:oden:🍢:dango:🍡
    :egg:🥚:bread:🍞:doughnut:🍩
    :custard:🍮:icecream:🍦:ice_cream:🍨
    :shaved_ice:🍧:birthday:🎂:cake:🍰
    :cookie:🍪:chocolate_bar:🍫:candy:🍬
    :lollipop:🍭:honey_pot:🍯:apple:🍎
    :green_apple:🍏:tangerine:🍊:lemon:🍋
    :cherries:🍒:grapes:🍇:watermelon:🍉
    :strawberry:🍓:peach:🍑:melon:🍈
    :banana:🍌:pear:🍐:pineapple:🍍
    :sweet_potato:🍠:eggplant:🍆:tomato:🍅
    :corn:🌽

    地点

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :house:🏠:house_with_garden:🏡:school:🏫
    :office:🏢:post_office:🏣:hospital:🏥
    :bank:🏦:convenience_store:🏪:love_hotel:🏩
    :hotel:🏨:wedding:💒:church:
    :department_store:🏬:european_post_office:🏤:city_sunrise:🌇
    :city_sunset:🌆:japanese_castle:🏯:european_castle:🏰
    :tent::factory:🏭:tokyo_tower:🗼
    :japan:🗾:mount_fuji:🗻:sunrise_over_mountains:🌄
    :sunrise:🌅:stars:🌠:statue_of_liberty:🗽
    :bridge_at_night:🌉:carousel_horse:🎠:rainbow:🌈
    :ferris_wheel:🎡:fountain::roller_coaster:🎢
    :ship:🚢:speedboat:🚤:boat:
    :sailboat::rowboat:🚣:anchor:
    :rocket:🚀:airplane:✈️:helicopter:🚁
    :steam_locomotive:🚂:tram:🚊:mountain_railway:🚞
    :bike:🚲:aerial_tramway:🚡:suspension_railway:🚟
    :mountain_cableway:🚠:tractor:🚜:blue_car:🚙
    :oncoming_automobile:🚘:car:🚗:red_car:🚗
    :taxi:🚕:oncoming_taxi:🚖:articulated_lorry:🚛
    :bus:🚌:oncoming_bus:🚍:rotating_light:🚨
    :police_car:🚓:oncoming_police_car:🚔:fire_engine:🚒
    :ambulance:🚑:minibus:🚐:truck:🚚
    :train:🚋:station:🚉:train2:🚆
    :bullettrain_front:🚅:bullettrain_side:🚄:light_rail:🚈
    :monorail:🚝:railway_car:🚃:trolleybus:🚎
    :ticket:🎫:fuelpump::vertical_traffic_light:🚦
    :traffic_light:🚥:warning:⚠️:construction:🚧
    :beginner:🔰:atm:🏧:slot_machine:🎰
    :busstop:🚏:barber:💈:hotsprings:♨️
    :checkered_flag:🏁:crossed_flags:🎌:izakaya_lantern:🏮
    :moyai:🗿:circus_tent:🎪:performing_arts:🎭
    :round_pushpin:📍:triangular_flag_on_post:🚩:jp:🇯🇵
    :kr:🇰🇷:cn:🇨🇳:us:🇺🇸
    :fr:🇫🇷:es:🇪🇸:it:🇮🇹
    :ru:🇷🇺:gb:🇬🇧:uk:🇬🇧
    :de:🇩🇪

    符号

    syntaxpreviewsyntaxpreviewsyntaxpreview
    :one:1️⃣:two:2️⃣:three:3️⃣
    :four:4️⃣:five:5️⃣:six:6️⃣
    :seven:7️⃣:eight:8️⃣:nine:9️⃣
    :keycap_ten:🔟:1234:🔢:zero:0️⃣
    :hash:#️⃣:symbols:🔣:arrow_backward:◀️
    :arrow_down:⬇️:arrow_forward:▶️:arrow_left:⬅️
    :capital_abcd:🔠:abcd:🔡:abc:🔤
    :arrow_lower_left:↙️:arrow_lower_right:↘️:arrow_right:➡️
    :arrow_up:⬆️:arrow_upper_left:↖️:arrow_upper_right:↗️
    :arrow_double_down::arrow_double_up::arrow_down_small:🔽
    :arrow_heading_down:⤵️:arrow_heading_up:⤴️:leftwards_arrow_with_hook:↩️
    :arrow_right_hook:↪️:left_right_arrow:↔️:arrow_up_down:↕️
    :arrow_up_small:🔼:arrows_clockwise:🔃:arrows_counterclockwise:🔄
    :rewind::fast_forward::information_source:ℹ️
    :ok:🆗:twisted_rightwards_arrows:🔀:repeat:🔁
    :repeat_one:🔂:new:🆕:top:🔝
    :up:🆙:cool:🆒:free:🆓
    :ng:🆖:cinema:🎦:koko:🈁
    :signal_strength:📶:u5272::u5272::u5408::u5408:
    :u55b6::u55b6::u6307::u6307::u6708::u6708:
    :u6709::u6709::u6e80:🈵:u7121::u7121:
    :u7533::u7533::u7a7a::u7a7a::u7981::u7981:
    :sa:🈂️:restroom:🚻:mens:🚹
    :womens:🚺:baby_symbol:🚼:no_smoking:🚭
    :parking:🅿️:wheelchair::metro:🚇
    :baggage_claim:🛄:accept:🉑:wc:🚾
    :potable_water:🚰:put_litter_in_its_place:🚮:secret:㊙️
    :congratulations:㊗️:m:Ⓜ️:passport_control:🛂
    :left_luggage:🛅:customs:🛃:ideograph_advantage:🉐
    :cl:🆑:sos:🆘:id:🆔
    :no_entry_sign:🚫:underage:🔞:no_mobile_phones:📵
    :do_not_litter:🚯:non-potable_water:🚱:no_bicycles:🚳
    :no_pedestrians:🚷:children_crossing:🚸:no_entry:
    :eight_spoked_asterisk:✳️:eight_pointed_black_star:✴️:heart_decoration:💟
    :vs:🆚:vibration_mode:📳:mobile_phone_off:📴
    :chart:💹:currency_exchange:💱:aries:
    :taurus::gemini::cancer:
    :leo::virgo::libra:
    :scorpius::sagittarius::capricorn:
    :aquarius::pisces::ophiuchus:
    :six_pointed_star:🔯:negative_squared_cross_mark::a:🅰️
    :b:🅱️:ab:🆎:o2:🅾️
    :diamond_shape_with_a_dot_inside:💠:recycle:♻️:end:🔚
    :on:🔛:soon:🔜:clock1:🕐
    :clock130:🕜:clock10:🕙:clock1030:🕥
    :clock11:🕚:clock1130:🕦:clock12:🕛
    :clock1230:🕧:clock2:🕑:clock230:🕝
    :clock3:🕒:clock330:🕞:clock4:🕓
    :clock430:🕟:clock5:🕔:clock530:🕠
    :clock6:🕕:clock630:🕡:clock7:🕖
    :clock730:🕢:clock8:🕗:clock830:🕣
    :clock9:🕘:clock930:🕤:heavy_dollar_sign:💲
    :copyright:©️:registered:®️:tm:™️
    :x::heavy_exclamation_mark::bangbang:‼️
    :interrobang:⁉️:o::heavy_multiplication_x:✖️
    :heavy_plus_sign::heavy_minus_sign::heavy_division_sign:
    :white_flower:💮:100:💯:heavy_check_mark:✔️
    :ballot_box_with_check:☑️:radio_button:🔘:link:🔗
    :curly_loop::wavy_dash:〰️:part_alternation_mark:〽️
    :trident:🔱:black_large_square::white_large_square:
    :white_check_mark::white_square_button:🔳:black_square_button:🔲
    :black_circle::white_circle::red_circle:🔴
    :large_blue_circle:🔵:large_blue_diamond:🔷:large_orange_diamond:🔶
    :small_blue_diamond:🔹:small_orange_diamond:🔸:small_red_triangle:🔺
    :small_red_triangle_down:🔻:shipit::shipit:
    评论
    • 按正序
    • 按倒序
    • 按热度
    Powered by Waline v2.15.8
    - + diff --git a/zh/posts/Linux/beautification.html b/zh/posts/Linux/beautification.html index 142775a7..38f3d2ee 100644 --- a/zh/posts/Linux/beautification.html +++ b/zh/posts/Linux/beautification.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/posts/Linux/index.html b/zh/posts/Linux/index.html index 895164ae..d4792629 100644 --- a/zh/posts/Linux/index.html +++ b/zh/posts/Linux/index.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/posts/MacOS/Hackintosh.html b/zh/posts/MacOS/Hackintosh.html index 639eb820..a1424ae5 100644 --- a/zh/posts/MacOS/Hackintosh.html +++ b/zh/posts/MacOS/Hackintosh.html @@ -31,10 +31,10 @@ } - +
    跳至主要內容

    Hackintosh

    Ven2s...大约 3 分钟Hackintosh

    Hackintosh Reboot Plan

    闲话 回忆与现在

    • 从大学接触黑苹果开始,算起来已经有了8、9年的时光了,想起那会的“废寝忘食”,真是让人觉得虚度光阴、浪费精力。也许也是从那时候开始,养成了爱折腾的习惯。

    • 之前家里闲置的笔记本被我拿来做软路由,最开始只是在 pve 上跑 openWRT ,满足一些魔法需求,刚好最近又在搞内网穿透,这台单网口、传输速率低得吓人的设备实在无法满足现在愈来愈强的需求。

    • 故此,本意是在网上选购一台性价比较高的软路由,选着选着不知道怎就看到了一台十分合心意的小主机,实在按捺不住折腾的心情,就对老婆先斩后奏买了下来(幸得老婆宽厚,又加上我整天闹着要 NAS ,对比之下,这台小主机的价格还是让她允了下来)

    • 刚好因工作原因经常奔波两地,加上最近频繁地码字建站,用这台小主机组一台黑苹果,重温下精美的 MacOS ,既能在家里和单位用,也能提高码字的效率,办公、开发两不误。

    主机及配置

    • 在网上看了很多视频和教程,左挑右选,最终选择了惠普的 800-G4-DM 准系统主机,外加 I5 8500T 的8代 cpu。基本配置如下:

    • ||主机|惠普 HP EliteDesk 800 G4 DM||
      |:---😐:---😐:---😐:---😐
      ||主板|惠普Q370|||
      || CPU |酷睿 i5 8500T ||
      || 显卡 |集成 Intel UHD Graphics 630||
      || 内存 |DDR4 2400MHz 三星16GB(2X8GB)||
      ||无线网卡|博通 BCM94352Z 无线/蓝牙网卡|||
      ||固态硬盘|台电 256G SSD (加装2T SATA SSD)|||
      ||OpenCore|0.9.1|||
      ||MacOS|Ventura 13.3.1 (22E261)|||

    • 完美主义的黑苹果完美度:
    状态完美
    CPU睿频Yes✔︎
    VDA 解码器完全支持✔︎
    IGPU硬件加速(QE/CI)Yes✔︎
    Metal支持Yes✔︎
    USB定制/完整识别Yes✔︎
    网卡内建Yes✔︎
    WIFI免驱Yes✔︎
    蓝牙全功能YesHackintool无法识别,使用正常(又不是不能用.jpg)
    AirDrop全功能No仅支持从iOS端投送到Mac
    核显输出定制/全功能No截编时只完美一个“DP-HDMI”,其余两个输出口等有测试显示器再折腾
    声音全功能Yes✔︎
    序列号有效没有被用过的序列号Yes✔︎
    iMessage全功能Yes✔︎解放手机 Get
    随航功能Yes✔︎新功能真爽,iOS和 macOS无缝衔接
    HiDPi开启No能开,显示器物理分辨率太低,再开启HiDPi的分辨率更低,就很难受(有了4K显示器再说吧)
    睡眠开启Yes✔︎随睡随醒
    • 系统图鉴

    View More Screenshots

    1
    1

    1
    图鉴
    View More Screenshots

    工具及配参

    所需工具

    名称用途下载
    SSDTTime获取DSDT、SSDTDownloadopen in new window
    ACPICA编译和反编译DSDTDownloadopen in new window
    OpenCorePkgOpenCore引导加载程序Downloadopen in new window
    ProperTree跨平台GUIPlist编辑器Downloadopen in new window
    gibMacOSMacOS恢复镜像下载工具Downloadopen in new window
    GenSMBIOS生成SMBIOSDownloadopen in new window

    环境搭建

    评论
    • 按正序
    • 按倒序
    • 按热度
    Powered by Waline v2.15.8
    - + diff --git a/zh/posts/MacOS/index.html b/zh/posts/MacOS/index.html index 5c6e12c7..ce9613b5 100644 --- a/zh/posts/MacOS/index.html +++ b/zh/posts/MacOS/index.html @@ -31,10 +31,10 @@ } - + - + diff --git a/zh/posts/Server/1.html b/zh/posts/Server/1.html index 3dc96193..49a7e8cf 100644 --- a/zh/posts/Server/1.html +++ b/zh/posts/Server/1.html @@ -5,7 +5,7 @@ - 苹果 1 | 风至万始苏 + 苹果 1 | 风至万始苏