Deploying to gh-pages from @ LingASDJ/RW-API-Code #9

This commit is contained in:
LingASDJ 2023-08-22 23:38:38 +08:00
parent 685364d00e
commit e738d7f395
61 changed files with 1188 additions and 1194 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
import{_ as e,K as p,o as c,c as r,k as s,a,O as n,w as o,X as t}from"./chunks/framework.d377e0cc.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t(`<h4 id="其他说明" tabindex="-1">其他说明: <a class="header-anchor" href="#其他说明" aria-label="Permalink to &quot;其他说明:&quot;"></a></h4><p>有关于MarkDown的其他书写格式请参考MD书写规范<br><a href="https://docs.github.com/zh/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax" target="_blank" rel="noreferrer">MD文档参考--点我立刻学习</a></p><h4 id="附加说明" tabindex="-1">附加说明: <a class="header-anchor" href="#附加说明" aria-label="Permalink to &quot;附加说明:&quot;"></a></h4><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">由于插件众多为避免MD格式冲突换行建议最好使用&lt;br&gt;进行换行,</span></span>
<span class="line"><span style="color:#A6ACCD;">如果要在一些扩展格式渲染演示请使用&lt;font&gt;标签,</span></span></code></pre></div><h4 id="" tabindex="-1"> <a class="header-anchor" href="#" aria-label="Permalink to &quot;&quot;"></a></h4><div class="info custom-block"><p class="custom-block-title">INFO</p><p>1.</p></div>`,6),w={class:"tip custom-block"},x=s("p",{class:"custom-block-title"},"TIP",-1),I=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),M=s("br",null,null,-1),V=s("br",null,null,-1),O=s("br",null,null,-1),G=t(`<h4 id="_1-md" tabindex="-1">1.MD <a class="header-anchor" href="#_1-md" aria-label="Permalink to &quot;1.MD&quot;"></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">::: info</span></span>
import{_ as e,c as p,C as s,a,I as n,E as o,V as t,J as c,o as r}from"./chunks/framework.fcc0bf38.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t(`<h4 id="其他说明" tabindex="-1">其他说明: <a class="header-anchor" href="#其他说明" aria-label="Permalink to &quot;其他说明:&quot;"></a></h4><p>有关于MarkDown的其他书写格式请参考MD书写规范<br><a href="https://docs.github.com/zh/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax" target="_blank" rel="noreferrer">MD文档参考--点我立刻学习</a></p><h4 id="附加说明" tabindex="-1">附加说明: <a class="header-anchor" href="#附加说明" aria-label="Permalink to &quot;附加说明:&quot;"></a></h4><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">由于插件众多为避免MD格式冲突换行建议最好使用&lt;br&gt;进行换行,</span></span>
<span class="line"><span style="color:#A6ACCD;">如果要在一些扩展格式渲染演示请使用&lt;font&gt;标签,</span></span></code></pre></div><h4 id="" tabindex="-1"> <a class="header-anchor" href="#" aria-label="Permalink to &quot;&quot;"></a></h4><div class="info custom-block"><p class="custom-block-title">INFO</p><p>1.</p></div>`,6),I={class:"tip custom-block"},w=s("p",{class:"custom-block-title"},"TIP",-1),x=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),V=s("br",null,null,-1),M=s("br",null,null,-1),O=s("br",null,null,-1),G=t(`<h4 id="_1-md" tabindex="-1">1.MD <a class="header-anchor" href="#_1-md" aria-label="Permalink to &quot;1.MD&quot;"></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">::: info</span></span>
<span class="line"><span style="color:#A6ACCD;">信息文本</span></span>
<span class="line"><span style="color:#A6ACCD;">:::</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
@ -34,4 +34,4 @@ import{_ as e,K as p,o as c,c as r,k as s,a,O as n,w as o,X as t}from"./chunks/f
`,-1),$=t(`<div class="language-html"><button title="Copy Code" class="copy"></button><span class="lang">html</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">iframe</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">src</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"></span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">scrolling</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">no</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> border=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">frameborder</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">no</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">framespacing</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">allowfullscreen</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">true</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">width</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">100%</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">height</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">400</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">iframe</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><h4 id="_3-" tabindex="-1">3. <a class="header-anchor" href="#_3-" aria-label="Permalink to &quot;3.&quot;"></a></h4><h3 id="" tabindex="-1"> <a class="header-anchor" href="#" aria-label="Permalink to &quot;&quot;"></a></h3><table><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>3</td></tr></tbody></table><h3 id="" tabindex="-1"> <a class="header-anchor" href="#" aria-label="Permalink to &quot;&quot;"></a></h3><div class="language-markdown"><button title="Copy Code" class="copy"></button><span class="lang">markdown</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">|A|B|C| </span></span>
<span class="line"><span style="color:#A6ACCD;">|-|-|-</span></span>
<span class="line"><span style="color:#A6ACCD;">|1|2|3|</span></span></code></pre></div><p>Markdown</p><h3><a href="https://tableconvert.com/zh-cn/markdown-to-markdown" target="_blank">TableConvert-MD-</a></h3><h3 id="_4--" tabindex="-1">4.() <a class="header-anchor" href="#_4--" aria-label="Permalink to &quot;4.()&quot;"></a></h3><p>西 Markdown<br> 使Html </p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>IssuesPR</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>2023-5-9 RTS-Code-API[3-3]</p></div>`,12);function j(H,W,z,X,J,K){const l=p("font");return c(),r("div",null,[d,u,s("div",h,[D,s("p",null,[a("0."),n(l,{color:"orange"},{default:o(()=>[a("")]),_:1}),a(","),_,a(" Github"),n(l,{color:"orange"},{default:o(()=>[a("Clone")]),_:1}),a(""),y,a(" PR"),C]),b,A]),s("div",m,[F,s("p",null,[a("使使HTTPS"),g,a(" "),n(l,{color:"orange"},{default:o(()=>[a("Google ChromeCEF")]),_:1}),a("HTTPS")])]),s("div",f,[k,s("p",null,[a("使 西"),n(l,{color:"green"},{default:o(()=>[a("PR")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("便"),n(l,{color:"green"},{default:o(()=>[a("MD")]),_:1})])]),T,s("div",w,[x,s("p",null,[a(""),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 使"),I]),N]),E,s("div",S,[R,s("p",null,[a("PRNetlify"),M,a(" NetlifyPR"),V,a(" "),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview")]),_:1})]),a(""),O,a(" TXNetlify使")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};
<span class="line"><span style="color:#A6ACCD;">|1|2|3|</span></span></code></pre></div><p>Markdown</p><h3><a href="https://tableconvert.com/zh-cn/markdown-to-markdown" target="_blank">TableConvert-MD-</a></h3><h3 id="_4--" tabindex="-1">4.() <a class="header-anchor" href="#_4--" aria-label="Permalink to &quot;4.()&quot;"></a></h3><p>西 Markdown<br> 使Html </p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>IssuesPR</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>2023-5-9 RTS-Code-API[3-3]</p></div>`,12);function j(H,W,z,J,X,K){const l=c("font");return r(),p("div",null,[d,u,s("div",h,[D,s("p",null,[a("0."),n(l,{color:"orange"},{default:o(()=>[a("")]),_:1}),a(","),_,a(" Github"),n(l,{color:"orange"},{default:o(()=>[a("Clone")]),_:1}),a(""),y,a(" PR"),C]),b,A]),s("div",m,[F,s("p",null,[a("使使HTTPS"),g,a(" "),n(l,{color:"orange"},{default:o(()=>[a("Google ChromeCEF")]),_:1}),a("HTTPS")])]),s("div",f,[k,s("p",null,[a("使 西"),n(l,{color:"green"},{default:o(()=>[a("PR")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("便"),n(l,{color:"green"},{default:o(()=>[a("MD")]),_:1})])]),T,s("div",I,[w,s("p",null,[a(""),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 使"),x]),N]),E,s("div",S,[R,s("p",null,[a("PRNetlify"),V,a(" NetlifyPR"),M,a(" "),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview")]),_:1})]),a(""),O,a(" TXNetlify使")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};

View File

@ -1,2 +1,2 @@
import{_ as e,K as p,o as c,c as r,k as s,a,O as n,w as o,X as t}from"./chunks/framework.d377e0cc.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t("",6),w={class:"tip custom-block"},x=s("p",{class:"custom-block-title"},"TIP",-1),I=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify部署")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),M=s("br",null,null,-1),V=s("br",null,null,-1),O=s("br",null,null,-1),G=t("",12),B=s("iframe",{src:"https://vdse.bdstatic.com//192d9a98d782d9c74c96f09db9378d93.mp4",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true",width:"100%",height:"400"},`
`,-1),$=t("",12);function j(H,W,z,X,J,K){const l=p("font");return c(),r("div",null,[d,u,s("div",h,[D,s("p",null,[a("0.如果你确定你想"),n(l,{color:"orange"},{default:o(()=>[a("帮忙开发此站点")]),_:1}),a(","),_,a(" 就可以点击右上角的Github按钮"),n(l,{color:"orange"},{default:o(()=>[a("Clone我们的库")]),_:1}),a(""),y,a(" 编写代码并进行PR申请我非常感谢你的帮忙感谢各位的支持与帮助。"),C]),b,A]),s("div",m,[F,s("p",null,[a("使用外部资源时请使用支持HTTPS协议的资源地址传输。"),g,a(" 否则在"),n(l,{color:"orange"},{default:o(()=>[a("Google Chrome等一系列以CEF的内核")]),_:1}),a("上会因为强制替换HTTPS导致资源无法打开。")])]),s("div",f,[k,s("p",null,[a("不能使用过于高深的说明,严禁出现谜语人话语,无用话语,任何玩梗, 夹带私货等一系列与本站无关的东西,违者将不能通过"),n(l,{color:"green"},{default:o(()=>[a("PR审核")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("为了更好的方便一起编写站点的贡献者,本站点提供了以下的"),n(l,{color:"green"},{default:o(()=>[a("扩展MD格式供各位书写")]),_:1})])]),T,s("div",w,[x,s("p",null,[a("如果要本地测试,请确保设备有"),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 并在项目根目录使用以下命令:"),I]),N]),E,s("div",S,[R,s("p",null,[a("如果你已经发送了PR请求可以通过我的Netlify预览站点进行预览"),M,a(" Netlify会在你的PR请求下面显示你的预览页面地址。"),V,a(" 点击"),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview后面的链接")]),_:1})]),a("即可看见效果"),O,a(" 由于某些原因TX会拦截Netlify的站点请使用浏览器预览。")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};
import{_ as e,c as p,C as s,a,I as n,E as o,V as t,J as c,o as r}from"./chunks/framework.fcc0bf38.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t("",6),I={class:"tip custom-block"},w=s("p",{class:"custom-block-title"},"TIP",-1),x=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify部署")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),V=s("br",null,null,-1),M=s("br",null,null,-1),O=s("br",null,null,-1),G=t("",12),B=s("iframe",{src:"https://vdse.bdstatic.com//192d9a98d782d9c74c96f09db9378d93.mp4",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true",width:"100%",height:"400"},`
`,-1),$=t("",12);function j(H,W,z,J,X,K){const l=c("font");return r(),p("div",null,[d,u,s("div",h,[D,s("p",null,[a("0.如果你确定你想"),n(l,{color:"orange"},{default:o(()=>[a("帮忙开发此站点")]),_:1}),a(","),_,a(" 就可以点击右上角的Github按钮"),n(l,{color:"orange"},{default:o(()=>[a("Clone我们的库")]),_:1}),a(""),y,a(" 编写代码并进行PR申请我非常感谢你的帮忙感谢各位的支持与帮助。"),C]),b,A]),s("div",m,[F,s("p",null,[a("使用外部资源时请使用支持HTTPS协议的资源地址传输。"),g,a(" 否则在"),n(l,{color:"orange"},{default:o(()=>[a("Google Chrome等一系列以CEF的内核")]),_:1}),a("上会因为强制替换HTTPS导致资源无法打开。")])]),s("div",f,[k,s("p",null,[a("不能使用过于高深的说明,严禁出现谜语人话语,无用话语,任何玩梗, 夹带私货等一系列与本站无关的东西,违者将不能通过"),n(l,{color:"green"},{default:o(()=>[a("PR审核")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("为了更好的方便一起编写站点的贡献者,本站点提供了以下的"),n(l,{color:"green"},{default:o(()=>[a("扩展MD格式供各位书写")]),_:1})])]),T,s("div",I,[w,s("p",null,[a("如果要本地测试,请确保设备有"),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 并在项目根目录使用以下命令:"),x]),N]),E,s("div",S,[R,s("p",null,[a("如果你已经发送了PR请求可以通过我的Netlify预览站点进行预览"),V,a(" Netlify会在你的PR请求下面显示你的预览页面地址。"),M,a(" 点击"),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview后面的链接")]),_:1})]),a("即可看见效果"),O,a(" 由于某些原因TX会拦截Netlify的站点请使用浏览器预览。")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};

View File

@ -1,961 +0,0 @@
import{_ as tn,o as nn,b as rn,w as an,l as sn,p as on,m as cn,k as T,G as le,a5 as ln,a6 as un,a7 as dn,a8 as fn,a9 as hn,aa as pn,ab as mn,ac as gn,ad as bn,ae as _n,$ as In,d as yn,u as En,j as wn,A as Tn,af as vn,ag as An,ah as Sn,ai as Cn}from"./chunks/framework.d377e0cc.js";import{t as rt}from"./chunks/theme.c4d0bb19.js";/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*//**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const it=function(t){const e=[];let n=0;for(let r=0;r<t.length;r++){let i=t.charCodeAt(r);i<128?e[n++]=i:i<2048?(e[n++]=i>>6|192,e[n++]=i&63|128):(i&64512)===55296&&r+1<t.length&&(t.charCodeAt(r+1)&64512)===56320?(i=65536+((i&1023)<<10)+(t.charCodeAt(++r)&1023),e[n++]=i>>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=i&63|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=i&63|128)}return e},Rn=function(t){const e=[];let n=0,r=0;for(;n<t.length;){const i=t[n++];if(i<128)e[r++]=String.fromCharCode(i);else if(i>191&&i<224){const a=t[n++];e[r++]=String.fromCharCode((i&31)<<6|a&63)}else if(i>239&&i<365){const a=t[n++],s=t[n++],o=t[n++],c=((i&7)<<18|(a&63)<<12|(s&63)<<6|o&63)-65536;e[r++]=String.fromCharCode(55296+(c>>10)),e[r++]=String.fromCharCode(56320+(c&1023))}else{const a=t[n++],s=t[n++];e[r++]=String.fromCharCode((i&15)<<12|(a&63)<<6|s&63)}}return e.join("")},at={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(t,e){if(!Array.isArray(t))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let i=0;i<t.length;i+=3){const a=t[i],s=i+1<t.length,o=s?t[i+1]:0,c=i+2<t.length,l=c?t[i+2]:0,d=a>>2,h=(a&3)<<4|o>>4;let g=(o&15)<<2|l>>6,b=l&63;c||(b=64,s||(g=64)),r.push(n[d],n[h],n[g],n[b])}return r.join("")},encodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(t):this.encodeByteArray(it(t),e)},decodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(t):Rn(this.decodeStringToByteArray(t,e))},decodeStringToByteArray(t,e){this.init_();const n=e?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let i=0;i<t.length;){const a=n[t.charAt(i++)],o=i<t.length?n[t.charAt(i)]:0;++i;const l=i<t.length?n[t.charAt(i)]:64;++i;const h=i<t.length?n[t.charAt(i)]:64;if(++i,a==null||o==null||l==null||h==null)throw new Dn;const g=a<<2|o>>4;if(r.push(g),l!==64){const b=o<<4&240|l>>2;if(r.push(b),h!==64){const en=l<<6&192|h;r.push(en)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let t=0;t<this.ENCODED_VALS.length;t++)this.byteToCharMap_[t]=this.ENCODED_VALS.charAt(t),this.charToByteMap_[this.byteToCharMap_[t]]=t,this.byteToCharMapWebSafe_[t]=this.ENCODED_VALS_WEBSAFE.charAt(t),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[t]]=t,t>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(t)]=t,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(t)]=t)}}};class Dn extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const Mn=function(t){const e=it(t);return at.encodeByteArray(e,!0)},st=function(t){return Mn(t).replace(/\./g,"")},Nn=function(t){try{return at.decodeString(t,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};/**
* @license
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function On(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/**
* @license
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Pn=()=>On().__FIREBASE_DEFAULTS__,Bn=()=>{if(typeof process>"u"||typeof process.env>"u")return;const t={}.__FIREBASE_DEFAULTS__;if(t)return JSON.parse(t)},kn=()=>{if(typeof document>"u")return;let t;try{t=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const e=t&&Nn(t[1]);return e&&JSON.parse(e)},Fn=()=>{try{return Pn()||Bn()||kn()}catch(t){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${t}`);return}},$n=()=>{var t;return(t=Fn())===null||t===void 0?void 0:t.config};/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Ln{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,n)=>{this.resolve=e,this.reject=n})}wrapCallback(e){return(n,r)=>{n?this.reject(n):this.resolve(r),typeof e=="function"&&(this.promise.catch(()=>{}),e.length===1?e(n):e(n,r))}}}function Un(){const t=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof t=="object"&&t.id!==void 0}function _e(){try{return typeof indexedDB=="object"}catch{return!1}}function Ie(){return new Promise((t,e)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var a;e(((a=i.error)===null||a===void 0?void 0:a.message)||"")}}catch(n){e(n)}})}function ot(){return!(typeof navigator>"u"||!navigator.cookieEnabled)}/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const xn="FirebaseError";class k extends Error{constructor(e,n,r){super(n),this.code=e,this.customData=r,this.name=xn,Object.setPrototypeOf(this,k.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,x.prototype.create)}}class x{constructor(e,n,r){this.service=e,this.serviceName=n,this.errors=r}create(e,...n){const r=n[0]||{},i=`${this.service}/${e}`,a=this.errors[e],s=a?jn(a,r):"Error",o=`${this.serviceName}: ${s} (${i}).`;return new k(i,o,r)}}function jn(t,e){return t.replace(Vn,(n,r)=>{const i=e[r];return i!=null?String(i):`<${r}?>`})}const Vn=/\{\$([^}]+)}/g;function H(t,e){if(t===e)return!0;const n=Object.keys(t),r=Object.keys(e);for(const i of n){if(!r.includes(i))return!1;const a=t[i],s=e[i];if(Ne(a)&&Ne(s)){if(!H(a,s))return!1}else if(a!==s)return!1}for(const i of r)if(!n.includes(i))return!1;return!0}function Ne(t){return t!==null&&typeof t=="object"}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Hn=1e3,zn=2,qn=4*60*60*1e3,Gn=.5;function Oe(t,e=Hn,n=zn){const r=e*Math.pow(n,t),i=Math.round(Gn*r*(Math.random()-.5)*2);return Math.min(qn,r+i)}/**
* @license
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function ye(t){return t&&t._delegate?t._delegate:t}class v{constructor(e,n,r){this.name=e,this.instanceFactory=n,this.type=r,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const D="[DEFAULT]";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Wn{constructor(e,n){this.name=e,this.container=n,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const n=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(n)){const r=new Ln;if(this.instancesDeferred.set(n,r),this.isInitialized(n)||this.shouldAutoInitialize())try{const i=this.getOrInitializeService({instanceIdentifier:n});i&&r.resolve(i)}catch{}}return this.instancesDeferred.get(n).promise}getImmediate(e){var n;const r=this.normalizeInstanceIdentifier(e==null?void 0:e.identifier),i=(n=e==null?void 0:e.optional)!==null&&n!==void 0?n:!1;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(a){if(i)return null;throw a}else{if(i)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,!!this.shouldAutoInitialize()){if(Xn(e))try{this.getOrInitializeService({instanceIdentifier:D})}catch{}for(const[n,r]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(n);try{const a=this.getOrInitializeService({instanceIdentifier:i});r.resolve(a)}catch{}}}}clearInstance(e=D){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(n=>"INTERNAL"in n).map(n=>n.INTERNAL.delete()),...e.filter(n=>"_delete"in n).map(n=>n._delete())])}isComponentSet(){return this.component!=null}isInitialized(e=D){return this.instances.has(e)}getOptions(e=D){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:n={}}=e,r=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:r,options:n});for(const[a,s]of this.instancesDeferred.entries()){const o=this.normalizeInstanceIdentifier(a);r===o&&s.resolve(i)}return i}onInit(e,n){var r;const i=this.normalizeInstanceIdentifier(n),a=(r=this.onInitCallbacks.get(i))!==null&&r!==void 0?r:new Set;a.add(e),this.onInitCallbacks.set(i,a);const s=this.instances.get(i);return s&&e(s,i),()=>{a.delete(e)}}invokeOnInitCallbacks(e,n){const r=this.onInitCallbacks.get(n);if(r)for(const i of r)try{i(e,n)}catch{}}getOrInitializeService({instanceIdentifier:e,options:n={}}){let r=this.instances.get(e);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:Kn(e),options:n}),this.instances.set(e,r),this.instancesOptions.set(e,n),this.invokeOnInitCallbacks(r,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,r)}catch{}return r||null}normalizeInstanceIdentifier(e=D){return this.component?this.component.multipleInstances?e:D:e}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}}function Kn(t){return t===D?void 0:t}function Xn(t){return t.instantiationMode==="EAGER"}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Yn{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const n=this.getProvider(e.name);if(n.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);n.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const n=new Wn(e,this);return this.providers.set(e,n),n}getProviders(){return Array.from(this.providers.values())}}/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/var u;(function(t){t[t.DEBUG=0]="DEBUG",t[t.VERBOSE=1]="VERBOSE",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.SILENT=5]="SILENT"})(u||(u={}));const Jn={debug:u.DEBUG,verbose:u.VERBOSE,info:u.INFO,warn:u.WARN,error:u.ERROR,silent:u.SILENT},Qn=u.INFO,Zn={[u.DEBUG]:"log",[u.VERBOSE]:"log",[u.INFO]:"info",[u.WARN]:"warn",[u.ERROR]:"error"},er=(t,e,...n)=>{if(e<t.logLevel)return;const r=new Date().toISOString(),i=Zn[e];if(i)console[i](`[${r}] ${t.name}:`,...n);else throw new Error(`Attempted to log a message with an invalid logType (value: ${e})`)};class Ee{constructor(e){this.name=e,this._logLevel=Qn,this._logHandler=er,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in u))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel=typeof e=="string"?Jn[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if(typeof e!="function")throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,u.DEBUG,...e),this._logHandler(this,u.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,u.VERBOSE,...e),this._logHandler(this,u.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,u.INFO,...e),this._logHandler(this,u.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,u.WARN,...e),this._logHandler(this,u.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,u.ERROR,...e),this._logHandler(this,u.ERROR,...e)}}const tr=(t,e)=>e.some(n=>t instanceof n);let Pe,Be;function nr(){return Pe||(Pe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function rr(){return Be||(Be=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const ct=new WeakMap,ue=new WeakMap,lt=new WeakMap,J=new WeakMap,we=new WeakMap;function ir(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",a),t.removeEventListener("error",s)},a=()=>{n(A(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",a),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&ct.set(n,t)}).catch(()=>{}),we.set(e,t),e}function ar(t){if(ue.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",a),t.removeEventListener("error",s),t.removeEventListener("abort",s)},a=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",a),t.addEventListener("error",s),t.addEventListener("abort",s)});ue.set(t,e)}let de={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return ue.get(t);if(e==="objectStoreNames")return t.objectStoreNames||lt.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return A(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function sr(t){de=t(de)}function or(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Q(this),e,...n);return lt.set(r,e.sort?e.sort():[e]),A(r)}:rr().includes(t)?function(...e){return t.apply(Q(this),e),A(ct.get(this))}:function(...e){return A(t.apply(Q(this),e))}}function cr(t){return typeof t=="function"?or(t):(t instanceof IDBTransaction&&ar(t),tr(t,nr())?new Proxy(t,de):t)}function A(t){if(t instanceof IDBRequest)return ir(t);if(J.has(t))return J.get(t);const e=cr(t);return e!==t&&(J.set(t,e),we.set(e,t)),e}const Q=t=>we.get(t);function ut(t,e,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const s=indexedDB.open(t,e),o=A(s);return r&&s.addEventListener("upgradeneeded",c=>{r(A(s.result),c.oldVersion,c.newVersion,A(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),o.then(c=>{a&&c.addEventListener("close",()=>a()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),o}const lr=["get","getKey","getAll","getAllKeys","count"],ur=["put","add","delete","clear"],Z=new Map;function ke(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Z.get(e))return Z.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=ur.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||lr.includes(n)))return;const a=async function(s,...o){const c=this.transaction(s,i?"readwrite":"readonly");let l=c.store;return r&&(l=l.index(o.shift())),(await Promise.all([l[n](...o),i&&c.done]))[0]};return Z.set(e,a),a}sr(t=>({...t,get:(e,n,r)=>ke(e,n)||t.get(e,n,r),has:(e,n)=>!!ke(e,n)||t.has(e,n)}));/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class dr{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(n=>{if(fr(n)){const r=n.getImmediate();return`${r.library}/${r.version}`}else return null}).filter(n=>n).join(" ")}}function fr(t){const e=t.getComponent();return(e==null?void 0:e.type)==="VERSION"}const fe="@firebase/app",Fe="0.9.7";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const O=new Ee("@firebase/app"),hr="@firebase/app-compat",pr="@firebase/analytics-compat",mr="@firebase/analytics",gr="@firebase/app-check-compat",br="@firebase/app-check",_r="@firebase/auth",Ir="@firebase/auth-compat",yr="@firebase/database",Er="@firebase/database-compat",wr="@firebase/functions",Tr="@firebase/functions-compat",vr="@firebase/installations",Ar="@firebase/installations-compat",Sr="@firebase/messaging",Cr="@firebase/messaging-compat",Rr="@firebase/performance",Dr="@firebase/performance-compat",Mr="@firebase/remote-config",Nr="@firebase/remote-config-compat",Or="@firebase/storage",Pr="@firebase/storage-compat",Br="@firebase/firestore",kr="@firebase/firestore-compat",Fr="firebase";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const he="[DEFAULT]",$r={[fe]:"fire-core",[hr]:"fire-core-compat",[mr]:"fire-analytics",[pr]:"fire-analytics-compat",[br]:"fire-app-check",[gr]:"fire-app-check-compat",[_r]:"fire-auth",[Ir]:"fire-auth-compat",[yr]:"fire-rtdb",[Er]:"fire-rtdb-compat",[wr]:"fire-fn",[Tr]:"fire-fn-compat",[vr]:"fire-iid",[Ar]:"fire-iid-compat",[Sr]:"fire-fcm",[Cr]:"fire-fcm-compat",[Rr]:"fire-perf",[Dr]:"fire-perf-compat",[Mr]:"fire-rc",[Nr]:"fire-rc-compat",[Or]:"fire-gcs",[Pr]:"fire-gcs-compat",[Br]:"fire-fst",[kr]:"fire-fst-compat","fire-js":"fire-js",[Fr]:"fire-js-all"};/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const z=new Map,pe=new Map;function Lr(t,e){try{t.container.addComponent(e)}catch(n){O.debug(`Component ${e.name} failed to register with FirebaseApp ${t.name}`,n)}}function R(t){const e=t.name;if(pe.has(e))return O.debug(`There were multiple attempts to register component ${e}.`),!1;pe.set(e,t);for(const n of z.values())Lr(n,t);return!0}function j(t,e){const n=t.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),t.container.getProvider(e)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ur={"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$appName}","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."},S=new x("app","Firebase",Ur);/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class xr{constructor(e,n,r){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},n),this._name=n.name,this._automaticDataCollectionEnabled=n.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new v("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw S.create("app-deleted",{appName:this._name})}}function dt(t,e={}){let n=t;typeof e!="object"&&(e={name:e});const r=Object.assign({name:he,automaticDataCollectionEnabled:!1},e),i=r.name;if(typeof i!="string"||!i)throw S.create("bad-app-name",{appName:String(i)});if(n||(n=$n()),!n)throw S.create("no-options");const a=z.get(i);if(a){if(H(n,a.options)&&H(r,a.config))return a;throw S.create("duplicate-app",{appName:i})}const s=new Yn(i);for(const c of pe.values())s.addComponent(c);const o=new xr(n,r,s);return z.set(i,o),o}function ft(t=he){const e=z.get(t);if(!e&&t===he)return dt();if(!e)throw S.create("no-app",{appName:t});return e}function E(t,e,n){var r;let i=(r=$r[t])!==null&&r!==void 0?r:t;n&&(i+=`-${n}`);const a=i.match(/\s|\//),s=e.match(/\s|\//);if(a||s){const o=[`Unable to register library "${i}" with version "${e}":`];a&&o.push(`library name "${i}" contains illegal characters (whitespace or "/")`),a&&s&&o.push("and"),s&&o.push(`version name "${e}" contains illegal characters (whitespace or "/")`),O.warn(o.join(" "));return}R(new v(`${i}-version`,()=>({library:i,version:e}),"VERSION"))}/**
* @license
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const jr="firebase-heartbeat-database",Vr=1,U="firebase-heartbeat-store";let ee=null;function ht(){return ee||(ee=ut(jr,Vr,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(U)}}}).catch(t=>{throw S.create("idb-open",{originalErrorMessage:t.message})})),ee}async function Hr(t){try{return(await ht()).transaction(U).objectStore(U).get(pt(t))}catch(e){if(e instanceof k)O.warn(e.message);else{const n=S.create("idb-get",{originalErrorMessage:e==null?void 0:e.message});O.warn(n.message)}}}async function $e(t,e){try{const r=(await ht()).transaction(U,"readwrite");return await r.objectStore(U).put(e,pt(t)),r.done}catch(n){if(n instanceof k)O.warn(n.message);else{const r=S.create("idb-set",{originalErrorMessage:n==null?void 0:n.message});O.warn(r.message)}}}function pt(t){return`${t.name}!${t.options.appId}`}/**
* @license
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const zr=1024,qr=30*24*60*60*1e3;class Gr{constructor(e){this.container=e,this._heartbeatsCache=null;const n=this.container.getProvider("app").getImmediate();this._storage=new Kr(n),this._heartbeatsCachePromise=this._storage.read().then(r=>(this._heartbeatsCache=r,r))}async triggerHeartbeat(){const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=Le();if(this._heartbeatsCache===null&&(this._heartbeatsCache=await this._heartbeatsCachePromise),!(this._heartbeatsCache.lastSentHeartbeatDate===r||this._heartbeatsCache.heartbeats.some(i=>i.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(i=>{const a=new Date(i.date).valueOf();return Date.now()-a<=qr}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache===null||this._heartbeatsCache.heartbeats.length===0)return"";const e=Le(),{heartbeatsToSend:n,unsentEntries:r}=Wr(this._heartbeatsCache.heartbeats),i=st(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=e,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function Le(){return new Date().toISOString().substring(0,10)}function Wr(t,e=zr){const n=[];let r=t.slice();for(const i of t){const a=n.find(s=>s.agent===i.agent);if(a){if(a.dates.push(i.date),Ue(n)>e){a.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),Ue(n)>e){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}class Kr{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return _e()?Ie().then(()=>!0).catch(()=>!1):!1}async read(){return await this._canUseIndexedDBPromise?await Hr(this.app)||{heartbeats:[]}:{heartbeats:[]}}async overwrite(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $e(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:e.heartbeats})}else return}async add(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $e(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:[...i.heartbeats,...e.heartbeats]})}else return}}function Ue(t){return st(JSON.stringify({version:2,heartbeats:t})).length}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Xr(t){R(new v("platform-logger",e=>new dr(e),"PRIVATE")),R(new v("heartbeat",e=>new Gr(e),"PRIVATE")),E(fe,Fe,t),E(fe,Fe,"esm2017"),E("fire-js","")}Xr("");var Yr="firebase",Jr="9.19.1";/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/E(Yr,Jr,"app");const mt="@firebase/installations",Te="0.6.4";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const gt=1e4,bt=`w:${Te}`,_t="FIS_v2",Qr="https://firebaseinstallations.googleapis.com/v1",Zr=60*60*1e3,ei="installations",ti="Installations";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const ni={"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."},P=new x(ei,ti,ni);function It(t){return t instanceof k&&t.code.includes("request-failed")}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function yt({projectId:t}){return`${Qr}/projects/${t}/installations`}function Et(t){return{token:t.token,requestStatus:2,expiresIn:ii(t.expiresIn),creationTime:Date.now()}}async function wt(t,e){const r=(await e.json()).error;return P.create("request-failed",{requestName:t,serverCode:r.code,serverMessage:r.message,serverStatus:r.status})}function Tt({apiKey:t}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":t})}function ri(t,{refreshToken:e}){const n=Tt(t);return n.append("Authorization",ai(e)),n}async function vt(t){const e=await t();return e.status>=500&&e.status<600?t():e}function ii(t){return Number(t.replace("s","000"))}function ai(t){return`${_t} ${t}`}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function si({appConfig:t,heartbeatServiceProvider:e},{fid:n}){const r=yt(t),i=Tt(t),a=e.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={fid:n,authVersion:_t,appId:t.appId,sdkVersion:bt},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await vt(()=>fetch(r,o));if(c.ok){const l=await c.json();return{fid:l.fid||n,registrationStatus:2,refreshToken:l.refreshToken,authToken:Et(l.authToken)}}else throw await wt("Create Installation",c)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function At(t){return new Promise(e=>{setTimeout(e,t)})}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function oi(t){return btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const ci=/^[cdef][\w-]{21}$/,me="";function li(){try{const t=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(t),t[0]=112+t[0]%16;const n=ui(t);return ci.test(n)?n:me}catch{return me}}function ui(t){return oi(t).substr(0,22)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function K(t){return`${t.appName}!${t.appId}`}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const St=new Map;function Ct(t,e){const n=K(t);Rt(n,e),di(n,e)}function Rt(t,e){const n=St.get(t);if(n)for(const r of n)r(e)}function di(t,e){const n=fi();n&&n.postMessage({key:t,fid:e}),hi()}let M=null;function fi(){return!M&&"BroadcastChannel"in self&&(M=new BroadcastChannel("[Firebase] FID Change"),M.onmessage=t=>{Rt(t.data.key,t.data.fid)}),M}function hi(){St.size===0&&M&&(M.close(),M=null)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const pi="firebase-installations-database",mi=1,B="firebase-installations-store";let te=null;function ve(){return te||(te=ut(pi,mi,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(B)}}})),te}async function q(t,e){const n=K(t),i=(await ve()).transaction(B,"readwrite"),a=i.objectStore(B),s=await a.get(n);return await a.put(e,n),await i.done,(!s||s.fid!==e.fid)&&Ct(t,e.fid),e}async function Dt(t){const e=K(t),r=(await ve()).transaction(B,"readwrite");await r.objectStore(B).delete(e),await r.done}async function X(t,e){const n=K(t),i=(await ve()).transaction(B,"readwrite"),a=i.objectStore(B),s=await a.get(n),o=e(s);return o===void 0?await a.delete(n):await a.put(o,n),await i.done,o&&(!s||s.fid!==o.fid)&&Ct(t,o.fid),o}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Ae(t){let e;const n=await X(t.appConfig,r=>{const i=gi(r),a=bi(t,i);return e=a.registrationPromise,a.installationEntry});return n.fid===me?{installationEntry:await e}:{installationEntry:n,registrationPromise:e}}function gi(t){const e=t||{fid:li(),registrationStatus:0};return Mt(e)}function bi(t,e){if(e.registrationStatus===0){if(!navigator.onLine){const i=Promise.reject(P.create("app-offline"));return{installationEntry:e,registrationPromise:i}}const n={fid:e.fid,registrationStatus:1,registrationTime:Date.now()},r=_i(t,n);return{installationEntry:n,registrationPromise:r}}else return e.registrationStatus===1?{installationEntry:e,registrationPromise:Ii(t)}:{installationEntry:e}}async function _i(t,e){try{const n=await si(t,e);return q(t.appConfig,n)}catch(n){throw It(n)&&n.customData.serverCode===409?await Dt(t.appConfig):await q(t.appConfig,{fid:e.fid,registrationStatus:0}),n}}async function Ii(t){let e=await xe(t.appConfig);for(;e.registrationStatus===1;)await At(100),e=await xe(t.appConfig);if(e.registrationStatus===0){const{installationEntry:n,registrationPromise:r}=await Ae(t);return r||n}return e}function xe(t){return X(t,e=>{if(!e)throw P.create("installation-not-found");return Mt(e)})}function Mt(t){return yi(t)?{fid:t.fid,registrationStatus:0}:t}function yi(t){return t.registrationStatus===1&&t.registrationTime+gt<Date.now()}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Ei({appConfig:t,heartbeatServiceProvider:e},n){const r=wi(t,n),i=ri(t,n),a=e.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={installation:{sdkVersion:bt,appId:t.appId}},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await vt(()=>fetch(r,o));if(c.ok){const l=await c.json();return Et(l)}else throw await wt("Generate Auth Token",c)}function wi(t,{fid:e}){return`${yt(t)}/${e}/authTokens:generate`}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Se(t,e=!1){let n;const r=await X(t.appConfig,a=>{if(!Nt(a))throw P.create("not-registered");const s=a.authToken;if(!e&&Ai(s))return a;if(s.requestStatus===1)return n=Ti(t,e),a;{if(!navigator.onLine)throw P.create("app-offline");const o=Ci(a);return n=vi(t,o),o}});return n?await n:r.authToken}async function Ti(t,e){let n=await je(t.appConfig);for(;n.authToken.requestStatus===1;)await At(100),n=await je(t.appConfig);const r=n.authToken;return r.requestStatus===0?Se(t,e):r}function je(t){return X(t,e=>{if(!Nt(e))throw P.create("not-registered");const n=e.authToken;return Ri(n)?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}async function vi(t,e){try{const n=await Ei(t,e),r=Object.assign(Object.assign({},e),{authToken:n});return await q(t.appConfig,r),n}catch(n){if(It(n)&&(n.customData.serverCode===401||n.customData.serverCode===404))await Dt(t.appConfig);else{const r=Object.assign(Object.assign({},e),{authToken:{requestStatus:0}});await q(t.appConfig,r)}throw n}}function Nt(t){return t!==void 0&&t.registrationStatus===2}function Ai(t){return t.requestStatus===2&&!Si(t)}function Si(t){const e=Date.now();return e<t.creationTime||t.creationTime+t.expiresIn<e+Zr}function Ci(t){const e={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},t),{authToken:e})}function Ri(t){return t.requestStatus===1&&t.requestTime+gt<Date.now()}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Di(t){const e=t,{installationEntry:n,registrationPromise:r}=await Ae(e);return r?r.catch(console.error):Se(e).catch(console.error),n.fid}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Mi(t,e=!1){const n=t;return await Ni(n),(await Se(n,e)).token}async function Ni(t){const{registrationPromise:e}=await Ae(t);e&&await e}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Oi(t){if(!t||!t.options)throw ne("App Configuration");if(!t.name)throw ne("App Name");const e=["projectId","apiKey","appId"];for(const n of e)if(!t.options[n])throw ne(n);return{appName:t.name,projectId:t.options.projectId,apiKey:t.options.apiKey,appId:t.options.appId}}function ne(t){return P.create("missing-app-config-values",{valueName:t})}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ot="installations",Pi="installations-internal",Bi=t=>{const e=t.getProvider("app").getImmediate(),n=Oi(e),r=j(e,"heartbeat");return{app:e,appConfig:n,heartbeatServiceProvider:r,_delete:()=>Promise.resolve()}},ki=t=>{const e=t.getProvider("app").getImmediate(),n=j(e,Ot).getImmediate();return{getId:()=>Di(n),getToken:i=>Mi(n,i)}};function Fi(){R(new v(Ot,Bi,"PUBLIC")),R(new v(Pi,ki,"PRIVATE"))}Fi();E(mt,Te);E(mt,Te,"esm2017");/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const G="analytics",$i="firebase_id",Li="origin",Ui=60*1e3,xi="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",Ce="https://www.googletagmanager.com/gtag/js";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const m=new Ee("@firebase/analytics");/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const ji={"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."},I=new x("analytics","Analytics",ji);/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Vi(t){if(!t.startsWith(Ce)){const e=I.create("invalid-gtag-resource",{gtagURL:t});return m.warn(e.message),""}return t}function Pt(t){return Promise.all(t.map(e=>e.catch(n=>n)))}function Hi(t,e){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(t,e)),n}function zi(t,e){const n=Hi("firebase-js-sdk-policy",{createScriptURL:Vi}),r=document.createElement("script"),i=`${Ce}?l=${t}&id=${e}`;r.src=n?n==null?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function qi(t){let e=[];return Array.isArray(window[t])?e=window[t]:window[t]=e,e}async function Gi(t,e,n,r,i,a){const s=r[i];try{if(s)await e[s];else{const c=(await Pt(n)).find(l=>l.measurementId===i);c&&await e[c.appId]}}catch(o){m.error(o)}t("config",i,a)}async function Wi(t,e,n,r,i){try{let a=[];if(i&&i.send_to){let s=i.send_to;Array.isArray(s)||(s=[s]);const o=await Pt(n);for(const c of s){const l=o.find(h=>h.measurementId===c),d=l&&e[l.appId];if(d)a.push(d);else{a=[];break}}}a.length===0&&(a=Object.values(e)),await Promise.all(a),t("event",r,i||{})}catch(a){m.error(a)}}function Ki(t,e,n,r){async function i(a,s,o){try{a==="event"?await Wi(t,e,n,s,o):a==="config"?await Gi(t,e,n,r,s,o):a==="consent"?t("consent","update",o):t("set",s)}catch(c){m.error(c)}}return i}function Xi(t,e,n,r,i){let a=function(...s){window[r].push(arguments)};return window[i]&&typeof window[i]=="function"&&(a=window[i]),window[i]=Ki(a,t,e,n),{gtagCore:a,wrappedGtag:window[i]}}function Yi(t){const e=window.document.getElementsByTagName("script");for(const n of Object.values(e))if(n.src&&n.src.includes(Ce)&&n.src.includes(t))return n;return null}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ji=30,Qi=1e3;class Zi{constructor(e={},n=Qi){this.throttleMetadata=e,this.intervalMillis=n}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,n){this.throttleMetadata[e]=n}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}}const Bt=new Zi;function ea(t){return new Headers({Accept:"application/json","x-goog-api-key":t})}async function ta(t){var e;const{appId:n,apiKey:r}=t,i={method:"GET",headers:ea(r)},a=xi.replace("{app-id}",n),s=await fetch(a,i);if(s.status!==200&&s.status!==304){let o="";try{const c=await s.json();!((e=c.error)===null||e===void 0)&&e.message&&(o=c.error.message)}catch{}throw I.create("config-fetch-failed",{httpStatus:s.status,responseMessage:o})}return s.json()}async function na(t,e=Bt,n){const{appId:r,apiKey:i,measurementId:a}=t.options;if(!r)throw I.create("no-app-id");if(!i){if(a)return{measurementId:a,appId:r};throw I.create("no-api-key")}const s=e.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},o=new aa;return setTimeout(async()=>{o.abort()},n!==void 0?n:Ui),kt({appId:r,apiKey:i,measurementId:a},s,o,e)}async function kt(t,{throttleEndTimeMillis:e,backoffCount:n},r,i=Bt){var a;const{appId:s,measurementId:o}=t;try{await ra(r,e)}catch(c){if(o)return m.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${c==null?void 0:c.message}]`),{appId:s,measurementId:o};throw c}try{const c=await ta(t);return i.deleteThrottleMetadata(s),c}catch(c){const l=c;if(!ia(l)){if(i.deleteThrottleMetadata(s),o)return m.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${l==null?void 0:l.message}]`),{appId:s,measurementId:o};throw c}const d=Number((a=l==null?void 0:l.customData)===null||a===void 0?void 0:a.httpStatus)===503?Oe(n,i.intervalMillis,Ji):Oe(n,i.intervalMillis),h={throttleEndTimeMillis:Date.now()+d,backoffCount:n+1};return i.setThrottleMetadata(s,h),m.debug(`Calling attemptFetch again in ${d} millis`),kt(t,h,r,i)}}function ra(t,e){return new Promise((n,r)=>{const i=Math.max(e-Date.now(),0),a=setTimeout(n,i);t.addEventListener(()=>{clearTimeout(a),r(I.create("fetch-throttle",{throttleEndTimeMillis:e}))})})}function ia(t){if(!(t instanceof k)||!t.customData)return!1;const e=Number(t.customData.httpStatus);return e===429||e===500||e===503||e===504}class aa{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function sa(t,e,n,r,i){if(i&&i.global){t("event",n,r);return}else{const a=await e,s=Object.assign(Object.assign({},r),{send_to:a});t("event",n,s)}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function oa(){if(_e())try{await Ie()}catch(t){return m.warn(I.create("indexeddb-unavailable",{errorInfo:t==null?void 0:t.toString()}).message),!1}else return m.warn(I.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;return!0}async function ca(t,e,n,r,i,a,s){var o;const c=na(t);c.then(b=>{n[b.measurementId]=b.appId,t.options.measurementId&&b.measurementId!==t.options.measurementId&&m.warn(`The measurement ID in the local Firebase config (${t.options.measurementId}) does not match the measurement ID fetched from the server (${b.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)}).catch(b=>m.error(b)),e.push(c);const l=oa().then(b=>{if(b)return r.getId()}),[d,h]=await Promise.all([c,l]);Yi(a)||zi(a,d.measurementId),i("js",new Date);const g=(o=s==null?void 0:s.config)!==null&&o!==void 0?o:{};return g[Li]="firebase",g.update=!0,h!=null&&(g[$i]=h),i("config",d.measurementId,g),d.measurementId}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class la{constructor(e){this.app=e}_delete(){return delete L[this.app.options.appId],Promise.resolve()}}let L={},Ve=[];const He={};let re="dataLayer",ua="gtag",ze,Ft,qe=!1;function da(){const t=[];if(Un()&&t.push("This is a browser extension environment."),ot()||t.push("Cookies are not available."),t.length>0){const e=t.map((r,i)=>`(${i+1}) ${r}`).join(" "),n=I.create("invalid-analytics-context",{errorInfo:e});m.warn(n.message)}}function fa(t,e,n){da();const r=t.options.appId;if(!r)throw I.create("no-app-id");if(!t.options.apiKey)if(t.options.measurementId)m.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${t.options.measurementId} provided in the "measurementId" field in the local Firebase config.`);else throw I.create("no-api-key");if(L[r]!=null)throw I.create("already-exists",{id:r});if(!qe){qi(re);const{wrappedGtag:a,gtagCore:s}=Xi(L,Ve,He,re,ua);Ft=a,ze=s,qe=!0}return L[r]=ca(t,Ve,He,e,ze,re,n),new la(t)}function ha(t=ft()){t=ye(t);const e=j(t,G);return e.isInitialized()?e.getImmediate():pa(t)}function pa(t,e={}){const n=j(t,G);if(n.isInitialized()){const i=n.getImmediate();if(H(e,n.getOptions()))return i;throw I.create("already-initialized")}return n.initialize({options:e})}function ma(t,e,n,r){t=ye(t),sa(Ft,L[t.app.options.appId],e,n,r).catch(i=>m.error(i))}const Ge="@firebase/analytics",We="0.9.5";function ga(){R(new v(G,(e,{options:n})=>{const r=e.getProvider("app").getImmediate(),i=e.getProvider("installations-internal").getImmediate();return fa(r,i,n)},"PUBLIC")),R(new v("analytics-internal",t,"PRIVATE")),E(Ge,We),E(Ge,We,"esm2017");function t(e){try{const n=e.getProvider(G).getImmediate();return{logEvent:(r,i,a)=>ma(n,r,i,a)}}catch(n){throw I.create("interop-component-reg-failed",{reason:n})}}}ga();const Ke="@firebase/performance",ge="0.6.4";/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const $t=ge,ba="FB-PERF-TRACE-START",_a="FB-PERF-TRACE-STOP",be="FB-PERF-TRACE-MEASURE",Lt="_wt_",Ut="_fp",xt="_fcp",jt="_fid",Vt="@firebase/performance/config",Ht="@firebase/performance/configexpire",Ia="performance",zt="Performance";/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const ya={"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."},p=new x(Ia,zt,ya);/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const w=new Ee(zt);w.logLevel=u.INFO;/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let ie,qt;class f{constructor(e){if(this.window=e,!e)throw p.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){!this.performance||!this.performance.mark||this.performance.mark(e)}measure(e,n,r){!this.performance||!this.performance.measure||this.performance.measure(e,n,r)}getEntriesByType(e){return!this.performance||!this.performance.getEntriesByType?[]:this.performance.getEntriesByType(e)}getEntriesByName(e){return!this.performance||!this.performance.getEntriesByName?[]:this.performance.getEntriesByName(e)}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return!fetch||!Promise||!ot()?(w.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1):_e()?!0:(w.info("IndexedDB is not supported by current browswer"),!1)}setupObserver(e,n){if(!this.PerformanceObserver)return;new this.PerformanceObserver(i=>{for(const a of i.getEntries())n(a)}).observe({entryTypes:[e]})}static getInstance(){return ie===void 0&&(ie=new f(qt)),ie}}function Ea(t){qt=t}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let Gt;function wa(t){const e=t.getId();return e.then(n=>{Gt=n}),e}function Re(){return Gt}function Ta(t){const e=t.getToken();return e.then(n=>{}),e}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Xe(t,e){const n=t.length-e.length;if(n<0||n>1)throw p.create("invalid String merger input");const r=[];for(let i=0;i<t.length;i++)r.push(t.charAt(i)),e.length>i&&r.push(e.charAt(i));return r.join("")}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let ae;class _{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=Xe("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=Xe("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return ae===void 0&&(ae=new _),ae}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/var F;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.VISIBLE=1]="VISIBLE",t[t.HIDDEN=2]="HIDDEN"})(F||(F={}));const va=["firebase_","google_","ga_"],Aa=new RegExp("^[a-zA-Z]\\w*$"),Sa=40,Ca=100;function Ra(){const t=f.getInstance().navigator;return t!=null&&t.serviceWorker?t.serviceWorker.controller?2:3:1}function Wt(){switch(f.getInstance().document.visibilityState){case"visible":return F.VISIBLE;case"hidden":return F.HIDDEN;default:return F.UNKNOWN}}function Da(){const e=f.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function Ma(t){return t.length===0||t.length>Sa?!1:!va.some(n=>t.startsWith(n))&&!!t.match(Aa)}function Na(t){return t.length!==0&&t.length<=Ca}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Kt(t){var e;const n=(e=t.options)===null||e===void 0?void 0:e.appId;if(!n)throw p.create("no app id");return n}function Oa(t){var e;const n=(e=t.options)===null||e===void 0?void 0:e.projectId;if(!n)throw p.create("no project id");return n}function Pa(t){var e;const n=(e=t.options)===null||e===void 0?void 0:e.apiKey;if(!n)throw p.create("no api key");return n}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ba="0.0.1",y={loggingEnabled:!0},ka="FIREBASE_INSTALLATIONS_AUTH";function Fa(t,e){const n=$a();return n?(Ye(n),Promise.resolve()):xa(t,e).then(Ye).then(r=>La(r),()=>{})}function $a(){const t=f.getInstance().localStorage;if(!t)return;const e=t.getItem(Ht);if(!e||!ja(e))return;const n=t.getItem(Vt);if(n)try{return JSON.parse(n)}catch{return}}function La(t){const e=f.getInstance().localStorage;!t||!e||(e.setItem(Vt,JSON.stringify(t)),e.setItem(Ht,String(Date.now()+_.getInstance().configTimeToLive*60*60*1e3)))}const Ua="Could not fetch config, will use default configs";function xa(t,e){return Ta(t.installations).then(n=>{const r=Oa(t.app),i=Pa(t.app),a=`https://firebaseremoteconfig.googleapis.com/v1/projects/${r}/namespaces/fireperf:fetch?key=${i}`,s=new Request(a,{method:"POST",headers:{Authorization:`${ka} ${n}`},body:JSON.stringify({app_instance_id:e,app_instance_id_token:n,app_id:Kt(t.app),app_version:$t,sdk_version:Ba})});return fetch(s).then(o=>{if(o.ok)return o.json();throw p.create("RC response not ok")})}).catch(()=>{w.info(Ua)})}function Ye(t){if(!t)return t;const e=_.getInstance(),n=t.entries||{};return n.fpr_enabled!==void 0?e.loggingEnabled=String(n.fpr_enabled)==="true":e.loggingEnabled=y.loggingEnabled,n.fpr_log_source?e.logSource=Number(n.fpr_log_source):y.logSource&&(e.logSource=y.logSource),n.fpr_log_endpoint_url?e.logEndPointUrl=n.fpr_log_endpoint_url:y.logEndPointUrl&&(e.logEndPointUrl=y.logEndPointUrl),n.fpr_log_transport_key?e.transportKey=n.fpr_log_transport_key:y.transportKey&&(e.transportKey=y.transportKey),n.fpr_vc_network_request_sampling_rate!==void 0?e.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):y.networkRequestsSamplingRate!==void 0&&(e.networkRequestsSamplingRate=y.networkRequestsSamplingRate),n.fpr_vc_trace_sampling_rate!==void 0?e.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):y.tracesSamplingRate!==void 0&&(e.tracesSamplingRate=y.tracesSamplingRate),e.logTraceAfterSampling=Je(e.tracesSamplingRate),e.logNetworkAfterSampling=Je(e.networkRequestsSamplingRate),t}function ja(t){return Number(t)>Date.now()}function Je(t){return Math.random()<=t}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let De=1,se;function Xt(t){return De=2,se=se||Ha(t),se}function Va(){return De===3}function Ha(t){return za().then(()=>wa(t.installations)).then(e=>Fa(t,e)).then(()=>Qe(),()=>Qe())}function za(){const t=f.getInstance().document;return new Promise(e=>{if(t&&t.readyState!=="complete"){const n=()=>{t.readyState==="complete"&&(t.removeEventListener("readystatechange",n),e())};t.addEventListener("readystatechange",n)}else e()})}function Qe(){De=3}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Me=10*1e3,qa=5.5*1e3,Yt=3,Ga=1e3;let W=Yt,C=[],Ze=!1;function Wa(){Ze||(Y(qa),Ze=!0)}function Y(t){setTimeout(()=>{if(W!==0){if(!C.length)return Y(Me);Ka()}},t)}function Ka(){const t=C.splice(0,Ga),e=t.map(r=>({source_extension_json_proto3:r.message,event_time_ms:String(r.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:_.getInstance().logSource,log_event:e};Xa(n,t).catch(()=>{C=[...t,...C],W--,w.info(`Tries left: ${W}.`),Y(Me)})}function Xa(t,e){return Ya(t).then(n=>(n.ok||w.info("Call to Firebase backend failed."),n.json())).then(n=>{const r=Number(n.nextRequestWaitMillis);let i=Me;isNaN(r)||(i=Math.max(r,i));const a=n.logResponseDetails;Array.isArray(a)&&a.length>0&&a[0].responseAction==="RETRY_REQUEST_LATER"&&(C=[...e,...C],w.info("Retry transport request later.")),W=Yt,Y(i)})}function Ya(t){const e=_.getInstance().getFlTransportFullUrl();return fetch(e,{method:"POST",body:JSON.stringify(t)})}function Ja(t){if(!t.eventTime||!t.message)throw p.create("invalid cc log");C=[...C,t]}function Qa(t){return(...e)=>{const n=t(...e);Ja({message:n,eventTime:Date.now()})}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let oe;function Jt(t,e){oe||(oe=Qa(es)),oe(t,e)}function V(t){const e=_.getInstance();!e.instrumentationEnabled&&t.isAuto||!e.dataCollectionEnabled&&!t.isAuto||f.getInstance().requiredApisAvailable()&&(t.isAuto&&Wt()!==F.VISIBLE||(Va()?ce(t):Xt(t.performanceController).then(()=>ce(t),()=>ce(t))))}function ce(t){if(!Re())return;const e=_.getInstance();!e.loggingEnabled||!e.logTraceAfterSampling||setTimeout(()=>Jt(t,1),0)}function Za(t){const e=_.getInstance();if(!e.instrumentationEnabled)return;const n=t.url,r=e.logEndPointUrl.split("?")[0],i=e.flTransportEndpointUrl.split("?")[0];n===r||n===i||!e.loggingEnabled||!e.logNetworkAfterSampling||setTimeout(()=>Jt(t,0),0)}function es(t,e){return e===0?ts(t):ns(t)}function ts(t){const e={url:t.url,http_method:t.httpMethod||0,http_response_code:200,response_payload_bytes:t.responsePayloadBytes,client_start_time_us:t.startTimeUs,time_to_response_initiated_us:t.timeToResponseInitiatedUs,time_to_response_completed_us:t.timeToResponseCompletedUs},n={application_info:Qt(t.performanceController.app),network_request_metric:e};return JSON.stringify(n)}function ns(t){const e={name:t.name,is_auto:t.isAuto,client_start_time_us:t.startTimeUs,duration_us:t.durationUs};Object.keys(t.counters).length!==0&&(e.counters=t.counters);const n=t.getAttributes();Object.keys(n).length!==0&&(e.custom_attributes=n);const r={application_info:Qt(t.performanceController.app),trace_metric:e};return JSON.stringify(r)}function Qt(t){return{google_app_id:Kt(t),app_instance_id:Re(),web_app_info:{sdk_version:$t,page_url:f.getInstance().getUrl(),service_worker_status:Ra(),visibility_state:Wt(),effective_connection_type:Da()},application_process_state:0}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const rs=100,is="_",as=[Ut,xt,jt];function ss(t,e){return t.length===0||t.length>rs?!1:e&&e.startsWith(Lt)&&as.indexOf(t)>-1||!t.startsWith(is)}function os(t){const e=Math.floor(t);return e<t&&w.info(`Metric value should be an Integer, setting the value as : ${e}.`),e}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class N{constructor(e,n,r=!1,i){this.performanceController=e,this.name=n,this.isAuto=r,this.state=1,this.customAttributes={},this.counters={},this.api=f.getInstance(),this.randomId=Math.floor(Math.random()*1e6),this.isAuto||(this.traceStartMark=`${ba}-${this.randomId}-${this.name}`,this.traceStopMark=`${_a}-${this.randomId}-${this.name}`,this.traceMeasure=i||`${be}-${this.randomId}-${this.name}`,i&&this.calculateTraceMetrics())}start(){if(this.state!==1)throw p.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(this.state!==2)throw p.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),V(this)}record(e,n,r){if(e<=0)throw p.create("nonpositive trace startTime",{traceName:this.name});if(n<=0)throw p.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(n*1e3),this.startTimeUs=Math.floor(e*1e3),r&&r.attributes&&(this.customAttributes=Object.assign({},r.attributes)),r&&r.metrics)for(const i of Object.keys(r.metrics))isNaN(Number(r.metrics[i]))||(this.counters[i]=Math.floor(Number(r.metrics[i])));V(this)}incrementMetric(e,n=1){this.counters[e]===void 0?this.putMetric(e,n):this.putMetric(e,this.counters[e]+n)}putMetric(e,n){if(ss(e,this.name))this.counters[e]=os(n??0);else throw p.create("invalid custom metric name",{customMetricName:e})}getMetric(e){return this.counters[e]||0}putAttribute(e,n){const r=Ma(e),i=Na(n);if(r&&i){this.customAttributes[e]=n;return}if(!r)throw p.create("invalid attribute name",{attributeName:e});if(!i)throw p.create("invalid attribute value",{attributeValue:n})}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){this.customAttributes[e]!==void 0&&delete this.customAttributes[e]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){const e=this.api.getEntriesByName(this.traceMeasure),n=e&&e[0];n&&(this.durationUs=Math.floor(n.duration*1e3),this.startTimeUs=Math.floor((n.startTime+this.api.getTimeOrigin())*1e3))}static createOobTrace(e,n,r,i){const a=f.getInstance().getUrl();if(!a)return;const s=new N(e,Lt+a,!0),o=Math.floor(f.getInstance().getTimeOrigin()*1e3);s.setStartTime(o),n&&n[0]&&(s.setDuration(Math.floor(n[0].duration*1e3)),s.putMetric("domInteractive",Math.floor(n[0].domInteractive*1e3)),s.putMetric("domContentLoadedEventEnd",Math.floor(n[0].domContentLoadedEventEnd*1e3)),s.putMetric("loadEventEnd",Math.floor(n[0].loadEventEnd*1e3)));const c="first-paint",l="first-contentful-paint";if(r){const d=r.find(g=>g.name===c);d&&d.startTime&&s.putMetric(Ut,Math.floor(d.startTime*1e3));const h=r.find(g=>g.name===l);h&&h.startTime&&s.putMetric(xt,Math.floor(h.startTime*1e3)),i&&s.putMetric(jt,Math.floor(i*1e3))}V(s)}static createUserTimingTrace(e,n){const r=new N(e,n,!1,n);V(r)}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function et(t,e){const n=e;if(!n||n.responseStart===void 0)return;const r=f.getInstance().getTimeOrigin(),i=Math.floor((n.startTime+r)*1e3),a=n.responseStart?Math.floor((n.responseStart-n.startTime)*1e3):void 0,s=Math.floor((n.responseEnd-n.startTime)*1e3),o=n.name&&n.name.split("?")[0],c={performanceController:t,url:o,responsePayloadBytes:n.transferSize,startTimeUs:i,timeToResponseInitiatedUs:a,timeToResponseCompletedUs:s};Za(c)}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const cs=5e3;function tt(t){Re()&&(setTimeout(()=>us(t),0),setTimeout(()=>ls(t),0),setTimeout(()=>ds(t),0))}function ls(t){const e=f.getInstance(),n=e.getEntriesByType("resource");for(const r of n)et(t,r);e.setupObserver("resource",r=>et(t,r))}function us(t){const e=f.getInstance(),n=e.getEntriesByType("navigation"),r=e.getEntriesByType("paint");if(e.onFirstInputDelay){let i=setTimeout(()=>{N.createOobTrace(t,n,r),i=void 0},cs);e.onFirstInputDelay(a=>{i&&(clearTimeout(i),N.createOobTrace(t,n,r,a))})}else N.createOobTrace(t,n,r)}function ds(t){const e=f.getInstance(),n=e.getEntriesByType("measure");for(const r of n)nt(t,r);e.setupObserver("measure",r=>nt(t,r))}function nt(t,e){const n=e.name;n.substring(0,be.length)!==be&&N.createUserTimingTrace(t,n)}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class fs{constructor(e,n){this.app=e,this.installations=n,this.initialized=!1}_init(e){this.initialized||((e==null?void 0:e.dataCollectionEnabled)!==void 0&&(this.dataCollectionEnabled=e.dataCollectionEnabled),(e==null?void 0:e.instrumentationEnabled)!==void 0&&(this.instrumentationEnabled=e.instrumentationEnabled),f.getInstance().requiredApisAvailable()?Ie().then(n=>{n&&(Wa(),Xt(this).then(()=>tt(this),()=>tt(this)),this.initialized=!0)}).catch(n=>{w.info(`Environment doesn't support IndexedDB: ${n}`)}):w.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){_.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return _.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){_.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return _.getInstance().dataCollectionEnabled}}const hs="[DEFAULT]";function ps(t=ft()){return t=ye(t),j(t,"performance").getImmediate()}const ms=(t,{options:e})=>{const n=t.getProvider("app").getImmediate(),r=t.getProvider("installations-internal").getImmediate();if(n.name!==hs)throw p.create("FB not default");if(typeof window>"u")throw p.create("no window");Ea(window);const i=new fs(n,r);return i._init(e),i};function gs(){R(new v("performance",ms,"PUBLIC")),E(Ke,ge),E(Ke,ge,"esm2017")}gs();const bs=t=>(on("data-v-3835a11e"),t=t(),cn(),t),_s=bs(()=>T("div",{"data-v-98ddab3d":"","data-v-8f7cd5e4":"",class:"VPContent",id:"VPContent"},[T("div",{"data-v-6c4a3ffe":"","data-v-98ddab3d":"",class:"NotFound"},[T("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png",alt:"",class:"notfound-img"}),T("p",{"data-v-6c4a3ffe":"",class:"code"},"404"),T("h1",{"data-v-6c4a3ffe":"",class:"title"}," 你干嘛~,这里什么都没有! "),T("div",{"data-v-6c4a3ffe":"",class:"divider"}),T("blockquote",{"data-v-6c4a3ffe":"",class:"quote"}," 你寻找的页面可能不存在或被迁移…… "),T("div",{"data-v-6c4a3ffe":"",class:"action"},[T("a",{"data-v-6c4a3ffe":"",class:"link",href:"/","aria-label":"go to home"}," 返回主页 ")])])],-1)),Is={__name:"NotFound",setup(t){const{Layout:e}=rt;return(n,r)=>(nn(),rn(sn(e),null,{"not-found":an(()=>[_s]),_:1}))}},ys=tn(Is,[["__scopeId","data-v-3835a11e"]]),Es=()=>{const e=dt({apiKey:"AIzaSyANVvapu0ihi1cM8ZzuXTkwjx9lM_J1RyQ",authDomain:"rw-api-code-d0779.firebaseapp.com",projectId:"rw-api-code-d0779",storageBucket:"rw-api-code-d0779.appspot.com",messagingSenderId:"363611843335",appId:"1:363611843335:web:f15aef7ab427f52b4033a2",measurementId:"G-XJH5TKP5VL"});return ha(e),ps(e),"Firebase initialized successfully"};(async function(){try{const t=await Es();console.log(t)}catch(t){console.error(t)}})();function ws(t){return new Promise(e=>setTimeout(e,t))}async function Ts(){try{await navigator.permissions.query({name:"clipboard-write"})}catch(t){console.error(t)}}async function vs(){try{await ws(1e3);const t=document.getElementsByClassName("copy");for(let e=0;e<t.length;e++){const n=t[e];n.addEventListener("touchend",async()=>{await Ts();const a=[...n.parentNode.querySelector("code").querySelectorAll("span")],s=[...new Set(a.map(o=>o.textContent))].join("");try{await navigator.clipboard.writeText(s)}catch{const c=document.createElement("textarea");c.value=s,document.body.appendChild(c),c.select(),document.execCommand("copy"),document.body.removeChild(c)}})}}catch(t){console.error(t)}}vs();const As={...rt,Layout:ys};function Zt(t){if(t.extends){const e=Zt(t.extends);return{...e,...t,async enhanceApp(n){e.enhanceApp&&await e.enhanceApp(n),t.enhanceApp&&await t.enhanceApp(n)}}}return t}const $=Zt(As),Ss=yn({name:"VitePressApp",setup(){const{site:t}=En();return wn(()=>{Tn(()=>{document.documentElement.lang=t.value.lang,document.documentElement.dir=t.value.dir})}),vn(),An(),Sn(),$.setup&&$.setup(),()=>Cn($.Layout)}});async function Cs(){const t=Ds(),e=Rs();e.provide(un,t);const n=dn(t.route);return e.provide(fn,n),e.component("Content",hn),e.component("ClientOnly",pn),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get(){return n.frontmatter.value}},$params:{get(){return n.page.value.params}}}),$.enhanceApp&&await $.enhanceApp({app:e,router:t,siteData:mn}),{app:e,router:t,data:n}}function Rs(){return gn(Ss)}function Ds(){let t=le,e;return bn(n=>{let r=_n(n);return r?(t&&(e=r),(t||e===r)&&(r=r.replace(/\.js$/,".lean.js")),le&&(t=!1),In(()=>import(r),[])):null},$.NotFound)}le&&Cs().then(({app:t,router:e,data:n})=>{e.go().then(()=>{ln(e.route,n.site),t.mount("#app")})});export{Cs as createApp};

961
assets/app.9ee7a110.js Normal file
View File

@ -0,0 +1,961 @@
import{_ as hn,o as pn,D as mn,E as gn,b as bn,S as In,U as yn,C as T,d as _n,Q as he,a5 as En,u as wn,q as Tn,k as vn,a6 as An,a7 as Sn,a8 as Cn,a9 as Dn,aa as Rn,ab as Mn,ac as Nn,ad as On,ae as Pn,af as Bn,ag as $n,ah as kn,ai as Fn,M as Ln}from"./chunks/framework.fcc0bf38.js";import{t as ht}from"./chunks/theme.9136979b.js";/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*//**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const pt=function(e){const t=[];let n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?t[n++]=i:i<2048?(t[n++]=i>>6|192,t[n++]=i&63|128):(i&64512)===55296&&r+1<e.length&&(e.charCodeAt(r+1)&64512)===56320?(i=65536+((i&1023)<<10)+(e.charCodeAt(++r)&1023),t[n++]=i>>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=i&63|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=i&63|128)}return t},Un=function(e){const t=[];let n=0,r=0;for(;n<e.length;){const i=e[n++];if(i<128)t[r++]=String.fromCharCode(i);else if(i>191&&i<224){const a=e[n++];t[r++]=String.fromCharCode((i&31)<<6|a&63)}else if(i>239&&i<365){const a=e[n++],s=e[n++],o=e[n++],c=((i&7)<<18|(a&63)<<12|(s&63)<<6|o&63)-65536;t[r++]=String.fromCharCode(55296+(c>>10)),t[r++]=String.fromCharCode(56320+(c&1023))}else{const a=e[n++],s=e[n++];t[r++]=String.fromCharCode((i&15)<<12|(a&63)<<6|s&63)}}return t.join("")},mt={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let i=0;i<e.length;i+=3){const a=e[i],s=i+1<e.length,o=s?e[i+1]:0,c=i+2<e.length,l=c?e[i+2]:0,d=a>>2,h=(a&3)<<4|o>>4;let g=(o&15)<<2|l>>6,b=l&63;c||(b=64,s||(g=64)),r.push(n[d],n[h],n[g],n[b])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(pt(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):Un(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let i=0;i<e.length;){const a=n[e.charAt(i++)],o=i<e.length?n[e.charAt(i)]:0;++i;const l=i<e.length?n[e.charAt(i)]:64;++i;const h=i<e.length?n[e.charAt(i)]:64;if(++i,a==null||o==null||l==null||h==null)throw new xn;const g=a<<2|o>>4;if(r.push(g),l!==64){const b=o<<4&240|l>>2;if(r.push(b),h!==64){const fn=l<<6&192|h;r.push(fn)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++)this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e),this.charToByteMap_[this.byteToCharMap_[e]]=e,this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e,e>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class xn extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const jn=function(e){const t=pt(e);return mt.encodeByteArray(t,!0)},gt=function(e){return jn(e).replace(/\./g,"")},Vn=function(e){try{return mt.decodeString(e,!0)}catch(t){console.error("base64Decode failed: ",t)}return null};/**
* @license
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Hn(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/**
* @license
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const zn=()=>Hn().__FIREBASE_DEFAULTS__,qn=()=>{if(typeof process>"u"||typeof process.env>"u")return;const e={}.__FIREBASE_DEFAULTS__;if(e)return JSON.parse(e)},Wn=()=>{if(typeof document>"u")return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const t=e&&Vn(e[1]);return t&&JSON.parse(t)},Gn=()=>{try{return zn()||qn()||Wn()}catch(e){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);return}},Kn=()=>{var e;return(e=Gn())===null||e===void 0?void 0:e.config};/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Xn{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((t,n)=>{this.resolve=t,this.reject=n})}wrapCallback(t){return(n,r)=>{n?this.reject(n):this.resolve(r),typeof t=="function"&&(this.promise.catch(()=>{}),t.length===1?t(n):t(n,r))}}}function Yn(){const e=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof e=="object"&&e.id!==void 0}function ve(){try{return typeof indexedDB=="object"}catch{return!1}}function Ae(){return new Promise((e,t)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var a;t(((a=i.error)===null||a===void 0?void 0:a.message)||"")}}catch(n){t(n)}})}function bt(){return!(typeof navigator>"u"||!navigator.cookieEnabled)}/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Jn="FirebaseError";class k extends Error{constructor(t,n,r){super(n),this.code=t,this.customData=r,this.name=Jn,Object.setPrototypeOf(this,k.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,j.prototype.create)}}class j{constructor(t,n,r){this.service=t,this.serviceName=n,this.errors=r}create(t,...n){const r=n[0]||{},i=`${this.service}/${t}`,a=this.errors[t],s=a?Qn(a,r):"Error",o=`${this.serviceName}: ${s} (${i}).`;return new k(i,o,r)}}function Qn(e,t){return e.replace(Zn,(n,r)=>{const i=t[r];return i!=null?String(i):`<${r}?>`})}const Zn=/\{\$([^}]+)}/g;function z(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const i of n){if(!r.includes(i))return!1;const a=e[i],s=t[i];if(Le(a)&&Le(s)){if(!z(a,s))return!1}else if(a!==s)return!1}for(const i of r)if(!n.includes(i))return!1;return!0}function Le(e){return e!==null&&typeof e=="object"}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const er=1e3,tr=2,nr=4*60*60*1e3,rr=.5;function Ue(e,t=er,n=tr){const r=t*Math.pow(n,e),i=Math.round(rr*r*(Math.random()-.5)*2);return Math.min(nr,r+i)}/**
* @license
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Se(e){return e&&e._delegate?e._delegate:e}class v{constructor(t,n,r){this.name=t,this.instanceFactory=n,this.type=r,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(t){return this.instantiationMode=t,this}setMultipleInstances(t){return this.multipleInstances=t,this}setServiceProps(t){return this.serviceProps=t,this}setInstanceCreatedCallback(t){return this.onInstanceCreated=t,this}}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const M="[DEFAULT]";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class ir{constructor(t,n){this.name=t,this.container=n,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(t){const n=this.normalizeInstanceIdentifier(t);if(!this.instancesDeferred.has(n)){const r=new Xn;if(this.instancesDeferred.set(n,r),this.isInitialized(n)||this.shouldAutoInitialize())try{const i=this.getOrInitializeService({instanceIdentifier:n});i&&r.resolve(i)}catch{}}return this.instancesDeferred.get(n).promise}getImmediate(t){var n;const r=this.normalizeInstanceIdentifier(t==null?void 0:t.identifier),i=(n=t==null?void 0:t.optional)!==null&&n!==void 0?n:!1;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(a){if(i)return null;throw a}else{if(i)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(t){if(t.name!==this.name)throw Error(`Mismatching Component ${t.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=t,!!this.shouldAutoInitialize()){if(sr(t))try{this.getOrInitializeService({instanceIdentifier:M})}catch{}for(const[n,r]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(n);try{const a=this.getOrInitializeService({instanceIdentifier:i});r.resolve(a)}catch{}}}}clearInstance(t=M){this.instancesDeferred.delete(t),this.instancesOptions.delete(t),this.instances.delete(t)}async delete(){const t=Array.from(this.instances.values());await Promise.all([...t.filter(n=>"INTERNAL"in n).map(n=>n.INTERNAL.delete()),...t.filter(n=>"_delete"in n).map(n=>n._delete())])}isComponentSet(){return this.component!=null}isInitialized(t=M){return this.instances.has(t)}getOptions(t=M){return this.instancesOptions.get(t)||{}}initialize(t={}){const{options:n={}}=t,r=this.normalizeInstanceIdentifier(t.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:r,options:n});for(const[a,s]of this.instancesDeferred.entries()){const o=this.normalizeInstanceIdentifier(a);r===o&&s.resolve(i)}return i}onInit(t,n){var r;const i=this.normalizeInstanceIdentifier(n),a=(r=this.onInitCallbacks.get(i))!==null&&r!==void 0?r:new Set;a.add(t),this.onInitCallbacks.set(i,a);const s=this.instances.get(i);return s&&t(s,i),()=>{a.delete(t)}}invokeOnInitCallbacks(t,n){const r=this.onInitCallbacks.get(n);if(r)for(const i of r)try{i(t,n)}catch{}}getOrInitializeService({instanceIdentifier:t,options:n={}}){let r=this.instances.get(t);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:ar(t),options:n}),this.instances.set(t,r),this.instancesOptions.set(t,n),this.invokeOnInitCallbacks(r,t),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,t,r)}catch{}return r||null}normalizeInstanceIdentifier(t=M){return this.component?this.component.multipleInstances?t:M:t}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}}function ar(e){return e===M?void 0:e}function sr(e){return e.instantiationMode==="EAGER"}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class or{constructor(t){this.name=t,this.providers=new Map}addComponent(t){const n=this.getProvider(t.name);if(n.isComponentSet())throw new Error(`Component ${t.name} has already been registered with ${this.name}`);n.setComponent(t)}addOrOverwriteComponent(t){this.getProvider(t.name).isComponentSet()&&this.providers.delete(t.name),this.addComponent(t)}getProvider(t){if(this.providers.has(t))return this.providers.get(t);const n=new ir(t,this);return this.providers.set(t,n),n}getProviders(){return Array.from(this.providers.values())}}/**
* @license
* Copyright 2017 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/var u;(function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"})(u||(u={}));const cr={debug:u.DEBUG,verbose:u.VERBOSE,info:u.INFO,warn:u.WARN,error:u.ERROR,silent:u.SILENT},lr=u.INFO,ur={[u.DEBUG]:"log",[u.VERBOSE]:"log",[u.INFO]:"info",[u.WARN]:"warn",[u.ERROR]:"error"},dr=(e,t,...n)=>{if(t<e.logLevel)return;const r=new Date().toISOString(),i=ur[t];if(i)console[i](`[${r}] ${e.name}:`,...n);else throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`)};class Ce{constructor(t){this.name=t,this._logLevel=lr,this._logHandler=dr,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(t){if(!(t in u))throw new TypeError(`Invalid value "${t}" assigned to \`logLevel\``);this._logLevel=t}setLogLevel(t){this._logLevel=typeof t=="string"?cr[t]:t}get logHandler(){return this._logHandler}set logHandler(t){if(typeof t!="function")throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=t}get userLogHandler(){return this._userLogHandler}set userLogHandler(t){this._userLogHandler=t}debug(...t){this._userLogHandler&&this._userLogHandler(this,u.DEBUG,...t),this._logHandler(this,u.DEBUG,...t)}log(...t){this._userLogHandler&&this._userLogHandler(this,u.VERBOSE,...t),this._logHandler(this,u.VERBOSE,...t)}info(...t){this._userLogHandler&&this._userLogHandler(this,u.INFO,...t),this._logHandler(this,u.INFO,...t)}warn(...t){this._userLogHandler&&this._userLogHandler(this,u.WARN,...t),this._logHandler(this,u.WARN,...t)}error(...t){this._userLogHandler&&this._userLogHandler(this,u.ERROR,...t),this._logHandler(this,u.ERROR,...t)}}const fr=(e,t)=>t.some(n=>e instanceof n);let xe,je;function hr(){return xe||(xe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function pr(){return je||(je=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const It=new WeakMap,pe=new WeakMap,yt=new WeakMap,Q=new WeakMap,De=new WeakMap;function mr(e){const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("success",a),e.removeEventListener("error",s)},a=()=>{n(A(e.result)),i()},s=()=>{r(e.error),i()};e.addEventListener("success",a),e.addEventListener("error",s)});return t.then(n=>{n instanceof IDBCursor&&It.set(n,e)}).catch(()=>{}),De.set(t,e),t}function gr(e){if(pe.has(e))return;const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",s),e.removeEventListener("abort",s)},a=()=>{n(),i()},s=()=>{r(e.error||new DOMException("AbortError","AbortError")),i()};e.addEventListener("complete",a),e.addEventListener("error",s),e.addEventListener("abort",s)});pe.set(e,t)}let me={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return pe.get(e);if(t==="objectStoreNames")return e.objectStoreNames||yt.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return A(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function br(e){me=e(me)}function Ir(e){return e===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(t,...n){const r=e.call(Z(this),t,...n);return yt.set(r,t.sort?t.sort():[t]),A(r)}:pr().includes(e)?function(...t){return e.apply(Z(this),t),A(It.get(this))}:function(...t){return A(e.apply(Z(this),t))}}function yr(e){return typeof e=="function"?Ir(e):(e instanceof IDBTransaction&&gr(e),fr(e,hr())?new Proxy(e,me):e)}function A(e){if(e instanceof IDBRequest)return mr(e);if(Q.has(e))return Q.get(e);const t=yr(e);return t!==e&&(Q.set(e,t),De.set(t,e)),t}const Z=e=>De.get(e);function _r(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const s=indexedDB.open(e,t),o=A(s);return r&&s.addEventListener("upgradeneeded",c=>{r(A(s.result),c.oldVersion,c.newVersion,A(s.transaction),c)}),n&&s.addEventListener("blocked",c=>n(c.oldVersion,c.newVersion,c)),o.then(c=>{a&&c.addEventListener("close",()=>a()),i&&c.addEventListener("versionchange",l=>i(l.oldVersion,l.newVersion,l))}).catch(()=>{}),o}const Er=["get","getKey","getAll","getAllKeys","count"],wr=["put","add","delete","clear"],ee=new Map;function Ve(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(ee.get(t))return ee.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=wr.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Er.includes(n)))return;const a=async function(s,...o){const c=this.transaction(s,i?"readwrite":"readonly");let l=c.store;return r&&(l=l.index(o.shift())),(await Promise.all([l[n](...o),i&&c.done]))[0]};return ee.set(t,a),a}br(e=>({...e,get:(t,n,r)=>Ve(t,n)||e.get(t,n,r),has:(t,n)=>!!Ve(t,n)||e.has(t,n)}));/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Tr{constructor(t){this.container=t}getPlatformInfoString(){return this.container.getProviders().map(n=>{if(vr(n)){const r=n.getImmediate();return`${r.library}/${r.version}`}else return null}).filter(n=>n).join(" ")}}function vr(e){const t=e.getComponent();return(t==null?void 0:t.type)==="VERSION"}const ge="@firebase/app",He="0.9.9";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const P=new Ce("@firebase/app"),Ar="@firebase/app-compat",Sr="@firebase/analytics-compat",Cr="@firebase/analytics",Dr="@firebase/app-check-compat",Rr="@firebase/app-check",Mr="@firebase/auth",Nr="@firebase/auth-compat",Or="@firebase/database",Pr="@firebase/database-compat",Br="@firebase/functions",$r="@firebase/functions-compat",kr="@firebase/installations",Fr="@firebase/installations-compat",Lr="@firebase/messaging",Ur="@firebase/messaging-compat",xr="@firebase/performance",jr="@firebase/performance-compat",Vr="@firebase/remote-config",Hr="@firebase/remote-config-compat",zr="@firebase/storage",qr="@firebase/storage-compat",Wr="@firebase/firestore",Gr="@firebase/firestore-compat",Kr="firebase";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const be="[DEFAULT]",Xr={[ge]:"fire-core",[Ar]:"fire-core-compat",[Cr]:"fire-analytics",[Sr]:"fire-analytics-compat",[Rr]:"fire-app-check",[Dr]:"fire-app-check-compat",[Mr]:"fire-auth",[Nr]:"fire-auth-compat",[Or]:"fire-rtdb",[Pr]:"fire-rtdb-compat",[Br]:"fire-fn",[$r]:"fire-fn-compat",[kr]:"fire-iid",[Fr]:"fire-iid-compat",[Lr]:"fire-fcm",[Ur]:"fire-fcm-compat",[xr]:"fire-perf",[jr]:"fire-perf-compat",[Vr]:"fire-rc",[Hr]:"fire-rc-compat",[zr]:"fire-gcs",[qr]:"fire-gcs-compat",[Wr]:"fire-fst",[Gr]:"fire-fst-compat","fire-js":"fire-js",[Kr]:"fire-js-all"};/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const q=new Map,Ie=new Map;function Yr(e,t){try{e.container.addComponent(t)}catch(n){P.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function R(e){const t=e.name;if(Ie.has(t))return P.debug(`There were multiple attempts to register component ${t}.`),!1;Ie.set(t,e);for(const n of q.values())Yr(n,e);return!0}function V(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Jr={["no-app"]:"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()",["bad-app-name"]:"Illegal App name: '{$appName}",["duplicate-app"]:"Firebase App named '{$appName}' already exists with different options or config",["app-deleted"]:"Firebase App named '{$appName}' already deleted",["no-options"]:"Need to provide options, when not being deployed to hosting via source.",["invalid-app-argument"]:"firebase.{$appName}() takes either no argument or a Firebase App instance.",["invalid-log-argument"]:"First argument to `onLog` must be null or a function.",["idb-open"]:"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.",["idb-get"]:"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.",["idb-set"]:"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.",["idb-delete"]:"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."},S=new j("app","Firebase",Jr);/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Qr{constructor(t,n,r){this._isDeleted=!1,this._options=Object.assign({},t),this._config=Object.assign({},n),this._name=n.name,this._automaticDataCollectionEnabled=n.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new v("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(t){this.checkDestroyed(),this._automaticDataCollectionEnabled=t}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(t){this._isDeleted=t}checkDestroyed(){if(this.isDeleted)throw S.create("app-deleted",{appName:this._name})}}function _t(e,t={}){let n=e;typeof t!="object"&&(t={name:t});const r=Object.assign({name:be,automaticDataCollectionEnabled:!1},t),i=r.name;if(typeof i!="string"||!i)throw S.create("bad-app-name",{appName:String(i)});if(n||(n=Kn()),!n)throw S.create("no-options");const a=q.get(i);if(a){if(z(n,a.options)&&z(r,a.config))return a;throw S.create("duplicate-app",{appName:i})}const s=new or(i);for(const c of Ie.values())s.addComponent(c);const o=new Qr(n,r,s);return q.set(i,o),o}function Et(e=be){const t=q.get(e);if(!t&&e===be)return _t();if(!t)throw S.create("no-app",{appName:e});return t}function E(e,t,n){var r;let i=(r=Xr[e])!==null&&r!==void 0?r:e;n&&(i+=`-${n}`);const a=i.match(/\s|\//),s=t.match(/\s|\//);if(a||s){const o=[`Unable to register library "${i}" with version "${t}":`];a&&o.push(`library name "${i}" contains illegal characters (whitespace or "/")`),a&&s&&o.push("and"),s&&o.push(`version name "${t}" contains illegal characters (whitespace or "/")`),P.warn(o.join(" "));return}R(new v(`${i}-version`,()=>({library:i,version:t}),"VERSION"))}/**
* @license
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Zr="firebase-heartbeat-database",ei=1,x="firebase-heartbeat-store";let te=null;function wt(){return te||(te=_r(Zr,ei,{upgrade:(e,t)=>{switch(t){case 0:e.createObjectStore(x)}}}).catch(e=>{throw S.create("idb-open",{originalErrorMessage:e.message})})),te}async function ti(e){try{return(await wt()).transaction(x).objectStore(x).get(Tt(e))}catch(t){if(t instanceof k)P.warn(t.message);else{const n=S.create("idb-get",{originalErrorMessage:t==null?void 0:t.message});P.warn(n.message)}}}async function ze(e,t){try{const r=(await wt()).transaction(x,"readwrite");return await r.objectStore(x).put(t,Tt(e)),r.done}catch(n){if(n instanceof k)P.warn(n.message);else{const r=S.create("idb-set",{originalErrorMessage:n==null?void 0:n.message});P.warn(r.message)}}}function Tt(e){return`${e.name}!${e.options.appId}`}/**
* @license
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const ni=1024,ri=30*24*60*60*1e3;class ii{constructor(t){this.container=t,this._heartbeatsCache=null;const n=this.container.getProvider("app").getImmediate();this._storage=new si(n),this._heartbeatsCachePromise=this._storage.read().then(r=>(this._heartbeatsCache=r,r))}async triggerHeartbeat(){const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=qe();if(this._heartbeatsCache===null&&(this._heartbeatsCache=await this._heartbeatsCachePromise),!(this._heartbeatsCache.lastSentHeartbeatDate===r||this._heartbeatsCache.heartbeats.some(i=>i.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(i=>{const a=new Date(i.date).valueOf();return Date.now()-a<=ri}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache===null||this._heartbeatsCache.heartbeats.length===0)return"";const t=qe(),{heartbeatsToSend:n,unsentEntries:r}=ai(this._heartbeatsCache.heartbeats),i=gt(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function qe(){return new Date().toISOString().substring(0,10)}function ai(e,t=ni){const n=[];let r=e.slice();for(const i of e){const a=n.find(s=>s.agent===i.agent);if(a){if(a.dates.push(i.date),We(n)>t){a.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),We(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}class si{constructor(t){this.app=t,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return ve()?Ae().then(()=>!0).catch(()=>!1):!1}async read(){return await this._canUseIndexedDBPromise?await ti(this.app)||{heartbeats:[]}:{heartbeats:[]}}async overwrite(t){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return ze(this.app,{lastSentHeartbeatDate:(n=t.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:t.heartbeats})}else return}async add(t){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return ze(this.app,{lastSentHeartbeatDate:(n=t.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:[...i.heartbeats,...t.heartbeats]})}else return}}function We(e){return gt(JSON.stringify({version:2,heartbeats:e})).length}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function oi(e){R(new v("platform-logger",t=>new Tr(t),"PRIVATE")),R(new v("heartbeat",t=>new ii(t),"PRIVATE")),E(ge,He,e),E(ge,He,"esm2017"),E("fire-js","")}oi("");var ci="firebase",li="9.21.0";/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/E(ci,li,"app");const ui=(e,t)=>t.some(n=>e instanceof n);let Ge,Ke;function di(){return Ge||(Ge=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function fi(){return Ke||(Ke=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const vt=new WeakMap,ye=new WeakMap,At=new WeakMap,ne=new WeakMap,Re=new WeakMap;function hi(e){const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("success",a),e.removeEventListener("error",s)},a=()=>{n(C(e.result)),i()},s=()=>{r(e.error),i()};e.addEventListener("success",a),e.addEventListener("error",s)});return t.then(n=>{n instanceof IDBCursor&&vt.set(n,e)}).catch(()=>{}),Re.set(t,e),t}function pi(e){if(ye.has(e))return;const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",s),e.removeEventListener("abort",s)},a=()=>{n(),i()},s=()=>{r(e.error||new DOMException("AbortError","AbortError")),i()};e.addEventListener("complete",a),e.addEventListener("error",s),e.addEventListener("abort",s)});ye.set(e,t)}let _e={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return ye.get(e);if(t==="objectStoreNames")return e.objectStoreNames||At.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return C(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function mi(e){_e=e(_e)}function gi(e){return e===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(t,...n){const r=e.call(re(this),t,...n);return At.set(r,t.sort?t.sort():[t]),C(r)}:fi().includes(e)?function(...t){return e.apply(re(this),t),C(vt.get(this))}:function(...t){return C(e.apply(re(this),t))}}function bi(e){return typeof e=="function"?gi(e):(e instanceof IDBTransaction&&pi(e),ui(e,di())?new Proxy(e,_e):e)}function C(e){if(e instanceof IDBRequest)return hi(e);if(ne.has(e))return ne.get(e);const t=bi(e);return t!==e&&(ne.set(e,t),Re.set(t,e)),t}const re=e=>Re.get(e);function Ii(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const s=indexedDB.open(e,t),o=C(s);return r&&s.addEventListener("upgradeneeded",c=>{r(C(s.result),c.oldVersion,c.newVersion,C(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),o.then(c=>{a&&c.addEventListener("close",()=>a()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),o}const yi=["get","getKey","getAll","getAllKeys","count"],_i=["put","add","delete","clear"],ie=new Map;function Xe(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(ie.get(t))return ie.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=_i.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||yi.includes(n)))return;const a=async function(s,...o){const c=this.transaction(s,i?"readwrite":"readonly");let l=c.store;return r&&(l=l.index(o.shift())),(await Promise.all([l[n](...o),i&&c.done]))[0]};return ie.set(t,a),a}mi(e=>({...e,get:(t,n,r)=>Xe(t,n)||e.get(t,n,r),has:(t,n)=>!!Xe(t,n)||e.has(t,n)}));const St="@firebase/installations",Me="0.6.4";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ct=1e4,Dt=`w:${Me}`,Rt="FIS_v2",Ei="https://firebaseinstallations.googleapis.com/v1",wi=60*60*1e3,Ti="installations",vi="Installations";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ai={["missing-app-config-values"]:'Missing App configuration value: "{$valueName}"',["not-registered"]:"Firebase Installation is not registered.",["installation-not-found"]:"Firebase Installation not found.",["request-failed"]:'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',["app-offline"]:"Could not process request. Application offline.",["delete-pending-registration"]:"Can't delete installation while there is a pending registration request."},B=new j(Ti,vi,Ai);function Mt(e){return e instanceof k&&e.code.includes("request-failed")}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Nt({projectId:e}){return`${Ei}/projects/${e}/installations`}function Ot(e){return{token:e.token,requestStatus:2,expiresIn:Ci(e.expiresIn),creationTime:Date.now()}}async function Pt(e,t){const r=(await t.json()).error;return B.create("request-failed",{requestName:e,serverCode:r.code,serverMessage:r.message,serverStatus:r.status})}function Bt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function Si(e,{refreshToken:t}){const n=Bt(e);return n.append("Authorization",Di(t)),n}async function $t(e){const t=await e();return t.status>=500&&t.status<600?e():t}function Ci(e){return Number(e.replace("s","000"))}function Di(e){return`${Rt} ${e}`}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Ri({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Nt(e),i=Bt(e),a=t.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={fid:n,authVersion:Rt,appId:e.appId,sdkVersion:Dt},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await $t(()=>fetch(r,o));if(c.ok){const l=await c.json();return{fid:l.fid||n,registrationStatus:2,refreshToken:l.refreshToken,authToken:Ot(l.authToken)}}else throw await Pt("Create Installation",c)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function kt(e){return new Promise(t=>{setTimeout(t,e)})}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function Mi(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ni=/^[cdef][\w-]{21}$/,Ee="";function Oi(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const n=Pi(e);return Ni.test(n)?n:Ee}catch{return Ee}}function Pi(e){return Mi(e).substr(0,22)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function X(e){return`${e.appName}!${e.appId}`}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ft=new Map;function Lt(e,t){const n=X(e);Ut(n,t),Bi(n,t)}function Ut(e,t){const n=Ft.get(e);if(n)for(const r of n)r(t)}function Bi(e,t){const n=$i();n&&n.postMessage({key:e,fid:t}),ki()}let N=null;function $i(){return!N&&"BroadcastChannel"in self&&(N=new BroadcastChannel("[Firebase] FID Change"),N.onmessage=e=>{Ut(e.data.key,e.data.fid)}),N}function ki(){Ft.size===0&&N&&(N.close(),N=null)}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Fi="firebase-installations-database",Li=1,$="firebase-installations-store";let ae=null;function Ne(){return ae||(ae=Ii(Fi,Li,{upgrade:(e,t)=>{switch(t){case 0:e.createObjectStore($)}}})),ae}async function W(e,t){const n=X(e),i=(await Ne()).transaction($,"readwrite"),a=i.objectStore($),s=await a.get(n);return await a.put(t,n),await i.done,(!s||s.fid!==t.fid)&&Lt(e,t.fid),t}async function xt(e){const t=X(e),r=(await Ne()).transaction($,"readwrite");await r.objectStore($).delete(t),await r.done}async function Y(e,t){const n=X(e),i=(await Ne()).transaction($,"readwrite"),a=i.objectStore($),s=await a.get(n),o=t(s);return o===void 0?await a.delete(n):await a.put(o,n),await i.done,o&&(!s||s.fid!==o.fid)&&Lt(e,o.fid),o}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Oe(e){let t;const n=await Y(e.appConfig,r=>{const i=Ui(r),a=xi(e,i);return t=a.registrationPromise,a.installationEntry});return n.fid===Ee?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}function Ui(e){const t=e||{fid:Oi(),registrationStatus:0};return jt(t)}function xi(e,t){if(t.registrationStatus===0){if(!navigator.onLine){const i=Promise.reject(B.create("app-offline"));return{installationEntry:t,registrationPromise:i}}const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},r=ji(e,n);return{installationEntry:n,registrationPromise:r}}else return t.registrationStatus===1?{installationEntry:t,registrationPromise:Vi(e)}:{installationEntry:t}}async function ji(e,t){try{const n=await Ri(e,t);return W(e.appConfig,n)}catch(n){throw Mt(n)&&n.customData.serverCode===409?await xt(e.appConfig):await W(e.appConfig,{fid:t.fid,registrationStatus:0}),n}}async function Vi(e){let t=await Ye(e.appConfig);for(;t.registrationStatus===1;)await kt(100),t=await Ye(e.appConfig);if(t.registrationStatus===0){const{installationEntry:n,registrationPromise:r}=await Oe(e);return r||n}return t}function Ye(e){return Y(e,t=>{if(!t)throw B.create("installation-not-found");return jt(t)})}function jt(e){return Hi(e)?{fid:e.fid,registrationStatus:0}:e}function Hi(e){return e.registrationStatus===1&&e.registrationTime+Ct<Date.now()}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function zi({appConfig:e,heartbeatServiceProvider:t},n){const r=qi(e,n),i=Si(e,n),a=t.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={installation:{sdkVersion:Dt,appId:e.appId}},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await $t(()=>fetch(r,o));if(c.ok){const l=await c.json();return Ot(l)}else throw await Pt("Generate Auth Token",c)}function qi(e,{fid:t}){return`${Nt(e)}/${t}/authTokens:generate`}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Pe(e,t=!1){let n;const r=await Y(e.appConfig,a=>{if(!Vt(a))throw B.create("not-registered");const s=a.authToken;if(!t&&Ki(s))return a;if(s.requestStatus===1)return n=Wi(e,t),a;{if(!navigator.onLine)throw B.create("app-offline");const o=Yi(a);return n=Gi(e,o),o}});return n?await n:r.authToken}async function Wi(e,t){let n=await Je(e.appConfig);for(;n.authToken.requestStatus===1;)await kt(100),n=await Je(e.appConfig);const r=n.authToken;return r.requestStatus===0?Pe(e,t):r}function Je(e){return Y(e,t=>{if(!Vt(t))throw B.create("not-registered");const n=t.authToken;return Ji(n)?Object.assign(Object.assign({},t),{authToken:{requestStatus:0}}):t})}async function Gi(e,t){try{const n=await zi(e,t),r=Object.assign(Object.assign({},t),{authToken:n});return await W(e.appConfig,r),n}catch(n){if(Mt(n)&&(n.customData.serverCode===401||n.customData.serverCode===404))await xt(e.appConfig);else{const r=Object.assign(Object.assign({},t),{authToken:{requestStatus:0}});await W(e.appConfig,r)}throw n}}function Vt(e){return e!==void 0&&e.registrationStatus===2}function Ki(e){return e.requestStatus===2&&!Xi(e)}function Xi(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+wi}function Yi(e){const t={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},e),{authToken:t})}function Ji(e){return e.requestStatus===1&&e.requestTime+Ct<Date.now()}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Qi(e){const t=e,{installationEntry:n,registrationPromise:r}=await Oe(t);return r?r.catch(console.error):Pe(t).catch(console.error),n.fid}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Zi(e,t=!1){const n=e;return await ea(n),(await Pe(n,t)).token}async function ea(e){const{registrationPromise:t}=await Oe(e);t&&await t}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function ta(e){if(!e||!e.options)throw se("App Configuration");if(!e.name)throw se("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw se(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}function se(e){return B.create("missing-app-config-values",{valueName:e})}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ht="installations",na="installations-internal",ra=e=>{const t=e.getProvider("app").getImmediate(),n=ta(t),r=V(t,"heartbeat");return{app:t,appConfig:n,heartbeatServiceProvider:r,_delete:()=>Promise.resolve()}},ia=e=>{const t=e.getProvider("app").getImmediate(),n=V(t,Ht).getImmediate();return{getId:()=>Qi(n),getToken:i=>Zi(n,i)}};function aa(){R(new v(Ht,ra,"PUBLIC")),R(new v(na,ia,"PRIVATE"))}aa();E(St,Me);E(St,Me,"esm2017");/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const G="analytics",sa="firebase_id",oa="origin",ca=60*1e3,la="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",Be="https://www.googletagmanager.com/gtag/js";/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const m=new Ce("@firebase/analytics");/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const ua={["already-exists"]:"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.",["already-initialized"]:"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.",["already-initialized-settings"]:"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.",["interop-component-reg-failed"]:"Firebase Analytics Interop Component failed to instantiate: {$reason}",["invalid-analytics-context"]:"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}",["indexeddb-unavailable"]:"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}",["fetch-throttle"]:"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.",["config-fetch-failed"]:"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}",["no-api-key"]:'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',["no-app-id"]:'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',["no-client-id"]:'The "client_id" field is empty.',["invalid-gtag-resource"]:"Trusted Types detected an invalid gtag resource: {$gtagURL}."},y=new j("analytics","Analytics",ua);/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function da(e){if(!e.startsWith(Be)){const t=y.create("invalid-gtag-resource",{gtagURL:e});return m.warn(t.message),""}return e}function zt(e){return Promise.all(e.map(t=>t.catch(n=>n)))}function fa(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(e,t)),n}function ha(e,t){const n=fa("firebase-js-sdk-policy",{createScriptURL:da}),r=document.createElement("script"),i=`${Be}?l=${e}&id=${t}`;r.src=n?n==null?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function pa(e){let t=[];return Array.isArray(window[e])?t=window[e]:window[e]=t,t}async function ma(e,t,n,r,i,a){const s=r[i];try{if(s)await t[s];else{const c=(await zt(n)).find(l=>l.measurementId===i);c&&await t[c.appId]}}catch(o){m.error(o)}e("config",i,a)}async function ga(e,t,n,r,i){try{let a=[];if(i&&i.send_to){let s=i.send_to;Array.isArray(s)||(s=[s]);const o=await zt(n);for(const c of s){const l=o.find(h=>h.measurementId===c),d=l&&t[l.appId];if(d)a.push(d);else{a=[];break}}}a.length===0&&(a=Object.values(t)),await Promise.all(a),e("event",r,i||{})}catch(a){m.error(a)}}function ba(e,t,n,r){async function i(a,...s){try{if(a==="event"){const[o,c]=s;await ga(e,t,n,o,c)}else if(a==="config"){const[o,c]=s;await ma(e,t,n,r,o,c)}else if(a==="consent"){const[o]=s;e("consent","update",o)}else if(a==="get"){const[o,c,l]=s;e("get",o,c,l)}else if(a==="set"){const[o]=s;e("set",o)}else e(a,...s)}catch(o){m.error(o)}}return i}function Ia(e,t,n,r,i){let a=function(...s){window[r].push(arguments)};return window[i]&&typeof window[i]=="function"&&(a=window[i]),window[i]=ba(a,e,t,n),{gtagCore:a,wrappedGtag:window[i]}}function ya(e){const t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(Be)&&n.src.includes(e))return n;return null}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const _a=30,Ea=1e3;class wa{constructor(t={},n=Ea){this.throttleMetadata=t,this.intervalMillis=n}getThrottleMetadata(t){return this.throttleMetadata[t]}setThrottleMetadata(t,n){this.throttleMetadata[t]=n}deleteThrottleMetadata(t){delete this.throttleMetadata[t]}}const qt=new wa;function Ta(e){return new Headers({Accept:"application/json","x-goog-api-key":e})}async function va(e){var t;const{appId:n,apiKey:r}=e,i={method:"GET",headers:Ta(r)},a=la.replace("{app-id}",n),s=await fetch(a,i);if(s.status!==200&&s.status!==304){let o="";try{const c=await s.json();!((t=c.error)===null||t===void 0)&&t.message&&(o=c.error.message)}catch{}throw y.create("config-fetch-failed",{httpStatus:s.status,responseMessage:o})}return s.json()}async function Aa(e,t=qt,n){const{appId:r,apiKey:i,measurementId:a}=e.options;if(!r)throw y.create("no-app-id");if(!i){if(a)return{measurementId:a,appId:r};throw y.create("no-api-key")}const s=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},o=new Da;return setTimeout(async()=>{o.abort()},n!==void 0?n:ca),Wt({appId:r,apiKey:i,measurementId:a},s,o,t)}async function Wt(e,{throttleEndTimeMillis:t,backoffCount:n},r,i=qt){var a;const{appId:s,measurementId:o}=e;try{await Sa(r,t)}catch(c){if(o)return m.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${c==null?void 0:c.message}]`),{appId:s,measurementId:o};throw c}try{const c=await va(e);return i.deleteThrottleMetadata(s),c}catch(c){const l=c;if(!Ca(l)){if(i.deleteThrottleMetadata(s),o)return m.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${l==null?void 0:l.message}]`),{appId:s,measurementId:o};throw c}const d=Number((a=l==null?void 0:l.customData)===null||a===void 0?void 0:a.httpStatus)===503?Ue(n,i.intervalMillis,_a):Ue(n,i.intervalMillis),h={throttleEndTimeMillis:Date.now()+d,backoffCount:n+1};return i.setThrottleMetadata(s,h),m.debug(`Calling attemptFetch again in ${d} millis`),Wt(e,h,r,i)}}function Sa(e,t){return new Promise((n,r)=>{const i=Math.max(t-Date.now(),0),a=setTimeout(n,i);e.addEventListener(()=>{clearTimeout(a),r(y.create("fetch-throttle",{throttleEndTimeMillis:t}))})})}function Ca(e){if(!(e instanceof k)||!e.customData)return!1;const t=Number(e.customData.httpStatus);return t===429||t===500||t===503||t===504}class Da{constructor(){this.listeners=[]}addEventListener(t){this.listeners.push(t)}abort(){this.listeners.forEach(t=>t())}}async function Ra(e,t,n,r,i){if(i&&i.global){e("event",n,r);return}else{const a=await t,s=Object.assign(Object.assign({},r),{send_to:a});e("event",n,s)}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/async function Ma(){if(ve())try{await Ae()}catch(e){return m.warn(y.create("indexeddb-unavailable",{errorInfo:e==null?void 0:e.toString()}).message),!1}else return m.warn(y.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;return!0}async function Na(e,t,n,r,i,a,s){var o;const c=Aa(e);c.then(b=>{n[b.measurementId]=b.appId,e.options.measurementId&&b.measurementId!==e.options.measurementId&&m.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${b.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)}).catch(b=>m.error(b)),t.push(c);const l=Ma().then(b=>{if(b)return r.getId()}),[d,h]=await Promise.all([c,l]);ya(a)||ha(a,d.measurementId),i("js",new Date);const g=(o=s==null?void 0:s.config)!==null&&o!==void 0?o:{};return g[oa]="firebase",g.update=!0,h!=null&&(g[sa]=h),i("config",d.measurementId,g),d.measurementId}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class Oa{constructor(t){this.app=t}_delete(){return delete U[this.app.options.appId],Promise.resolve()}}let U={},Qe=[];const Ze={};let oe="dataLayer",Pa="gtag",et,Gt,tt=!1;function Ba(){const e=[];if(Yn()&&e.push("This is a browser extension environment."),bt()||e.push("Cookies are not available."),e.length>0){const t=e.map((r,i)=>`(${i+1}) ${r}`).join(" "),n=y.create("invalid-analytics-context",{errorInfo:t});m.warn(n.message)}}function $a(e,t,n){Ba();const r=e.options.appId;if(!r)throw y.create("no-app-id");if(!e.options.apiKey)if(e.options.measurementId)m.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`);else throw y.create("no-api-key");if(U[r]!=null)throw y.create("already-exists",{id:r});if(!tt){pa(oe);const{wrappedGtag:a,gtagCore:s}=Ia(U,Qe,Ze,oe,Pa);Gt=a,et=s,tt=!0}return U[r]=Na(e,Qe,Ze,t,et,oe,n),new Oa(e)}function ka(e=Et()){e=Se(e);const t=V(e,G);return t.isInitialized()?t.getImmediate():Fa(e)}function Fa(e,t={}){const n=V(e,G);if(n.isInitialized()){const i=n.getImmediate();if(z(t,n.getOptions()))return i;throw y.create("already-initialized")}return n.initialize({options:t})}function La(e,t,n,r){e=Se(e),Ra(Gt,U[e.app.options.appId],t,n,r).catch(i=>m.error(i))}const nt="@firebase/analytics",rt="0.10.0";function Ua(){R(new v(G,(t,{options:n})=>{const r=t.getProvider("app").getImmediate(),i=t.getProvider("installations-internal").getImmediate();return $a(r,i,n)},"PUBLIC")),R(new v("analytics-internal",e,"PRIVATE")),E(nt,rt),E(nt,rt,"esm2017");function e(t){try{const n=t.getProvider(G).getImmediate();return{logEvent:(r,i,a)=>La(n,r,i,a)}}catch(n){throw y.create("interop-component-reg-failed",{reason:n})}}}Ua();const it="@firebase/performance",we="0.6.4";/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Kt=we,xa="FB-PERF-TRACE-START",ja="FB-PERF-TRACE-STOP",Te="FB-PERF-TRACE-MEASURE",Xt="_wt_",Yt="_fp",Jt="_fcp",Qt="_fid",Zt="@firebase/performance/config",en="@firebase/performance/configexpire",Va="performance",tn="Performance";/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ha={["trace started"]:"Trace {$traceName} was started before.",["trace stopped"]:"Trace {$traceName} is not running.",["nonpositive trace startTime"]:"Trace {$traceName} startTime should be positive.",["nonpositive trace duration"]:"Trace {$traceName} duration should be positive.",["no window"]:"Window is not available.",["no app id"]:"App id is not available.",["no project id"]:"Project id is not available.",["no api key"]:"Api key is not available.",["invalid cc log"]:"Attempted to queue invalid cc event",["FB not default"]:"Performance can only start when Firebase app instance is the default one.",["RC response not ok"]:"RC response is not ok",["invalid attribute name"]:"Attribute name {$attributeName} is invalid.",["invalid attribute value"]:"Attribute value {$attributeValue} is invalid.",["invalid custom metric name"]:"Custom metric name {$customMetricName} is invalid",["invalid String merger input"]:"Input for String merger is invalid, contact support team to resolve.",["already initialized"]:"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."},p=new j(Va,tn,Ha);/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const w=new Ce(tn);w.logLevel=u.INFO;/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let ce,nn;class f{constructor(t){if(this.window=t,!t)throw p.create("no window");this.performance=t.performance,this.PerformanceObserver=t.PerformanceObserver,this.windowLocation=t.location,this.navigator=t.navigator,this.document=t.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=t.localStorage),t.perfMetrics&&t.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=t.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(t){!this.performance||!this.performance.mark||this.performance.mark(t)}measure(t,n,r){!this.performance||!this.performance.measure||this.performance.measure(t,n,r)}getEntriesByType(t){return!this.performance||!this.performance.getEntriesByType?[]:this.performance.getEntriesByType(t)}getEntriesByName(t){return!this.performance||!this.performance.getEntriesByName?[]:this.performance.getEntriesByName(t)}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return!fetch||!Promise||!bt()?(w.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1):ve()?!0:(w.info("IndexedDB is not supported by current browswer"),!1)}setupObserver(t,n){if(!this.PerformanceObserver)return;new this.PerformanceObserver(i=>{for(const a of i.getEntries())n(a)}).observe({entryTypes:[t]})}static getInstance(){return ce===void 0&&(ce=new f(nn)),ce}}function za(e){nn=e}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let rn;function qa(e){const t=e.getId();return t.then(n=>{rn=n}),t}function $e(){return rn}function Wa(e){const t=e.getToken();return t.then(n=>{}),t}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function at(e,t){const n=e.length-t.length;if(n<0||n>1)throw p.create("invalid String merger input");const r=[];for(let i=0;i<e.length;i++)r.push(e.charAt(i)),t.length>i&&r.push(t.charAt(i));return r.join("")}/**
* @license
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let le;class I{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=at("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=at("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return le===void 0&&(le=new I),le}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/var F;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.VISIBLE=1]="VISIBLE",e[e.HIDDEN=2]="HIDDEN"})(F||(F={}));const Ga=["firebase_","google_","ga_"],Ka=new RegExp("^[a-zA-Z]\\w*$"),Xa=40,Ya=100;function Ja(){const e=f.getInstance().navigator;return e!=null&&e.serviceWorker?e.serviceWorker.controller?2:3:1}function an(){switch(f.getInstance().document.visibilityState){case"visible":return F.VISIBLE;case"hidden":return F.HIDDEN;default:return F.UNKNOWN}}function Qa(){const t=f.getInstance().navigator.connection;switch(t&&t.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function Za(e){return e.length===0||e.length>Xa?!1:!Ga.some(n=>e.startsWith(n))&&!!e.match(Ka)}function es(e){return e.length!==0&&e.length<=Ya}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function sn(e){var t;const n=(t=e.options)===null||t===void 0?void 0:t.appId;if(!n)throw p.create("no app id");return n}function ts(e){var t;const n=(t=e.options)===null||t===void 0?void 0:t.projectId;if(!n)throw p.create("no project id");return n}function ns(e){var t;const n=(t=e.options)===null||t===void 0?void 0:t.apiKey;if(!n)throw p.create("no api key");return n}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const rs="0.0.1",_={loggingEnabled:!0},is="FIREBASE_INSTALLATIONS_AUTH";function as(e,t){const n=ss();return n?(st(n),Promise.resolve()):ls(e,t).then(st).then(r=>os(r),()=>{})}function ss(){const e=f.getInstance().localStorage;if(!e)return;const t=e.getItem(en);if(!t||!us(t))return;const n=e.getItem(Zt);if(n)try{return JSON.parse(n)}catch{return}}function os(e){const t=f.getInstance().localStorage;!e||!t||(t.setItem(Zt,JSON.stringify(e)),t.setItem(en,String(Date.now()+I.getInstance().configTimeToLive*60*60*1e3)))}const cs="Could not fetch config, will use default configs";function ls(e,t){return Wa(e.installations).then(n=>{const r=ts(e.app),i=ns(e.app),a=`https://firebaseremoteconfig.googleapis.com/v1/projects/${r}/namespaces/fireperf:fetch?key=${i}`,s=new Request(a,{method:"POST",headers:{Authorization:`${is} ${n}`},body:JSON.stringify({app_instance_id:t,app_instance_id_token:n,app_id:sn(e.app),app_version:Kt,sdk_version:rs})});return fetch(s).then(o=>{if(o.ok)return o.json();throw p.create("RC response not ok")})}).catch(()=>{w.info(cs)})}function st(e){if(!e)return e;const t=I.getInstance(),n=e.entries||{};return n.fpr_enabled!==void 0?t.loggingEnabled=String(n.fpr_enabled)==="true":t.loggingEnabled=_.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):_.logSource&&(t.logSource=_.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:_.logEndPointUrl&&(t.logEndPointUrl=_.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:_.transportKey&&(t.transportKey=_.transportKey),n.fpr_vc_network_request_sampling_rate!==void 0?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):_.networkRequestsSamplingRate!==void 0&&(t.networkRequestsSamplingRate=_.networkRequestsSamplingRate),n.fpr_vc_trace_sampling_rate!==void 0?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):_.tracesSamplingRate!==void 0&&(t.tracesSamplingRate=_.tracesSamplingRate),t.logTraceAfterSampling=ot(t.tracesSamplingRate),t.logNetworkAfterSampling=ot(t.networkRequestsSamplingRate),e}function us(e){return Number(e)>Date.now()}function ot(e){return Math.random()<=e}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let ke=1,ue;function on(e){return ke=2,ue=ue||fs(e),ue}function ds(){return ke===3}function fs(e){return hs().then(()=>qa(e.installations)).then(t=>as(e,t)).then(()=>ct(),()=>ct())}function hs(){const e=f.getInstance().document;return new Promise(t=>{if(e&&e.readyState!=="complete"){const n=()=>{e.readyState==="complete"&&(e.removeEventListener("readystatechange",n),t())};e.addEventListener("readystatechange",n)}else t()})}function ct(){ke=3}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Fe=10*1e3,ps=5.5*1e3,cn=3,ms=1e3;let K=cn,D=[],lt=!1;function gs(){lt||(J(ps),lt=!0)}function J(e){setTimeout(()=>{if(K!==0){if(!D.length)return J(Fe);bs()}},e)}function bs(){const e=D.splice(0,ms),t=e.map(r=>({source_extension_json_proto3:r.message,event_time_ms:String(r.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:I.getInstance().logSource,log_event:t};Is(n,e).catch(()=>{D=[...e,...D],K--,w.info(`Tries left: ${K}.`),J(Fe)})}function Is(e,t){return ys(e).then(n=>(n.ok||w.info("Call to Firebase backend failed."),n.json())).then(n=>{const r=Number(n.nextRequestWaitMillis);let i=Fe;isNaN(r)||(i=Math.max(r,i));const a=n.logResponseDetails;Array.isArray(a)&&a.length>0&&a[0].responseAction==="RETRY_REQUEST_LATER"&&(D=[...t,...D],w.info("Retry transport request later.")),K=cn,J(i)})}function ys(e){const t=I.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}function _s(e){if(!e.eventTime||!e.message)throw p.create("invalid cc log");D=[...D,e]}function Es(e){return(...t)=>{const n=e(...t);_s({message:n,eventTime:Date.now()})}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/let de;function ln(e,t){de||(de=Es(Ts)),de(e,t)}function H(e){const t=I.getInstance();!t.instrumentationEnabled&&e.isAuto||!t.dataCollectionEnabled&&!e.isAuto||f.getInstance().requiredApisAvailable()&&(e.isAuto&&an()!==F.VISIBLE||(ds()?fe(e):on(e.performanceController).then(()=>fe(e),()=>fe(e))))}function fe(e){if(!$e())return;const t=I.getInstance();!t.loggingEnabled||!t.logTraceAfterSampling||setTimeout(()=>ln(e,1),0)}function ws(e){const t=I.getInstance();if(!t.instrumentationEnabled)return;const n=e.url,r=t.logEndPointUrl.split("?")[0],i=t.flTransportEndpointUrl.split("?")[0];n===r||n===i||!t.loggingEnabled||!t.logNetworkAfterSampling||setTimeout(()=>ln(e,0),0)}function Ts(e,t){return t===0?vs(e):As(e)}function vs(e){const t={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},n={application_info:un(e.performanceController.app),network_request_metric:t};return JSON.stringify(n)}function As(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};Object.keys(e.counters).length!==0&&(t.counters=e.counters);const n=e.getAttributes();Object.keys(n).length!==0&&(t.custom_attributes=n);const r={application_info:un(e.performanceController.app),trace_metric:t};return JSON.stringify(r)}function un(e){return{google_app_id:sn(e),app_instance_id:$e(),web_app_info:{sdk_version:Kt,page_url:f.getInstance().getUrl(),service_worker_status:Ja(),visibility_state:an(),effective_connection_type:Qa()},application_process_state:0}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ss=100,Cs="_",Ds=[Yt,Jt,Qt];function Rs(e,t){return e.length===0||e.length>Ss?!1:t&&t.startsWith(Xt)&&Ds.indexOf(e)>-1||!e.startsWith(Cs)}function Ms(e){const t=Math.floor(e);return t<e&&w.info(`Metric value should be an Integer, setting the value as : ${t}.`),t}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class O{constructor(t,n,r=!1,i){this.performanceController=t,this.name=n,this.isAuto=r,this.state=1,this.customAttributes={},this.counters={},this.api=f.getInstance(),this.randomId=Math.floor(Math.random()*1e6),this.isAuto||(this.traceStartMark=`${xa}-${this.randomId}-${this.name}`,this.traceStopMark=`${ja}-${this.randomId}-${this.name}`,this.traceMeasure=i||`${Te}-${this.randomId}-${this.name}`,i&&this.calculateTraceMetrics())}start(){if(this.state!==1)throw p.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(this.state!==2)throw p.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),H(this)}record(t,n,r){if(t<=0)throw p.create("nonpositive trace startTime",{traceName:this.name});if(n<=0)throw p.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(n*1e3),this.startTimeUs=Math.floor(t*1e3),r&&r.attributes&&(this.customAttributes=Object.assign({},r.attributes)),r&&r.metrics)for(const i of Object.keys(r.metrics))isNaN(Number(r.metrics[i]))||(this.counters[i]=Math.floor(Number(r.metrics[i])));H(this)}incrementMetric(t,n=1){this.counters[t]===void 0?this.putMetric(t,n):this.putMetric(t,this.counters[t]+n)}putMetric(t,n){if(Rs(t,this.name))this.counters[t]=Ms(n??0);else throw p.create("invalid custom metric name",{customMetricName:t})}getMetric(t){return this.counters[t]||0}putAttribute(t,n){const r=Za(t),i=es(n);if(r&&i){this.customAttributes[t]=n;return}if(!r)throw p.create("invalid attribute name",{attributeName:t});if(!i)throw p.create("invalid attribute value",{attributeValue:n})}getAttribute(t){return this.customAttributes[t]}removeAttribute(t){this.customAttributes[t]!==void 0&&delete this.customAttributes[t]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(t){this.startTimeUs=t}setDuration(t){this.durationUs=t}calculateTraceMetrics(){const t=this.api.getEntriesByName(this.traceMeasure),n=t&&t[0];n&&(this.durationUs=Math.floor(n.duration*1e3),this.startTimeUs=Math.floor((n.startTime+this.api.getTimeOrigin())*1e3))}static createOobTrace(t,n,r,i){const a=f.getInstance().getUrl();if(!a)return;const s=new O(t,Xt+a,!0),o=Math.floor(f.getInstance().getTimeOrigin()*1e3);s.setStartTime(o),n&&n[0]&&(s.setDuration(Math.floor(n[0].duration*1e3)),s.putMetric("domInteractive",Math.floor(n[0].domInteractive*1e3)),s.putMetric("domContentLoadedEventEnd",Math.floor(n[0].domContentLoadedEventEnd*1e3)),s.putMetric("loadEventEnd",Math.floor(n[0].loadEventEnd*1e3)));const c="first-paint",l="first-contentful-paint";if(r){const d=r.find(g=>g.name===c);d&&d.startTime&&s.putMetric(Yt,Math.floor(d.startTime*1e3));const h=r.find(g=>g.name===l);h&&h.startTime&&s.putMetric(Jt,Math.floor(h.startTime*1e3)),i&&s.putMetric(Qt,Math.floor(i*1e3))}H(s)}static createUserTimingTrace(t,n){const r=new O(t,n,!1,n);H(r)}}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/function ut(e,t){const n=t;if(!n||n.responseStart===void 0)return;const r=f.getInstance().getTimeOrigin(),i=Math.floor((n.startTime+r)*1e3),a=n.responseStart?Math.floor((n.responseStart-n.startTime)*1e3):void 0,s=Math.floor((n.responseEnd-n.startTime)*1e3),o=n.name&&n.name.split("?")[0],c={performanceController:e,url:o,responsePayloadBytes:n.transferSize,startTimeUs:i,timeToResponseInitiatedUs:a,timeToResponseCompletedUs:s};ws(c)}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/const Ns=5e3;function dt(e){$e()&&(setTimeout(()=>Ps(e),0),setTimeout(()=>Os(e),0),setTimeout(()=>Bs(e),0))}function Os(e){const t=f.getInstance(),n=t.getEntriesByType("resource");for(const r of n)ut(e,r);t.setupObserver("resource",r=>ut(e,r))}function Ps(e){const t=f.getInstance(),n=t.getEntriesByType("navigation"),r=t.getEntriesByType("paint");if(t.onFirstInputDelay){let i=setTimeout(()=>{O.createOobTrace(e,n,r),i=void 0},Ns);t.onFirstInputDelay(a=>{i&&(clearTimeout(i),O.createOobTrace(e,n,r,a))})}else O.createOobTrace(e,n,r)}function Bs(e){const t=f.getInstance(),n=t.getEntriesByType("measure");for(const r of n)ft(e,r);t.setupObserver("measure",r=>ft(e,r))}function ft(e,t){const n=t.name;n.substring(0,Te.length)!==Te&&O.createUserTimingTrace(e,n)}/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/class $s{constructor(t,n){this.app=t,this.installations=n,this.initialized=!1}_init(t){this.initialized||((t==null?void 0:t.dataCollectionEnabled)!==void 0&&(this.dataCollectionEnabled=t.dataCollectionEnabled),(t==null?void 0:t.instrumentationEnabled)!==void 0&&(this.instrumentationEnabled=t.instrumentationEnabled),f.getInstance().requiredApisAvailable()?Ae().then(n=>{n&&(gs(),on(this).then(()=>dt(this),()=>dt(this)),this.initialized=!0)}).catch(n=>{w.info(`Environment doesn't support IndexedDB: ${n}`)}):w.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(t){I.getInstance().instrumentationEnabled=t}get instrumentationEnabled(){return I.getInstance().instrumentationEnabled}set dataCollectionEnabled(t){I.getInstance().dataCollectionEnabled=t}get dataCollectionEnabled(){return I.getInstance().dataCollectionEnabled}}const ks="[DEFAULT]";function Fs(e=Et()){return e=Se(e),V(e,"performance").getImmediate()}const Ls=(e,{options:t})=>{const n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==ks)throw p.create("FB not default");if(typeof window>"u")throw p.create("no window");za(window);const i=new $s(n,r);return i._init(t),i};function Us(){R(new v("performance",Ls,"PUBLIC")),E(it,we),E(it,we,"esm2017")}Us();const xs=e=>(In("data-v-fd8ce0a8"),e=e(),yn(),e),js=xs(()=>T("div",{"data-v-98ddab3d":"","data-v-8f7cd5e4":"",class:"VPContent",id:"VPContent"},[T("div",{"data-v-6c4a3ffe":"","data-v-98ddab3d":"",class:"NotFound"},[T("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png",alt:"",class:"notfound-img"}),T("p",{"data-v-6c4a3ffe":"",class:"code"},"404"),T("h1",{"data-v-6c4a3ffe":"",class:"title"}," 你干嘛~,这里什么都没有! "),T("div",{"data-v-6c4a3ffe":"",class:"divider"}),T("blockquote",{"data-v-6c4a3ffe":"",class:"quote"}," 你寻找的页面可能不存在或被迁移…… "),T("div",{"data-v-6c4a3ffe":"",class:"action"},[T("a",{"data-v-6c4a3ffe":"",class:"link",href:"/","aria-label":"go to home"}," 返回主页 ")])])],-1)),Vs={__name:"NotFound",setup(e){const{Layout:t}=ht;return(n,r)=>(pn(),mn(bn(t),null,{"not-found":gn(()=>[js]),_:1}))}},Hs=hn(Vs,[["__scopeId","data-v-fd8ce0a8"]]),zs=()=>{const t=_t({apiKey:"AIzaSyANVvapu0ihi1cM8ZzuXTkwjx9lM_J1RyQ",authDomain:"rw-api-code-d0779.firebaseapp.com",projectId:"rw-api-code-d0779",storageBucket:"rw-api-code-d0779.appspot.com",messagingSenderId:"363611843335",appId:"1:363611843335:web:f15aef7ab427f52b4033a2",measurementId:"G-XJH5TKP5VL"});return ka(t),Fs(t),"Firebase initialized successfully"};(async function(){try{const e=await zs();console.log(e)}catch(e){console.error(e)}})();function qs(e){return new Promise(t=>setTimeout(t,e))}async function Ws(){try{await navigator.permissions.query({name:"clipboard-write"})}catch(e){console.error(e)}}async function Gs(){try{await qs(1e3);const e=document.getElementsByClassName("copy");for(let t=0;t<e.length;t++){const n=e[t];n.addEventListener("touchend",async()=>{await Ws();const a=[...n.parentNode.querySelector("code").querySelectorAll("span")],s=[...new Set(a.map(o=>o.textContent))].join("");try{await navigator.clipboard.writeText(s)}catch{const c=document.createElement("textarea");c.value=s,document.body.appendChild(c),c.select(),document.execCommand("copy"),document.body.removeChild(c)}})}}catch(e){console.error(e)}}Gs();const Ks={...ht,Layout:Hs};function dn(e){if(e.extends){const t=dn(e.extends);return{...t,...e,async enhanceApp(n){t.enhanceApp&&await t.enhanceApp(n),e.enhanceApp&&await e.enhanceApp(n)}}}return e}const L=dn(Ks),Xs=_n({name:"VitePressApp",setup(){const{site:e}=wn();return Tn(()=>{vn(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),An(),Sn(),Cn(),L.setup&&L.setup(),()=>Dn(L.Layout)}});async function Ys(){const e=Qs(),t=Js();t.provide(Rn,e);const n=Mn(e.route);return t.provide(Nn,n),t.component("Content",On),t.component("ClientOnly",Pn),Object.defineProperties(t.config.globalProperties,{$frontmatter:{get(){return n.frontmatter.value}},$params:{get(){return n.page.value.params}}}),L.enhanceApp&&await L.enhanceApp({app:t,router:e,siteData:Bn}),{app:t,router:e,data:n}}function Js(){return $n(Xs)}function Qs(){let e=he,t;return kn(n=>{let r=Fn(n);return e&&(t=r),(e||t===r)&&(r=r.replace(/\.js$/,".lean.js")),he&&(e=!1),Ln(()=>import(r),[])},L.NotFound)}he&&Ys().then(({app:e,router:t,data:n})=>{t.go().then(()=>{En(t.route,n.site),e.mount("#app")})});export{Ys as createApp};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{_ as t,o as a,c as s,X as r}from"./chunks/framework.d377e0cc.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r('<h3 id="站点开发贡献者-截止到2023-8-22" tabindex="-1">站点开发贡献者-截止到2023-8-22 <a class="header-anchor" href="#站点开发贡献者-截止到2023-8-22" aria-label="Permalink to &quot;站点开发贡献者-截止到2023-8-22&quot;"></a></h3><table><tr><td align="center"><a href="https://github.com/shishanyue"><img src="https://avatars.githubusercontent.com/u/62888460?v=4" width="100;" alt="shishanyue"><br><sub><b>Shishanyue</b></sub><br>RWE作者 <br>第一深度 </a></td><td align="center"><a href="https://github.com/LingASDJ"><img src="https://avatars.githubusercontent.com/u/70191651?v=4" width="100;" alt="LingASDJ"><br><sub><b>JDSA Ling</b></sub><br>站长 </a></td><td align="center"><a href="https://github.com/tobby3600"><img src="https://avatars.githubusercontent.com/u/79432329?v=4" width="100;" alt="tobby3600"><br><sub><b>Tobby</b></sub><br>逻辑组 </a></td><td align="center"><a href="https://github.com/mason369"><img src="https://avatars.githubusercontent.com/u/93964390?v=4" width="100;" alt="mason369"><br><sub><b>Mason</b></sub><br>技术支持 <br>副站长 </a></td><td align="center"><a href="https://github.com/liusxs"><img src="https://avatars.githubusercontent.com/u/101164913?v=4" width="100;" alt="liusxs"><br><sub><b>Liuliu</b></sub><br>布局优化 <br>副站长 </a></td><td align="center"><a href="https://github.com/allureluoli"><img src="https://avatars.githubusercontent.com/u/106828088?v=4" width="100;" alt="allureluoli"><br><sub><b>二月</b></sub><br>图像组 <br>二月可爱捏 </a></td></tr><tr><td align="center"><a href="https://github.com/WisenextTime"><img src="https://avatars.githubusercontent.com/u/141509640?v=4" width="100;" alt="WisenextTime"><br><sub><b>作业中毒</b></sub><br>刷兵运动组 <br>催逝员 </a></td><td align="center"><a href="https://github.com/Thisisafox"><img src="https://avatars.githubusercontent.com/u/141534430?v=4" width="100;" alt="Thisisafox"><br><sub><b>屑狐狸</b></sub><br>附属攻击组 <br>大聪明 </a></td><td align="center"><a href="#"><img src="https://avatars.githubusercontent.com/in/29110?s=64&amp;v=4" width="100;" alt="Thisisafox"><br><sub><b>???</b></sub><br>更多贡献者 <br>等待你的到来 </a></td></tr></table>',2),i=[b];function h(u,c,n,o,l,d){return a(),s("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};
import{_ as t,c as a,o as s,V as r}from"./chunks/framework.fcc0bf38.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r('<h3 id="站点开发贡献者-截止到2023-8-22" tabindex="-1">站点开发贡献者-截止到2023-8-22 <a class="header-anchor" href="#站点开发贡献者-截止到2023-8-22" aria-label="Permalink to &quot;站点开发贡献者-截止到2023-8-22&quot;"></a></h3><table><tr><td align="center"><a href="https://github.com/shishanyue"><img src="https://avatars.githubusercontent.com/u/62888460?v=4" width="100;" alt="shishanyue"><br><sub><b>Shishanyue</b></sub><br>RWE作者 <br>第一深度 </a></td><td align="center"><a href="https://github.com/LingASDJ"><img src="https://avatars.githubusercontent.com/u/70191651?v=4" width="100;" alt="LingASDJ"><br><sub><b>JDSA Ling</b></sub><br>站长 </a></td><td align="center"><a href="https://github.com/tobby3600"><img src="https://avatars.githubusercontent.com/u/79432329?v=4" width="100;" alt="tobby3600"><br><sub><b>Tobby</b></sub><br>逻辑组 </a></td><td align="center"><a href="https://github.com/mason369"><img src="https://avatars.githubusercontent.com/u/93964390?v=4" width="100;" alt="mason369"><br><sub><b>Mason</b></sub><br>技术支持 <br>副站长 </a></td><td align="center"><a href="https://github.com/liusxs"><img src="https://avatars.githubusercontent.com/u/101164913?v=4" width="100;" alt="liusxs"><br><sub><b>Liuliu</b></sub><br>布局优化 <br>副站长 </a></td><td align="center"><a href="https://github.com/allureluoli"><img src="https://avatars.githubusercontent.com/u/106828088?v=4" width="100;" alt="allureluoli"><br><sub><b>二月</b></sub><br>图像组 <br>二月可爱捏 </a></td></tr><tr><td align="center"><a href="https://github.com/WisenextTime"><img src="https://avatars.githubusercontent.com/u/141509640?v=4" width="100;" alt="WisenextTime"><br><sub><b>作业中毒</b></sub><br>刷兵运动组 <br>催逝员 </a></td><td align="center"><a href="https://github.com/Thisisafox"><img src="https://avatars.githubusercontent.com/u/141534430?v=4" width="100;" alt="Thisisafox"><br><sub><b>屑狐狸</b></sub><br>附属攻击组 <br>大聪明 </a></td><td align="center"><a href="#"><img src="https://avatars.githubusercontent.com/in/29110?s=64&amp;v=4" width="100;" alt="Thisisafox"><br><sub><b>???</b></sub><br>更多贡献者 <br>等待你的到来 </a></td></tr></table>',2),i=[b];function h(u,c,n,o,l,d){return s(),a("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};

View File

@ -0,0 +1 @@
import{_ as t,c as a,o as s,V as r}from"./chunks/framework.fcc0bf38.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r("",2),i=[b];function h(u,c,n,o,l,d){return s(),a("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};

View File

@ -1 +0,0 @@
import{_ as t,o as a,c as s,X as r}from"./chunks/framework.d377e0cc.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r("",2),i=[b];function h(u,c,n,o,l,d){return a(),s("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};

View File

@ -1 +1 @@
import{_ as t,o as e,c as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return e(),n("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};
import{_ as t,c as e,o as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return n(),e("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};

View File

@ -1 +1 @@
import{_ as t,o as e,c as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return e(),n("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};
import{_ as t,c as e,o as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return n(),e("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};

View File

@ -1 +1 @@
import{_ as e,o as t,c as s,k as a}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return t(),s("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};
import{_ as e,c as t,o as s,C as a}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return s(),t("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};

View File

@ -1 +1 @@
import{_ as e,o as t,c as s,k as a}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return t(),s("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};
import{_ as e,c as t,o as s,C as a}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return s(),t("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};

View File

@ -1 +1 @@
import{_ as a,o as t,c as e}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return t(),e("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};
import{_ as a,c as t,o as e}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return e(),t("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};

View File

@ -1 +1 @@
import{_ as a,o as t,c as e}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return t(),e("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};
import{_ as a,c as t,o as e}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return e(),t("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};

View File

@ -1,4 +1,4 @@
import{_ as n,o as e,c as s,X as a}from"./chunks/framework.d377e0cc.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a(`<h1 id="quickstart" tabindex="-1"><strong>QuickStart</strong> <a class="header-anchor" href="#quickstart" aria-label="Permalink to &quot;**QuickStart**&quot;"></a></h1><h2 id="一-安装rw-engine" tabindex="-1">一.安装RW-Engine <a class="header-anchor" href="#一-安装rw-engine" aria-label="Permalink to &quot;一.安装RW-Engine&quot;"></a></h2><h3 id="下载rw-engine" tabindex="-1">下载RW-Engine <a class="header-anchor" href="#下载rw-engine" aria-label="Permalink to &quot;下载RW-Engine&quot;"></a></h3><pre><code>蓝奏云:
import{_ as n,c as e,o as s,V as a}from"./chunks/framework.fcc0bf38.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a(`<h1 id="quickstart" tabindex="-1"><strong>QuickStart</strong> <a class="header-anchor" href="#quickstart" aria-label="Permalink to &quot;**QuickStart**&quot;"></a></h1><h2 id="一-安装rw-engine" tabindex="-1">一.安装RW-Engine <a class="header-anchor" href="#一-安装rw-engine" aria-label="Permalink to &quot;一.安装RW-Engine&quot;"></a></h2><h3 id="下载rw-engine" tabindex="-1">下载RW-Engine <a class="header-anchor" href="#下载rw-engine" aria-label="Permalink to &quot;下载RW-Engine&quot;"></a></h3><pre><code>蓝奏云:
</code></pre><h3 id="rw-engine" tabindex="-1">RW-Engine <a class="header-anchor" href="#rw-engine" aria-label="Permalink to &quot;RW-Engine&quot;"></a></h3><pre><code>ZIPRW_Enginemod
文件结构
@ -28,4 +28,4 @@ import{_ as n,o as e,c as s,X as a}from"./chunks/framework.d377e0cc.js";const q=
<span class="line"><span style="color:#A6ACCD;">isVisible:true</span></span>
<span class="line"><span style="color:#A6ACCD;">sendMessageTo:memory.LTVSystem</span></span>
<span class="line"><span style="color:#A6ACCD;">sendMessageWithTags:setText</span></span>
<span class="line"><span style="color:#A6ACCD;">sendMessageWithData:</span><span style="color:#F07178;">text</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">B</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div>`,15),l=[o];function i(r,p,c,u,d,y){return e(),s("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};
<span class="line"><span style="color:#A6ACCD;">sendMessageWithData:</span><span style="color:#F07178;">text</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">B</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div>`,15),l=[o];function i(r,p,c,u,d,y){return s(),e("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};

View File

@ -1 +1 @@
import{_ as n,o as e,c as s,X as a}from"./chunks/framework.d377e0cc.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a("",15),l=[o];function i(r,p,c,u,d,y){return e(),s("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};
import{_ as n,c as e,o as s,V as a}from"./chunks/framework.fcc0bf38.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a("",15),l=[o];function i(r,p,c,u,d,y){return s(),e("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};

View File

@ -1,4 +1,4 @@
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n(`<h1 id="attachment-组" tabindex="-1"><strong>[attachment]组</strong> <a class="header-anchor" href="#attachment-组" aria-label="Permalink to &quot;**[attachment]组**&quot;"></a></h1><h2 id="第一类-附属代码组" tabindex="-1">第一类-附属代码组 <a class="header-anchor" href="#第一类-附属代码组" aria-label="Permalink to &quot;第一类-附属代码组&quot;"></a></h2><h3 id="x-y" tabindex="-1">x/y <a class="header-anchor" href="#x-y" aria-label="Permalink to &quot;x/y&quot;"></a></h3><h4 id="x-y-代码简介" tabindex="-1">x/y-代码简介 <a class="header-anchor" href="#x-y-代码简介" aria-label="Permalink to &quot;x/y-代码简介&quot;"></a></h4><p>代码:x/y 中文释义:x坐标/y坐标 类型:逻辑布尔值LogicBoolean 隶属于:附属代码组</p><h4 id="x-y-要点指示" tabindex="-1">x/y-要点指示 <a class="header-anchor" href="#x-y-要点指示" aria-label="Permalink to &quot;x/y-要点指示&quot;"></a></h4><p>相对主体单位的x偏移坐标/y偏移坐标</p><h4 id="x-y-演示例子" tabindex="-1">x/y-演示例子 <a class="header-anchor" href="#x-y-演示例子" aria-label="Permalink to &quot;x/y-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n(`<h1 id="attachment-组" tabindex="-1"><strong>[attachment]组</strong> <a class="header-anchor" href="#attachment-组" aria-label="Permalink to &quot;**[attachment]组**&quot;"></a></h1><h2 id="第一类-附属代码组" tabindex="-1">第一类-附属代码组 <a class="header-anchor" href="#第一类-附属代码组" aria-label="Permalink to &quot;第一类-附属代码组&quot;"></a></h2><h3 id="x-y" tabindex="-1">x/y <a class="header-anchor" href="#x-y" aria-label="Permalink to &quot;x/y&quot;"></a></h3><h4 id="x-y-代码简介" tabindex="-1">x/y-代码简介 <a class="header-anchor" href="#x-y-代码简介" aria-label="Permalink to &quot;x/y-代码简介&quot;"></a></h4><p>代码:x/y 中文释义:x坐标/y坐标 类型:逻辑布尔值LogicBoolean 隶属于:附属代码组</p><h4 id="x-y-要点指示" tabindex="-1">x/y-要点指示 <a class="header-anchor" href="#x-y-要点指示" aria-label="Permalink to &quot;x/y-要点指示&quot;"></a></h4><p>相对主体单位的x偏移坐标/y偏移坐标</p><h4 id="x-y-演示例子" tabindex="-1">x/y-演示例子 <a class="header-anchor" href="#x-y-演示例子" aria-label="Permalink to &quot;x/y-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">x:10</span></span>
<span class="line"><span style="color:#A6ACCD;">y:10</span></span></code></pre></div><hr><h3 id="height" tabindex="-1">height <a class="header-anchor" href="#height" aria-label="Permalink to &quot;height&quot;"></a></h3><h4 id="height-" tabindex="-1">height- <a class="header-anchor" href="#height-" aria-label="Permalink to &quot;height-&quot;"></a></h4><p>:height : :float :</p><h4 id="height-" tabindex="-1">height- <a class="header-anchor" href="#height-" aria-label="Permalink to &quot;height-&quot;"></a></h4><p></p><h4 id="height-" tabindex="-1">height- <a class="header-anchor" href="#height-" aria-label="Permalink to &quot;height-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">height:10.5</span></span></code></pre></div><hr><h3 id="idledir" tabindex="-1">idleDir <a class="header-anchor" href="#idledir" aria-label="Permalink to &quot;idleDir&quot;"></a></h3><h4 id="idledir-" tabindex="-1">idleDir- <a class="header-anchor" href="#idledir-" aria-label="Permalink to &quot;idleDir-&quot;"></a></h4><p>:idleDir : :float :</p><h4 id="idledir-" tabindex="-1">idleDir- <a class="header-anchor" href="#idledir-" aria-label="Permalink to &quot;idleDir-&quot;"></a></h4><p></p><h4 id="idledir-" tabindex="-1">idleDir- <a class="header-anchor" href="#idledir-" aria-label="Permalink to &quot;idleDir-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
@ -34,4 +34,4 @@ import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const b=
<span class="line"><span style="color:#A6ACCD;">redirectDamageToParent_shieldOnly:true</span></span></code></pre></div><hr><h2 id="-" tabindex="-1">- <a class="header-anchor" href="#-" aria-label="Permalink to &quot;-&quot;"></a></h2><h3 id="lockdir" tabindex="-1">lockDir <a class="header-anchor" href="#lockdir" aria-label="Permalink to &quot;lockDir&quot;"></a></h3><h4 id="lockdir-" tabindex="-1">lockDir- <a class="header-anchor" href="#lockdir-" aria-label="Permalink to &quot;lockDir-&quot;"></a></h4><p>:lockDir : :bool :</p><h4 id="lockdir-" tabindex="-1">lockDir- <a class="header-anchor" href="#lockdir-" aria-label="Permalink to &quot;lockDir-&quot;"></a></h4><p></p><h4 id="lockdir-" tabindex="-1">lockDir- <a class="header-anchor" href="#lockdir-" aria-label="Permalink to &quot;lockDir-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">lockDir:true</span></span></code></pre></div><hr><h3 id="unloadincurrentposition" tabindex="-1">unloadInCurrentPosition <a class="header-anchor" href="#unloadincurrentposition" aria-label="Permalink to &quot;unloadInCurrentPosition&quot;"></a></h3><h4 id="unloadincurrentposition-" tabindex="-1">unloadInCurrentPosition- <a class="header-anchor" href="#unloadincurrentposition-" aria-label="Permalink to &quot;unloadInCurrentPosition-&quot;"></a></h4><p>:lockRotation : :bool :</p><h4 id="unloadincurrentposition-" tabindex="-1">unloadInCurrentPosition- <a class="header-anchor" href="#unloadincurrentposition-" aria-label="Permalink to &quot;unloadInCurrentPosition-&quot;"></a></h4><p></p><h4 id="unloadincurrentposition-" tabindex="-1">unloadInCurrentPosition- <a class="header-anchor" href="#unloadincurrentposition-" aria-label="Permalink to &quot;unloadInCurrentPosition-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">unloadInCurrentPosition:true</span></span></code></pre></div><hr><h3 id="onconvertkeepexistingunitinsameslot" tabindex="-1">onConvertKeepExistingUnitInSameSlot <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot" aria-label="Permalink to &quot;onConvertKeepExistingUnitInSameSlot&quot;"></a></h3><h4 id="onconvertkeepexistingunitinsameslot-" tabindex="-1">onConvertKeepExistingUnitInSameSlot- <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-" aria-label="Permalink to &quot;onConvertKeepExistingUnitInSameSlot-&quot;"></a></h4><p>:onConvertKeepExistingUnitInSameSlot : :bool :</p><h4 id="onconvertkeepexistingunitinsameslot-" tabindex="-1">onConvertKeepExistingUnitInSameSlot- <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-" aria-label="Permalink to &quot;onConvertKeepExistingUnitInSameSlot-&quot;"></a></h4><p></p><h4 id="onconvertkeepexistingunitinsameslot-" tabindex="-1">onConvertKeepExistingUnitInSameSlot- <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-" aria-label="Permalink to &quot;onConvertKeepExistingUnitInSameSlot-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">onConvertKeepExistingUnitInSameSlot:true</span></span></code></pre></div><hr>`,283),s=[o];function r(l,h,d,c,p,m){return e(),t("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};
<span class="line"><span style="color:#A6ACCD;">onConvertKeepExistingUnitInSameSlot:true</span></span></code></pre></div><hr>`,283),s=[o];function r(l,h,d,c,p,m){return t(),e("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};

View File

@ -1 +1 @@
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n("",283),s=[o];function r(l,h,d,c,p,m){return e(),t("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n("",283),s=[o];function r(l,h,d,c,p,m){return t(),e("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};

View File

@ -1,4 +1,4 @@
import{_ as a,o as t,c as e,X as n}from"./chunks/framework.d377e0cc.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n(`<h1 id="attack-组" tabindex="-1"><strong>[attack]组</strong> <a class="header-anchor" href="#attack-组" aria-label="Permalink to &quot;**[attack]组**&quot;"></a></h1><h2 id="第一类-基础攻击代码组" tabindex="-1">第一类-基础攻击代码组 <a class="header-anchor" href="#第一类-基础攻击代码组" aria-label="Permalink to &quot;第一类-基础攻击代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>此处攻击代码均可以在炮塔节进行覆盖</p></div><h3 id="canattack" tabindex="-1">canAttack <a class="header-anchor" href="#canattack" aria-label="Permalink to &quot;canAttack&quot;"></a></h3><h4 id="canattack-代码简介" tabindex="-1">canAttack-代码简介 <a class="header-anchor" href="#canattack-代码简介" aria-label="Permalink to &quot;canAttack-代码简介&quot;"></a></h4><p>代码:canAttack 中文释义:可攻击 类型:布尔值bool 隶属于:基础攻击代码组</p><h4 id="canattack-要点指示" tabindex="-1">canAttack-要点指示 <a class="header-anchor" href="#canattack-要点指示" aria-label="Permalink to &quot;canAttack-要点指示&quot;"></a></h4><p>设置单位是否能攻击</p><h4 id="canattack-演示例子" tabindex="-1">canAttack-演示例子 <a class="header-anchor" href="#canattack-演示例子" aria-label="Permalink to &quot;canAttack-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
import{_ as a,c as t,o as e,V as n}from"./chunks/framework.fcc0bf38.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n(`<h1 id="attack-组" tabindex="-1"><strong>[attack]组</strong> <a class="header-anchor" href="#attack-组" aria-label="Permalink to &quot;**[attack]组**&quot;"></a></h1><h2 id="第一类-基础攻击代码组" tabindex="-1">第一类-基础攻击代码组 <a class="header-anchor" href="#第一类-基础攻击代码组" aria-label="Permalink to &quot;第一类-基础攻击代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>此处攻击代码均可以在炮塔节进行覆盖</p></div><h3 id="canattack" tabindex="-1">canAttack <a class="header-anchor" href="#canattack" aria-label="Permalink to &quot;canAttack&quot;"></a></h3><h4 id="canattack-代码简介" tabindex="-1">canAttack-代码简介 <a class="header-anchor" href="#canattack-代码简介" aria-label="Permalink to &quot;canAttack-代码简介&quot;"></a></h4><p>代码:canAttack 中文释义:可攻击 类型:布尔值bool 隶属于:基础攻击代码组</p><h4 id="canattack-要点指示" tabindex="-1">canAttack-要点指示 <a class="header-anchor" href="#canattack-要点指示" aria-label="Permalink to &quot;canAttack-要点指示&quot;"></a></h4><p>设置单位是否能攻击</p><h4 id="canattack-演示例子" tabindex="-1">canAttack-演示例子 <a class="header-anchor" href="#canattack-演示例子" aria-label="Permalink to &quot;canAttack-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">canAttack:true</span></span></code></pre></div><hr><h3 id="canattacklandunits" tabindex="-1">canAttackLandUnits <a class="header-anchor" href="#canattacklandunits" aria-label="Permalink to &quot;canAttackLandUnits&quot;"></a></h3><h4 id="canattacklandunits-" tabindex="-1">canAttackLandUnits- <a class="header-anchor" href="#canattacklandunits-" aria-label="Permalink to &quot;canAttackLandUnits-&quot;"></a></h4><p>:canAttackLandUnits : :LogicBoolean :</p><h4 id="canattacklandunits-" tabindex="-1">canAttackLandUnits- <a class="header-anchor" href="#canattacklandunits-" aria-label="Permalink to &quot;canAttackLandUnits-&quot;"></a></h4><p></p><h4 id="canattacklandunits-" tabindex="-1">canAttackLandUnits- <a class="header-anchor" href="#canattacklandunits-" aria-label="Permalink to &quot;canAttackLandUnits-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">canAttackLandUnits:if self.ammo&gt;=2</span></span></code></pre></div><hr><h3 id="canattackflyingunits" tabindex="-1">canAttackFlyingUnits <a class="header-anchor" href="#canattackflyingunits" aria-label="Permalink to &quot;canAttackFlyingUnits&quot;"></a></h3><h4 id="canattackflyingunits-" tabindex="-1">canAttackFlyingUnits- <a class="header-anchor" href="#canattackflyingunits-" aria-label="Permalink to &quot;canAttackFlyingUnits-&quot;"></a></h4><p>:canAttackFlyingUnits : :LogicBoolean :</p><h4 id="canattackflyingunits-" tabindex="-1">canAttackFlyingUnits- <a class="header-anchor" href="#canattackflyingunits-" aria-label="Permalink to &quot;canAttackFlyingUnits-&quot;"></a></h4><p></p><h4 id="canattackflyingunits-" tabindex="-1">canAttackFlyingUnits- <a class="header-anchor" href="#canattackflyingunits-" aria-label="Permalink to &quot;canAttackFlyingUnits-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">canAttackFlyingUnits:if self.ammo&gt;=2</span></span></code></pre></div><hr><h3 id="canattackunderwaterunits" tabindex="-1">canAttackUnderwaterUnits <a class="header-anchor" href="#canattackunderwaterunits" aria-label="Permalink to &quot;canAttackUnderwaterUnits&quot;"></a></h3><h4 id="canattackunderwaterunits-" tabindex="-1">canAttackUnderwaterUnits- <a class="header-anchor" href="#canattackunderwaterunits-" aria-label="Permalink to &quot;canAttackUnderwaterUnits-&quot;"></a></h4><p>:canAttackUnderwaterUnits : :LogicBoolean :</p><h4 id="canattackunderwaterunits-" tabindex="-1">canAttackUnderwaterUnits- <a class="header-anchor" href="#canattackunderwaterunits-" aria-label="Permalink to &quot;canAttackUnderwaterUnits-&quot;"></a></h4><p></p><h4 id="canattackunderwaterunits-" tabindex="-1">canAttackUnderwaterUnits- <a class="header-anchor" href="#canattackunderwaterunits-" aria-label="Permalink to &quot;canAttackUnderwaterUnits-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
@ -19,9 +19,9 @@ import{_ as a,o as t,c as e,X as n}from"./chunks/framework.d377e0cc.js";const k=
<span class="line"><span style="color:#A6ACCD;">shootDelay:60</span></span></code></pre></div><hr><h3 id="maxattackrange" tabindex="-1">maxAttackRange <a class="header-anchor" href="#maxattackrange" aria-label="Permalink to &quot;maxAttackRange&quot;"></a></h3><h4 id="maxattackrange-" tabindex="-1">maxAttackRange- <a class="header-anchor" href="#maxattackrange-" aria-label="Permalink to &quot;maxAttackRange-&quot;"></a></h4><p>:maxAttackRange : :int :</p><h4 id="maxattackrange-" tabindex="-1">maxAttackRange- <a class="header-anchor" href="#maxattackrange-" aria-label="Permalink to &quot;maxAttackRange-&quot;"></a></h4><p>使limitingRange</p><details class="details custom-block"><summary>Details</summary><p>limitingRangemaxAttackRange使limitingRangemaxAttackRange</p></details><h4 id="maxattackrange-" tabindex="-1">maxAttackRange- <a class="header-anchor" href="#maxattackrange-" aria-label="Permalink to &quot;maxAttackRange-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">maxAttackRange:1000</span></span></code></pre></div><hr><h3 id="aimoffsetspread" tabindex="-1">aimOffsetSpread <a class="header-anchor" href="#aimoffsetspread" aria-label="Permalink to &quot;aimOffsetSpread&quot;"></a></h3><h4 id="aimoffsetspread-" tabindex="-1">aimOffsetSpread- <a class="header-anchor" href="#aimoffsetspread-" aria-label="Permalink to &quot;aimOffsetSpread-&quot;"></a></h4><p>:aimOffsetSpread : :float :</p><h4 id="aimoffsetspread-" tabindex="-1">aimOffsetSpread- <a class="header-anchor" href="#aimoffsetspread-" aria-label="Permalink to &quot;aimOffsetSpread-&quot;"></a></h4><p>0</p><h4 id="aimoffsetspread-" tabindex="-1">aimOffsetSpread- <a class="header-anchor" href="#aimoffsetspread-" aria-label="Permalink to &quot;aimOffsetSpread-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">aimOffsetSpread:0.6</span></span></code></pre></div><hr><h3 id="shootdelaymultiplier-shootdamagemultiplier" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier" aria-label="Permalink to &quot;shootDelayMultiplier/shootDamageMultiplier&quot;"></a></h3><h4 id="shootdelaymultiplier-shootdamagemultiplier-" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier- <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-" aria-label="Permalink to &quot;shootDelayMultiplier/shootDamageMultiplier-&quot;"></a></h4><p>:shootDelayMultiplier/shootDamageMultiplier :/ : :</p><h4 id="shootdelaymultiplier-shootdamagemultiplier-" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier- <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-" aria-label="Permalink to &quot;shootDelayMultiplier/shootDamageMultiplier-&quot;"></a></h4><p>使setUnitStats</p><h4 id="shootdelaymultiplier-shootdamagemultiplier-" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier- <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-" aria-label="Permalink to &quot;shootDelayMultiplier/shootDamageMultiplier-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[action_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">setUnitStats:</span><span style="color:#F07178;">shootDelayMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">0.8,</span><span style="color:#F07178;">shootDamageMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1.4</span></span></code></pre></div><hr><h2 id="-" tabindex="-1">- <a class="header-anchor" href="#-" aria-label="Permalink to &quot;-&quot;"></a></h2><div class="vp-code-group"><div class="tabs"><input type="radio" name="group--bwwA" id="tab-sb4ecIj" checked="checked"><label for="tab-sb4ecIj"></label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;"></span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">,</span></span>
<span class="line"><span style="color:#A6ACCD;">setUnitStats:</span><span style="color:#F07178;">shootDelayMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">0.8,</span><span style="color:#F07178;">shootDamageMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1.4</span></span></code></pre></div><hr><h2 id="-" tabindex="-1">- <a class="header-anchor" href="#-" aria-label="Permalink to &quot;-&quot;"></a></h2><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-HjEPZ" id="tab-5ijSeq3" checked="checked"><label for="tab-5ijSeq3"></label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;"></span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">,</span></span>
<span class="line"><span style="color:#FFCB6B;">对于部分有对应需求的单位来说这部分较为有用</span></span></code></pre></div></div></div><h3 id="setmainturretas" tabindex="-1">setMainTurretAs <a class="header-anchor" href="#setmainturretas" aria-label="Permalink to &quot;setMainTurretAs&quot;"></a></h3><h4 id="setmainturretas-" tabindex="-1">setMainTurretAs- <a class="header-anchor" href="#setmainturretas-" aria-label="Permalink to &quot;setMainTurretAs-&quot;"></a></h4><p>:setMainTurretAs : :turret ref :</p><h4 id="setmainturretas-" tabindex="-1">setMainTurretAs- <a class="header-anchor" href="#setmainturretas-" aria-label="Permalink to &quot;setMainTurretAs-&quot;"></a></h4><p></p><h4 id="setmainturretas-" tabindex="-1">setMainTurretAs- <a class="header-anchor" href="#setmainturretas-" aria-label="Permalink to &quot;setMainTurretAs-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">setMainTurretAs:31</span></span></code></pre></div><hr><h3 id="turretrotatewithbody" tabindex="-1">turretRotateWithBody <a class="header-anchor" href="#turretrotatewithbody" aria-label="Permalink to &quot;turretRotateWithBody&quot;"></a></h3><h4 id="turretrotatewithbody-" tabindex="-1">turretRotateWithBody- <a class="header-anchor" href="#turretrotatewithbody-" aria-label="Permalink to &quot;turretRotateWithBody-&quot;"></a></h4><p>:turretRotateWithBody : :bool :</p><h4 id="turretrotatewithbody-" tabindex="-1">turretRotateWithBody- <a class="header-anchor" href="#turretrotatewithbody-" aria-label="Permalink to &quot;turretRotateWithBody-&quot;"></a></h4><p></p><h4 id="turretrotatewithbody-" tabindex="-1">turretRotateWithBody- <a class="header-anchor" href="#turretrotatewithbody-" aria-label="Permalink to &quot;turretRotateWithBody-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">turretRotateWithBody:true</span></span></code></pre></div><hr><h3 id="attackmovement" tabindex="-1">attackMovement <a class="header-anchor" href="#attackmovement" aria-label="Permalink to &quot;attackMovement&quot;"></a></h3><h4 id="attackmovement-" tabindex="-1">attackMovement- <a class="header-anchor" href="#attackmovement-" aria-label="Permalink to &quot;attackMovement-&quot;"></a></h4><p>:attackMovement : :string :</p><h4 id="attackmovement-" tabindex="-1">attackMovement- <a class="header-anchor" href="#attackmovement-" aria-label="Permalink to &quot;attackMovement-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p></p><table><thead><tr><th></th><th>normal</th><th>bomber</th><th>moveaway</th><th>strafing</th></tr></thead><tbody><tr><td></td><td></td><td></td><td></td><td></td></tr></tbody></table></div><h4 id="attackmovement-" tabindex="-1">attackMovement- <a class="header-anchor" href="#attackmovement-" aria-label="Permalink to &quot;attackMovement-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">attackMovement:bomber</span></span></code></pre></div><hr><h3 id="showrangeuiguide" tabindex="-1">showRangeUIGuide <a class="header-anchor" href="#showrangeuiguide" aria-label="Permalink to &quot;showRangeUIGuide&quot;"></a></h3><h4 id="showrangeuiguide-" tabindex="-1">showRangeUIGuide- <a class="header-anchor" href="#showrangeuiguide-" aria-label="Permalink to &quot;showRangeUIGuide-&quot;"></a></h4><p>:showRangeUIGuide :UI :bool :</p><h4 id="showrangeuiguide-" tabindex="-1">showRangeUIGuide- <a class="header-anchor" href="#showrangeuiguide-" aria-label="Permalink to &quot;showRangeUIGuide-&quot;"></a></h4><p>UItrue</p><h4 id="showrangeuiguide-" tabindex="-1">showRangeUIGuide- <a class="header-anchor" href="#showrangeuiguide-" aria-label="Permalink to &quot;showRangeUIGuide-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
<span class="line"><span style="color:#A6ACCD;">showRangeUIGuide:true</span></span></code></pre></div><hr>`,206),l=[s];function r(o,c,h,d,p,u){return t(),e("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};
<span class="line"><span style="color:#A6ACCD;">showRangeUIGuide:true</span></span></code></pre></div><hr>`,206),l=[s];function r(o,c,h,d,p,u){return e(),t("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};

View File

@ -1 +1 @@
import{_ as a,o as t,c as e,X as n}from"./chunks/framework.d377e0cc.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n("",206),l=[s];function r(o,c,h,d,p,u){return t(),e("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};
import{_ as a,c as t,o as e,V as n}from"./chunks/framework.fcc0bf38.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n("",206),l=[s];function r(o,c,h,d,p,u){return e(),t("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};

View File

@ -1,4 +1,4 @@
import{_ as n,K as i,o,c,k as s,a,O as t,w as p,X as e}from"./chunks/framework.d377e0cc.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e(`<h1 id="canbuild-建造组" tabindex="-1"><strong>[canBuild]建造组</strong> <a class="header-anchor" href="#canbuild-建造组" aria-label="Permalink to &quot;**[canBuild]建造组**&quot;"></a></h1><h3 id="canbuild-name" tabindex="-1">[canBuild_NAME] <a class="header-anchor" href="#canbuild-name" aria-label="Permalink to &quot;[canBuild_NAME]&quot;"></a></h3><h4 id="canbuild-name-代码简介" tabindex="-1">[canBuild_NAME]-代码简介 <a class="header-anchor" href="#canbuild-name-代码简介" aria-label="Permalink to &quot;[canBuild_NAME]-代码简介&quot;"></a></h4><p>代码: [canBuild_NAME] 中文释义:可建造_名字 类型:字符型 canBuild_NAME = 组名 如果不填写此组名 将默认拥有一个命名为空格的组名。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>建议将NAME命名为此组的描述或可建造单位的昵称。<br> 以便于阅读代码。</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-wiz-c" id="tab-ZhRUPGr" checked="checked"><label for="tab-ZhRUPGr">allureluoli</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_造小坦</span><span style="color:#89DDFF;">]</span></span>
import{_ as n,c as i,C as s,a,I as o,E as c,V as e,J as t,o as p}from"./chunks/framework.fcc0bf38.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e(`<h1 id="canbuild-建造组" tabindex="-1"><strong>[canBuild]建造组</strong> <a class="header-anchor" href="#canbuild-建造组" aria-label="Permalink to &quot;**[canBuild]建造组**&quot;"></a></h1><h3 id="canbuild-name" tabindex="-1">[canBuild_NAME] <a class="header-anchor" href="#canbuild-name" aria-label="Permalink to &quot;[canBuild_NAME]&quot;"></a></h3><h4 id="canbuild-name-代码简介" tabindex="-1">[canBuild_NAME]-代码简介 <a class="header-anchor" href="#canbuild-name-代码简介" aria-label="Permalink to &quot;[canBuild_NAME]-代码简介&quot;"></a></h4><p>代码: [canBuild_NAME] 中文释义:可建造_名字 类型:字符型 canBuild_NAME = 组名 如果不填写此组名 将默认拥有一个命名为空格的组名。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>建议将NAME命名为此组的描述或可建造单位的昵称。<br> 以便于阅读代码。</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-8tBz-" id="tab-oLGhYuX" checked="checked"><label for="tab-oLGhYuX">allureluoli</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_造小坦</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_SmallTank</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_</span><span style="color:#89DDFF;">]</span></span></code></pre></div></div></div><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>[canBuild_NAME] NAME<br> 线</p></div><h4 id="canbuild-name-" tabindex="-1">[canBuild_NAME]- <a class="header-anchor" href="#canbuild-name-" aria-label="Permalink to &quot;[canBuild_NAME]-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#</span></span>
<span class="line"><span style="color:#89DDFF;">[canBuild_小坦克]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#</span></span>
@ -30,4 +30,4 @@ import{_ as n,K as i,o,c,k as s,a,O as t,w as p,X as e}from"./chunks/framework.d
<span class="line"><span style="color:#A6ACCD;">isLockedAlt2Message: 第三个原因是我觉得你应该把雪糕分我一半吃</span></span></code></pre></div><h3 id="addresources" tabindex="-1">addResources <a class="header-anchor" href="#addresources" aria-label="Permalink to &quot;addResources&quot;"></a></h3><h4 id="addresources-" tabindex="-1">addResources- <a class="header-anchor" href="#addresources-" aria-label="Permalink to &quot;addResources-&quot;"></a></h4><p>:addResources : : </p><h4 id="addresources-" tabindex="-1">addResources- <a class="header-anchor" href="#addresources-" aria-label="Permalink to &quot;addResources-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>使</p></div><h4 id="addresources-" tabindex="-1">addResources- <a class="header-anchor" href="#addresources-" aria-label="Permalink to &quot;addResources-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">addResources: </span><span style="color:#F07178;">ammo</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">5, </span><span style="color:#F07178;">setFlag</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1</span></span></code></pre></div><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to &quot;price&quot;"></a></h3><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><p>:price : : </p><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>,600,1400,2000,1400,600,HX</p></div><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">price: 5000,</span><span style="color:#F07178;">ammo</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">5</span></span></code></pre></div><h3 id="isguiblinking" tabindex="-1">isGuiBlinking <a class="header-anchor" href="#isguiblinking" aria-label="Permalink to &quot;isGuiBlinking&quot;"></a></h3><h4 id="isguiblinking-" tabindex="-1">isGuiBlinking- <a class="header-anchor" href="#isguiblinking-" aria-label="Permalink to &quot;isGuiBlinking-&quot;"></a></h4><p>:isGuiBlinking : : </p><h4 id="isguiblinking-" tabindex="-1">isGuiBlinking- <a class="header-anchor" href="#isguiblinking-" aria-label="Permalink to &quot;isGuiBlinking-&quot;"></a></h4><p>trueUI</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><br> UI</p></div><h4 id="isguiblinking-" tabindex="-1">isGuiBlinking- <a class="header-anchor" href="#isguiblinking-" aria-label="Permalink to &quot;isGuiBlinking-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">isGuiBlinking:true</span></span></code></pre></div>`,59);function m(g,A,y,C,q,D){const l=i("font");return o(),c("div",null,[d,s("div",h,[u,s("p",null,[a(""),k,a(" "),t(l,{color:"red"},{default:p(()=>[a("\\n")]),_:1}),a(" ")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};
<span class="line"><span style="color:#A6ACCD;">isGuiBlinking:true</span></span></code></pre></div>`,59);function m(g,A,y,C,q,D){const l=t("font");return p(),i("div",null,[d,s("div",h,[u,s("p",null,[a(""),k,a(" "),o(l,{color:"red"},{default:c(()=>[a("\\n")]),_:1}),a(" ")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};

View File

@ -0,0 +1 @@
import{_ as n,c as i,C as s,a,I as o,E as c,V as e,J as t,o as p}from"./chunks/framework.fcc0bf38.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e("",64),h={class:"tip custom-block"},u=s("p",{class:"custom-block-title"},"TIP",-1),k=s("br",null,null,-1),b=e("",59);function m(g,A,y,C,q,D){const l=t("font");return p(),i("div",null,[d,s("div",h,[u,s("p",null,[a("可以用来告知玩家被锁定原因。"),k,a(" 能够通过转义字符 "),o(l,{color:"red"},{default:c(()=>[a("\\n")]),_:1}),a(" 实现文本换行。")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};

View File

@ -1 +0,0 @@
import{_ as n,K as i,o,c,k as s,a,O as t,w as p,X as e}from"./chunks/framework.d377e0cc.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e("",64),h={class:"tip custom-block"},u=s("p",{class:"custom-block-title"},"TIP",-1),k=s("br",null,null,-1),b=e("",59);function m(g,A,y,C,q,D){const l=i("font");return o(),c("div",null,[d,s("div",h,[u,s("p",null,[a("可以用来告知玩家被锁定原因。"),k,a(" 能够通过转义字符 "),t(l,{color:"red"},{default:p(()=>[a("\\n")]),_:1}),a(" 实现文本换行。")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};

View File

@ -1,4 +1,4 @@
import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framework.d377e0cc.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i(`<h1 id="core-组" tabindex="-1"><strong>[core]组</strong> <a class="header-anchor" href="#core-组" aria-label="Permalink to &quot;**[core]组**&quot;"></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to &quot;第一类-通用代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;"></a></h3><h4 id="name-代码简介" tabindex="-1">name-代码简介 <a class="header-anchor" href="#name-代码简介" aria-label="Permalink to &quot;name-代码简介&quot;"></a></h4><p>代码:name 中文释义:名字 类型:字符型 隶属于:通用代码组</p><h4 id="name-要点指示" tabindex="-1">name-要点指示 <a class="header-anchor" href="#name-要点指示" aria-label="Permalink to &quot;name-要点指示&quot;"></a></h4><hr><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-j1QKR" id="tab-FA0CGIG" checked="checked"><label for="tab-FA0CGIG">JDSALing</label><input type="radio" name="group-j1QKR" id="tab--_UPHgB"><label for="tab--_UPHgB">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">定义单位原始名称,可以是中文。</span></span>
import{_ as t,c as o,C as e,a,I as n,E as l,V as i,J as r,o as c}from"./chunks/framework.fcc0bf38.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i(`<h1 id="core-组" tabindex="-1"><strong>[core]组</strong> <a class="header-anchor" href="#core-组" aria-label="Permalink to &quot;**[core]组**&quot;"></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to &quot;第一类-通用代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;"></a></h3><h4 id="name-代码简介" tabindex="-1">name-代码简介 <a class="header-anchor" href="#name-代码简介" aria-label="Permalink to &quot;name-代码简介&quot;"></a></h4><p>代码:name 中文释义:名字 类型:字符型 隶属于:通用代码组</p><h4 id="name-要点指示" tabindex="-1">name-要点指示 <a class="header-anchor" href="#name-要点指示" aria-label="Permalink to &quot;name-要点指示&quot;"></a></h4><hr><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-e-uDq" id="tab-XZcKgk9" checked="checked"><label for="tab-XZcKgk9">JDSALing</label><input type="radio" name="group-e-uDq" id="tab-U59wtpM"><label for="tab-U59wtpM">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">定义单位原始名称,可以是中文。</span></span>
<span class="line"><span style="color:#FFCB6B;">游戏使用它区分其它单位</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">如果没有在[displayText或者语言文件设置显示名称]</span></span>
@ -16,13 +16,13 @@ import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framew
<span class="line"><span style="color:#A6ACCD;">displayText_zh:中文标题</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">displayDescription: -English Description</span></span>
<span class="line"><span style="color:#A6ACCD;">displayDescription_zh:-中文描述</span></span></code></pre></div><hr><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to &quot;price&quot;"></a></h3><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><p>:price : : :</p><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><p></p><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-AczSx" id="tab-JcYohpn" checked="checked"><label for="tab-JcYohpn">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">price使credit</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">displayDescription_zh:-中文描述</span></span></code></pre></div><hr><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to &quot;price&quot;"></a></h3><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><p>:price : : :</p><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><p></p><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-fB83f" id="tab-lQo786S" checked="checked"><label for="tab-lQo786S">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">price使credit</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">想要更改资源类型可以使用:</span></span>
<span class="line"><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">price:资源1</span><span style="color:#C3E88D;">=数值1,资源2=数值2,资源3=数值3,……</span><span style="color:#89DDFF;">\`</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">的格式</span></span>
<span class="line"><span style="color:#FFCB6B;">前提是此资源要在使用的单位进行定义</span></span></code></pre></div></div></div><h4 id="price-" tabindex="-1">price- <a class="header-anchor" href="#price-" aria-label="Permalink to &quot;price-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">price:120,石油=80,=60</span></span></code></pre></div><hr><h3 id="radius" tabindex="-1">radius <a class="header-anchor" href="#radius" aria-label="Permalink to &quot;radius&quot;"></a></h3><h4 id="radius-" tabindex="-1">radius- <a class="header-anchor" href="#radius-" aria-label="Permalink to &quot;radius-&quot;"></a></h4><p>:radius : : :</p><h4 id="radius-" tabindex="-1">radius- <a class="header-anchor" href="#radius-" aria-label="Permalink to &quot;radius-&quot;"></a></h4><p><code></code><code></code> (px)</p><h4 id="radius-" tabindex="-1">radius- <a class="header-anchor" href="#radius-" aria-label="Permalink to &quot;radius-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">radius:20</span></span></code></pre></div><hr><h3 id="mass" tabindex="-1">mass <a class="header-anchor" href="#mass" aria-label="Permalink to &quot;mass&quot;"></a></h3><h4 id="mass-" tabindex="-1">mass- <a class="header-anchor" href="#mass-" aria-label="Permalink to &quot;mass-&quot;"></a></h4><p>:mass : : :</p><h4 id="mass-" tabindex="-1">mass- <a class="header-anchor" href="#mass-" aria-label="Permalink to &quot;mass-&quot;"></a></h4><p><code></code></p><h4 id="mass-" tabindex="-1">mass- <a class="header-anchor" href="#mass-" aria-label="Permalink to &quot;mass-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">mass:2000</span></span></code></pre></div><hr><h3 id="maxhp" tabindex="-1">maxHp <a class="header-anchor" href="#maxhp" aria-label="Permalink to &quot;maxHp&quot;"></a></h3><h4 id="maxhp-" tabindex="-1">maxHp- <a class="header-anchor" href="#maxhp-" aria-label="Permalink to &quot;maxHp-&quot;"></a></h4><p>:maxHp : : :</p><h4 id="maxhp-" tabindex="-1">maxHp- <a class="header-anchor" href="#maxhp-" aria-label="Permalink to &quot;maxHp-&quot;"></a></h4><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-QELLE" id="tab-35cLAu7" checked="checked"><label for="tab-35cLAu7">tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span></span>
<span class="line"><span style="color:#A6ACCD;">mass:2000</span></span></code></pre></div><hr><h3 id="maxhp" tabindex="-1">maxHp <a class="header-anchor" href="#maxhp" aria-label="Permalink to &quot;maxHp&quot;"></a></h3><h4 id="maxhp-" tabindex="-1">maxHp- <a class="header-anchor" href="#maxhp-" aria-label="Permalink to &quot;maxHp-&quot;"></a></h4><p>:maxHp : : :</p><h4 id="maxhp-" tabindex="-1">maxHp- <a class="header-anchor" href="#maxhp-" aria-label="Permalink to &quot;maxHp-&quot;"></a></h4><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-J3IDl" id="tab-uIACUF_" checked="checked"><label for="tab-uIACUF_">tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span></span>
<span class="line"><span style="color:#FFCB6B;">单位默认生成时即是这个血量</span></span>
<span class="line"><span style="color:#82AAFF;">maxHp可以通过单位参考.maxHp</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#FFCB6B;">也可以通过[action]进行修改</span></span></code></pre></div></div></div><h4 id="maxhp-" tabindex="-1">maxHp- <a class="header-anchor" href="#maxhp-" aria-label="Permalink to &quot;maxHp-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
@ -61,7 +61,7 @@ import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framew
<span class="line"><span style="color:#676E95;font-style:italic;">#如果受到40以下的常规攻击则进行最低伤害判定</span></span></code></pre></div><hr><h3 id="borrowresourceswhilealive" tabindex="-1">borrowResourcesWhileAlive <a class="header-anchor" href="#borrowresourceswhilealive" aria-label="Permalink to &quot;borrowResourcesWhileAlive&quot;"></a></h3><h4 id="borrowresourceswhilealive-" tabindex="-1">borrowResourcesWhileAlive- <a class="header-anchor" href="#borrowresourceswhilealive-" aria-label="Permalink to &quot;borrowResourcesWhileAlive-&quot;"></a></h4><p>:armour : :Price :</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p> </p></div><h4 id="borrowresourceswhilealive-" tabindex="-1">borrowResourcesWhileAlive- <a class="header-anchor" href="#borrowresourceswhilealive-" aria-label="Permalink to &quot;borrowResourcesWhileAlive-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">borrowResourcesWhileAlive:5000</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#单位活着的时候给予5000金币死亡扣除5000金币</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#一个小型贷款系统</span></span></code></pre></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-OCPjM" id="tab-gH9N5xA" checked="checked"><label for="tab-gH9N5xA"></label><input type="radio" name="group-OCPjM" id="tab-NRud-dQ"><label for="tab-NRud-dQ"></label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#一个小型贷款系统</span></span></code></pre></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-2yvIb" id="tab-iB97klY" checked="checked"><label for="tab-iB97klY"></label><input type="radio" name="group-2yvIb" id="tab-6ns0Ecz"><label for="tab-6ns0Ecz"></label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span></span>
<span class="line"><span style="color:#FFCB6B;">并经过一段时间让单位死亡</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">只需要4行代码即可实现试试看</span></span>
<span class="line"><span style="color:#FFCB6B;">提示dieOnZeroEnergy:true</span></span>
@ -116,4 +116,4 @@ import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framew
<span class="line"><span style="color:#A6ACCD;">footprint: -1,-1,1,1</span></span></code></pre></div><hr><h3 id="constructionfootprint" tabindex="-1">constructionFootprint <a class="header-anchor" href="#constructionfootprint" aria-label="Permalink to &quot;constructionFootprint&quot;"></a></h3><h4 id="constructionfootprint-" tabindex="-1">constructionFootprint- <a class="header-anchor" href="#constructionfootprint-" aria-label="Permalink to &quot;constructionFootprint-&quot;"></a></h4><p>:constructionFootprint : : :</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><br> <br> 使</p></div><h4 id="constructionfootprint-" tabindex="-1">constructionFootprint- <a class="header-anchor" href="#constructionfootprint-" aria-label="Permalink to &quot;constructionFootprint-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">constructionFootprint: -1,-1,1,3</span></span></code></pre></div><hr><h3 id="displayfootprint" tabindex="-1">displayFootprint <a class="header-anchor" href="#displayfootprint" aria-label="Permalink to &quot;displayFootprint&quot;"></a></h3><h4 id="displayfootprint-" tabindex="-1">displayFootprint- <a class="header-anchor" href="#displayfootprint-" aria-label="Permalink to &quot;displayFootprint-&quot;"></a></h4><p>:displayFootprint :UI : :</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>UI</p></div><h4 id="displayfootprint-" tabindex="-1">displayFootprint- <a class="header-anchor" href="#displayfootprint-" aria-label="Permalink to &quot;displayFootprint-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">displayFootprint: 0,0,1,1</span></span></code></pre></div><hr><h3 id="buildingselectionoffset" tabindex="-1">buildingSelectionOffset <a class="header-anchor" href="#buildingselectionoffset" aria-label="Permalink to &quot;buildingSelectionOffset&quot;"></a></h3><h4 id="buildingselectionoffset-" tabindex="-1">buildingSelectionOffset- <a class="header-anchor" href="#buildingselectionoffset-" aria-label="Permalink to &quot;buildingSelectionOffset-&quot;"></a></h4><p>:buildingSelectionOffset :UI : :</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>UI</p></div><h4 id="buildingselectionoffset-" tabindex="-1">buildingSelectionOffset- <a class="header-anchor" href="#buildingselectionoffset-" aria-label="Permalink to &quot;buildingSelectionOffset-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
<span class="line"><span style="color:#A6ACCD;">buildingSelectionOffset: 4</span></span></code></pre></div><hr>`,183);function F(_,T,R,w,B,I){const s=o("font");return r(),c("div",null,[d,e("p",null,[a(""),n(s,{color:"orange"},{default:l(()=>[a("Mod")]),_:1}),a(""),h,a(" "),n(s,{color:"orange"},{default:l(()=>[a("")]),_:1}),a(""),n(s,{color:"orange"},{default:l(()=>[a("mod")]),_:1}),a("")]),u,e("div",b,[g,e("p",null,[a(""),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a(",使"),m,a("1.09"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("使"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a(""),y,a(" 31GUI绿233")])]),C,e("div",k,[f,e("p",null,[a("true,,"),q,a(" "),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("hideScorchMark:true")]),_:1}),a("")])]),x,e("div",D,[A,e("p",null,[a(""),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(" energyRegen")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};
<span class="line"><span style="color:#A6ACCD;">buildingSelectionOffset: 4</span></span></code></pre></div><hr>`,183);function F(_,T,R,w,B,I){const s=r("font");return c(),o("div",null,[d,e("p",null,[a(""),n(s,{color:"orange"},{default:l(()=>[a("Mod")]),_:1}),a(""),h,a(" "),n(s,{color:"orange"},{default:l(()=>[a("")]),_:1}),a(""),n(s,{color:"orange"},{default:l(()=>[a("mod")]),_:1}),a("")]),u,e("div",b,[g,e("p",null,[a(""),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a(",使"),m,a("1.09"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("使"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a(""),y,a(" 31GUI绿233")])]),C,e("div",k,[f,e("p",null,[a("true,,"),q,a(" "),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("hideScorchMark:true")]),_:1}),a("")])]),x,e("div",D,[A,e("p",null,[a(""),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(" energyRegen")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};

View File

@ -0,0 +1 @@
import{_ as t,c as o,C as e,a,I as n,E as l,V as i,J as r,o as c}from"./chunks/framework.fcc0bf38.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i("",51),h=e("br",null,null,-1),u=i("",20),b={class:"tip custom-block"},g=e("p",{class:"custom-block-title"},"TIP",-1),m=e("br",null,null,-1),y=e("br",null,null,-1),C=i("",13),k={class:"tip custom-block"},f=e("p",{class:"custom-block-title"},"TIP",-1),q=e("br",null,null,-1),v=e("br",null,null,-1),x=i("",77),D={class:"tip custom-block"},A=e("p",{class:"custom-block-title"},"TIP",-1),P=i("",183);function F(_,T,R,w,B,I){const s=r("font");return c(),o("div",null,[d,e("p",null,[a("主要在"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义Mod")]),_:1}),a("进行优先级定义"),h,a(" 以逗号分隔的名称列表。像"),n(s,{color:"orange"},{default:l(()=>[a("名称一样,但优先级较低")]),_:1}),a(",对于"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义mod")]),_:1}),a("有用。")]),u,e("div",b,[g,e("p",null,[a("早期是用于在"),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a("的代码,并结合科技等级使用。如果工厂的等级低于单位的目标科技等级,则会在工厂里面隐藏该单位。"),m,a("自铁锈1.09后出现"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("后,该方法则不建议使用。有关于新策略,请参考"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("代码文档指南。"),y,a(" 设置单位的科技等级共有3个级别1级GUI显示为绿色2、3级显示为黄色。超过3报错。")])]),C,e("div",k,[f,e("p",null,[a("若设置成true,则会在单位死亡时产生血迹,"),q,a(" 图像在"),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("当hideScorchMark:true")]),_:1}),a("时可以隐藏非生物则为黑色爆炸效果。")])]),x,e("div",D,[A,e("p",null,[a("能量恢复是持续的,如果你设置了"),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(" 那么攻击时按energyRegen恢复耗尽时的灰条按此处设定值恢复。")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};

View File

@ -1 +0,0 @@
import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framework.d377e0cc.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i("",51),h=e("br",null,null,-1),u=i("",20),b={class:"tip custom-block"},g=e("p",{class:"custom-block-title"},"TIP",-1),m=e("br",null,null,-1),y=e("br",null,null,-1),C=i("",13),k={class:"tip custom-block"},f=e("p",{class:"custom-block-title"},"TIP",-1),q=e("br",null,null,-1),v=e("br",null,null,-1),x=i("",77),D={class:"tip custom-block"},A=e("p",{class:"custom-block-title"},"TIP",-1),P=i("",183);function F(_,T,R,w,B,I){const s=o("font");return r(),c("div",null,[d,e("p",null,[a("主要在"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义Mod")]),_:1}),a("进行优先级定义"),h,a(" 以逗号分隔的名称列表。像"),n(s,{color:"orange"},{default:l(()=>[a("名称一样,但优先级较低")]),_:1}),a(",对于"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义mod")]),_:1}),a("有用。")]),u,e("div",b,[g,e("p",null,[a("早期是用于在"),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a("的代码,并结合科技等级使用。如果工厂的等级低于单位的目标科技等级,则会在工厂里面隐藏该单位。"),m,a("自铁锈1.09后出现"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("后,该方法则不建议使用。有关于新策略,请参考"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("代码文档指南。"),y,a(" 设置单位的科技等级共有3个级别1级GUI显示为绿色2、3级显示为黄色。超过3报错。")])]),C,e("div",k,[f,e("p",null,[a("若设置成true,则会在单位死亡时产生血迹,"),q,a(" 图像在"),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("当hideScorchMark:true")]),_:1}),a("时可以隐藏非生物则为黑色爆炸效果。")])]),x,e("div",D,[A,e("p",null,[a("能量恢复是持续的,如果你设置了"),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(" 那么攻击时按energyRegen恢复耗尽时的灰条按此处设定值恢复。")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};

View File

@ -1,4 +1,4 @@
import{_ as a,o as e,c as s,X as n}from"./chunks/framework.d377e0cc.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n(`<h1 id="graphics-图像组" tabindex="-1"><strong>[graphics]图像组</strong> <a class="header-anchor" href="#graphics-图像组" aria-label="Permalink to &quot;**[graphics]图像组**&quot;"></a></h1><h3 id="image" tabindex="-1">image <a class="header-anchor" href="#image" aria-label="Permalink to &quot;image&quot;"></a></h3><h4 id="image-代码简介" tabindex="-1">image-代码简介 <a class="header-anchor" href="#image-代码简介" aria-label="Permalink to &quot;image-代码简介&quot;"></a></h4><p>代码:image 中文释义:图像 类型:字符型</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>如果需要隐藏单位的图像请使用空白透明的图像替代。<br> 请勿直接忽略此项,会直接报错导致此单位代码无法加载,从而报错。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>铁锈战争支持多种图片格式jpg,png,bmp...等但也有一部分的格式并不支持如webp这种的。<br> 尽量使用png格式的图片也许不失为一个好的选择。</p></div><h4 id="image-用法" tabindex="-1">image-用法 <a class="header-anchor" href="#image-用法" aria-label="Permalink to &quot;image-用法&quot;"></a></h4><p>填写图片文件或图片文件的路径,图片文件将作为单位的主体图像。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>路径可使用相对路径或绝对路径。<br> 绝对路径中的根目录是以模组包内的首层目录为根目录的。<br> 相对路径则是以ini代码文件的目录为起始目录。<br> 图片和代码在同一目录下直接填写路径的用法相当于使用了相对路径。<br> 此方法基本适用于[graphics]组内所有需要引用图像文件的地方。</p></div><h4 id="image-示例" tabindex="-1">image-示例 <a class="header-anchor" href="#image-示例" aria-label="Permalink to &quot;image-示例&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
import{_ as a,c as e,o as s,V as n}from"./chunks/framework.fcc0bf38.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n(`<h1 id="graphics-图像组" tabindex="-1"><strong>[graphics]图像组</strong> <a class="header-anchor" href="#graphics-图像组" aria-label="Permalink to &quot;**[graphics]图像组**&quot;"></a></h1><h3 id="image" tabindex="-1">image <a class="header-anchor" href="#image" aria-label="Permalink to &quot;image&quot;"></a></h3><h4 id="image-代码简介" tabindex="-1">image-代码简介 <a class="header-anchor" href="#image-代码简介" aria-label="Permalink to &quot;image-代码简介&quot;"></a></h4><p>代码:image 中文释义:图像 类型:字符型</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>如果需要隐藏单位的图像请使用空白透明的图像替代。<br> 请勿直接忽略此项,会直接报错导致此单位代码无法加载,从而报错。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>铁锈战争支持多种图片格式jpg,png,bmp...等但也有一部分的格式并不支持如webp这种的。<br> 尽量使用png格式的图片也许不失为一个好的选择。</p></div><h4 id="image-用法" tabindex="-1">image-用法 <a class="header-anchor" href="#image-用法" aria-label="Permalink to &quot;image-用法&quot;"></a></h4><p>填写图片文件或图片文件的路径,图片文件将作为单位的主体图像。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>路径可使用相对路径或绝对路径。<br> 绝对路径中的根目录是以模组包内的首层目录为根目录的。<br> 相对路径则是以ini代码文件的目录为起始目录。<br> 图片和代码在同一目录下直接填写路径的用法相当于使用了相对路径。<br> 此方法基本适用于[graphics]组内所有需要引用图像文件的地方。</p></div><h4 id="image-示例" tabindex="-1">image-示例 <a class="header-anchor" href="#image-示例" aria-label="Permalink to &quot;image-示例&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
<span class="line"><span style="color:#A6ACCD;">image: ROOT:\\124\\255\\tank.png </span><span style="color:#676E95;font-style:italic;"># </span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
@ -167,4 +167,4 @@ import{_ as a,o as e,c as s,X as n}from"./chunks/framework.d377e0cc.js";const f=
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:false</span></span></code></pre></div>`,298),o=[t];function i(r,c,p,h,d,m){return e(),s("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:false</span></span></code></pre></div>`,298),o=[t];function i(r,c,p,h,d,m){return s(),e("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};

View File

@ -1 +1 @@
import{_ as a,o as e,c as s,X as n}from"./chunks/framework.d377e0cc.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n("",298),o=[t];function i(r,c,p,h,d,m){return e(),s("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};
import{_ as a,c as e,o as s,V as n}from"./chunks/framework.fcc0bf38.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n("",298),o=[t];function i(r,c,p,h,d,m){return s(),e("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};

View File

@ -1,4 +1,4 @@
import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n(`<h1 id="movement-组" tabindex="-1"><strong>[movement]组</strong> <a class="header-anchor" href="#movement-组" aria-label="Permalink to &quot;**[movement]组**&quot;"></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to &quot;第一类-通用代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="movementtype" tabindex="-1">movementType <a class="header-anchor" href="#movementtype" aria-label="Permalink to &quot;movementType&quot;"></a></h3><h4 id="movementtype-代码简介" tabindex="-1">movementType-代码简介 <a class="header-anchor" href="#movementtype-代码简介" aria-label="Permalink to &quot;movementType-代码简介&quot;"></a></h4><p>代码:movementType 中文释义:运动类型 类型:字符串 隶属于:通用代码组</p><h4 id="string-要点指示" tabindex="-1">string-要点指示 <a class="header-anchor" href="#string-要点指示" aria-label="Permalink to &quot;string-要点指示&quot;"></a></h4><p>定义单位的运动类型判定单位是否可在某种地形上运动可用值为NONE、LAND、BUILDING、AIR、WATER、HOVER、OVER_CLIFF、OVER_CLIFF_WATER。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>不同的运动类型特点如下</p><table><thead><tr><th>类型</th><th>可跨陆地</th><th>可跨悬崖</th><th>可跨水</th><th>可跨岩浆</th></tr></thead><tbody><tr><td>NONE</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>LAND</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>BUILDING</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>AIR</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>WATER</td><td>×</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>HOVER</td><td>✓</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>OVER_CLIFF</td><td>✓</td><td>✓</td><td>×</td><td>×</td></tr><tr><td>OVER_CLIFF_WATER</td><td>✓</td><td>✓</td><td>✓</td><td>×</td></tr></tbody></table></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>类型NONE虽然说移动无视地形但是只能在LAND类型地块进行放置</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>NONE移动类型在多选单位进行移动时会有卡寻路的问题 BUILDING移动类型似乎已经废弃和LAND没有任何区别</p></div><h4 id="movementtype-演示例子" tabindex="-1">movementType-演示例子 <a class="header-anchor" href="#movementtype-演示例子" aria-label="Permalink to &quot;movementType-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
import{_ as e,c as a,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n(`<h1 id="movement-组" tabindex="-1"><strong>[movement]组</strong> <a class="header-anchor" href="#movement-组" aria-label="Permalink to &quot;**[movement]组**&quot;"></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to &quot;第一类-通用代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="movementtype" tabindex="-1">movementType <a class="header-anchor" href="#movementtype" aria-label="Permalink to &quot;movementType&quot;"></a></h3><h4 id="movementtype-代码简介" tabindex="-1">movementType-代码简介 <a class="header-anchor" href="#movementtype-代码简介" aria-label="Permalink to &quot;movementType-代码简介&quot;"></a></h4><p>代码:movementType 中文释义:运动类型 类型:字符串 隶属于:通用代码组</p><h4 id="string-要点指示" tabindex="-1">string-要点指示 <a class="header-anchor" href="#string-要点指示" aria-label="Permalink to &quot;string-要点指示&quot;"></a></h4><p>定义单位的运动类型判定单位是否可在某种地形上运动可用值为NONE、LAND、BUILDING、AIR、WATER、HOVER、OVER_CLIFF、OVER_CLIFF_WATER。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>不同的运动类型特点如下</p><table><thead><tr><th>类型</th><th>可跨陆地</th><th>可跨悬崖</th><th>可跨水</th><th>可跨岩浆</th></tr></thead><tbody><tr><td>NONE</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>LAND</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>BUILDING</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>AIR</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>WATER</td><td>×</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>HOVER</td><td>✓</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>OVER_CLIFF</td><td>✓</td><td>✓</td><td>×</td><td>×</td></tr><tr><td>OVER_CLIFF_WATER</td><td>✓</td><td>✓</td><td>✓</td><td>×</td></tr></tbody></table></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>类型NONE虽然说移动无视地形但是只能在LAND类型地块进行放置</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>NONE移动类型在多选单位进行移动时会有卡寻路的问题 BUILDING移动类型似乎已经废弃和LAND没有任何区别</p></div><h4 id="movementtype-演示例子" tabindex="-1">movementType-演示例子 <a class="header-anchor" href="#movementtype-演示例子" aria-label="Permalink to &quot;movementType-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">movementType:LAND</span></span></code></pre></div><hr><h2 id="-" tabindex="-1">- <a class="header-anchor" href="#-" aria-label="Permalink to &quot;-&quot;"></a></h2><h3 id="movespeed" tabindex="-1">moveSpeed <a class="header-anchor" href="#movespeed" aria-label="Permalink to &quot;moveSpeed&quot;"></a></h3><h4 id="movespeed-" tabindex="-1">moveSpeed- <a class="header-anchor" href="#movespeed-" aria-label="Permalink to &quot;moveSpeed-&quot;"></a></h4><p>:moveSpeed : : :</p><h4 id="movespeed-" tabindex="-1">moveSpeed- <a class="header-anchor" href="#movespeed-" aria-label="Permalink to &quot;moveSpeed-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><strong>/</strong>20x20601</p></div><h4 id="movespeed-" tabindex="-1">moveSpeed- <a class="header-anchor" href="#movespeed-" aria-label="Permalink to &quot;moveSpeed-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0.5</span></span></code></pre></div><hr><h3 id="moveaccelerationspeed" tabindex="-1">moveAccelerationSpeed <a class="header-anchor" href="#moveaccelerationspeed" aria-label="Permalink to &quot;moveAccelerationSpeed&quot;"></a></h3><h4 id="moveaccelerationspeed-" tabindex="-1">moveAccelerationSpeed- <a class="header-anchor" href="#moveaccelerationspeed-" aria-label="Permalink to &quot;moveAccelerationSpeed-&quot;"></a></h4><p>:moveAccelerationSpeed : : :</p><h4 id="moveaccelerationspeed-" tabindex="-1">moveAccelerationSpeed- <a class="header-anchor" href="#moveaccelerationspeed-" aria-label="Permalink to &quot;moveAccelerationSpeed-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>0.60.01</p></div><h4 id="moveaccelerationspeed-" tabindex="-1">moveAccelerationSpeed- <a class="header-anchor" href="#moveaccelerationspeed-" aria-label="Permalink to &quot;moveAccelerationSpeed-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">moveSpeed:1</span></span>
@ -9,7 +9,7 @@ import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=
<span class="line"><span style="color:#A6ACCD;">reverseSpeedPercentage:0.4</span></span></code></pre></div><hr><h3 id="maxturnspeed" tabindex="-1">maxTurnSpeed <a class="header-anchor" href="#maxturnspeed" aria-label="Permalink to &quot;maxTurnSpeed&quot;"></a></h3><h4 id="maxturnspeed-" tabindex="-1">maxTurnSpeed- <a class="header-anchor" href="#maxturnspeed-" aria-label="Permalink to &quot;maxTurnSpeed-&quot;"></a></h4><p>:maxTurnSpeed : : :</p><h4 id="maxturnspeed-" tabindex="-1">maxTurnSpeed- <a class="header-anchor" href="#maxturnspeed-" aria-label="Permalink to &quot;maxTurnSpeed-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><strong>/</strong>160</p></div><h4 id="maxturnspeed-" tabindex="-1">maxTurnSpeed- <a class="header-anchor" href="#maxturnspeed-" aria-label="Permalink to &quot;maxTurnSpeed-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">maxTurnSpeed:1.5</span></span></code></pre></div><hr><h3 id="turnacceleration" tabindex="-1">turnAcceleration <a class="header-anchor" href="#turnacceleration" aria-label="Permalink to &quot;turnAcceleration&quot;"></a></h3><h4 id="turnacceleration-" tabindex="-1">turnAcceleration- <a class="header-anchor" href="#turnacceleration-" aria-label="Permalink to &quot;turnAcceleration-&quot;"></a></h4><p>:turnAcceleration : : :</p><h4 id="turnacceleration-" tabindex="-1">turnAcceleration- <a class="header-anchor" href="#turnacceleration-" aria-label="Permalink to &quot;turnAcceleration-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>0.60.01</p></div><h4 id="turnacceleration-" tabindex="-1">turnAcceleration- <a class="header-anchor" href="#turnacceleration-" aria-label="Permalink to &quot;turnAcceleration-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">maxTurnSpeed:1.5</span></span>
<span class="line"><span style="color:#A6ACCD;">turnAcceleration:0.01</span></span></code></pre></div><hr><h2 id="-" tabindex="-1">- <a class="header-anchor" href="#-" aria-label="Permalink to &quot;-&quot;"></a></h2><h3 id="targetheight" tabindex="-1">targetHeight <a class="header-anchor" href="#targetheight" aria-label="Permalink to &quot;targetHeight&quot;"></a></h3><h4 id="targetheight-" tabindex="-1">targetHeight- <a class="header-anchor" href="#targetheight-" aria-label="Permalink to &quot;targetHeight-&quot;"></a></h4><p>:targetHeight : : :</p><h4 id="targetheight-" tabindex="-1">targetHeight- <a class="header-anchor" href="#targetheight-" aria-label="Permalink to &quot;targetHeight-&quot;"></a></h4><p>0</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>AIRtargetHeight20</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-v31n8" id="tab-XLkKKph" checked="checked"><label for="tab-XLkKKph">time</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span></span>
<span class="line"><span style="color:#A6ACCD;">turnAcceleration:0.01</span></span></code></pre></div><hr><h2 id="-" tabindex="-1">- <a class="header-anchor" href="#-" aria-label="Permalink to &quot;-&quot;"></a></h2><h3 id="targetheight" tabindex="-1">targetHeight <a class="header-anchor" href="#targetheight" aria-label="Permalink to &quot;targetHeight&quot;"></a></h3><h4 id="targetheight-" tabindex="-1">targetHeight- <a class="header-anchor" href="#targetheight-" aria-label="Permalink to &quot;targetHeight-&quot;"></a></h4><p>:targetHeight : : :</p><h4 id="targetheight-" tabindex="-1">targetHeight- <a class="header-anchor" href="#targetheight-" aria-label="Permalink to &quot;targetHeight-&quot;"></a></h4><p>0</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>AIRtargetHeight20</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-aHhzY" id="tab-eWGv7o2" checked="checked"><label for="tab-eWGv7o2">time</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;"></span></span>
<span class="line"><span style="color:#FFCB6B;">如果高度是负数那么可以被水下攻击命中</span></span>
<span class="line"><span style="color:#FFCB6B;">如果高度位于0到10之间可以被对表面攻击命中</span></span>
<span class="line"><span style="color:#FFCB6B;">如果高度大于10可以被对空攻击命中</span></span>
@ -30,4 +30,4 @@ import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=
<span class="line"><span style="color:#A6ACCD;">moveSlidingDir:-1</span></span></code></pre></div><hr><h3 id="joinsgroupformations" tabindex="-1">joinsGroupFormations <a class="header-anchor" href="#joinsgroupformations" aria-label="Permalink to &quot;joinsGroupFormations&quot;"></a></h3><h4 id="joinsgroupformations-" tabindex="-1">joinsGroupFormations- <a class="header-anchor" href="#joinsgroupformations-" aria-label="Permalink to &quot;joinsGroupFormations-&quot;"></a></h4><p>:joinsGroupFormations : : :</p><h4 id="joinsgroupformations-" tabindex="-1">joinsGroupFormations- <a class="header-anchor" href="#joinsgroupformations-" aria-label="Permalink to &quot;joinsGroupFormations-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>true使使aoe使 false使</p></div><h4 id="joinsgroupformations-" tabindex="-1">joinsGroupFormations- <a class="header-anchor" href="#joinsgroupformations-" aria-label="Permalink to &quot;joinsGroupFormations-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">joinsGroupFormations:true</span></span></code></pre></div><hr><h3 id="ignoremoveorders" tabindex="-1">ignoreMoveOrders <a class="header-anchor" href="#ignoremoveorders" aria-label="Permalink to &quot;ignoreMoveOrders&quot;"></a></h3><h4 id="ignoremoveorders-" tabindex="-1">ignoreMoveOrders- <a class="header-anchor" href="#ignoremoveorders-" aria-label="Permalink to &quot;ignoreMoveOrders-&quot;"></a></h4><p>:ignoreMoveOrders :: :</p><h4 id="ignoremoveorders-" tabindex="-1">ignoreMoveOrders- <a class="header-anchor" href="#ignoremoveorders-" aria-label="Permalink to &quot;ignoreMoveOrders-&quot;"></a></h4><p></p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><strong>moveSpeed:0</strong>使setUnitStats</p></div><h4 id="ignoremoveorders-" tabindex="-1">ignoreMoveOrders- <a class="header-anchor" href="#ignoremoveorders-" aria-label="Permalink to &quot;ignoreMoveOrders-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
<span class="line"><span style="color:#A6ACCD;">ignoreMoveOrders:true</span></span>
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0</span></span></code></pre></div><hr>`,175),i=[l];function s(r,d,c,p,h,m){return a(),t("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0</span></span></code></pre></div><hr>`,175),i=[l];function s(r,d,c,p,h,m){return t(),a("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};

View File

@ -1 +1 @@
import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n("",175),i=[l];function s(r,d,c,p,h,m){return a(),t("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};
import{_ as e,c as a,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n("",175),i=[l];function s(r,d,c,p,h,m){return t(),a("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};

View File

@ -1 +1 @@
import{_ as a,o as e,c as s,X as t}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"spawnUnits&spawnProjectiles","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/spawnunit_spawnprojectile.md","filePath":"src/Unit/spawnunit_spawnprojectile.md"}'),o={name:"src/Unit/spawnunit_spawnprojectile.md"},n=t("",169),r=[n];function i(l,p,c,d,h,f){return e(),s("div",null,r)}const b=a(o,[["render",i]]);export{m as __pageData,b as default};
import{_ as a,c as e,o as s,V as t}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"spawnUnits&spawnProjectiles","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/spawnunit_spawnprojectile.md","filePath":"src/Unit/spawnunit_spawnprojectile.md"}'),o={name:"src/Unit/spawnunit_spawnprojectile.md"},n=t("",169),r=[n];function i(l,p,c,d,h,f){return s(),e("div",null,r)}const b=a(o,[["render",i]]);export{m as __pageData,b as default};

View File

@ -1,4 +1,4 @@
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n(`<h1 id="turret-组" tabindex="-1"><strong>[turret]组</strong> <a class="header-anchor" href="#turret-组" aria-label="Permalink to &quot;**[turret]组**&quot;"></a></h1><h2 id="第一类-重复代码组" tabindex="-1">第一类-重复代码组 <a class="header-anchor" href="#第一类-重复代码组" aria-label="Permalink to &quot;第一类-重复代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码与<code>攻击节</code>重复,在此处可以覆盖<code>攻击节</code>的全局数据</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>炮塔上限为31个显示顺序为ini顺序递增</p></div><h3 id="canshoot" tabindex="-1">canShoot <a class="header-anchor" href="#canshoot" aria-label="Permalink to &quot;canShoot&quot;"></a></h3><h4 id="canshoot-代码简介" tabindex="-1">canShoot-代码简介 <a class="header-anchor" href="#canshoot-代码简介" aria-label="Permalink to &quot;canShoot-代码简介&quot;"></a></h4><p>代码:canShoot 中文释义:可攻击 类型:布尔值bool 隶属于:重复代码组</p><h4 id="canshoot-要点指示" tabindex="-1">canShoot-要点指示 <a class="header-anchor" href="#canshoot-要点指示" aria-label="Permalink to &quot;canShoot-要点指示&quot;"></a></h4><p>设置该炮塔是否能攻击</p><h4 id="canshoot-演示例子" tabindex="-1">canShoot-演示例子 <a class="header-anchor" href="#canshoot-演示例子" aria-label="Permalink to &quot;canShoot-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n(`<h1 id="turret-组" tabindex="-1"><strong>[turret]组</strong> <a class="header-anchor" href="#turret-组" aria-label="Permalink to &quot;**[turret]组**&quot;"></a></h1><h2 id="第一类-重复代码组" tabindex="-1">第一类-重复代码组 <a class="header-anchor" href="#第一类-重复代码组" aria-label="Permalink to &quot;第一类-重复代码组&quot;"></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码与<code>攻击节</code>重复,在此处可以覆盖<code>攻击节</code>的全局数据</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>炮塔上限为31个显示顺序为ini顺序递增</p></div><h3 id="canshoot" tabindex="-1">canShoot <a class="header-anchor" href="#canshoot" aria-label="Permalink to &quot;canShoot&quot;"></a></h3><h4 id="canshoot-代码简介" tabindex="-1">canShoot-代码简介 <a class="header-anchor" href="#canshoot-代码简介" aria-label="Permalink to &quot;canShoot-代码简介&quot;"></a></h4><p>代码:canShoot 中文释义:可攻击 类型:布尔值bool 隶属于:重复代码组</p><h4 id="canshoot-要点指示" tabindex="-1">canShoot-要点指示 <a class="header-anchor" href="#canshoot-要点指示" aria-label="Permalink to &quot;canShoot-要点指示&quot;"></a></h4><p>设置该炮塔是否能攻击</p><h4 id="canshoot-演示例子" tabindex="-1">canShoot-演示例子 <a class="header-anchor" href="#canshoot-演示例子" aria-label="Permalink to &quot;canShoot-演示例子&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">canShoot:true</span></span></code></pre></div><hr><h3 id="canattacklandunits" tabindex="-1">canAttackLandUnits <a class="header-anchor" href="#canattacklandunits" aria-label="Permalink to &quot;canAttackLandUnits&quot;"></a></h3><h4 id="canattacklandunits-" tabindex="-1">canAttackLandUnits- <a class="header-anchor" href="#canattacklandunits-" aria-label="Permalink to &quot;canAttackLandUnits-&quot;"></a></h4><p>:canAttackLandUnits : :LogicBoolean :</p><h4 id="canattacklandunits-" tabindex="-1">canAttackLandUnits- <a class="header-anchor" href="#canattacklandunits-" aria-label="Permalink to &quot;canAttackLandUnits-&quot;"></a></h4><p></p><h4 id="canattacklandunits-" tabindex="-1">canAttackLandUnits- <a class="header-anchor" href="#canattacklandunits-" aria-label="Permalink to &quot;canAttackLandUnits-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">canAttackLandUnits:if self.ammo&gt;=2</span></span></code></pre></div><hr><h3 id="canattackflyingunits" tabindex="-1">canAttackFlyingUnits <a class="header-anchor" href="#canattackflyingunits" aria-label="Permalink to &quot;canAttackFlyingUnits&quot;"></a></h3><h4 id="canattackflyingunits-" tabindex="-1">canAttackFlyingUnits- <a class="header-anchor" href="#canattackflyingunits-" aria-label="Permalink to &quot;canAttackFlyingUnits-&quot;"></a></h4><p>:canAttackFlyingUnits : :LogicBoolean :</p><h4 id="canattackflyingunits-" tabindex="-1">canAttackFlyingUnits- <a class="header-anchor" href="#canattackflyingunits-" aria-label="Permalink to &quot;canAttackFlyingUnits-&quot;"></a></h4><p></p><h4 id="canattackflyingunits-" tabindex="-1">canAttackFlyingUnits- <a class="header-anchor" href="#canattackflyingunits-" aria-label="Permalink to &quot;canAttackFlyingUnits-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">canAttackFlyingUnits:if self.ammo&gt;=2</span></span></code></pre></div><hr><h3 id="canattackunderwaterunits" tabindex="-1">canAttackUnderwaterUnits <a class="header-anchor" href="#canattackunderwaterunits" aria-label="Permalink to &quot;canAttackUnderwaterUnits&quot;"></a></h3><h4 id="canattackunderwaterunits-" tabindex="-1">canAttackUnderwaterUnits- <a class="header-anchor" href="#canattackunderwaterunits-" aria-label="Permalink to &quot;canAttackUnderwaterUnits-&quot;"></a></h4><p>:canAttackUnderwaterUnits : :LogicBoolean :</p><h4 id="canattackunderwaterunits-" tabindex="-1">canAttackUnderwaterUnits- <a class="header-anchor" href="#canattackunderwaterunits-" aria-label="Permalink to &quot;canAttackUnderwaterUnits-&quot;"></a></h4><p></p><h4 id="canattackunderwaterunits-" tabindex="-1">canAttackUnderwaterUnits- <a class="header-anchor" href="#canattackunderwaterunits-" aria-label="Permalink to &quot;canAttackUnderwaterUnits-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
@ -74,4 +74,4 @@ import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const m=
<span class="line"><span style="color:#A6ACCD;">onShoot_playAnimation:1</span></span></code></pre></div><hr><h3 id="onshoot-freezebodymovementfor-1" tabindex="-1">onShoot_freezeBodyMovementFor <a class="header-anchor" href="#onshoot-freezebodymovementfor-1" aria-label="Permalink to &quot;onShoot_freezeBodyMovementFor&quot;"></a></h3><h4 id="onshoot-freezebodymovementfor--1" tabindex="-1">onShoot_freezeBodyMovementFor- <a class="header-anchor" href="#onshoot-freezebodymovementfor--1" aria-label="Permalink to &quot;onShoot_freezeBodyMovementFor-&quot;"></a></h4><p>:onShoot_freezeBodyMovementFor : :float :</p><h4 id="onshoot-freezebodymovementfor--1" tabindex="-1">onShoot_freezeBodyMovementFor- <a class="header-anchor" href="#onshoot-freezebodymovementfor--1" aria-label="Permalink to &quot;onShoot_freezeBodyMovementFor-&quot;"></a></h4><p></p><h4 id="onshoot-freezebodymovementfor--1" tabindex="-1">onShoot_freezeBodyMovementFor- <a class="header-anchor" href="#onshoot-freezebodymovementfor--1" aria-label="Permalink to &quot;onShoot_freezeBodyMovementFor-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">onShoot_freezeBodyMovementFor:60</span></span></code></pre></div><hr><h3 id="onshoot-triggeractions" tabindex="-1">onShoot_triggerActions <a class="header-anchor" href="#onshoot-triggeractions" aria-label="Permalink to &quot;onShoot_triggerActions&quot;"></a></h3><h4 id="onshoot-triggeractions-" tabindex="-1">onShoot_triggerActions- <a class="header-anchor" href="#onshoot-triggeractions-" aria-label="Permalink to &quot;onShoot_triggerActions-&quot;"></a></h4><p>:onShoot_triggerActions : :action :</p><h4 id="onshoot-triggeractions-" tabindex="-1">onShoot_triggerActions- <a class="header-anchor" href="#onshoot-triggeractions-" aria-label="Permalink to &quot;onShoot_triggerActions-&quot;"></a></h4><p></p><h4 id="onshoot-triggeractions-" tabindex="-1">onShoot_triggerActions- <a class="header-anchor" href="#onshoot-triggeractions-" aria-label="Permalink to &quot;onShoot_triggerActions-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">onShoot_triggerActions:1</span></span></code></pre></div><hr><h3 id="unloaduptoxunitsandgiveattackorder" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder" aria-label="Permalink to &quot;unloadUpToXUnitsAndGiveAttackOrder&quot;"></a></h3><h4 id="unloaduptoxunitsandgiveattackorder-" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder- <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-" aria-label="Permalink to &quot;unloadUpToXUnitsAndGiveAttackOrder-&quot;"></a></h4><p>:unloadUpToXUnitsAndGiveAttackOrder :n :int :</p><h4 id="unloaduptoxunitsandgiveattackorder-" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder- <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-" aria-label="Permalink to &quot;unloadUpToXUnitsAndGiveAttackOrder-&quot;"></a></h4><p>n </p><h4 id="unloaduptoxunitsandgiveattackorder-" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder- <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-" aria-label="Permalink to &quot;unloadUpToXUnitsAndGiveAttackOrder-&quot;"></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
<span class="line"><span style="color:#A6ACCD;">unloadUpToXUnitsAndGiveAttackOrder:1</span></span></code></pre></div><hr>`,584),l=[r];function o(s,c,h,d,p,u){return e(),t("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
<span class="line"><span style="color:#A6ACCD;">unloadUpToXUnitsAndGiveAttackOrder:1</span></span></code></pre></div><hr>`,584),l=[r];function o(s,c,h,d,p,u){return t(),e("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};

View File

@ -1 +1 @@
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n("",584),l=[r];function o(s,c,h,d,p,u){return e(),t("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n("",584),l=[r];function o(s,c,h,d,p,u){return t(),e("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"cos.md":"c9635cbb","index.md":"f503aa80","src_debug_test.md":"5eb6a57a","src_map_tsada.md":"a63d0bb5","src_rw-engine_quick-start.md":"921da213","src_unit_canbuild.md":"c15db697","src_unit_attack.md":"883ec5ec","src_unit_attachment.md":"278f3818","api-dev.md":"8b5f2e0b","src_unit_spawnunit_spawnprojectile.md":"d50999f9","src_unit_loginboolean.md":"13e85825","src_unit_core.md":"cb3c28d4","src_unit_graphics.md":"8ae7ad98","src_unit_movement.md":"ca621e83","src_unit_turret.md":"d370e296"}
{"cos.md":"4cc32180","src_debug_test.md":"501f237e","src_rw-engine_quick-start.md":"a2b4fb07","index.md":"7a8a1ce3","src_map_tsada.md":"95d6f1dd","api-dev.md":"447d3fe1","src_unit_attack.md":"9d57709d","src_unit_canbuild.md":"4f4f1935","src_unit_movement.md":"3ff8232f","src_unit_spawnunit_spawnprojectile.md":"5ab9c365","src_unit_graphics.md":"6e56c4ad","src_unit_attachment.md":"2e3e2a58","src_unit_core.md":"9eb125bd","src_unit_turret.md":"149ab95e","src_unit_loginboolean.md":"33f0931b"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long