From f18eba66502c44e5b02d3e5c860c5e555c05b9fb Mon Sep 17 00:00:00 2001 From: akiq2016 Date: Mon, 4 Jul 2022 23:02:28 +0800 Subject: [PATCH] Deploy website - based on 1f66a9185b3bac1e0c292e5bf58d8a809c40edca --- 404.html | 8 +++---- about.html | 8 +++---- assets/js/3d604b8e.3cfd995b.js | 1 + assets/js/935f2afb.9321aa2a.js | 1 + assets/js/935f2afb.f1080793.js | 1 - assets/js/9f1c36eb.107b951f.js | 1 - assets/js/9f1c36eb.51321569.js | 1 + assets/js/c48aeec7.6411fe8a.js | 1 - assets/js/c48aeec7.b9667d8f.js | 1 + assets/js/main.a6349f88.js | 2 ++ ...CENSE.txt => main.a6349f88.js.LICENSE.txt} | 0 assets/js/main.df6c0c52.js | 2 -- assets/js/runtime~main.0c2fb082.js | 1 - assets/js/runtime~main.16895322.js | 1 + book1/algorithm-balanced-binary-trees.html | 8 +++---- book1/browser-cross-origin.html | 8 +++---- book1/browser-repain-reflow.html | 8 +++---- book1/coding-promise.html | 8 +++---- book1/css-bfc.html | 8 +++---- book1/engineer-webpack-workflow.html | 8 +++---- book1/frame-vue-computed-watch.html | 8 +++---- book1/frame-vue-data-binding.html | 8 +++---- book1/js-closures.html | 8 +++---- book1/js-module-specs.html | 8 +++---- book1/network-security.html | 8 +++---- book1/topic-enter-url-display-xx.html | 8 +++---- book2/algorithm-reverse-linked-list.html | 8 +++---- book2/browser-garbage.html | 8 +++---- book2/browser-render-mechanism.html | 8 +++---- book2/coding-throttle-debounce.html | 8 +++---- book2/css-preprocessor.html | 8 +++---- book2/engineer-babel.html | 8 +++---- book2/frame-react-fiber.html | 8 +++---- book2/frame-react-hoc-hooks.html | 8 +++---- book2/js-inherite.html | 8 +++---- book2/js-new.html | 8 +++---- book2/network-http-cache.html | 8 +++---- book2/topic-multi-pics-site-optimize.html | 8 +++---- book3/algorithm-binary-tree-k.html | 8 +++---- book3/browser-event-loop.html | 8 +++---- book3/browser-memory-leaks.html | 8 +++---- book3/coding-arr-to-tree.html | 8 +++---- book3/css-mobile-adaptive.html | 8 +++---- book3/engineer-webpack-loader.html | 8 +++---- book3/frame-diff.html | 8 +++---- book3/frame-react-hooks.html | 8 +++---- book3/js-async.html | 8 +++---- book3/js-ts-interface-type.html | 8 +++---- book3/network-http-1-2.html | 8 +++---- book3/topic-white-screen-optimization.html | 8 +++---- book4/array-repeat-number.html | 10 ++++----- book4/browser-local-storage.html | 21 +++++++++++++++++++ book4/browser-router.html | 10 ++++----- book4/coding-apply-call-bind.html | 10 ++++----- book4/css-vertical-horizontal-center.html | 10 ++++----- book4/engineer-front-end-testing.html | 12 +++++------ book4/engineer-mfa.html | 10 ++++----- book4/frame-react-event-mechanism.html | 10 ++++----- book4/frame-react-vs-vue.html | 10 ++++----- book4/js-ts-generics.html | 10 ++++----- guide.html | 8 +++---- index.html | 8 +++---- readme.md | 4 ++++ search.html | 8 +++---- sitemap.xml | 2 +- 65 files changed, 243 insertions(+), 217 deletions(-) create mode 100644 assets/js/3d604b8e.3cfd995b.js create mode 100644 assets/js/935f2afb.9321aa2a.js delete mode 100644 assets/js/935f2afb.f1080793.js delete mode 100644 assets/js/9f1c36eb.107b951f.js create mode 100644 assets/js/9f1c36eb.51321569.js delete mode 100644 assets/js/c48aeec7.6411fe8a.js create mode 100644 assets/js/c48aeec7.b9667d8f.js create mode 100644 assets/js/main.a6349f88.js rename assets/js/{main.df6c0c52.js.LICENSE.txt => main.a6349f88.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.df6c0c52.js delete mode 100644 assets/js/runtime~main.0c2fb082.js create mode 100644 assets/js/runtime~main.16895322.js create mode 100644 book4/browser-local-storage.html diff --git a/404.html b/404.html index 0827ea9..3499ec8 100644 --- a/404.html +++ b/404.html @@ -9,13 +9,13 @@ Page Not Found | HZFE - 剑指前端 Offer - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/about.html b/about.html index 0a7361f..5e49630 100644 --- a/about.html +++ b/about.html @@ -9,13 +9,13 @@ 关于我们 | HZFE - 剑指前端 Offer - - + +
Skip to main content

关于我们

Hi,我们是 HZFE,一群来自于五湖四海的 90 后技术人。

一些缘分 :D

一群固定的人总聚在一起,不知不觉就会成为一个所谓的团队。而我们的团队代号“HZFE”,总让不明其意的人拼错或不知如何发音。曾经在我们三周年活动蛋糕上,店家就用心写下了“H2FF 三周年快乐”的祝福。但是问题不大,只要我们不说,没有人会知道。

我们最初相识于拥有 17 位成员的群聊,群聊名称正是 HZFE。其本意是杭州前端(Hangzhou Front-End),所以也读作“杭州 FE”。尽管我们大多不在杭州,也不全是前端。所以姑且当这是个没道理的代号吧,而我们的相聚则是一场有趣的缘分。

可爱的人 0:)

和每个普通人一样,我们大多过着三点一线的生活。喜欢旅游也爱摄影,也像千千万个理财小白一般,在正向或是反向理财中来回波动。每天都在产出新的想法,一起头脑风暴,结局总是以没有设计师为借口不了了之,三分钟热度成了我们心照不宣的默契。每天都在做梦,讲些不切实际的幻想,平凡且平庸。

如果说,唯一值得小小炫耀一番的,便是我们这群人对于热爱开发这件事达成了共识。不论是做开源、做自己的产品亦或各自在工作岗位上,都有所收获和成绩。目前团队开源的技术项目累计 6k star 以上,成员主要任职于腾讯、阿里巴巴、字节跳动、百度等一二线互联网公司,同时也不乏优秀的个人开发者。或许我们也是幸运的,在刚踏入社会时相遇相知相爱,彼此影响,一同成长为此刻至少技术还不赖的人。

做些东西 ;‑)

因缘巧合下,在某天如同往日的头脑风暴中,我们一拍脑袋,说要一起写本书,将五年来对于行业面试规则和趋势的了解整理成册。就此,开启了这场坎坷的写作之旅。

正如其名:剑指前端 Offer,希望在这本书的帮助下,我们和读者都能有所成长。

Loading script...
- - + + \ No newline at end of file diff --git a/assets/js/3d604b8e.3cfd995b.js b/assets/js/3d604b8e.3cfd995b.js new file mode 100644 index 0000000..0a7f78f --- /dev/null +++ b/assets/js/3d604b8e.3cfd995b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkjjbook=self.webpackChunkjjbook||[]).push([[3917],{3905:function(e,t,a){a.d(t,{Zo:function(){return c},kt:function(){return u}});var l=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function n(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var k=l.createContext({}),s=function(e){var t=l.useContext(k),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},c=function(e){var t=s(e.components);return l.createElement(k.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},d=l.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,k=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=s(a),u=o,m=d["".concat(k,".").concat(u)]||d[u]||p[u]||r;return a?l.createElement(m,n(n({ref:t},c),{},{components:a})):l.createElement(m,n({ref:t},c))}));function u(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,n=new Array(r);n[0]=d;var i={};for(var k in t)hasOwnProperty.call(t,k)&&(i[k]=t[k]);i.originalType=e,i.mdxType="string"==typeof e?e:o,n[1]=i;for(var s=2;s ")," \u5373\u53ef\u5b8c\u6210\u5bf9\u4ee3\u7801\u7684\u63d2\u6869\u3002\u5728\u4ee3\u7801\u5b9e\u9645\u8fd0\u884c\u65f6\uff0c\u63d2\u6869\u4ee3\u7801\u4f1a\u7edf\u8ba1\u6e90\u4ee3\u7801\u5404\u90e8\u5206\u7684\u8fd0\u884c\u6b21\u6570\uff0c\u6765\u7edf\u8ba1\u8986\u76d6\u7387\u3002"),(0,r.kt)("p",null,"\u4f8b\u5b50\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="greeting.js"',title:'"greeting.js"'},'function greeting(name = "HZFE") {\n if (DEBUG) {\n name = `${name} (DEBUG)`;\n }\n\n const foo = DEBUG ? "(DEBUG) foo" : "foo";\n\n for (const i = 0; i < name.length; i++) {\n name += "!";\n }\n\n return `Hello ${name}`;\n}\n')),(0,r.kt)("p",null,"\u7ecf\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"nyc instrument")," \u540e\uff0c\u5927\u81f4\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="output.js"',title:'"output.js"'},'function cov_g4lly5ec() {\n // ...\n var coverageData = {\n path: "...",\n statementMap: {\n 0: { start: { line: 2, column: 2 }, end: { line: 4, column: 3 } },\n // ...\n },\n fnMap: {\n 0: {\n name: "greeting",\n decl: { start: { line: 1, column: 9 }, end: { line: 1, column: 17 } },\n loc: { start: { line: 1, column: 33 }, end: { line: 13, column: 1 } },\n line: 1,\n },\n },\n branchMap: {\n 0: {\n loc: { start: { line: 1, column: 18 }, end: { line: 1, column: 31 } },\n type: "default-arg",\n locations: [\n { start: { line: 1, column: 25 }, end: { line: 1, column: 31 } },\n ],\n line: 1,\n },\n // ...\n },\n s: { 0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0 },\n f: { 0: 0 },\n b: { 0: [0], 1: [0, 0], 2: [0, 0] },\n // ...\n };\n // ...\n return actualCoverage;\n}\ncov_g4lly5ec();\nfunction greeting(name = (cov_g4lly5ec().b[0][0]++, "HZFE")) {\n cov_g4lly5ec().f[0]++;\n cov_g4lly5ec().s[0]++;\n if (DEBUG) {\n cov_g4lly5ec().b[1][0]++;\n cov_g4lly5ec().s[1]++;\n name = `${name} (DEBUG)`;\n } else {\n cov_g4lly5ec().b[1][1]++;\n }\n const foo =\n (cov_g4lly5ec().s[2]++,\n DEBUG\n ? (cov_g4lly5ec().b[2][0]++, "(DEBUG) foo")\n : (cov_g4lly5ec().b[2][1]++, "foo"));\n cov_g4lly5ec().s[3]++;\n for (const i = (cov_g4lly5ec().s[4]++, 0); i < name.length; i++) {\n cov_g4lly5ec().s[5]++;\n name += "!";\n }\n cov_g4lly5ec().s[6]++;\n return `Hello ${name}`;\n}\n')),(0,r.kt)("p",null,"istanbul \u5728\u89e3\u6790\u6e90\u4ee3\u7801\u65f6\uff0c\u4f1a\u5728\u51fd\u6570\u4f53\u3001\u9ed8\u8ba4\u53c2\u6570\u3001\u5206\u652f\u8bed\u53e5\u7b49\u5404\u5904\u4f4d\u7f6e\u63d2\u5165\u8bb0\u5f55\u6267\u884c\u6b21\u6570\u7684\u4ee3\u7801\uff0c\u5728\u4e09\u5143\u8fd0\u7b97\u7b26\u7b49\u7279\u6b8a\u4f4d\u7f6e\u4f1a\u5229\u7528 JS \u9017\u53f7\u8fd0\u7b97\u7b26\u7684\u7279\u6027\u63d2\u5165\u7edf\u8ba1\u4ee3\u7801\u3002"),(0,r.kt)("p",null,"\u4f8b\uff0c\u5728",(0,r.kt)("inlineCode",{parentName:"p"},"cov_g4lly5ec().b[1][0]++;")," \u4e4b\u4e2d\u7684 b \u4ee3\u8868 branch\uff08\u5206\u652f\uff09\uff0c1 \u4ee3\u8868\u7b2c\u4e00\u4e2a\u5206\u652f\u8bed\u53e5\uff0c1 \u540e\u9762\u7d27\u8ddf\u7684 0 \u4ee3\u8868\u5206\u652f\u7684\u7b2c\u4e00\u4e2a\u53c9\u8def\u3002\u4f9d\u6b64\u7c7b\u63a8\uff0c\u8fd9\u4e9b\u4ee3\u7801\u8bb0\u5f55\u4e86 f(function)\uff0cs(statement)\uff0cb(branch) \u7684\u6267\u884c\u6b21\u6570\u3002\u540e\u9762\u7684\u7d22\u5f15\u6700\u7ec8\u4f1a\u89e3\u6790\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"statementMap"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"fnMap"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"branchMap")," \u4e2d\u7684\u5bf9\u5e94\u9879\uff0c\u6620\u5c04\u5230\u6e90\u4ee3\u7801\u4e2d\u7684\u5177\u4f53\u4f4d\u7f6e\u3002\u8fd9\u6837\u5728\u6267\u884c\u5b8c\u6d4b\u8bd5\u7528\u4f8b\u4e2d\uff0c\u5c31\u80fd\u591f\u77e5\u9053\u6e90\u4ee3\u7801\u4e2d\u6bcf\u4e00\u5904\u8bed\u6cd5\u7ed3\u6784\u88ab\u8fd0\u884c\u7684\u60c5\u51b5\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"E2E \u6d4b\u8bd5")),(0,r.kt)("p",null,"\u5e38\u89c1\u5de5\u5177\u6709 Pupeteer\u3001Nightwatch\u3001TestCafe\u3001Selenium\u3001Cypress\u3001Playwright \u7b49\u3002\u5b83\u4eec\u90fd\u662f\u901a\u8fc7\u63a7\u5236\u6d4f\u89c8\u5668\u6267\u884c\u4ee3\u7801\u6765\u6a21\u62df\u5b9e\u9645\u7528\u6237\u7684\u64cd\u4f5c\uff0c\u6765\u9a8c\u8bc1 UI \u7684\u53d8\u5316\u7b26\u5408\u9884\u671f\u3002E2E \u6d4b\u8bd5\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u5c3d\u91cf\u6d4b\u8bd5\u8f6f\u4ef6\u5728\u771f\u5b9e\u73af\u5883\u4e0b\u7684\u8868\u73b0\uff0c\u4e00\u822c\u5f88\u5c11\u4f7f\u7528 mock\u3002\n\u57fa\u4e8e\u6d4b\u8bd5\u5728\u771f\u5b9e\u7684\u6d4f\u89c8\u5668\u4e0b\u8fd0\u884c\uff0c\u548c\u6d4b\u8bd5\u73af\u5883\u7f51\u7edc\u4e0d\u7a33\u5b9a\u4e24\u4e2a\u4e3b\u8981\u56e0\u7d20\uff0cE2E \u6d4b\u8bd5\u901a\u5e38\u8981\u6267\u884c\u5f88\u957f\u7684\u65f6\u95f4\uff0c\u5e76\u4e14\u4f1a\u8f83\u9891\u7e41\u7684\u9762\u4e34\u5931\u8d25\u3002\u5728\u5b9e\u9645\u7684\u6301\u7eed\u96c6\u6210\u73af\u5883\u4e2d\uff0c\u4e00\u822c\u4f1a\u8ba9 E2E \u6d4b\u8bd5\u91cd\u8bd5 2 \u5230 3 \u6b21\u6765\u5c3d\u53ef\u80fd\u7684\u6392\u9664\u73af\u5883\u56e0\u7d20\u5bfc\u81f4\u7684\u5931\u8d25\u3002"),(0,r.kt)("p",null,"\u5728\u8fd9\u4e9b\u5e38\u7528\u7684\u5de5\u5177\u4e2d\uff0c\u76ee\u524d\u4f7f\u7528\u6bd4\u8f83\u5e7f\u6cdb\u7684\u4e09\u4e2a\u662f Pupeteer\uff0cCypress\uff0cPlaywright\u3002\u5b83\u4eec\u4e09\u4e2a\u6709\u6bd4\u8f83\u7a81\u51fa\u7684\u7279\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Pupeteer\uff1aGoogle \u5b98\u65b9\u63d0\u4f9b\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u4f7f\u7528 Chrome DevTools Protocol \u4e0e Chromium \u7cfb\u5217\u7684\u6d4f\u89c8\u5668\u8fdb\u884c\u4ea4\u4e92\u3002\u6240\u63d0\u4f9b\u7684 API \u662f\u6bd4\u8f83\u5e95\u5c42\u7684\u57fa\u672c\u64cd\u4f5c\uff0c\u901a\u5e38\u9700\u8981\u81ea\u5df1\u5c01\u88c5\u5e38\u7528\u7684\u64cd\u4f5c\uff0c\u4f46\u5728\u5177\u4f53\u7684\u4f7f\u7528\u4e2d\u76f8\u5bf9\u7075\u6d3b\uff0c\u9650\u5236\u8f83\u5c11\u3002"),(0,r.kt)("li",{parentName:"ul"},"Cypress: \u9ad8\u5ea6\u96c6\u6210\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u81ea\u52a8\u7b49\u5f85\u5f02\u6b65\u64cd\u4f5c\uff0c\u964d\u4f4e\u7f16\u7801\u95e8\u69db\u3002\u63d0\u4f9b Test Runner \u53ef\u89c6\u5316\u8fd0\u884c\u6d4b\u8bd5\uff0c\u8bb0\u5f55\u6d4b\u8bd5\u6b65\u9aa4\u4e2d\u7684\u5177\u4f53\u7ec6\u8282\uff0c\u53ef\u4ee5\u67e5\u770b\u6d4b\u8bd5\u4ee3\u7801\u4e2d\u6bcf\u4e00\u6b65\u6240\u5bf9\u5e94\u7684 DOM \u5feb\u7167\uff0c\u4fbf\u4e8e debug\u3002\u57fa\u4e8e iframe \u8fd0\u884c\uff0c\u6d4b\u8bd5\u4ee3\u7801\u548c\u88ab\u6d4b\u8bd5\u5e94\u7528\u5904\u4e8e\u540c\u4e00\u8fd0\u884c\u73af\u5883\uff0c\u53ef\u4ee5\u63d0\u9ad8\u6d4b\u8bd5\u7684\u53ef\u9760\u6027\u3002\u76ee\u524d\u7684\u9650\u5236\u662f\u4e0d\u652f\u6301\u591a\u7a97\u53e3\uff0c\u4ee5\u53ca iframe \u5728\u5b89\u5168\u7b56\u7565\u4e0a\u7684\u5c0f\u90e8\u5206\u65e0\u6cd5\u89c4\u907f\u7684\u9650\u5236\u3002"),(0,r.kt)("li",{parentName:"ul"},"Playwright\uff1a\u5fae\u8f6f\u5f00\u53d1\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u652f\u6301\u9664 Chromium \u4e4b\u5916\u7684 Firefox \u548c Safari\uff0c\u62e5\u6709 Trace View \u53ef\u4ee5\u63d0\u4f9b\u7c7b\u4f3c Cypress \u7684\u5f3a\u5927 debug \u4f53\u9a8c\u3002\u652f\u6301\u9664\u4e86 JS/TS \u4ee5\u5916\u7684\u8bed\u8a00\u5982 Python\u3001.NET\u3001Java\uff0c\u9002\u7528\u8303\u56f4\u66f4\u5e7f\u3002")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u96c6\u6210\u6d4b\u8bd5")),(0,r.kt)("p",null,"\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u96c6\u6210\u6d4b\u8bd5\u6240\u9700\u4f7f\u7528\u7684\u5de5\u5177\u90fd\u6db5\u76d6\u5728\u5355\u5143\u6d4b\u8bd5\u548c E2E \u6d4b\u8bd5\u4f7f\u7528\u7684\u5de5\u5177\u4e4b\u4e2d\u4e86\u3002"),(0,r.kt)("h3",{id:"\u8fdb\u884c\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5"},"\u8fdb\u884c\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5e94\u8be5\u8db3\u591f\u5feb\u3002\u53ea\u6709\u6d4b\u8bd5\u80fd\u591f\u5feb\u901f\u8fd0\u884c\u5f97\u5230\u53cd\u9988\uff0c\u6d4b\u8bd5\u4eba\u5458\u624d\u4f1a\u4e50\u610f\u91c7\u7528 TDD \u7684\u65b9\u5f0f\u8fdb\u884c\u5f00\u53d1\u3002\u53cd\u4f8b\u662f E2E \u6d4b\u8bd5\uff0c\u901a\u5e38\u5f00\u53d1\u4eba\u5458\u4e0d\u4f1a\u60f3\u8981\u5728\u672c\u5730\u9891\u7e41\u7684\u8fd0\u884c E2E \u6d4b\u8bd5\uff0c\u56e0\u4e3a\u8fd9\u4f1a\u6d6a\u8d39\u4ed6\u4eec\u5f88\u591a\u65f6\u95f4\u3002\u4f7f\u6d4b\u8bd5\u8fd0\u884c\u8db3\u591f\u5feb\uff0c\u5408\u7406\u7684\u914d\u7f6e\u6d4b\u8bd5\u6846\u67b6\uff0c\u53ea\u8fd0\u884c\u6539\u52a8\u76f8\u5173\u7684\u6d4b\u8bd5\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5e94\u8be5\u8db3\u591f\u7b80\u5355\u3002\u5982\u679c\u6d4b\u8bd5\u4ee3\u7801\u5199\u7684\u975e\u5e38\u590d\u6742\uff0c\u4e5f\u8bb8\u4f1a\u6709\u7591\u95ee\uff1a\u201c\u5982\u4f55\u4fdd\u8bc1\u6d4b\u8bd5\u4ee3\u7801\u662f\u6b63\u786e\u7684\u5462\uff1f\u201d\uff0c\u90a3\u5c31\u53ef\u80fd\u9700\u8981\u5bf9\u6d4b\u8bd5\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\uff0c\u6240\u4ee5\u5728\u6d4b\u8bd5\u4ee3\u7801\u4e2d\uff0c\u5e94\u8be5\u4fdd\u8bc1\u4f7f\u7528\u7b80\u5355\u7684\u4ee3\u7801\uff0c\u4e0d\u8981\u4f7f\u7528\u590d\u6742\u3001\u62bd\u8c61\u5ea6\u9ad8\u7684\u4ee3\u7801\u3002\u5bf9\u4e8e\u786e\u5b9e\u9700\u8981\u4f7f\u7528\u590d\u6742\u5de5\u5177\u7684\u573a\u666f\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4f7f\u7528\u4e45\u7ecf\u8003\u9a8c\u7684\u5de5\u5177\u5e93\u3002\u6216\u8005\u81ea\u5df1\u62bd\u8c61\u4e00\u90e8\u5206\u6d4b\u8bd5\u8f85\u52a9\u5de5\u5177\u4ee3\u7801\uff0c\u5e76\u5bf9\u5176\u8fdb\u884c\u6d4b\u8bd5\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5e94\u8be5\u5177\u5907\u826f\u597d\u7684\u53ef\u8bfb\u6027\u3002\u548c\u4e0a\u4e00\u6761\u7c7b\u4f3c\uff0c\u4fdd\u6301\u7b80\u5355\u7684\u540c\u65f6\uff0c\u4e5f\u8981\u4fdd\u8bc1\u826f\u597d\u7684\u53ef\u8bfb\u6027\u3002\u826f\u597d\u7684\u53ef\u8bfb\u6027\u53ef\u4ee5\u907f\u514d\u5f00\u53d1\u4eba\u5458\u8bef\u89e3\u6d4b\u8bd5\u7528\u4f8b\u7684\u610f\u56fe\uff0c\u5e76\u53ef\u4ee5\u6700\u5927\u9650\u5ea6\u53d1\u6325\u6d4b\u8bd5\u7528\u4f8b\u4f5c\u4e3a\u6700\u4f73\u6587\u6863\u7684\u529f\u80fd\u3002\u867d\u7136\u53ef\u8bfb\u6027\u662f\u6bd4\u8f83\u4e3b\u89c2\u7684\u611f\u53d7\uff0c\u4f46\u4e5f\u53ef\u4ee5\u901a\u8fc7\u9075\u5faa\u4e0b\u9762\u7684\u89c4\u5219\u8fdb\u884c\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u7684\u91cf\u5316\u3002",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},'\u4f7f\u7528 "Arrange, Act, Assert" \u6216 "Given, When, Then" \u6765\u7ec4\u7ec7\u6d4b\u8bd5\u4ee3\u7801\u3002'),(0,r.kt)("li",{parentName:"ul"},"\u6bcf\u4e2a\u6d4b\u8bd5\u5757\u4e2d\u4e13\u6ce8\u4e8e\u4e00\u9879\u529f\u80fd\u7684\u6d4b\u8bd5\uff0c\u4e0d\u8981\u5c06\u592a\u591a\u65ad\u8a00\u6df7\u5408\u5728\u4e00\u8d77\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u907f\u514d\u4f7f\u7528\u9b54\u672f\u6570\u5b57\u548c\u5b57\u7b26\u4e32\uff0c\u4f7f\u7528\u542b\u4e49\u66f4\u6e05\u6670\u7684\u5e38\u91cf\u53d6\u4ee3\u3002"))),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u4ee3\u7801\u4e2d\u4e0d\u8981\u91cd\u590d\u5b9e\u73b0\u6e90\u4ee3\u7801\u4e2d\u7684\u903b\u8f91\u3002\u4f8b\u5982\uff0c\u7528\u4e8e\u4e0e\u5b9e\u9645\u4ee3\u7801\u8fd4\u56de\u7684 Received \u5bf9\u6bd4\u7684 Expected \u5e94\u8be5\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u5217\u4e3e\u51fa\u6765\u7684\u5b57\u9762\u91cf\uff0c\u800c\u4e0d\u662f\u901a\u8fc7\u548c\u6e90\u4ee3\u7801\u7c7b\u4f3c\u7684\u903b\u8f91\u52a8\u6001\u751f\u6210\u7684\u7ed3\u679c\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5fc5\u987b\u662f\u7a33\u5b9a\u7684\u3002\u6d4b\u8bd5\u7528\u4f8b\u7684\u6210\u529f\u6216\u5931\u8d25\u53ea\u53d6\u51b3\u4e8e\u88ab\u6d4b\u8bd5\u7684\u4ee3\u7801\uff0c\u6d4b\u8bd5\u7528\u4f8b\u4e0d\u56e0\u5176\u4ed6\u7528\u4f8b\u3001\u73af\u5883\u56e0\u7d20\u3001\u5916\u90e8\u4f9d\u8d56\u7684\u53d8\u5316\u800c\u6539\u53d8\u7ed3\u679c\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u4e0d\u8981\u5c06\u6d4b\u8bd5\u4e0e\u5b9e\u73b0\u7ec6\u8282\u8026\u5408\u3002\u63d0\u9ad8\u6d4b\u8bd5\u7528\u4f8b\u7a33\u5b9a\u6027\uff0c\u907f\u514d\u56e0\u4e3a\u4ee3\u7801\u4e2d\u5fae\u5c0f\u7684\u6539\u52a8\u800c\u5bfc\u81f4\u6d4b\u8bd5\u7528\u4f8b\u5931\u8d25\u3002\u5982\uff0c\u4f7f\u7528 contain \u4ee3\u66ff equal \u68c0\u67e5\u5185\u5bb9\uff1b\u4f7f\u7528 getByRole \u4ee3\u66ff querySelector\u3002")),(0,r.kt)("h2",{id:"\u53c2\u8003\u8d44\u6599"},"\u53c2\u8003\u8d44\u6599"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://martinfowler.com/articles/practical-test-pyramid.html"},"The Practical Test Pyramid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"http://www.jamesshore.com/v2/books/aoad1/test_driven_development"},"TDD")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://v8.dev/blog/javascript-code-coverage"},"V8 Coverage")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://istanbul.js.org/docs/advanced/instrument/"},"istanbul")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.chaijs.com/guide/styles/"},"Assertion Styles")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://jestjs.io/"},"Jest")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://testing-library.com/"},"Testing Library"))))}d.isMDXComponent=!0},11748:function(e,n,t){var l={"./locale":89234,"./locale.js":89234};function a(e){var n=r(e);return t(n)}function r(e){if(!t.o(l,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return l[e]}a.keys=function(){return Object.keys(l)},a.resolve=r,e.exports=a,a.id=11748}}]); \ No newline at end of file diff --git a/assets/js/9f1c36eb.51321569.js b/assets/js/9f1c36eb.51321569.js new file mode 100644 index 0000000..6767175 --- /dev/null +++ b/assets/js/9f1c36eb.51321569.js @@ -0,0 +1 @@ +(self.webpackChunkjjbook=self.webpackChunkjjbook||[]).push([[1293],{3342:function(e,n,t){"use strict";t.r(n),t.d(n,{assets:function(){return k},contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return p},metadata:function(){return u},toc:function(){return m}});var l=t(87462),a=t(63366),r=(t(67294),t(3905)),i=t(93456),o=["components"],p={sidebar_label:"\u5de5\u7a0b\u5316\uff1a\u5982\u4f55\u5bf9\u524d\u7aef\u4ee3\u7801\u5b9e\u65bd\u6d4b\u8bd5",sidebar_position:3},s="\u5982\u4f55\u5bf9\u524d\u7aef\u4ee3\u7801\u5b9e\u65bd\u6d4b\u8bd5",u={unversionedId:"book4/engineer-front-end-testing",id:"book4/engineer-front-end-testing",title:"\u5982\u4f55\u5bf9\u524d\u7aef\u4ee3\u7801\u5b9e\u65bd\u6d4b\u8bd5",description:"\u76f8\u5173\u95ee\u9898",source:"@site/docs/book4/engineer-front-end-testing.md",sourceDirName:"book4",slug:"/book4/engineer-front-end-testing",permalink:"/awesome-interview/book4/engineer-front-end-testing",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_label:"\u5de5\u7a0b\u5316\uff1a\u5982\u4f55\u5bf9\u524d\u7aef\u4ee3\u7801\u5b9e\u65bd\u6d4b\u8bd5",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"\u6d4f\u89c8\u5668\uff1a\u672c\u5730\u5b58\u50a8\u65b9\u5f0f\u53ca\u573a\u666f",permalink:"/awesome-interview/book4/browser-local-storage"},next:{title:"\u5de5\u7a0b\u5316\uff1a\u8c08\u8c08\u5fae\u524d\u7aef",permalink:"/awesome-interview/book4/engineer-mfa"}},k={},m=[{value:"\u76f8\u5173\u95ee\u9898",id:"\u76f8\u5173\u95ee\u9898",level:2},{value:"\u56de\u7b54\u5173\u952e\u70b9",id:"\u56de\u7b54\u5173\u952e\u70b9",level:2},{value:"\u77e5\u8bc6\u70b9\u6df1\u5165",id:"\u77e5\u8bc6\u70b9\u6df1\u5165",level:2},{value:"\u6d4b\u8bd5\u7684\u79cd\u7c7b",id:"\u6d4b\u8bd5\u7684\u79cd\u7c7b",level:3},{value:"\u5982\u4f55\u7f16\u5199\u6d4b\u8bd5",id:"\u5982\u4f55\u7f16\u5199\u6d4b\u8bd5",level:3},{value:"\u6d4b\u8bd5\u7684\u7ed3\u6784",id:"\u6d4b\u8bd5\u7684\u7ed3\u6784",level:4},{value:"\u6d4b\u8bd5\u5de5\u5177",id:"\u6d4b\u8bd5\u5de5\u5177",level:4},{value:"\u8fdb\u884c\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5",id:"\u8fdb\u884c\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5",level:3},{value:"\u53c2\u8003\u8d44\u6599",id:"\u53c2\u8003\u8d44\u6599",level:2}],c={toc:m};function d(e){var n=e.components,t=(0,a.Z)(e,o);return(0,r.kt)("wrapper",(0,l.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"\u5982\u4f55\u5bf9\u524d\u7aef\u4ee3\u7801\u5b9e\u65bd\u6d4b\u8bd5"},"\u5982\u4f55\u5bf9\u524d\u7aef\u4ee3\u7801\u5b9e\u65bd\u6d4b\u8bd5"),(0,r.kt)("h2",{id:"\u76f8\u5173\u95ee\u9898"},"\u76f8\u5173\u95ee\u9898"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u4f60\u662f\u5982\u4f55\u770b\u5f85\u8f6f\u4ef6\u6d4b\u8bd5\u7684\uff1f"),(0,r.kt)("li",{parentName:"ul"},"\u4f60\u5728\u5de5\u4f5c\u4e2d\u662f\u5982\u4f55\u5b9e\u65bd\u6d4b\u8bd5\u7684\uff1f"),(0,r.kt)("li",{parentName:"ul"},"\u5bf9\u524d\u7aef\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\uff0c\u6709\u54ea\u4e9b\u6d4b\u8bd5\u65b9\u6cd5\uff1f"),(0,r.kt)("li",{parentName:"ul"},"\u8bf4\u8bf4\u4f60\u5bf9\u6d4b\u8bd5\u9a71\u52a8\u5f00\u53d1\u7684\u7406\u89e3\uff1f")),(0,r.kt)("h2",{id:"\u56de\u7b54\u5173\u952e\u70b9"},"\u56de\u7b54\u5173\u952e\u70b9"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Unit Tests")," ",(0,r.kt)("inlineCode",{parentName:"p"},"E2E Tests")," ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6d4b\u8bd5\u8986\u76d6\u7387")," ",(0,r.kt)("inlineCode",{parentName:"p"},"TDD")," ",(0,r.kt)("inlineCode",{parentName:"p"},"BDD")),(0,r.kt)("p",null,"\u6d4b\u8bd5\u662f\u4fdd\u969c\u4ee3\u7801\u8d28\u91cf\u7684\u91cd\u8981\u624b\u6bb5\uff0c\u53ef\u4ee5\u9a8c\u8bc1\u6211\u4eec\u4ee3\u7801\u7684\u6b63\u786e\u6027\uff1b\u6d4b\u8bd5\u53ef\u4ee5\u589e\u5f3a\u6211\u4eec\u5728\u4fee\u6539\u4ee3\u7801\u65f6\u7684\u4fe1\u5fc3\uff0c\u4fdd\u8bc1\u4ee3\u7801\u91cd\u6784\u7684\u6b63\u786e\u6027\uff1b\u7f16\u5199\u6d4b\u8bd5\u8fd8\u6709\u52a9\u4e8e\u7406\u89e3\u4e1a\u52a1\u529f\u80fd\uff0c\u907f\u514d\u5728\u7f16\u5199\u4ee3\u7801\u65f6\u505a\u51fa\u8fc7\u5ea6\u7684\u8bbe\u8ba1\uff1b\u5bf9\u4e8e\u5f00\u53d1\u4eba\u5458\u6765\u8bf4\uff0c\u6d4b\u8bd5\u7528\u4f8b\u8fd8\u662f\u6700\u597d\u7684\u5f00\u53d1\u6587\u6863\u3002\u6d4b\u8bd5\u7684\u5206\u7c7b\u65b9\u6cd5\u6709\u5f88\u591a\u79cd\uff0c\u4e00\u822c\u6309\u6d4b\u8bd5\u9636\u6bb5\u53ef\u4ee5\u5206\u4e3a\u5355\u5143\u6d4b\u8bd5\uff08Unit Tests\uff09\u3001\u96c6\u6210\u6d4b\u8bd5\uff08Integration Tests\uff09\u3001E2E \u6d4b\u8bd5\uff08\u7aef\u5230\u7aef\u6d4b\u8bd5\uff0cEnd-to-End Tests\uff09\u6765\u4fdd\u969c\u4ea7\u54c1\u5173\u952e\u8def\u5f84\u7684\u53ef\u9760\u6027\u3002"),(0,r.kt)("p",null,"\u4e00\u822c\u6765\u8bf4\uff0c\u6d4b\u8bd5\u4ee3\u7801\u7531\u5927\u91cf\u7684\u5355\u5143\u6d4b\u8bd5\uff0c\u9002\u4e2d\u7684\u96c6\u6210\u6d4b\u8bd5\uff0c\u4ee5\u53ca\u5c11\u91cf\u7684 E2E \u6d4b\u8bd5\u6784\u6210\u3002"),(0,r.kt)("p",null,"\u6d4b\u8bd5\u9a71\u52a8\u5f00\u53d1\uff08TDD\uff09\u662f\u4e00\u79cd\u901a\u8fc7\u7f16\u5199\u6d4b\u8bd5\u6765\u6307\u5bfc\u8f6f\u4ef6\u7684\u5f00\u53d1\u8fc7\u7a0b\uff0c\u6784\u5efa\u8f6f\u4ef6\u7684\u6280\u672f\u3002"),(0,r.kt)("h2",{id:"\u77e5\u8bc6\u70b9\u6df1\u5165"},"\u77e5\u8bc6\u70b9\u6df1\u5165"),(0,r.kt)("h3",{id:"\u6d4b\u8bd5\u7684\u79cd\u7c7b"},"\u6d4b\u8bd5\u7684\u79cd\u7c7b"),(0,r.kt)("p",null,"\u4ece\u4e0d\u540c\u7684\u89d2\u5ea6\u5bf9\u5f85\u6d4b\u8bd5\uff0c\u4f1a\u6709\u4e0d\u540c\u7684\u5206\u7c7b\u65b9\u6cd5\uff0c\u4f8b\u5982\u767d\u76d2\u6d4b\u8bd5\u3001\u56de\u5f52\u6d4b\u8bd5\u3001\u7070\u5ea6\u6d4b\u8bd5\u3001\u5192\u70df\u6d4b\u8bd5\u7b49\u3002\u4ee5\u4e0b\u4e3b\u8981\u5173\u6ce8\u6d4b\u8bd5\u9636\u6bb5\u3002\u6309\u6d4b\u8bd5\u7684\u4e0d\u540c\u76ee\u6807\uff0c\u5728\u4ee3\u7801\u4e2d\u8fdb\u884c\u4ee5\u4e0b\u4e09\u79cd\u81ea\u52a8\u5316\u6d4b\u8bd5\uff1a"),(0,r.kt)("p",null,"\u8fd9\u4e09\u79cd\u6d4b\u8bd5\u6784\u6210\u6d4b\u8bd5\u91d1\u5b57\u5854\uff0c\u4ece E2E \u6d4b\u8bd5\u5230\u5355\u5143\u6d4b\u8bd5\uff0c\u96c6\u6210\u5ea6\u8d8a\u6765\u8d8a\u4f4e\u3001\u9694\u79bb\u5ea6\u8d8a\u6765\u8d8a\u9ad8\uff0c\u8fd0\u884c\u6d4b\u8bd5\u6240\u9700\u8981\u7684\u65f6\u95f4\u4e5f\u8d8a\u6765\u8d8a\u77ed\u3002\n",(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/4338052/165334296-ecb4e75d-d166-4735-bf82-c2a96279dbe5.png",alt:"image"})),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5355\u5143\u6d4b\u8bd5")),(0,r.kt)("p",null,"\u662f\u6307\u5bf9\u8f6f\u4ef6\u4e2d\u72ec\u7acb\u5355\u5143\uff08\u901a\u5e38\u662f\u4e00\u4e2a\u51fd\u6570\u3001\u4e00\u4e2a\u6a21\u5757\u6216\u4e00\u7ec4\u7d27\u5bc6\u5173\u8054\u7684\u529f\u80fd\u96c6\u5408\uff09\u8fdb\u884c\u6d4b\u8bd5\u7684\u65b9\u6cd5\u3002\u5355\u5143\u6d4b\u8bd5\u81f3\u5c11\u5e94\u8be5\u5bf9\u6a21\u5757\u66b4\u9732\u7684\u516c\u5171\u63a5\u53e3\u8fdb\u884c\u6d4b\u8bd5\uff0c\u540c\u65f6\u4e0d\u5e94\u4e0e\u4ee3\u7801\u7684\u5177\u4f53\u5b9e\u73b0\u8026\u5408\u5f97\u592a\u7d27\u5bc6\uff08\u5982 Element \u7684 classname\uff09\u3002\u5355\u5143\u6d4b\u8bd5\u4e2d\u7ecf\u5e38\u4f1a\u7528\u5230\u88ab\u79f0\u4e3a Mocks \u6216 Stubs \u7684 fake \u5b9e\u73b0\uff0c\u8fd9\u53ef\u4ee5\u4f7f\u6d4b\u8bd5\u514d\u4e8e\u5f71\u54cd\u771f\u5b9e\u7684\u7cfb\u7edf\uff0c\u6216\u8005\u8ba9\u6d4b\u8bd5\u8fd0\u884c\u5f97\u66f4\u5feb\u3002"),(0,r.kt)("p",null,"\u5173\u4e8e\u6d4b\u8bd5\u7684 mock\uff0c\u4e00\u822c\u6709\u4e24\u79cd\u4e0d\u540c\u7684\u610f\u89c1\uff1a\u4e00\u6d3e\u8ba4\u4e3a\u5bf9\u5f53\u524d\u6d4b\u8bd5\u70b9\u5173\u6ce8\u4e4b\u5916\u7684\u4e1c\u897f\u90fd\u53ef\u4ee5\u8fdb\u884c mock\uff0c\u4ee5\u5b9e\u73b0\u5b8c\u7f8e\u7684\u9694\u79bb\uff0c\u6765\u8fbe\u5230\u907f\u514d\u526f\u4f5c\u7528\u548c\u8fdb\u884c\u590d\u6742\u7684\u6d4b\u8bd5\u73af\u5883\u8bbe\u7f6e\u7684\u76ee\u7684\uff1b\u53e6\u4e00\u6d3e\u8ba4\u4e3a\u8981\u5c3d\u91cf\u5c11\u7684\u5728\u6d4b\u8bd5\u4e2d\u4f7f\u7528 mock\uff0c\u56e0\u4e3a mock \u53ef\u80fd\u4e0e\u771f\u5b9e\u7684\u63a5\u53e3\u5b58\u5728\u4e0d\u4e00\u81f4\u7684\u5730\u65b9\uff0c\u800c\u8fd9\u5f88\u96be\u5bdf\u89c9\u5230\u3002\u5728\u5b9e\u9645\u7684\u5de5\u4f5c\u4e2d\uff0c\u90fd\u4f1a\u7efc\u5408\u8003\u8651\u8fd9\u4e24\u6d3e\u7684\u610f\u89c1\uff0c\u5408\u7406\u8c28\u614e\u7684\u8fd0\u7528 mock\u3002\u901a\u5e38\u6d4b\u8bd5\u8986\u76d6\u7387\u8fbe\u5230 100% \u5e76\u4e0d\u610f\u5473\u7740\u8f6f\u4ef6\u5c31\u662f\u7edd\u5bf9\u53ef\u9760\u7684\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u96c6\u6210\u6d4b\u8bd5")),(0,r.kt)("p",null,"\u4e00\u4e2a\u5b8c\u6574\u7684\u8f6f\u4ef6\u901a\u5e38\u9700\u8981\u5f88\u591a\u5b50\u7cfb\u7edf\u914d\u5408\u5de5\u4f5c\u3002\u6bd4\u5982\u5bf9\u540e\u7aef\u6765\u8bf4\uff0c\u5305\u542b\u6570\u636e\u5e93\u3001\u6587\u4ef6\u7cfb\u7edf\u53ca\u5176\u4ed6\u7f51\u7edc\u8c03\u7528\uff1b\u5bf9\u524d\u7aef\u6765\u8bf4\uff0c\u5305\u542b UI \u7ec4\u4ef6\uff0c\u6570\u636e\u4ed3\u5e93\uff0c\u7f51\u7edc\u8bf7\u6c42\u7b49\u3002\u6b63\u5982\u5355\u5143\u6d4b\u8bd5\u96be\u4ee5\u7cbe\u786e\u754c\u5b9a\u4e00\u4e2a\u5355\u5143\u7684\u8303\u56f4\u4e00\u6837\uff0c\u96c6\u6210\u6d4b\u8bd5\u5728\u8fb9\u754c\u7684\u786e\u5b9a\u4e2d\u6bd4\u5355\u5143\u6d4b\u8bd5\u66f4\u52a0\u6a21\u7cca\u3002\u96c6\u6210\u6d4b\u8bd5\u4e00\u822c\u662f\u6307\u5bf9\u7cfb\u7edf\u548c\u5916\u90e8\u529f\u80fd\u7684\u96c6\u6210\u6574\u4f53\u8fdb\u884c\u7684\u6d4b\u8bd5\u3002"),(0,r.kt)("p",null,"\u53e6\u4e00\u65b9\u9762\uff0c\u96c6\u6210\u6d4b\u8bd5\u7684\u542b\u4e49\u901a\u5e38\u6bd4\u5355\u5143\u6d4b\u8bd5\u66f4\u6a21\u7cca\uff0c\u5982\u4f55\u786e\u5b9a\u6d4b\u8bd5\u7684\u8fb9\u754c\u5f80\u5f80\u968f\u7740\u9879\u76ee\u7684\u5177\u4f53\u60c5\u51b5\u800c\u5404\u6709\u4e0d\u540c\u3002\u96c6\u6210\u6d4b\u8bd5\u4e2d\u901a\u5e38\u6709\u7740\u548c\u5355\u5143\u6d4b\u8bd5\u91cd\u590d\u7684\u90e8\u5206\u3002\u6709\u4e00\u79cd\u89c2\u70b9\u662f\u8ba4\u4e3a\u53ef\u4ee5\u7528\u5951\u7ea6\u6d4b\u8bd5\uff08Contract Tests\uff09\u4ee3\u66ff\u90e8\u5206\u96c6\u6210\u6d4b\u8bd5\u3002"),(0,r.kt)("p",null,"\u5728\u73b0\u4ee3\u5316\u7684\u7ec4\u7ec7\u67b6\u6784\u4e2d\uff0c\u968f\u7740\u8f6f\u4ef6\u7684\u89c4\u6a21\u8d8a\u6765\u8d8a\u5927\uff0c\u5f00\u53d1\u90e8\u95e8\u4e5f\u4f1a\u5206\u6210\u5404\u4e2a\u89c4\u6a21\u8f83\u5c0f\u7684\u56e2\u961f\uff0c\u5404\u81ea\u8d1f\u8d23\u76f8\u5bf9\u72ec\u7acb\u7684\u90e8\u5206\uff0c\u6784\u5efa\u9ad8\u5185\u805a\u3001\u4f4e\u8026\u5408\u7684\u670d\u52a1\u3002\u4e0d\u540c\u7684\u670d\u52a1\u4e4b\u95f4\u901a\u5e38\u662f\u901a\u8fc7\u63a5\u53e3\u4e92\u76f8\u901a\u4fe1\u7684\uff0c\u6bd4\u5982\u901a\u8fc7 HTTP \u8fdb\u884c REST \u901a\u4fe1\uff0c\u4f7f\u7528 gRPC \u6765\u8fdb\u884c RPC \u901a\u4fe1\uff0c\u6216\u8005\u4f7f\u7528\u6d88\u606f\u961f\u5217\u6765\u8fdb\u884c\u901a\u4fe1\u3002\u8fd9\u65f6\uff0c\u53ef\u4ee5\u8003\u8651\u4f7f\u7528\u5951\u7ea6\u6d4b\u8bd5\uff0c\u6765\u5bf9\u5404\u4e2a\u5b50\u7cfb\u7edf\u63d0\u4f9b\u7684\u63a5\u53e3\u8fdb\u884c\u6d4b\u8bd5\u3002"),(0,r.kt)(i.Mermaid,{config:{},chart:"flowchart TB\n subgraph \u96c6\u6210\u6d4b\u8bd5\u7ed3\u6784\n E1[\u670d\u52a1\u7aef] --\x3e I\n E2[\u5b89\u5353\u7aef] --\x3e I\n E3[iOS\u7aef] --\x3e I\n E4[Web\u7aef] --\x3e I\n I[\u96c6\u6210\u6d4b\u8bd5] --\x3e R[\u63a8\u51fa]\n end\n subgraph \u5951\u7ea6\u6d4b\u8bd5\u7ed3\u6784\n M1[\u670d\u52a1\u7aef] --\x3e C1[\u5951\u7ea6\u6d4b\u8bd5]\n M2[\u5b89\u5353\u7aef] --\x3e C2[\u5951\u7ea6\u6d4b\u8bd5]\n M3[iOS\u7aef] --\x3e C3[\u5951\u7ea6\u6d4b\u8bd5]\n M4[Web\u7aef] --\x3e C4[\u5951\u7ea6\u6d4b\u8bd5]\n C1 --\x3e R1[\u63a8\u51fa]\n C2 --\x3e R1[\u63a8\u51fa]\n C3 --\x3e R1[\u63a8\u51fa]\n C4 --\x3e R1[\u63a8\u51fa]\n end",mdxType:"Mermaid"}),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"E2E \u6d4b\u8bd5")),(0,r.kt)("p",null,"\u6d4b\u8bd5\u91d1\u5b57\u5854\u7684\u6700\u9876\u7aef\u4e00\u822c\u662f E2E \u6d4b\u8bd5\uff0c\u5728\u8fdb\u884c\u6d4b\u8bd5\u65f6\uff0c\u4e00\u822c\u6709\u6d4b\u8bd5\u4eba\u5458\u624b\u52a8\u8fdb\u884c\u7684\u6d4b\u8bd5\uff0c\u4e5f\u6709\u81ea\u52a8\u5316\u7684\u5de5\u5177\u8fdb\u884c\u7684\u6d4b\u8bd5\u3002"),(0,r.kt)("p",null,"E2E \u6d4b\u8bd5\u4e2d\u7684\u4e00\u6761\u7528\u4f8b\u4f1a\u8986\u76d6\u4e00\u6761\u5b8c\u6574\u7684\u7528\u6237\u64cd\u4f5c\u6d41\u7a0b\u3002\u5bf9\u4e8e web \u7a0b\u5e8f\u6765\u8bf4\uff0c\u6211\u4eec\u4f1a\u6d4b\u8bd5\u7528\u6237\u7684\u8f93\u5165\u662f\u5426\u89e6\u53d1\u4e86\u6b63\u786e\u7684\u52a8\u4f5c\u3001\u6570\u636e\u662f\u5426\u5448\u73b0\u7ed9\u4e86\u7528\u6237\u3001UI \u72b6\u6001\u662f\u5426\u6309\u7167\u9884\u671f\u6539\u53d8\u7b49\u7b49\u3002"),(0,r.kt)("p",null,"Web \u5e94\u7528\u7a0b\u5e8f\u7684 E2E \u6d4b\u8bd5\u901a\u5e38\u662f\u4f7f\u7528 WebDriver \u6765\u9a71\u52a8\u5b9e\u9645\u7684\u6d4f\u89c8\u5668\u8fd0\u884c\u6765\u8fdb\u884c\u6d4b\u8bd5\u7684\uff0c\u8fd9\u901a\u5e38\u610f\u5473\u7740 E2E \u6d4b\u8bd5\u4f1a\u5f88\u6162\u3002\u6240\u4ee5\u6211\u4eec\u5728\u529f\u80fd\u70b9\u80fd\u591f\u88ab\u524d\u9762\u4e24\u79cd\u6d4b\u8bd5\u8986\u76d6\u7684\u65f6\u5019\uff0c\u5c3d\u91cf\u91c7\u7528\u5b83\u4eec\u6765\u8fdb\u884c\u6d4b\u8bd5\u3002"),(0,r.kt)("h3",{id:"\u5982\u4f55\u7f16\u5199\u6d4b\u8bd5"},"\u5982\u4f55\u7f16\u5199\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u6700\u7406\u60f3\u7684\u72b6\u6001\u662f\u8df5\u884c\u6d4b\u8bd5\u9a71\u52a8\u5f00\u53d1\uff0c\u91c7\u7528\u5148\u7ea2\u540e\u7eff\u7684\u6d41\u7a0b\u5f00\u53d1\u8f6f\u4ef6\u3002\u8fd9\u6bd4\u5199\u5b8c\u529f\u80fd\u4ee3\u7801\u540e\u518d\u8865\u5145\u6d4b\u8bd5\u8981\u597d\uff0c\u56e0\u4e3a\u540e\u8865\u6d4b\u8bd5\u7528\u4f8b\u662f\u5728\u529f\u80fd\u4ee3\u7801\u5df2\u7ecf\u5b8c\u6210\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u7684\uff0c\u8fd9\u4e5f\u5c31\u662f\u6240\u8c13\u7684\u767d\u76d2\u6d4b\u8bd5\u3002"),(0,r.kt)("p",null,"\u767d\u76d2\u6d4b\u8bd5\u53ef\u80fd\u9762\u4e34\u67d0\u4e9b\u601d\u7ef4\u76f2\u70b9\uff08\u4f8b\u5982\u4e00\u65e6\u4ece\u4e00\u5806\u4e0d\u89c4\u5219\u7684\u56fe\u5f62\u4e2d\u627e\u51fa\u4e86\u4e94\u89d2\u661f\uff0c\u540e\u9762\u518d\u6b21\u770b\u5230\u65f6\u5c31\u5f88\u96be\u518d\u5ffd\u7565\u5b83\u4e86\uff09\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u6d4b\u8bd5\u8986\u76d6\u7684\u4e0d\u591f\u5168\u9762\u3002\u767d\u76d2\u6d4b\u8bd5\u4e5f\u53ef\u80fd\u8fc7\u591a\u7684\u6d4b\u8bd5\u8fb9\u7f18\u60c5\u51b5\uff0c\u800c\u5ffd\u7565\u4e86\u4e1a\u52a1\u4e3b\u6d41\u7a0b\u3002\n",(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/4338052/164974483-2a382312-1b02-4336-87fa-02c7d6679542.png",alt:"image"})),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u56fe\u7247\u6765\u6e90 ",(0,r.kt)("a",{parentName:"p",href:"https://insights.thoughtworks.cn/test-like-user-1/"},"\u50cf\u7528\u6237\u4e00\u6837\u6d4b\u8bd5\uff1a\u6253\u7834\u77e5\u8bc6\u8bc5\u5492"))),(0,r.kt)("p",null,"TDD \u6709\u56db\u4e2a\u5173\u952e\u70b9\uff1a"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u601d\u8003\uff08Think\uff09\uff1a\u5bf9\u4e1a\u52a1\u9700\u6c42\u8fdb\u884c\u62c6\u89e3\uff0c\u5c06\u9700\u6c42\u5206\u89e3\u4e3a\u6709\u4e0a\u4e0b\u6587\u3001\u884c\u4e3a\u548c\u9884\u671f\u7ed3\u679c\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u4efb\u52a1\u5217\u8868\uff0c\u5e76\u4fdd\u8bc1\u5217\u8868\u4e2d\u7684\u6bcf\u4e2a\u4efb\u52a1\u662f\u7b80\u5355\u7684\u3001\u80fd\u5feb\u901f\u5b9e\u73b0\u7684\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u7ea2\uff08Red bar\uff09\uff1a\u4ece\u4e0a\u4e00\u6b65\u7684\u4efb\u52a1\u5217\u8868\u4e2d\u6311\u9009\u4efb\u52a1\uff0c\u4e3a\u8be5\u4efb\u52a1\u5feb\u901f\u7684\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801\uff0c\u7136\u540e\u4e0d\u65ad\u5faa\u73af\u7684\u5b8c\u6210\u6240\u6709\u4efb\u52a1\u5230\u6d4b\u8bd5\u7528\u4f8b\u7684\u8f6c\u6362\u3002\u6b64\u65f6\uff0c\u8fd0\u884c\u6d4b\u8bd5\u4ee3\u7801\u65f6\u7684\u65ad\u8a00\u662f\u4f1a\u5931\u8d25\u7684\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u7eff\uff08Green bar\uff09\uff1a\u4ee5\u6700\u5feb\u7684\u901f\u5ea6\u8ba9\u6d4b\u8bd5\u53d8\u7eff\uff0c\u8fd9\u901a\u5e38\u610f\u5473\u7740\u4e0d\u9700\u8981\u8003\u8651\u590d\u6742\u7684\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u4e0d\u505a\u8fc7\u5ea6\u8bbe\u8ba1\uff0c\u4e0d\u5199\u591a\u4f59\u7684\u4ee3\u7801\uff0c\u53ea\u9700\u8981\u7b26\u5408\u4e00\u4e9b\u7b80\u5355\u7684\u8bbe\u8ba1\u539f\u5219\u5c31\u884c\u4e86\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u91cd\u6784\uff08Refactor\uff09\uff1a\u5728\u4e0a\u9762\u6240\u6709\u7684\u6d4b\u8bd5\u90fd\u901a\u8fc7\u4ee5\u540e\uff0c\u73b0\u5728\u53ef\u4ee5\u5bf9\u4ee3\u7801\u5f00\u59cb\u91cd\u6784\uff08\u8bc6\u522b\u4ee3\u7801\u4e2d\u7684\u574f\u5473\u9053\uff08Code smell\uff09\u3001\u5e94\u7528\u66f4\u5065\u58ee\u7684\u8bbe\u8ba1\u6a21\u5f0f\u7b49\uff09\uff0c\u800c\u4e0d\u5fc5\u62c5\u5fc3\u7834\u574f\u4e4b\u524d\u7684\u529f\u80fd\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u5f53\u51c6\u5907\u597d\u6dfb\u52a0\u65b0\u7684\u529f\u80fd\u65f6\uff0c\u91cd\u65b0\u5f00\u59cb\u4e0a\u9762\u7684\u5faa\u73af\u3002\u4e0d\u65ad\u6dfb\u52a0\u5c0f\u7684\u589e\u91cf\u662f\u5b9e\u8df5 TDD \u7684\u5173\u952e\u3002")),(0,r.kt)(i.Mermaid,{chart:"flowchart TD\n T[Think] --\x3e R\n R[Red bar] --\x3e G\n G[Green bar] --\x3e RF\n RF[Refactor] --\x3e T\n RF --\x3e G",mdxType:"Mermaid"}),(0,r.kt)("h4",{id:"\u6d4b\u8bd5\u7684\u7ed3\u6784"},"\u6d4b\u8bd5\u7684\u7ed3\u6784"),(0,r.kt)("p",null,"\u5bf9\u4e8e\u6240\u6709\u7684\u6d4b\u8bd5\u4ee3\u7801\uff0c\u4e00\u822c\u90fd\u4f1a\u9075\u5faa\u4ee5\u4e0b\u7684\u7ed3\u6784\u3002"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u8bbe\u7f6e\u6d4b\u8bd5\u6570\u636e\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u8c03\u7528\u6d4b\u8bd5\u65b9\u6cd5\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u65ad\u8a00\u671f\u671b\u7684\u7ed3\u679c\u5df2\u7ecf\u8fd4\u56de\u3002")),(0,r.kt)("p",null,'\u8fd9\u4e2a\u7ed3\u6784\u901a\u5e38\u88ab\u8bb0\u4e3a "Arrange, Act, Assert" \u7684 3A \u77ed\u8bed\u3002\u53e6\u5916\u6709\u4e00\u4e2a\u6765\u81ea BDD\uff08\u884c\u4e3a\u9a71\u52a8\u5f00\u53d1\uff09\u7684\u4e00\u7ec4\u77ed\u8bed\u662f "Given, When, Then"\u3002'),(0,r.kt)("h4",{id:"\u6d4b\u8bd5\u5de5\u5177"},"\u6d4b\u8bd5\u5de5\u5177"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5355\u5143\u6d4b\u8bd5\u5de5\u5177")),(0,r.kt)("p",null,"\u6d4b\u8bd5\u6846\u67b6\uff1a\u5e38\u7528\u7684\u6d4b\u8bd5\u6846\u67b6\u6709 Jest\uff0cMocha\uff0cJasmine\uff0cAVA \u7b49\uff0c\u5927\u90e8\u5206\u6d4b\u8bd5\u6846\u67b6\u90fd\u63d0\u4f9b\u4e86\u7c7b\u4f3c\u7684\u529f\u80fd\uff0c\u4e00\u822c\u5305\u62ec\u4ee5\u4e0b\u8fd9\u4e9b\u65b9\u9762\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6d4b\u8bd5\u5757\u7684\u7ec4\u7ec7\uff0c\u6bd4\u5982 describe \u548c it/test \u8bed\u6cd5\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u6bcf\u4e2a describe \u5757\u7684 before","[All]","\uff0cafter","[All]","\uff0cbeforeEach\uff0cafterEach \u94a9\u5b50\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u5168\u5c40\u7684 setup \u548c teardown \u8bbe\u7f6e\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u5339\u914d\u8bed\u6cd5\uff0c\u5404\u4e2a\u6846\u67b6\u4e00\u822c\u62e5\u6709\u76f8\u4f3c\u7684\u63a5\u53e3\uff0c\u800c\u8fd9\u4e2a\u98ce\u683c\u4e00\u822c\u7ee7\u627f\u81ea Chai \u8fd9\u4e2a\u6846\u67b6\u3002"),(0,r.kt)("li",{parentName:"ul"},"Mock \u529f\u80fd\u7684\u652f\u6301\uff0c\u5bf9\u5b9a\u65f6\u5668\u7684 mock\u3001\u5bf9\u51fd\u6570\u7684 mock\u3001\u5bf9\u6a21\u5757\u7684 mock\u3002")),(0,r.kt)("p",null,"\u88ab Chai \u53d1\u626c\u5149\u5927\u7684\u4e09\u79cd\u5339\u914d\u8bed\u6cd5\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},'// Assert \u7ecf\u5178\u8bed\u6cd5\uff0c\u63d0\u4f9b\u4e86\u5bf9\u88ab\u6d4b\u8bd5\u5bf9\u8c61\u7684\u5404\u4e2a\u7ef4\u5ea6\u7684\u65ad\u8a00\u8bed\u6cd5\u3002\nassert.typeOf(foo, "string");\nassert.equal(foo, "bar");\nassert.lengthOf(foo, 3);\nassert.property(tea, "flavors");\nassert.lengthOf(tea.flavors, 3);\n\n// \u4e0b\u9762\u4e24\u79cd\u90fd\u662f BDD \u98ce\u683c\u7684\u65ad\u8a00\u65b9\u5f0f\uff0c\u5b83\u4eec\u90fd\u4f7f\u7528\u4e86\u66f4\u63a5\u8fd1\u81ea\u7136\u8868\u8fbe\u7684\u8bed\u6cd5\u6765\u8fdb\u884c\u5339\u914d\u3002\n// \u5728 node.js \u548c\u73b0\u4ee3\u6d4f\u89c8\u5668\u4e2d\uff0c\u5b83\u4eec\u51e0\u4e4e\u6ca1\u6709\u533a\u522b\u3002\n// Should \u91c7\u7528\u4e86\u4fee\u6539 Object \u539f\u578b\u7684\u65b9\u5f0f\u5b9e\u73b0\u5230\u94fe\u5f0f\u8bed\u6cd5\uff0c\u8fd9\u53ef\u80fd\u5728\u53e4\u8001\u7684 IE \u6d4f\u89c8\u5668\u6216\u67d0\u4e9b\u5d4c\u5165\u5f0f JS \u8fd0\u884c\u65f6\u4e2d\u4e0d\u80fd\u6b63\u5e38\u5de5\u4f5c\u3002\n\n// Expect\nexpect(foo).to.be.a("string");\nexpect(foo).to.equal("bar");\nexpect(foo).to.have.lengthOf(3);\nexpect(tea).to.have.property("flavors").with.lengthOf(3);\n\n// Should\nfoo.should.be.a("string");\nfoo.should.equal("bar");\nfoo.should.have.lengthOf(3);\ntea.should.have.property("flavors").with.lengthOf(3);\n')),(0,r.kt)("p",null,"\u5176\u4ed6\u62e5\u6709\u7684\u6d4b\u8bd5\u5de5\u5177\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9488\u5bf9\u5177\u4f53 UI \u6846\u67b6\u7684\u6d4b\u8bd5\u63d2\u4ef6\uff0c\u5982\u9488\u5bf9 React \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"@testing-library/react"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"enzyme"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"react-test-renderer")," \u7b49\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u6a21\u62df DOM \u73af\u5883\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"jsdom"),"\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u8df5\u884c BDD \u7684\u4ee3\u8868 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cucumber.js"),"\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u6536\u96c6\u6d4b\u8bd5\u8986\u76d6\u7387\u7684\u8f85\u52a9\u5de5\u5177 ",(0,r.kt)("inlineCode",{parentName:"li"},"istanbul"),"\uff0c\u6216\u4f7f\u7528 v8 \u5f15\u64ce\u5185\u7f6e\u7684\u8986\u76d6\u7387\u529f\u80fd\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"c8"),"\u3002")),(0,r.kt)("p",null,"\u6d4b\u8bd5\u8986\u76d6\u7387\u6536\u96c6\u539f\u7406\uff1a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"istanbul.js")," \u63d0\u4f9b\u4e86\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"nyc")," \u7684\u5de5\u5177\uff0c\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"nyc instrument ")," \u5373\u53ef\u5b8c\u6210\u5bf9\u4ee3\u7801\u7684\u63d2\u6869\u3002\u5728\u4ee3\u7801\u5b9e\u9645\u8fd0\u884c\u65f6\uff0c\u63d2\u6869\u4ee3\u7801\u4f1a\u7edf\u8ba1\u6e90\u4ee3\u7801\u5404\u90e8\u5206\u7684\u8fd0\u884c\u6b21\u6570\uff0c\u6765\u7edf\u8ba1\u8986\u76d6\u7387\u3002"),(0,r.kt)("p",null,"\u4f8b\u5b50\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="greeting.js"',title:'"greeting.js"'},'function greeting(name = "HZFE") {\n if (DEBUG) {\n name = `${name} (DEBUG)`;\n }\n\n const foo = DEBUG ? "(DEBUG) foo" : "foo";\n\n for (const i = 0; i < name.length; i++) {\n name += "!";\n }\n\n return `Hello ${name}`;\n}\n')),(0,r.kt)("p",null,"\u7ecf\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"nyc instrument")," \u540e\uff0c\u5927\u81f4\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js",metastring:'title="output.js"',title:'"output.js"'},'function cov_g4lly5ec() {\n // ...\n var coverageData = {\n path: "...",\n statementMap: {\n 0: { start: { line: 2, column: 2 }, end: { line: 4, column: 3 } },\n // ...\n },\n fnMap: {\n 0: {\n name: "greeting",\n decl: { start: { line: 1, column: 9 }, end: { line: 1, column: 17 } },\n loc: { start: { line: 1, column: 33 }, end: { line: 13, column: 1 } },\n line: 1,\n },\n },\n branchMap: {\n 0: {\n loc: { start: { line: 1, column: 18 }, end: { line: 1, column: 31 } },\n type: "default-arg",\n locations: [\n { start: { line: 1, column: 25 }, end: { line: 1, column: 31 } },\n ],\n line: 1,\n },\n // ...\n },\n s: { 0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0 },\n f: { 0: 0 },\n b: { 0: [0], 1: [0, 0], 2: [0, 0] },\n // ...\n };\n // ...\n return actualCoverage;\n}\ncov_g4lly5ec();\nfunction greeting(name = (cov_g4lly5ec().b[0][0]++, "HZFE")) {\n cov_g4lly5ec().f[0]++;\n cov_g4lly5ec().s[0]++;\n if (DEBUG) {\n cov_g4lly5ec().b[1][0]++;\n cov_g4lly5ec().s[1]++;\n name = `${name} (DEBUG)`;\n } else {\n cov_g4lly5ec().b[1][1]++;\n }\n const foo =\n (cov_g4lly5ec().s[2]++,\n DEBUG\n ? (cov_g4lly5ec().b[2][0]++, "(DEBUG) foo")\n : (cov_g4lly5ec().b[2][1]++, "foo"));\n cov_g4lly5ec().s[3]++;\n for (const i = (cov_g4lly5ec().s[4]++, 0); i < name.length; i++) {\n cov_g4lly5ec().s[5]++;\n name += "!";\n }\n cov_g4lly5ec().s[6]++;\n return `Hello ${name}`;\n}\n')),(0,r.kt)("p",null,"istanbul \u5728\u89e3\u6790\u6e90\u4ee3\u7801\u65f6\uff0c\u4f1a\u5728\u51fd\u6570\u4f53\u3001\u9ed8\u8ba4\u53c2\u6570\u3001\u5206\u652f\u8bed\u53e5\u7b49\u5404\u5904\u4f4d\u7f6e\u63d2\u5165\u8bb0\u5f55\u6267\u884c\u6b21\u6570\u7684\u4ee3\u7801\uff0c\u5728\u4e09\u5143\u8fd0\u7b97\u7b26\u7b49\u7279\u6b8a\u4f4d\u7f6e\u4f1a\u5229\u7528 JS \u9017\u53f7\u8fd0\u7b97\u7b26\u7684\u7279\u6027\u63d2\u5165\u7edf\u8ba1\u4ee3\u7801\u3002"),(0,r.kt)("p",null,"\u4f8b\uff0c\u5728",(0,r.kt)("inlineCode",{parentName:"p"},"cov_g4lly5ec().b[1][0]++;")," \u4e4b\u4e2d\u7684 b \u4ee3\u8868 branch\uff08\u5206\u652f\uff09\uff0c1 \u4ee3\u8868\u7b2c\u4e00\u4e2a\u5206\u652f\u8bed\u53e5\uff0c1 \u540e\u9762\u7d27\u8ddf\u7684 0 \u4ee3\u8868\u5206\u652f\u7684\u7b2c\u4e00\u4e2a\u53c9\u8def\u3002\u4f9d\u6b64\u7c7b\u63a8\uff0c\u8fd9\u4e9b\u4ee3\u7801\u8bb0\u5f55\u4e86 f(function)\uff0cs(statement)\uff0cb(branch) \u7684\u6267\u884c\u6b21\u6570\u3002\u540e\u9762\u7684\u7d22\u5f15\u6700\u7ec8\u4f1a\u89e3\u6790\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"statementMap"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"fnMap"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"branchMap")," \u4e2d\u7684\u5bf9\u5e94\u9879\uff0c\u6620\u5c04\u5230\u6e90\u4ee3\u7801\u4e2d\u7684\u5177\u4f53\u4f4d\u7f6e\u3002\u8fd9\u6837\u5728\u6267\u884c\u5b8c\u6d4b\u8bd5\u7528\u4f8b\u4e2d\uff0c\u5c31\u80fd\u591f\u77e5\u9053\u6e90\u4ee3\u7801\u4e2d\u6bcf\u4e00\u5904\u8bed\u6cd5\u7ed3\u6784\u88ab\u8fd0\u884c\u7684\u60c5\u51b5\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"E2E \u6d4b\u8bd5")),(0,r.kt)("p",null,"\u5e38\u89c1\u5de5\u5177\u6709 Pupeteer\u3001Nightwatch\u3001TestCafe\u3001Selenium\u3001Cypress\u3001Playwright \u7b49\u3002\u5b83\u4eec\u90fd\u662f\u901a\u8fc7\u63a7\u5236\u6d4f\u89c8\u5668\u6267\u884c\u4ee3\u7801\u6765\u6a21\u62df\u5b9e\u9645\u7528\u6237\u7684\u64cd\u4f5c\uff0c\u6765\u9a8c\u8bc1 UI \u7684\u53d8\u5316\u7b26\u5408\u9884\u671f\u3002E2E \u6d4b\u8bd5\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u5c3d\u91cf\u6d4b\u8bd5\u8f6f\u4ef6\u5728\u771f\u5b9e\u73af\u5883\u4e0b\u7684\u8868\u73b0\uff0c\u4e00\u822c\u5f88\u5c11\u4f7f\u7528 mock\u3002\n\u57fa\u4e8e\u6d4b\u8bd5\u5728\u771f\u5b9e\u7684\u6d4f\u89c8\u5668\u4e0b\u8fd0\u884c\uff0c\u548c\u6d4b\u8bd5\u73af\u5883\u7f51\u7edc\u4e0d\u7a33\u5b9a\u4e24\u4e2a\u4e3b\u8981\u56e0\u7d20\uff0cE2E \u6d4b\u8bd5\u901a\u5e38\u8981\u6267\u884c\u5f88\u957f\u7684\u65f6\u95f4\uff0c\u5e76\u4e14\u4f1a\u8f83\u9891\u7e41\u7684\u9762\u4e34\u5931\u8d25\u3002\u5728\u5b9e\u9645\u7684\u6301\u7eed\u96c6\u6210\u73af\u5883\u4e2d\uff0c\u4e00\u822c\u4f1a\u8ba9 E2E \u6d4b\u8bd5\u91cd\u8bd5 2 \u5230 3 \u6b21\u6765\u5c3d\u53ef\u80fd\u7684\u6392\u9664\u73af\u5883\u56e0\u7d20\u5bfc\u81f4\u7684\u5931\u8d25\u3002"),(0,r.kt)("p",null,"\u5728\u8fd9\u4e9b\u5e38\u7528\u7684\u5de5\u5177\u4e2d\uff0c\u76ee\u524d\u4f7f\u7528\u6bd4\u8f83\u5e7f\u6cdb\u7684\u4e09\u4e2a\u662f Pupeteer\uff0cCypress\uff0cPlaywright\u3002\u5b83\u4eec\u4e09\u4e2a\u6709\u6bd4\u8f83\u7a81\u51fa\u7684\u7279\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Pupeteer\uff1aGoogle \u5b98\u65b9\u63d0\u4f9b\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u4f7f\u7528 Chrome DevTools Protocol \u4e0e Chromium \u7cfb\u5217\u7684\u6d4f\u89c8\u5668\u8fdb\u884c\u4ea4\u4e92\u3002\u6240\u63d0\u4f9b\u7684 API \u662f\u6bd4\u8f83\u5e95\u5c42\u7684\u57fa\u672c\u64cd\u4f5c\uff0c\u901a\u5e38\u9700\u8981\u81ea\u5df1\u5c01\u88c5\u5e38\u7528\u7684\u64cd\u4f5c\uff0c\u4f46\u5728\u5177\u4f53\u7684\u4f7f\u7528\u4e2d\u76f8\u5bf9\u7075\u6d3b\uff0c\u9650\u5236\u8f83\u5c11\u3002"),(0,r.kt)("li",{parentName:"ul"},"Cypress: \u9ad8\u5ea6\u96c6\u6210\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u81ea\u52a8\u7b49\u5f85\u5f02\u6b65\u64cd\u4f5c\uff0c\u964d\u4f4e\u7f16\u7801\u95e8\u69db\u3002\u63d0\u4f9b Test Runner \u53ef\u89c6\u5316\u8fd0\u884c\u6d4b\u8bd5\uff0c\u8bb0\u5f55\u6d4b\u8bd5\u6b65\u9aa4\u4e2d\u7684\u5177\u4f53\u7ec6\u8282\uff0c\u53ef\u4ee5\u67e5\u770b\u6d4b\u8bd5\u4ee3\u7801\u4e2d\u6bcf\u4e00\u6b65\u6240\u5bf9\u5e94\u7684 DOM \u5feb\u7167\uff0c\u4fbf\u4e8e debug\u3002\u57fa\u4e8e iframe \u8fd0\u884c\uff0c\u6d4b\u8bd5\u4ee3\u7801\u548c\u88ab\u6d4b\u8bd5\u5e94\u7528\u5904\u4e8e\u540c\u4e00\u8fd0\u884c\u73af\u5883\uff0c\u53ef\u4ee5\u63d0\u9ad8\u6d4b\u8bd5\u7684\u53ef\u9760\u6027\u3002\u76ee\u524d\u7684\u9650\u5236\u662f\u4e0d\u652f\u6301\u591a\u7a97\u53e3\uff0c\u4ee5\u53ca iframe \u5728\u5b89\u5168\u7b56\u7565\u4e0a\u7684\u5c0f\u90e8\u5206\u65e0\u6cd5\u89c4\u907f\u7684\u9650\u5236\u3002"),(0,r.kt)("li",{parentName:"ul"},"Playwright\uff1a\u5fae\u8f6f\u5f00\u53d1\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u652f\u6301\u9664 Chromium \u4e4b\u5916\u7684 Firefox \u548c Safari\uff0c\u62e5\u6709 Trace View \u53ef\u4ee5\u63d0\u4f9b\u7c7b\u4f3c Cypress \u7684\u5f3a\u5927 debug \u4f53\u9a8c\u3002\u652f\u6301\u9664\u4e86 JS/TS \u4ee5\u5916\u7684\u8bed\u8a00\u5982 Python\u3001.NET\u3001Java\uff0c\u9002\u7528\u8303\u56f4\u66f4\u5e7f\u3002")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u96c6\u6210\u6d4b\u8bd5")),(0,r.kt)("p",null,"\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u96c6\u6210\u6d4b\u8bd5\u6240\u9700\u4f7f\u7528\u7684\u5de5\u5177\u90fd\u6db5\u76d6\u5728\u5355\u5143\u6d4b\u8bd5\u548c E2E \u6d4b\u8bd5\u4f7f\u7528\u7684\u5de5\u5177\u4e4b\u4e2d\u4e86\u3002"),(0,r.kt)("h3",{id:"\u8fdb\u884c\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5"},"\u8fdb\u884c\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5e94\u8be5\u8db3\u591f\u5feb\u3002\u53ea\u6709\u6d4b\u8bd5\u80fd\u591f\u5feb\u901f\u8fd0\u884c\u5f97\u5230\u53cd\u9988\uff0c\u6d4b\u8bd5\u4eba\u5458\u624d\u4f1a\u4e50\u610f\u91c7\u7528 TDD \u7684\u65b9\u5f0f\u8fdb\u884c\u5f00\u53d1\u3002\u53cd\u4f8b\u662f E2E \u6d4b\u8bd5\uff0c\u901a\u5e38\u5f00\u53d1\u4eba\u5458\u4e0d\u4f1a\u60f3\u8981\u5728\u672c\u5730\u9891\u7e41\u7684\u8fd0\u884c E2E \u6d4b\u8bd5\uff0c\u56e0\u4e3a\u8fd9\u4f1a\u6d6a\u8d39\u4ed6\u4eec\u5f88\u591a\u65f6\u95f4\u3002\u4f7f\u6d4b\u8bd5\u8fd0\u884c\u8db3\u591f\u5feb\uff0c\u5408\u7406\u7684\u914d\u7f6e\u6d4b\u8bd5\u6846\u67b6\uff0c\u53ea\u8fd0\u884c\u6539\u52a8\u76f8\u5173\u7684\u6d4b\u8bd5\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5e94\u8be5\u8db3\u591f\u7b80\u5355\u3002\u5982\u679c\u6d4b\u8bd5\u4ee3\u7801\u5199\u7684\u975e\u5e38\u590d\u6742\uff0c\u4e5f\u8bb8\u4f1a\u6709\u7591\u95ee\uff1a\u201c\u5982\u4f55\u4fdd\u8bc1\u6d4b\u8bd5\u4ee3\u7801\u662f\u6b63\u786e\u7684\u5462\uff1f\u201d\uff0c\u90a3\u5c31\u53ef\u80fd\u9700\u8981\u5bf9\u6d4b\u8bd5\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\uff0c\u6240\u4ee5\u5728\u6d4b\u8bd5\u4ee3\u7801\u4e2d\uff0c\u5e94\u8be5\u4fdd\u8bc1\u4f7f\u7528\u7b80\u5355\u7684\u4ee3\u7801\uff0c\u4e0d\u8981\u4f7f\u7528\u590d\u6742\u3001\u62bd\u8c61\u5ea6\u9ad8\u7684\u4ee3\u7801\u3002\u5bf9\u4e8e\u786e\u5b9e\u9700\u8981\u4f7f\u7528\u590d\u6742\u5de5\u5177\u7684\u573a\u666f\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4f7f\u7528\u4e45\u7ecf\u8003\u9a8c\u7684\u5de5\u5177\u5e93\u3002\u6216\u8005\u81ea\u5df1\u62bd\u8c61\u4e00\u90e8\u5206\u6d4b\u8bd5\u8f85\u52a9\u5de5\u5177\u4ee3\u7801\uff0c\u5e76\u5bf9\u5176\u8fdb\u884c\u6d4b\u8bd5\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5e94\u8be5\u5177\u5907\u826f\u597d\u7684\u53ef\u8bfb\u6027\u3002\u548c\u4e0a\u4e00\u6761\u7c7b\u4f3c\uff0c\u4fdd\u6301\u7b80\u5355\u7684\u540c\u65f6\uff0c\u4e5f\u8981\u4fdd\u8bc1\u826f\u597d\u7684\u53ef\u8bfb\u6027\u3002\u826f\u597d\u7684\u53ef\u8bfb\u6027\u53ef\u4ee5\u907f\u514d\u5f00\u53d1\u4eba\u5458\u8bef\u89e3\u6d4b\u8bd5\u7528\u4f8b\u7684\u610f\u56fe\uff0c\u5e76\u53ef\u4ee5\u6700\u5927\u9650\u5ea6\u53d1\u6325\u6d4b\u8bd5\u7528\u4f8b\u4f5c\u4e3a\u6700\u4f73\u6587\u6863\u7684\u529f\u80fd\u3002\u867d\u7136\u53ef\u8bfb\u6027\u662f\u6bd4\u8f83\u4e3b\u89c2\u7684\u611f\u53d7\uff0c\u4f46\u4e5f\u53ef\u4ee5\u901a\u8fc7\u9075\u5faa\u4e0b\u9762\u7684\u89c4\u5219\u8fdb\u884c\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u7684\u91cf\u5316\u3002",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},'\u4f7f\u7528 "Arrange, Act, Assert" \u6216 "Given, When, Then" \u6765\u7ec4\u7ec7\u6d4b\u8bd5\u4ee3\u7801\u3002'),(0,r.kt)("li",{parentName:"ul"},"\u6bcf\u4e2a\u6d4b\u8bd5\u5757\u4e2d\u4e13\u6ce8\u4e8e\u4e00\u9879\u529f\u80fd\u7684\u6d4b\u8bd5\uff0c\u4e0d\u8981\u5c06\u592a\u591a\u65ad\u8a00\u6df7\u5408\u5728\u4e00\u8d77\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u907f\u514d\u4f7f\u7528\u9b54\u672f\u6570\u5b57\u548c\u5b57\u7b26\u4e32\uff0c\u4f7f\u7528\u542b\u4e49\u66f4\u6e05\u6670\u7684\u5e38\u91cf\u53d6\u4ee3\u3002"))),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u4ee3\u7801\u4e2d\u4e0d\u8981\u91cd\u590d\u5b9e\u73b0\u6e90\u4ee3\u7801\u4e2d\u7684\u903b\u8f91\u3002\u4f8b\u5982\uff0c\u7528\u4e8e\u4e0e\u5b9e\u9645\u4ee3\u7801\u8fd4\u56de\u7684 Received \u5bf9\u6bd4\u7684 Expected \u5e94\u8be5\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u5217\u4e3e\u51fa\u6765\u7684\u5b57\u9762\u91cf\uff0c\u800c\u4e0d\u662f\u901a\u8fc7\u548c\u6e90\u4ee3\u7801\u7c7b\u4f3c\u7684\u903b\u8f91\u52a8\u6001\u751f\u6210\u7684\u7ed3\u679c\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u6d4b\u8bd5\u5fc5\u987b\u662f\u7a33\u5b9a\u7684\u3002\u6d4b\u8bd5\u7528\u4f8b\u7684\u6210\u529f\u6216\u5931\u8d25\u53ea\u53d6\u51b3\u4e8e\u88ab\u6d4b\u8bd5\u7684\u4ee3\u7801\uff0c\u6d4b\u8bd5\u7528\u4f8b\u4e0d\u56e0\u5176\u4ed6\u7528\u4f8b\u3001\u73af\u5883\u56e0\u7d20\u3001\u5916\u90e8\u4f9d\u8d56\u7684\u53d8\u5316\u800c\u6539\u53d8\u7ed3\u679c\u3002"),(0,r.kt)("li",{parentName:"ol"},"\u4e0d\u8981\u5c06\u6d4b\u8bd5\u4e0e\u5b9e\u73b0\u7ec6\u8282\u8026\u5408\u3002\u63d0\u9ad8\u6d4b\u8bd5\u7528\u4f8b\u7a33\u5b9a\u6027\uff0c\u907f\u514d\u56e0\u4e3a\u4ee3\u7801\u4e2d\u5fae\u5c0f\u7684\u6539\u52a8\u800c\u5bfc\u81f4\u6d4b\u8bd5\u7528\u4f8b\u5931\u8d25\u3002\u5982\uff0c\u4f7f\u7528 contain \u4ee3\u66ff equal \u68c0\u67e5\u5185\u5bb9\uff1b\u4f7f\u7528 getByRole \u4ee3\u66ff querySelector\u3002")),(0,r.kt)("h2",{id:"\u53c2\u8003\u8d44\u6599"},"\u53c2\u8003\u8d44\u6599"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://martinfowler.com/articles/practical-test-pyramid.html"},"The Practical Test Pyramid")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"http://www.jamesshore.com/v2/books/aoad1/test_driven_development"},"TDD")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://v8.dev/blog/javascript-code-coverage"},"V8 Coverage")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://istanbul.js.org/docs/advanced/instrument/"},"istanbul")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.chaijs.com/guide/styles/"},"Assertion Styles")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://jestjs.io/"},"Jest")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://testing-library.com/"},"Testing Library"))))}d.isMDXComponent=!0},11748:function(e,n,t){var l={"./locale":89234,"./locale.js":89234};function a(e){var n=r(e);return t(n)}function r(e){if(!t.o(l,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return l[e]}a.keys=function(){return Object.keys(l)},a.resolve=r,e.exports=a,a.id=11748}}]); \ No newline at end of file diff --git a/assets/js/c48aeec7.6411fe8a.js b/assets/js/c48aeec7.6411fe8a.js deleted file mode 100644 index 3d78be6..0000000 --- a/assets/js/c48aeec7.6411fe8a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkjjbook=self.webpackChunkjjbook||[]).push([[2596],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return k}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),h=s(n),k=a,m=h["".concat(p,".").concat(k)]||h[k]||c[k]||l;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=h;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var s=2;s {\n pushState("/home?name=HZFEStudio");\n}, 3000);\n\n// 6 \u79d2\u540e\u8fd4\u56de\nsetTimeout(() => {\n history.back();\n}, 6000);\n\nwindow.addEventListener("popstate", onHistoryChange);\n')),(0,l.kt)("h4",{id:"22-\u4f18\u7f3a\u70b9"},"2.2 \u4f18\u7f3a\u70b9"),(0,l.kt)("p",null,"History \u8def\u7531\u7531\u4e8e\u901a\u8fc7 History API \u5b9e\u73b0\uff0c\u6240\u4ee5\u6709\u4ee5\u4e0b\u4f18\u52bf\u548c\u4e0d\u8db3\uff1a"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f18\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u670d\u52a1\u7aef\u53ef\u83b7\u53d6\u5b8c\u6574\u7684\u94fe\u63a5\u548c\u53c2\u6570\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u524d\u7aef\u76d1\u63a7\u53cb\u597d\u3002"),(0,l.kt)("li",{parentName:"ol"},"SEO \u76f8\u5bf9 Hash \u8def\u7531\u53cb\u597d\u3002")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u7f3a\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u517c\u5bb9\u6027\u7a0d\u5f31\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u9700\u8981\u670d\u52a1\u7aef\u989d\u5916\u914d\u7f6e\uff08\u5404 path \u5747\u6307\u5411\u540c\u4e00\u4e2a HTML\uff09\u3002")),(0,l.kt)("h3",{id:"3-\u524d\u7aef\u8def\u7531\u7684\u4f18\u7f3a\u70b9"},"3. \u524d\u7aef\u8def\u7531\u7684\u4f18\u7f3a\u70b9"),(0,l.kt)("p",null,"\u524d\u7aef\u8def\u7531\u662f\u524d\u540e\u7aef\u5206\u79bb\u7684\u5f00\u53d1\u6a21\u5f0f\u7684\u4ea7\u7269\uff0c\u5bf9\u6bd4\u670d\u52a1\u7aef\u8def\u7531\uff0c\u524d\u7aef\u8def\u7531\u7684\u5b9e\u73b0\u65b9\u5f0f\u6709\u4ee5\u4e0b\u4f18\u52bf\u548c\u4e0d\u8db3\uff1a"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f18\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u65e0\u5237\u65b0\u5207\u6362\u5185\u5bb9\uff0c\u7528\u6237\u4f53\u9a8c\u66f4\u4f73\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u51cf\u8f7b\u670d\u52a1\u7aef\u538b\u529b\u3002")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u7f3a\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u521d\u6b21\u52a0\u8f7d\u8017\u65f6\u957f\u3002"),(0,l.kt)("li",{parentName:"ol"},"SEO \u6548\u679c\u4e0d\u4f73\u3002")),(0,l.kt)("h2",{id:"\u53c2\u8003\u8d44\u6599"},"\u53c2\u8003\u8d44\u6599"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},(0,l.kt)("a",{parentName:"li",href:"https://developer.mozilla.org/en-US/docs/Web/API/Window/hashchange_event"},"Window: hashchange event"))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c48aeec7.b9667d8f.js b/assets/js/c48aeec7.b9667d8f.js new file mode 100644 index 0000000..0abcf4a --- /dev/null +++ b/assets/js/c48aeec7.b9667d8f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkjjbook=self.webpackChunkjjbook||[]).push([[2596],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return k}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),h=s(n),k=a,m=h["".concat(p,".").concat(k)]||h[k]||c[k]||l;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=h;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var s=2;s {\n pushState("/home?name=HZFEStudio");\n}, 3000);\n\n// 6 \u79d2\u540e\u8fd4\u56de\nsetTimeout(() => {\n history.back();\n}, 6000);\n\nwindow.addEventListener("popstate", onHistoryChange);\n')),(0,l.kt)("h4",{id:"22-\u4f18\u7f3a\u70b9"},"2.2 \u4f18\u7f3a\u70b9"),(0,l.kt)("p",null,"History \u8def\u7531\u7531\u4e8e\u901a\u8fc7 History API \u5b9e\u73b0\uff0c\u6240\u4ee5\u6709\u4ee5\u4e0b\u4f18\u52bf\u548c\u4e0d\u8db3\uff1a"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f18\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u670d\u52a1\u7aef\u53ef\u83b7\u53d6\u5b8c\u6574\u7684\u94fe\u63a5\u548c\u53c2\u6570\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u524d\u7aef\u76d1\u63a7\u53cb\u597d\u3002"),(0,l.kt)("li",{parentName:"ol"},"SEO \u76f8\u5bf9 Hash \u8def\u7531\u53cb\u597d\u3002")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u7f3a\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u517c\u5bb9\u6027\u7a0d\u5f31\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u9700\u8981\u670d\u52a1\u7aef\u989d\u5916\u914d\u7f6e\uff08\u5404 path \u5747\u6307\u5411\u540c\u4e00\u4e2a HTML\uff09\u3002")),(0,l.kt)("h3",{id:"3-\u524d\u7aef\u8def\u7531\u7684\u4f18\u7f3a\u70b9"},"3. \u524d\u7aef\u8def\u7531\u7684\u4f18\u7f3a\u70b9"),(0,l.kt)("p",null,"\u524d\u7aef\u8def\u7531\u662f\u524d\u540e\u7aef\u5206\u79bb\u7684\u5f00\u53d1\u6a21\u5f0f\u7684\u4ea7\u7269\uff0c\u5bf9\u6bd4\u670d\u52a1\u7aef\u8def\u7531\uff0c\u524d\u7aef\u8def\u7531\u7684\u5b9e\u73b0\u65b9\u5f0f\u6709\u4ee5\u4e0b\u4f18\u52bf\u548c\u4e0d\u8db3\uff1a"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f18\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u65e0\u5237\u65b0\u5207\u6362\u5185\u5bb9\uff0c\u7528\u6237\u4f53\u9a8c\u66f4\u4f73\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u51cf\u8f7b\u670d\u52a1\u7aef\u538b\u529b\u3002")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u7f3a\u70b9")),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u521d\u6b21\u52a0\u8f7d\u8017\u65f6\u957f\u3002"),(0,l.kt)("li",{parentName:"ol"},"SEO \u6548\u679c\u4e0d\u4f73\u3002")),(0,l.kt)("h2",{id:"\u53c2\u8003\u8d44\u6599"},"\u53c2\u8003\u8d44\u6599"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},(0,l.kt)("a",{parentName:"li",href:"https://developer.mozilla.org/en-US/docs/Web/API/Window/hashchange_event"},"Window: hashchange event"))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.a6349f88.js b/assets/js/main.a6349f88.js new file mode 100644 index 0000000..92936c3 --- /dev/null +++ b/assets/js/main.a6349f88.js @@ -0,0 +1,2 @@ +/*! For license information please see main.a6349f88.js.LICENSE.txt */ +(self.webpackChunkjjbook=self.webpackChunkjjbook||[]).push([[179],{87757:function(e,t,n){e.exports=n(35666)},20830:function(e,t,n){"use strict";n.d(t,{W:function(){return o}});var r=n(67294);function o(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},38726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/0)&&(F.current.unobserve(t),F.current.disconnect(),n())}))})),F.current.observe(t))},to:I},h&&{isActive:y,activeClassName:b}))}var h=a.forwardRef(m)},95999:function(e,t,n){"use strict";n.d(t,{Z:function(){return c},I:function(){return s}});var r=n(67294),o=/\{\w+\}/g,a="{}";function i(e,t){var n=[],i=e.replace(o,(function(e){var o=e.substring(1,e.length-1),i=null==t?void 0:t[o];if(void 0!==i){var l=(0,r.isValidElement)(i)?i:String(i);return n.push(l),a}return e}));return 0===n.length?e:n.every((function(e){return"string"==typeof e}))?i.split(a).reduce((function(e,t,r){var o;return e.concat(t).concat(null!=(o=n[r])?o:"")}),""):i.split(a).reduce((function(e,t,o){return[].concat(e,[r.createElement(r.Fragment,{key:o},t,n[o])])}),[])}var l=n(57529);function u(e){var t,n,r=e.id,o=e.message;if(void 0===r&&void 0===o)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=l[null!=r?r:o])?n:o)?t:r}function s(e,t){return i(u({message:e.message,id:e.id}),t)}function c(e){var t=e.children,n=e.id,o=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var a=u({message:t,id:n});return r.createElement(r.Fragment,null,i(a,o))}},29935:function(e,t,n){"use strict";n.d(t,{m:function(){return r}});var r="default"},13919:function(e,t,n){"use strict";function r(e){return!0===/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return o},b:function(){return r}})},28143:function(e,t,n){"use strict";n.r(t),n.d(t,{Redirect:function(){return r.l_},matchPath:function(){return r.LX},useHistory:function(){return r.k6},useLocation:function(){return r.TH}});var r=n(76775)},44996:function(e,t,n){"use strict";n.d(t,{C:function(){return a},Z:function(){return i}});var r=n(52263),o=n(13919);function a(){var e=(0,r.Z)().siteConfig,t=e.baseUrl,n=e.url;return{withBaseUrl:function(e,r){return function(e,t,n,r){var a=void 0===r?{}:r,i=a.forcePrependBaseUrl,l=void 0!==i&&i,u=a.absolute,s=void 0!==u&&u;if(!n)return n;if(n.startsWith("#"))return n;if((0,o.b)(n))return n;if(l)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;var c=n.startsWith(t)?n:t+n.replace(/^\//,"");return s?e+c:c}(n,t,e,r)}}}function i(e,t){return void 0===t&&(t={}),(0,a().withBaseUrl)(e,t)}},52263:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(67294),o=n(58940);function a(){return(0,r.useContext)(o._)}},28084:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return a},useAllPluginInstancesData:function(){return i},usePluginData:function(){return l}});var r=n(52263),o=n(29935);function a(){var e=(0,r.Z)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){var t=a()[e];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return t}function l(e,t){void 0===t&&(t=o.m);var n=i(e)[t];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return n}},72389:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(67294),o=n(98934);function a(){return(0,r.useContext)(o._)}},99670:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});function r(e){var t={};return function e(n,r){Object.entries(n).forEach((function(n){var o,a=n[0],i=n[1],l=r?r+"."+a:a;"object"==typeof(o=i)&&o&&Object.keys(o).length>0?e(i,l):t[l]=i}))}(e),t}},30226:function(e,t,n){"use strict";n.d(t,{_:function(){return o},z:function(){return a}});var r=n(67294),o=r.createContext(null);function a(e){var t=e.children,n=e.value,a=r.useContext(o),i=(0,r.useMemo)((function(){return function(e){var t=e.parent,n=e.value;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}var r=Object.assign({},t.data,null==n?void 0:n.data);return{plugin:t.plugin,data:r}}({parent:a,value:n})}),[a,n]);return r.createElement(o.Provider,{value:i},t)}},14953:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(67294),o=n(32600),a=n(20780),i=n(35742);function l(e){var t=e.error,n=e.tryAgain;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function u(e){var t=e.error,n=e.tryAgain;return r.createElement(a.Z,{fallback:function(){return r.createElement(l,{error:t,tryAgain:n})}},r.createElement(i.Z,null,r.createElement("title",null,"Page Error")),r.createElement(o.Z,null,r.createElement(l,{error:t,tryAgain:n})))}},48408:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;var r=n(28143);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});var o=Object.entries(e).sort((function(e,t){return t[1].path.localeCompare(e[1].path)})).find((function(e){var n=e[1];return!!(0,r.matchPath)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return a};t.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};t.getActiveVersion=function(e,n){var o=(0,t.getLatestVersion)(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!(0,r.matchPath)(n,{path:e.path,exact:!1,strict:!1})}))};t.getActiveDocContext=function(e,n){var o,a,i=(0,t.getActiveVersion)(e,n),l=null==i?void 0:i.docs.find((function(e){return!!(0,r.matchPath)(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:l,alternateDocVersions:l?(o=l.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===o&&(a[e.name]=t)}))})),a):{}}};t.getDocVersionSuggestions=function(e,n){var r=(0,t.getLatestVersion)(e),o=(0,t.getActiveDocContext)(e,n);return{latestDocSuggestion:null==o?void 0:o.alternateDocVersions[r.name],latestVersionSuggestion:r}}},65551:function(e,t,n){"use strict";t.Jo=t.Iw=t.zu=t.yW=t.gB=t.WS=t.gA=t.zh=t._r=void 0;var r=n(70655),o=n(28143),a=r.__importStar(n(28084)),i=n(48408),l={};t._r=function(){var e;return null!=(e=(0,a.default)()["docusaurus-plugin-content-docs"])?e:l};t.zh=function(e){return(0,a.usePluginData)("docusaurus-plugin-content-docs",e)};t.gA=function(e){void 0===e&&(e={});var n=(0,t._r)(),r=(0,o.useLocation)().pathname;return(0,i.getActivePlugin)(n,r,e)};t.WS=function(e){void 0===e&&(e={});var n=(0,t.gA)(e),r=(0,o.useLocation)().pathname;if(n)return{activePlugin:n,activeVersion:(0,i.getActiveVersion)(n.pluginData,r)}};t.gB=function(e){return(0,t.zh)(e).versions};t.yW=function(e){var n=(0,t.zh)(e);return(0,i.getLatestVersion)(n)};t.zu=function(e){var n=(0,t.zh)(e),r=(0,o.useLocation)().pathname;return(0,i.getActiveVersion)(n,r)};t.Iw=function(e){var n=(0,t.zh)(e),r=(0,o.useLocation)().pathname;return(0,i.getActiveDocContext)(n,r)};t.Jo=function(e){var n=(0,t.zh)(e),r=(0,o.useLocation)().pathname;return(0,i.getDocVersionSuggestions)(n,r)}},90541:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(67294),o="iconExternalLink_I5OW";function a(e){var t=e.width,n=void 0===t?13.5:t,a=e.height,i=void 0===a?13.5:a;return r.createElement("svg",{width:n,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:o},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},32600:function(e,t,n){"use strict";n.d(t,{Z:function(){return we}});var r=n(67294),o=n(86010),a=n(20780),i=n(76775),l=n(95999),u=n(5979),s="skipToContent_ZgBM";function c(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){var e=(0,r.useRef)(null),t=(0,i.k6)().action;return(0,u.SL)((function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&c(e.current)})),r.createElement("div",{ref:e,role:"region"},r.createElement("a",{href:"#",className:s,onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&c(t)}},r.createElement(l.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))}var d=n(87462),p=n(63366),m=["width","height","color","strokeWidth","className"];function h(e){var t=e.width,n=void 0===t?21:t,o=e.height,a=void 0===o?21:o,i=e.color,l=void 0===i?"currentColor":i,u=e.strokeWidth,s=void 0===u?1.2:u,c=(e.className,(0,p.Z)(e,m));return r.createElement("svg",(0,d.Z)({viewBox:"0 0 15 15",width:n,height:a},c),r.createElement("g",{stroke:l,strokeWidth:s},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}var g="announcementBar_IbjG",v="announcementBarPlaceholder_NC_W",b="announcementBarClose_FG1z",y="announcementBarContent_KsVm";function w(){var e=(0,u.nT)(),t=e.isActive,n=e.close,a=(0,u.LU)().announcementBar;if(!t)return null;var i=a.content,s=a.backgroundColor,c=a.textColor,f=a.isCloseable;return r.createElement("div",{className:g,style:{backgroundColor:s,color:c},role:"banner"},f&&r.createElement("div",{className:v}),r.createElement("div",{className:y,dangerouslySetInnerHTML:{__html:i}}),f?r.createElement("button",{type:"button",className:(0,o.Z)("clean-btn close",b),onClick:n,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement(h,{width:14,height:14,strokeWidth:3.1})):null)}function k(e){var t=e.header,n=e.primaryMenu,a=e.secondaryMenu,i=(0,u.YW)().shown;return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},a)))}var E=n(72389);function S(e){return r.createElement("svg",(0,d.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function x(e){return r.createElement("svg",(0,d.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}var C={toggle:"toggle_S7eR",toggleButton:"toggleButton_rCf9",darkToggleIcon:"darkToggleIcon_nQuB",lightToggleIcon:"lightToggleIcon_v35p",toggleButtonDisabled:"toggleButtonDisabled_Pu9x"};function _(e){var t=e.className,n=e.value,a=e.onChange,i=(0,E.Z)(),u=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===n?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,o.Z)(C.toggle,t)},r.createElement("button",{className:(0,o.Z)("clean-btn",C.toggleButton,!i&&C.toggleButtonDisabled),type:"button",onClick:function(){return a("dark"===n?"light":"dark")},disabled:!i,title:u,"aria-label":u},r.createElement(S,{className:(0,o.Z)(C.toggleIcon,C.lightToggleIcon)}),r.createElement(x,{className:(0,o.Z)(C.toggleIcon,C.darkToggleIcon)})))}var T=r.memo(_);function L(e){var t=e.className,n=(0,u.LU)().colorMode.disableSwitch,o=(0,u.If)(),a=o.colorMode,i=o.setColorMode;return n?null:r.createElement(T,{className:t,value:a,onChange:i})}var O=n(55537);function A(){return r.createElement(O.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"})}function P(){var e=(0,u.el)();return r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__close",onClick:function(){return e.toggle()}},r.createElement(h,{color:"var(--ifm-color-emphasis-600)"}))}function R(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(A,null),r.createElement(L,{className:"margin-right--md"}),r.createElement(P,null))}var N=n(42207);function I(){var e=(0,u.el)(),t=(0,u.LU)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map((function(t,n){return r.createElement(N.Z,(0,d.Z)({mobile:!0},t,{onClick:function(){return e.toggle()},key:n}))})))}function D(e){return r.createElement("button",(0,d.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function j(){var e=0===(0,u.LU)().navbar.items.length,t=(0,u.YW)();return r.createElement(r.Fragment,null,!e&&r.createElement(D,{onClick:function(){return t.hide()}}),t.content)}function M(){var e=(0,u.el)();return(0,u.Ni)(e.shown),e.shouldRender?r.createElement(k,{header:r.createElement(R,null),primaryMenu:r.createElement(I,null),secondaryMenu:r.createElement(j,null)}):null}var F="navbarHideable_ObN2",B="navbarHidden_FtgE";function z(e){return r.createElement("div",(0,d.Z)({role:"presentation"},e,{className:(0,o.Z)("navbar-sidebar__backdrop",e.className)}))}function U(e){var t=e.children,n=(0,u.LU)().navbar,a=n.hideOnScroll,i=n.style,l=(0,u.el)(),s=(0,u.cK)(a),c=s.navbarRef,f=s.isNavbarVisible;return r.createElement("nav",{ref:c,className:(0,o.Z)("navbar","navbar--fixed-top",a&&[F,!f&&B],{"navbar--dark":"dark"===i,"navbar--primary":"primary"===i,"navbar-sidebar--show":l.shown})},t,r.createElement(z,{onClick:l.toggle}),r.createElement(M,null))}var Z=n(14155),$=["width","height","className"];function q(e){var t=e.width,n=void 0===t?30:t,o=e.height,a=void 0===o?30:o,i=e.className,l=(0,p.Z)(e,$);return r.createElement("svg",(0,d.Z)({className:i,width:n,height:a,viewBox:"0 0 30 30","aria-hidden":"true"},l),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function H(){var e=(0,u.el)();return r.createElement("button",{onClick:e.toggle,onKeyDown:e.toggle,"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0},r.createElement(q,null))}var G="colorModeToggle_vKtC";function V(e){var t=e.items;return r.createElement(r.Fragment,null,t.map((function(e,t){return r.createElement(N.Z,(0,d.Z)({},e,{key:t}))})))}function W(e){var t=e.left,n=e.right;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function K(){var e=(0,u.el)(),t=(0,u.LU)().navbar.items,n=(0,u.A5)(t),o=n[0],a=n[1],i=!t.some((function(e){return"search"===e.type}));return r.createElement(W,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(H,null),r.createElement(A,null),r.createElement(V,{items:o})),right:r.createElement(r.Fragment,null,r.createElement(V,{items:a}),r.createElement(L,{className:G}),i&&r.createElement(Z.Z,null))})}function Y(){return r.createElement(U,null,r.createElement(K,null))}var Q=n(39960),X=n(44996),J=n(13919),ee=n(90541),te=["to","href","label","prependBaseUrlToHref"];function ne(e){var t=e.item,n=t.to,o=t.href,a=t.label,i=t.prependBaseUrlToHref,l=(0,p.Z)(t,te),u=(0,X.Z)(n),s=(0,X.Z)(o,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,d.Z)({className:"footer__link-item"},o?{href:i?s:o}:{to:u},l),a,o&&!(0,J.Z)(o)&&r.createElement(ee.Z,null))}function re(e){var t=e.item;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href||t.to,className:"footer__item"},r.createElement(ne,{item:t}))}function oe(e){var t=e.column;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items"},t.items.map((function(e,t){return r.createElement(re,{key:t,item:e})}))))}function ae(e){var t=e.columns;return r.createElement("div",{className:"row footer__links"},t.map((function(e,t){return r.createElement(oe,{key:t,column:e})})))}function ie(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function le(e){var t=e.item;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(ne,{item:t})}function ue(e){var t=e.links;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map((function(e,n){return r.createElement(r.Fragment,{key:n},r.createElement(le,{item:e}),t.length!==n+1&&r.createElement(ie,null))}))))}function se(e){var t=e.links;return(0,u.aV)(t)?r.createElement(ae,{columns:t}):r.createElement(ue,{links:t})}var ce="footerLogoLink_gHmE",fe=n(89750);function de(e){var t,n=e.logo,o=(0,X.C)().withBaseUrl,a={light:o(n.src),dark:o(null!=(t=n.srcDark)?t:n.src)};return r.createElement(fe.Z,{className:"footer__logo",alt:n.alt,sources:a,width:n.width,height:n.height})}function pe(e){var t=e.logo;return t.href?r.createElement(Q.Z,{href:t.href,className:ce},r.createElement(de,{logo:t})):r.createElement(de,{logo:t})}function me(e){var t=e.copyright;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function he(e){var t=e.style,n=e.links,a=e.logo,i=e.copyright;return r.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(a||i)&&r.createElement("div",{className:"footer__bottom text--center"},a&&r.createElement("div",{className:"margin-bottom--sm"},a),i)))}function ge(){var e=(0,u.LU)().footer;if(!e)return null;var t=e.copyright,n=e.links,o=e.logo,a=e.style;return r.createElement(he,{style:a,links:n&&n.length>0&&r.createElement(se,{links:n}),logo:o&&r.createElement(pe,{logo:o}),copyright:t&&r.createElement(me,{copyright:t})})}var ve=r.memo(ge);function be(e){var t=e.children;return r.createElement(u.SG,null,r.createElement(u.pl,null,r.createElement(u.z5,null,r.createElement(u.OC,null,r.createElement(u.L5,null,r.createElement(u.VC,null,r.createElement(u.Vy,null,t)))))))}function ye(e){var t=e.error,n=e.tryAgain;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}function we(e){var t=e.children,n=e.noFooter,i=e.wrapperClassName,l=e.title,s=e.description;return(0,u.t$)(),r.createElement(be,null,r.createElement(u.d,{title:l,description:s}),r.createElement(f,null),r.createElement(w,null),r.createElement(Y,null),r.createElement("div",{className:(0,o.Z)(u.kM.wrapper.main,i)},r.createElement(a.Z,{fallback:ye},t)),!n&&r.createElement(ve,null))}},55537:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(87462),o=n(63366),a=n(67294),i=n(39960),l=n(89750),u=n(44996),s=n(52263),c=n(5979),f=["imageClassName","titleClassName"];function d(e){var t=(0,s.Z)().siteConfig.title,n=(0,c.LU)().navbar,d=n.title,p=n.logo,m=void 0===p?{src:""}:p,h=e.imageClassName,g=e.titleClassName,v=(0,o.Z)(e,f),b=(0,u.Z)(m.href||"/"),y={light:(0,u.Z)(m.src),dark:(0,u.Z)(m.srcDark||m.src)},w=a.createElement(l.Z,{sources:y,height:m.height,width:m.width,alt:m.alt||d||t});return a.createElement(i.Z,(0,r.Z)({to:b},v,m.target&&{target:m.target}),m.src&&(h?a.createElement("div",{className:h},w):w),null!=d&&a.createElement("b",{className:g},d))}},5525:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var r=n(87462),o=n(63366),a=n(67294),i=n(86010),l=n(93072),u=n(81068),s=["className","isDropdownItem"],c=["className","isDropdownItem"],f=["mobile","position"];function d(e){var t=e.className,n=e.isDropdownItem,u=void 0!==n&&n,c=(0,o.Z)(e,s),f=a.createElement(l.Z,(0,r.Z)({className:(0,i.Z)(u?"dropdown__link":"navbar__item navbar__link",t)},c));return u?a.createElement("li",null,f):f}function p(e){var t=e.className,n=(e.isDropdownItem,(0,o.Z)(e,c));return a.createElement("li",{className:"menu__list-item"},a.createElement(l.Z,(0,r.Z)({className:(0,i.Z)("menu__link",t)},n)))}function m(e){var t,n=e.mobile,i=void 0!==n&&n,l=(e.position,(0,o.Z)(e,f)),s=i?p:d;return a.createElement(s,(0,r.Z)({},l,{activeClassName:null!=(t=l.activeClassName)?t:(0,u.E)(i)}))}},76400:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(87462),o=n(63366),a=n(67294),i=n(5525),l=n(65551),u=n(86010),s=n(81068),c=n(5979),f=["docId","label","docsPluginId"];function d(e){var t,n=e.docId,d=e.label,p=e.docsPluginId,m=(0,o.Z)(e,f),h=(0,l.Iw)(p),g=h.activeVersion,v=h.activeDoc,b=(0,c.J)(p).preferredVersion,y=(0,l.yW)(p),w=function(e,t){var n=e.flatMap((function(e){return e.docs})),r=n.find((function(e){return e.id===t}));if(!r){var o=n.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+o)}return r}((0,c.jj)([g,b,y].filter(Boolean)),n),k=(0,s.E)(m.mobile);return a.createElement(i.Z,(0,r.Z)({exact:!0},m,{className:(0,u.Z)(m.className,(t={},t[k]=(null==v?void 0:v.sidebar)&&v.sidebar===w.sidebar,t)),activeClassName:k,label:null!=d?d:w.id,to:w.path}))}},54792:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(87462),o=n(63366),a=n(67294),i=n(5525),l=n(65551),u=n(86010),s=n(81068),c=n(5979),f=["sidebarId","label","docsPluginId"];function d(e){var t,n=e.sidebarId,d=e.label,p=e.docsPluginId,m=(0,o.Z)(e,f),h=(0,l.Iw)(p),g=h.activeVersion,v=h.activeDoc,b=(0,c.J)(p).preferredVersion,y=(0,l.yW)(p),w=function(e,t){var n=e.flatMap((function(e){if(e.sidebars)return Object.entries(e.sidebars)})).filter((function(e){return!!e})),r=n.find((function(e){return e[0]===t}));if(!r)throw new Error("DocSidebarNavbarItem: couldn't find any sidebar with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+Object.keys(n).join("\n- "));if(!r[1].link)throw new Error("DocSidebarNavbarItem: couldn't find any document for sidebar with id \""+t+'"');return r[1].link}((0,c.jj)([g,b,y].filter(Boolean)),n),k=(0,s.E)(m.mobile);return a.createElement(i.Z,(0,r.Z)({exact:!0},m,{className:(0,u.Z)(m.className,(t={},t[k]=(null==v?void 0:v.sidebar)===n,t)),activeClassName:k,label:null!=d?d:w.label,to:w.path}))}},59308:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var r=n(87462),o=n(63366),a=n(67294),i=n(5525),l=n(23154),u=n(65551),s=n(5979),c=n(95999),f=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],d=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function p(e){var t,n,p=e.mobile,m=e.docsPluginId,h=e.dropdownActiveClassDisabled,g=e.dropdownItemsBefore,v=e.dropdownItemsAfter,b=(0,o.Z)(e,f),y=(0,u.Iw)(m),w=(0,u.gB)(m),k=(0,u.yW)(m),E=(0,s.J)(m),S=E.preferredVersion,x=E.savePreferredVersionName;var C,_=(C=w.map((function(e){var t=(null==y?void 0:y.alternateDocVersions[e.name])||d(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==y?void 0:y.activeVersion)},onClick:function(){x(e.name)}}})),[].concat(g,C,v)),T=null!=(t=null!=(n=y.activeVersion)?n:S)?t:k,L=p&&_.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):T.label,O=p&&_.length>1?void 0:d(T).path;return _.length<=1?a.createElement(i.Z,(0,r.Z)({},b,{mobile:p,label:L,to:O,isActive:h?function(){return!1}:void 0})):a.createElement(l.Z,(0,r.Z)({},b,{mobile:p,label:L,to:O,items:_,isActive:h?function(){return!1}:void 0}))}},47250:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(87462),o=n(63366),a=n(67294),i=n(5525),l=n(65551),u=n(5979),s=["label","to","docsPluginId"];function c(e){var t,n=e.label,c=e.to,f=e.docsPluginId,d=(0,o.Z)(e,s),p=(0,l.zu)(f),m=(0,u.J)(f).preferredVersion,h=(0,l.yW)(f),g=null!=(t=null!=p?p:m)?t:h,v=null!=n?n:g.label,b=null!=c?c:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(g).path;return a.createElement(i.Z,(0,r.Z)({},d,{label:v,to:b}))}},23154:function(e,t,n){"use strict";n.d(t,{Z:function(){return g}});var r=n(87462),o=n(63366),a=n(67294),i=n(86010),l=n(5979),u=n(93072),s=n(42207),c=["items","position","className"],f=["items","className","position"],d=["mobile"];function p(e,t){return e.some((function(e){return function(e,t){return!!(0,l.Mg)(e.to,t)||!!(0,l.Fx)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function m(e){var t,n=e.items,l=e.position,f=e.className,d=(0,o.Z)(e,c),p=(0,a.useRef)(null),m=(0,a.useState)(!1),h=m[0],g=m[1];return(0,a.useEffect)((function(){var e=function(e){p.current&&!p.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[p]),a.createElement("div",{ref:p,className:(0,i.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===l,"dropdown--show":h})},a.createElement(u.Z,(0,r.Z)({"aria-haspopup":"true","aria-expanded":h,role:"button",href:d.to?void 0:"#",className:(0,i.Z)("navbar__link",f)},d,{onClick:d.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),g(!h))}}),null!=(t=d.children)?t:d.label),a.createElement("ul",{className:"dropdown__menu"},n.map((function(e,t){return a.createElement(s.Z,(0,r.Z)({isDropdownItem:!0,onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),g(!1);var r=p.current.nextElementSibling;if(r)(r instanceof HTMLAnchorElement?r:r.querySelector("a")).focus()}},activeClassName:"dropdown__link--active"},e,{key:t}))}))))}function h(e){var t,n=e.items,c=e.className,d=(e.position,(0,o.Z)(e,f)),m=(0,l.be)(),h=p(n,m),g=(0,l.uR)({initialState:function(){return!h}}),v=g.collapsed,b=g.toggleCollapsed,y=g.setCollapsed;return(0,a.useEffect)((function(){h&&y(!h)}),[m,h,y]),a.createElement("li",{className:(0,i.Z)("menu__list-item",{"menu__list-item--collapsed":v})},a.createElement(u.Z,(0,r.Z)({role:"button",className:(0,i.Z)("menu__link menu__link--sublist",c)},d,{onClick:function(e){e.preventDefault(),b()}}),null!=(t=d.children)?t:d.label),a.createElement(l.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},n.map((function(e,t){return a.createElement(s.Z,(0,r.Z)({mobile:!0,isDropdownItem:!0,onClick:d.onClick,activeClassName:"menu__link--active"},e,{key:t}))}))))}function g(e){var t=e.mobile,n=void 0!==t&&t,r=(0,o.Z)(e,d),i=n?h:m;return a.createElement(i,r)}},93072:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(87462),o=n(63366),a=n(67294),i=n(39960),l=n(44996),u=n(90541),s=n(13919),c=n(5979),f=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"];function d(e){var t,n=e.activeBasePath,d=e.activeBaseRegex,p=e.to,m=e.href,h=e.label,g=e.activeClassName,v=void 0===g?"":g,b=e.prependBaseUrlToHref,y=(0,o.Z)(e,f),w=(0,l.Z)(p),k=(0,l.Z)(n),E=(0,l.Z)(m,{forcePrependBaseUrl:!0}),S=h&&m&&!(0,s.Z)(m),x="dropdown__link--active"===v;return a.createElement(i.Z,(0,r.Z)({},m?{href:b?E:m}:Object.assign({isNavLink:!0,activeClassName:null!=(t=y.className)&&t.includes(v)?"":v,to:w},n||d?{isActive:function(e,t){return d?(0,c.Fx)(d,t.pathname):t.pathname.startsWith(k)}}:null),y),h,S&&a.createElement(u.Z,x&&{width:12,height:12}))}},42207:function(e,t,n){"use strict";n.d(t,{Z:function(){return w}});var r=n(63366),o=n(67294),a=n(5525),i=n(23154),l=n(87462),u=["width","height"];function s(e){var t=e.width,n=void 0===t?20:t,a=e.height,i=void 0===a?20:a,s=(0,r.Z)(e,u);return o.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:n,height:i,"aria-hidden":!0},s),o.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}var c=n(52263),f=n(5979),d=n(95999),p="iconLanguage_dNtB",m=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function h(e){var t=e.mobile,n=e.dropdownItemsBefore,a=e.dropdownItemsAfter,u=(0,r.Z)(e,m),h=(0,c.Z)().i18n,g=h.currentLocale,v=h.locales,b=h.localeConfigs,y=(0,f.l5)();function w(e){return b[e].label}var k=v.map((function(e){var t="pathname://"+y.createUrl({locale:e,fullyQualified:!1});return{isNavLink:!0,label:w(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===g?"dropdown__link--active":""}})),E=[].concat(n,k,a),S=t?(0,d.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):w(g);return o.createElement(i.Z,(0,l.Z)({},u,{mobile:t,label:o.createElement("span",null,o.createElement(s,{className:p}),o.createElement("span",null,S)),items:E}))}var g=n(14155);function v(e){return e.mobile?null:o.createElement(g.Z,null)}var b=["type"],y={default:function(){return a.Z},localeDropdown:function(){return h},search:function(){return v},dropdown:function(){return i.Z},docsVersion:function(){return n(47250).Z},docsVersionDropdown:function(){return n(59308).Z},doc:function(){return n(76400).Z},docSidebar:function(){return n(54792).Z}};function w(e){var t=e.type,n=(0,r.Z)(e,b),a=function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items),i=function(e){var t=y[e];if(!t)throw new Error('No NavbarItem component found for type "'+e+'".');return t()}(a);return o.createElement(i,n)}},81068:function(e,t,n){"use strict";n.d(t,{E:function(){return r}});var r=function(e){return e?"menu__link--active":"navbar__link--active"}},14739:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(67294),o=n(35742);function a(e){var t=e.locale,n=e.version,a=e.tag,i=t;return r.createElement(o.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}},89750:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(87462),o=n(63366),a=n(67294),i=n(86010),l=n(72389),u=n(5979),s={themedImage:"themedImage_W2Cr","themedImage--light":"themedImage--light_TfLj","themedImage--dark":"themedImage--dark_oUvU"},c=["sources","className","alt"];function f(e){var t=(0,l.Z)(),n=(0,u.If)().colorMode,f=e.sources,d=e.className,p=e.alt,m=(0,o.Z)(e,c),h=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,h.map((function(e){return a.createElement("img",(0,r.Z)({key:e,src:f[e],alt:p,className:(0,i.Z)(s.themedImage,s["themedImage--"+e],d)},m))})))}},40467:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return o}});var r=n(99782);function o(e){var t=r.Z.themeConfig.prism.additionalLanguages;globalThis.Prism=e,t.forEach((function(e){n(6726)("./prism-"+e)})),delete globalThis.Prism}},72448:function(e,t,n){"use strict";var r=o(n(87410));function o(e){return e&&e.__esModule?e:{default:e}}(0,o(n(40467)).default)(r.default)},5979:function(e,t,n){"use strict";n.d(t,{pl:function(){return et},zF:function(){return Me},SG:function(){return Dt},HX:function(){return ge},PO:function(){return Ge},D_:function(){return E},L5:function(){return pe},bT:function(){return O},qu:function(){return C},FG:function(){return Ct},Vy:function(){return en},Zo:function(){return Yt},d:function(){return St},VC:function(){return _t},OC:function(){return mt},z5:function(){return on},kM:function(){return We},os:function(){return ve},Wl:function(){return te},_F:function(){return re},aV:function(){return dt},Fx:function(){return bt},Mg:function(){return X},hC:function(){return ln},bc:function(){return H},Vo:function(){return G},nZ:function(){return V},A5:function(){return Jt},jj:function(){return Ve},l5:function(){return M},nT:function(){return tt},uR:function(){return Oe},If:function(){return jt},_q:function(){return be},fP:function(){return S},J:function(){return he},Vq:function(){return A},E6:function(){return _},ed:function(){return v},b9:function(){return ft},cK:function(){return an},Ns:function(){return J},t$:function(){return un},be:function(){return nt},SL:function(){return Ce},Ni:function(){return fn},el:function(){return Ht},YW:function(){return Xt},c2:function(){return xe},D9:function(){return b},pJ:function(){return cn},RF:function(){return vt},Ob:function(){return pn},s1:function(){return oe},Si:function(){return lt},LU:function(){return o},pe:function(){return ye},iP:function(){return Ut}});var r=n(52263);function o(){return(0,r.Z)().siteConfig.themeConfig}var a=n(67294);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}var l=n(89611);function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,l.Z)(e,t)}function s(){s=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,o){var a=new RegExp(e,r);return t.set(a,o||t.get(e)),(0,l.Z)(a,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){return t[n]=e[r[n]],t}),Object.create(null))}return u(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);return n&&(n.groups=r(n,this)),n},n.prototype[Symbol.replace]=function(n,o){if("string"==typeof o){var a=t.get(this);return e[Symbol.replace].call(this,n,o.replace(/\$<([^>]+)>/g,(function(e,t){return"$"+a[t]})))}if("function"==typeof o){var l=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=i(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,l)),o.apply(this,e)}))}return e[Symbol.replace].call(this,n,o)},s.apply(this,arguments)}var c=n(94578);function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function p(e,t,n){return p=d()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&(0,l.Z)(o,n.prototype),o},p.apply(null,arguments)}function m(e){var t="function"==typeof Map?new Map:void 0;return m=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return p(e,arguments,f(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),(0,l.Z)(r,e)},m(e)}var h=n(10412),g=h.Z.canUseDOM?a.useLayoutEffect:a.useEffect;function v(e){var t=(0,a.useRef)(e);return g((function(){t.current=e}),[e]),(0,a.useCallback)((function(){return t.current.apply(t,arguments)}),[])}function b(e){var t=(0,a.useRef)();return g((function(){t.current=e})),t.current}var y=function(e){function t(t,n){var r,o,a,i;return(i=e.call(this)||this).name="ReactContextError",i.message="Hook "+(null==(r=i.stack)||null==(o=r.split("\n")[1])||null==(a=o.match(s(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:a.groups.name)+" is called outside the <"+t+">. "+(n||""),i}return(0,c.Z)(t,e),t}(m(Error)),w=Symbol("EmptyContext"),k=a.createContext(w);function E(e){var t=e.children,n=(0,a.useState)(null),r=n[0],o=n[1],i=(0,a.useMemo)((function(){return{expandedItem:r,setExpandedItem:o}}),[r]);return a.createElement(k.Provider,{value:i},t)}function S(){var e=(0,a.useContext)(k);if(e===w)throw new y("DocSidebarItemsExpandedStateProvider");return e}var x=a.createContext(null);function C(e){var t=e.children,n=e.version;return a.createElement(x.Provider,{value:n},t)}function _(){var e=(0,a.useContext)(x);if(null===e)throw new y("DocsVersionProvider");return e}var T=Symbol("EmptyContext"),L=a.createContext(T);function O(e){var t=e.children,n=e.sidebar;return a.createElement(L.Provider,{value:n},t)}function A(){var e=(0,a.useContext)(L);if(e===T)throw new y("DocsSidebarProvider");return e}var P="localStorage";function R(e){if(void 0===e&&(e=P),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,N||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),N=!0),null}var t}var N=!1;var I={get:function(){return null},set:function(){},del:function(){}};function D(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:t,set:t,del:t}}(e);var n=R(null==t?void 0:t.persistence);return null===n?I:{get:function(){try{return n.getItem(e)}catch(t){return console.error("Docusaurus storage error, can't get key="+e,t),null}},set:function(t){try{n.setItem(e,t)}catch(r){console.error("Docusaurus storage error, can't set "+e+"="+t,r)}},del:function(){try{n.removeItem(e)}catch(t){console.error("Docusaurus storage error, can't delete key="+e,t)}}}}var j=n(76775);function M(){var e=(0,r.Z)(),t=e.siteConfig,n=t.baseUrl,o=t.url,a=e.i18n,i=a.defaultLocale,l=a.currentLocale,u=(0,j.TH)().pathname,s=l===i?n:n.replace("/"+l+"/","/"),c=u.replace(n,"");return{createUrl:function(e){var t=e.locale;return""+(e.fullyQualified?o:"")+function(e){return e===i?""+s:""+s+e+"/"}(t)+c}}}var F=n(87594),B=n.n(F),z=s(/title=(["'])(.*?)\1/,{quote:1,title:2}),U=s(/\{([\d,-]+)\}/,{range:1}),Z={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},$=["highlight-next-line","highlight-start","highlight-end"];function q(e){var t=e.map((function(e){var t=Z[e],n=t.start,r=t.end;return"(?:"+n+"\\s*("+$.join("|")+")\\s*"+r+")"})).join("|");return new RegExp("^\\s*(?:"+t+")\\s*$")}function H(e){var t,n;return null!=(t=null==e||null==(n=e.match(z))?void 0:n.groups.title)?t:""}function G(e){var t=e.split(" ").find((function(e){return e.startsWith("language-")}));return null==t?void 0:t.replace(/language-/,"")}function V(e,t,n){var r=e.replace(/\n$/,"");if(t&&U.test(t)){var o=t.match(U).groups.range;return{highlightLines:B()(o).filter((function(e){return e>0})).map((function(e){return e-1})),code:r}}if(void 0===n)return{highlightLines:[],code:r};for(var a,i=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return q(["js","jsBlock"]);case"jsx":case"tsx":return q(["js","jsBlock","jsx"]);case"html":return q(["js","jsBlock","html"]);case"python":case"py":return q(["python"]);default:return q(Object.keys(Z))}}(n),l=r.split("\n"),u="",s=0;se.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var Q=n(99637);function X(e,t){var n=function(e){var t;return null==(t=!e||null!=e&&e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function J(){var e=(0,r.Z)().siteConfig.baseUrl;return(0,a.useMemo)((function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap((function(e){var t;return null!=(t=e.routes)?t:[]})))}(e.routes)}({routes:Q.Z,baseUrl:e})}),[e])}var ee=!!W._r;function te(e){if(e.href)return e.href;for(var t,n=Y(e.items);!(t=n()).done;){var r=t.value;if("link"===r.type)return r.href;if("category"===r.type){var o=te(r);if(o)return o}else if("html"!==r.type)throw new Error("Unexpected category item type for "+JSON.stringify(r))}}var ne=function(e,t){return void 0!==e&&X(e,t)};function re(e,t){return"link"===e.type?ne(e.href,t):"category"===e.type&&(ne(e.href,t)||function(e,t){return e.some((function(e){return re(e,t)}))}(e.items,t))}function oe(){var e,t=A(),n=(0,j.TH)().pathname;if(!1===(null==(e=(0,W.gA)())?void 0:e.pluginData.breadcrumbs)||!t)return null;var r=[];return function e(t){for(var o,a=Y(t);!(o=a()).done;){var i=o.value;if("category"===i.type&&(X(i.href,n)||e(i.items))||"link"===i.type&&X(i.href,n))return r.push(i),!0}return!1}(t),r.reverse()}var ae=n(29935),ie=function(e){return"docs-preferred-version-"+e},le=function(e,t,n){D(ie(e),{persistence:t}).set(n)},ue=function(e,t){return D(ie(e),{persistence:t}).get()},se=function(e,t){D(ie(e),{persistence:t}).del()};var ce=a.createContext(null);function fe(){var e=(0,W._r)(),t=o().docs.versionPersistence,n=(0,a.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,a.useState)((function(){return function(e){return Object.fromEntries(e.map((function(e){return[e,{preferredVersionName:null}]})))}(n)})),i=r[0],l=r[1];return(0,a.useEffect)((function(){l(function(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(t.map((function(e){return[e,(t=e,o=ue(t,n),r[t].versions.some((function(e){return e.name===o}))?{preferredVersionName:o}:(se(t,n),{preferredVersionName:null}))];var t,o})))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[i,(0,a.useMemo)((function(){return{savePreferredVersion:function(e,n){le(e,t,n),l((function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))}))}}}),[t])]}function de(e){var t=e.children,n=fe();return a.createElement(ce.Provider,{value:n},t)}function pe(e){var t=e.children;return ee?a.createElement(de,null,t):t}function me(){var e=(0,a.useContext)(ce);if(!e)throw new y("DocsPreferredVersionContextProvider");return e}function he(e){var t;void 0===e&&(e=ae.m);var n=(0,W.zh)(e),r=me(),o=r[0],i=r[1],l=o[e].preferredVersionName;return{preferredVersion:null!=(t=n.versions.find((function(e){return e.name===l})))?t:null,savePreferredVersionName:(0,a.useCallback)((function(t){i.savePreferredVersion(e,t)}),[i,e])}}var ge="default";function ve(e,t){return"docs-"+e+"-"+t}function be(){var e=(0,r.Z)().i18n,t=(0,W._r)(),n=(0,W.WS)(),o=function(){var e=(0,W._r)(),t=me()[0],n=Object.keys(e);return Object.fromEntries(n.map((function(n){return[n,(r=n,a=e[r],i=t[r].preferredVersionName,null!=(o=a.versions.find((function(e){return e.name===i})))?o:null)];var r,o,a,i})))}();var a=[ge].concat(Object.keys(t).map((function(e){var r,a,i=(null==n||null==(r=n.activePlugin)?void 0:r.pluginId)===e?n.activeVersion:void 0,l=o[e],u=t[e].versions.find((function(e){return e.isLast}));return ve(e,(null!=(a=null!=i?i:l)?a:u).name)})));return{locale:e.currentLocale,tags:a}}function ye(e){var t=(0,r.Z)().siteConfig,n=t.title,o=t.titleDelimiter;return null!=e&&e.trim().length?e.trim()+" "+o+" "+n:n}var we=["zero","one","two","few","many","other"];function ke(e){return we.filter((function(t){return e.includes(t)}))}var Ee={locale:"en",pluralForms:ke(["one","other"]),select:function(e){return 1===e?"one":"other"}};function Se(){var e=(0,r.Z)().i18n.currentLocale;return(0,a.useMemo)((function(){try{return t=e,n=new Intl.PluralRules(t),{locale:t,pluralForms:ke(n.resolvedOptions().pluralCategories),select:function(e){return n.select(e)}}}catch(r){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to the default (English) implementation.\nError: '+r.message+"\n"),Ee}var t,n}),[e])}function xe(){var e=Se();return{selectMessage:function(t,n){return function(e,t,n){var r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error("For locale="+n.locale+", a maximum of "+n.pluralForms.length+" plural forms are expected ("+n.pluralForms+"), but the message contains "+r.length+": "+e);var o=n.select(t),a=n.pluralForms.indexOf(o);return r[Math.min(a,r.length-1)]}(n,t,e)}}}function Ce(e){var t=(0,j.TH)(),n=b(t),r=v(e);(0,a.useEffect)((function(){n&&t!==n&&r({location:t,previousLocation:n})}),[r,t,n])}var _e=n(63366),Te=["collapsed"],Le=["lazy"];function Oe(e){var t=e.initialState,n=(0,a.useState)(null!=t&&t),r=n[0],o=n[1],i=(0,a.useCallback)((function(){o((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:i}}var Ae={display:"none",overflow:"hidden",height:"0px"},Pe={display:"block",overflow:"visible",height:"auto"};function Re(e,t){var n=t?Ae:Pe;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function Ne(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,o=(0,a.useRef)(!1);(0,a.useEffect)((function(){var e,a=t.current;function i(){var e,t,n=a.scrollHeight,o=null!=(e=null==r?void 0:r.duration)?e:function(e){var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+o+"ms "+(null!=(t=null==r?void 0:r.easing)?t:"ease-in-out"),height:n+"px"}}function l(){var e=i();a.style.transition=e.transition,a.style.height=e.height}if(!o.current)return Re(a,n),void(o.current=!0);return a.style.willChange="height",e=requestAnimationFrame((function(){n?(l(),requestAnimationFrame((function(){a.style.height=Ae.height,a.style.overflow=Ae.overflow}))):(a.style.display="block",requestAnimationFrame((function(){l()})))})),function(){return cancelAnimationFrame(e)}}),[t,n,r])}function Ie(e){if(!h.Z.canUseDOM)return e?Ae:Pe}function De(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,o=e.children,i=e.animation,l=e.onCollapseTransitionEnd,u=e.className,s=e.disableSSRStyle,c=(0,a.useRef)(null);return Ne({collapsibleRef:c,collapsed:r,animation:i}),a.createElement(n,{ref:c,style:s?void 0:Ie(r),onTransitionEnd:function(e){"height"===e.propertyName&&(Re(c.current,r),null==l||l(r))},className:u},o)}function je(e){var t=e.collapsed,n=(0,_e.Z)(e,Te),r=(0,a.useState)(!t),o=r[0],i=r[1];(0,a.useLayoutEffect)((function(){t||i(!0)}),[t]);var l=(0,a.useState)(t),u=l[0],s=l[1];return(0,a.useLayoutEffect)((function(){o&&s(t)}),[o,t]),o?a.createElement(De,Object.assign({},n,{collapsed:u})):null}function Me(e){var t=e.lazy,n=(0,_e.Z)(e,Le),r=t?je:De;return a.createElement(r,Object.assign({},n))}var Fe=n(72389),Be=n(86010),ze="details_lb9f",Ue="isBrowser_bmU9",Ze="collapsibleContent_i85q",$e=["summary","children"];function qe(e){return!!e&&("SUMMARY"===e.tagName||qe(e.parentElement))}function He(e,t){return!!e&&(e===t||He(e.parentElement,t))}function Ge(e){var t=e.summary,n=e.children,r=(0,_e.Z)(e,$e),o=(0,Fe.Z)(),i=(0,a.useRef)(null),l=Oe({initialState:!r.open}),u=l.collapsed,s=l.setCollapsed,c=(0,a.useState)(r.open),f=c[0],d=c[1];return a.createElement("details",Object.assign({},r,{ref:i,open:f,"data-collapsed":u,className:(0,Be.Z)(ze,o&&Ue,r.className),onMouseDown:function(e){qe(e.target)&&e.detail>1&&e.preventDefault()},onClick:function(e){e.stopPropagation();var t=e.target;qe(t)&&He(t,i.current)&&(e.preventDefault(),u?(s(!1),d(!0)):s(!0))}}),t,a.createElement(Me,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:function(e){s(e),d(!e)}},a.createElement("div",{className:Ze},n)))}function Ve(e){return Array.from(new Set(e))}var We={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block"},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{}},Ke=D("docusaurus.announcement.dismiss"),Ye=D("docusaurus.announcement.id"),Qe=function(){return"true"===Ke.get()},Xe=function(e){return Ke.set(String(e))},Je=a.createContext(null);function et(e){var t=e.children,n=function(){var e=o().announcementBar,t=(0,Fe.Z)(),n=(0,a.useState)((function(){return!!t&&Qe()})),r=n[0],i=n[1];(0,a.useEffect)((function(){i(Qe())}),[]);var l=(0,a.useCallback)((function(){Xe(!0),i(!0)}),[]);return(0,a.useEffect)((function(){if(e){var t=e.id,n=Ye.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;Ye.set(t),r&&Xe(!1),!r&&Qe()||i(!1)}}),[e]),(0,a.useMemo)((function(){return{isActive:!!e&&!r,close:l}}),[e,r,l])}();return a.createElement(Je.Provider,{value:n},t)}function tt(){var e=(0,a.useContext)(Je);if(!e)throw new y("AnnouncementBarProvider");return e}function nt(){var e=(0,r.Z)().siteConfig.baseUrl;return(0,j.TH)().pathname.replace(e,"/")}n(95999);function rt(e){!function(e){var t=(0,j.k6)().block,n=v(e);(0,a.useEffect)((function(){return t((function(e,t){return n(e,t)}))}),[t,n])}((function(t,n){if("POP"===n)return e(t,n)}))}function ot(e){var t=e.getBoundingClientRect();return t.top===t.bottom?ot(e.parentNode):t}function at(e,t){var n,r,o=t.anchorTopOffset,a=e.find((function(e){return ot(e).top>=o}));return a?function(e){return e.top>0&&e.bottom=0?t[n].children.push(o):r.push(o)})),r}function ct(e){var t=e.toc,n=e.minHeadingLevel,r=e.maxHeadingLevel;return t.flatMap((function(e){var t=ct({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[Object.assign({},e,{children:t})]:t}))}function ft(e){var t=e.toc,n=e.minHeadingLevel,r=e.maxHeadingLevel;return(0,a.useMemo)((function(){return ct({toc:st(t),minHeadingLevel:n,maxHeadingLevel:r})}),[t,n,r])}function dt(e){return"title"in e[0]}var pt=a.createContext(void 0);function mt(e){var t,n=e.children,r=(t=(0,a.useRef)(!0),(0,a.useMemo)((function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}}),[]));return a.createElement(pt.Provider,{value:r},n)}function ht(){var e=(0,a.useContext)(pt);if(null==e)throw new y("ScrollControllerProvider");return e}var gt=function(){return h.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function vt(e,t){void 0===t&&(t=[]);var n=ht().scrollEventsEnabledRef,r=(0,a.useRef)(gt()),o=v(e);(0,a.useEffect)((function(){var e=function(){if(n.current){var e=gt();o&&o(e,r.current),r.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}}),[o,n].concat(t))}function bt(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var yt=n(35742),wt=n(30226);function kt(){var e=a.useContext(wt._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var Et=n(44996);function St(e){var t=e.title,n=e.description,r=e.keywords,o=e.image,i=e.children,l=ye(t),u=(0,Et.C)().withBaseUrl,s=o?u(o,{absolute:!0}):void 0;return a.createElement(yt.Z,null,t&&a.createElement("title",null,l),t&&a.createElement("meta",{property:"og:title",content:l}),n&&a.createElement("meta",{name:"description",content:n}),n&&a.createElement("meta",{property:"og:description",content:n}),r&&a.createElement("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),s&&a.createElement("meta",{property:"og:image",content:s}),s&&a.createElement("meta",{name:"twitter:image",content:s}),i)}var xt=a.createContext(void 0);function Ct(e){var t=e.className,n=e.children,r=a.useContext(xt),o=(0,Be.Z)(r,t);return a.createElement(xt.Provider,{value:o},a.createElement(yt.Z,null,a.createElement("html",{className:o})),n)}function _t(e){var t=e.children,n=kt(),r="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),o="plugin-id-"+n.plugin.id;return a.createElement(Ct,{className:(0,Be.Z)(r,o)},t)}var Tt=a.createContext(void 0),Lt="theme",Ot=D(Lt),At="light",Pt="dark",Rt=function(e){return e===Pt?Pt:At},Nt=function(e){Ot.set(Rt(e))};function It(){var e=o().colorMode,t=e.defaultMode,n=e.disableSwitch,r=e.respectPrefersColorScheme,i=(0,a.useState)(function(e){return h.Z.canUseDOM?Rt(document.documentElement.getAttribute("data-theme")):Rt(e)}(t)),l=i[0],u=i[1],s=(0,a.useCallback)((function(e){u(e),Nt(e)}),[]);(0,a.useEffect)((function(){document.documentElement.setAttribute("data-theme",Rt(l))}),[l]),(0,a.useEffect)((function(){if(!n){var e=function(e){if(e.key===Lt)try{var t=Ot.get();null!==t&&s(Rt(t))}catch(n){console.error(n)}};return window.addEventListener("storage",e),function(){return window.removeEventListener("storage",e)}}}),[n,s]);var c=(0,a.useRef)(!1);return(0,a.useEffect)((function(){if(!n||r){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=function(e){var t=e.matches;window.matchMedia("print").matches||c.current?c.current=window.matchMedia("print").matches:s(t?Pt:At)};return e.addListener(t),function(){return e.removeListener(t)}}}),[s,n,r]),(0,a.useMemo)((function(){return{colorMode:l,setColorMode:s,get isDarkTheme(){return l===Pt},setLightTheme:function(){s(At),Nt(At)},setDarkTheme:function(){s(Pt),Nt(Pt)}}}),[l,s])}function Dt(e){var t=e.children,n=It();return a.createElement(Tt.Provider,{value:n},t)}function jt(){var e=(0,a.useContext)(Tt);if(null==e)throw new y("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}var Mt="desktop",Ft="mobile",Bt="ssr";function zt(){return h.Z.canUseDOM?window.innerWidth>996?Mt:Ft:Bt}function Ut(){var e=(0,a.useState)((function(){return zt()})),t=e[0],n=e[1];return(0,a.useEffect)((function(){function e(){n(zt())}return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),t}var Zt=a.createContext(void 0);function $t(){var e,t=(e=(0,W.gA)(),0===o().navbar.items.length&&!e),n=Ut(),r=!t&&"mobile"===n,i=(0,a.useState)(!1),l=i[0],u=i[1];rt((function(){if(l)return u(!1),!1}));var s=(0,a.useCallback)((function(){u((function(e){return!e}))}),[]);return(0,a.useEffect)((function(){"desktop"===n&&u(!1)}),[n]),(0,a.useMemo)((function(){return{disabled:t,shouldRender:r,toggle:s,shown:l}}),[t,r,s,l])}function qt(e){var t=e.children,n=$t();return a.createElement(Zt.Provider,{value:n},t)}function Ht(){var e=a.useContext(Zt);if(void 0===e)throw new y("NavbarMobileSidebarProvider");return e}var Gt={shown:!1,content:{component:null,props:null}},Vt=a.createContext(null);function Wt(e){var t,n,r,o,i,l,u,s,c,f=e.children,d=(r=Ht(),o=(0,a.useState)(Gt),i=o[0],l=o[1],u=function(e){return l((function(t){return Object.assign({},t,{shown:e})}))},s=null!==(null==(t=i.content)?void 0:t.component),c=b(null!==(null==(n=i.content)?void 0:n.component)),(0,a.useEffect)((function(){s&&!c&&u(!0)}),[s,c]),(0,a.useEffect)((function(){s?r.shown||u(!0):u(!1)}),[r.shown,s]),[i,l]);return a.createElement(Vt.Provider,{value:d},f)}function Kt(){var e=(0,a.useContext)(Vt);if(null===e)throw new y("MobileSecondaryMenuProvider");return e}function Yt(e){var t,n=e.component,r=e.props,o=Kt()[1],i=(t=r,(0,a.useMemo)((function(){return t}),[].concat(Object.keys(t),Object.values(t))));return(0,a.useEffect)((function(){o((function(e){return Object.assign({},e,{content:{component:n,props:i}})}))}),[o,n,i]),(0,a.useEffect)((function(){return function(){return o((function(e){return Object.assign({},e,{component:null,props:null})}))}}),[o]),null}function Qt(e){var t;if(null!=(t=e.content)&&t.component){var n=e.content.component;return a.createElement(n,Object.assign({},e.content.props))}}function Xt(){var e=Kt(),t=e[0],n=e[1],r=(0,a.useCallback)((function(){return n((function(e){return Object.assign({},e,{shown:!1})}))}),[n]);return(0,a.useMemo)((function(){return{shown:t.shown,hide:r,content:Qt(t)}}),[r,t])}function Jt(e){function t(e){var t;return"left"===(null!=(t=e.position)?t:"right")}return[e.filter(t),e.filter((function(e){return!t(e)}))]}function en(e){var t=e.children;return a.createElement(qt,null,a.createElement(Wt,null,t))}var tn="docusaurus.tab.",nn=a.createContext(void 0);function rn(){var e=(0,a.useState)({}),t=e[0],n=e[1],r=(0,a.useCallback)((function(e,t){D("docusaurus.tab."+e).set(t)}),[]);(0,a.useEffect)((function(){try{var e={};(function(e){void 0===e&&(e=P);var t=R(e);if(!t)return[];for(var n=[],r=0;r=l?r(!1):a+s=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var b="Ctrl";var y=a.forwardRef((function(e,t){var n=e.translations,r=void 0===n?{}:n,o=v(e,h),i=r.buttonText,l=void 0===i?"Search":i,u=r.buttonAriaLabel,s=void 0===u?"Search":u,c=(0,a.useMemo)((function(){return"undefined"!=typeof navigator?/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":b:null}),[]);return a.createElement("button",g({type:"button",className:"DocSearch DocSearch-Button","aria-label":s},o,{ref:t}),a.createElement("span",{className:"DocSearch-Button-Container"},a.createElement(m.W,null),a.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),a.createElement("span",{className:"DocSearch-Button-Keys"},null!==c&&a.createElement(a.Fragment,null,a.createElement("span",{className:"DocSearch-Button-Key"},c===b?a.createElement(p,null):c),a.createElement("span",{className:"DocSearch-Button-Key"},"K"))))}));var w=n(95999),k="searchBox_qEbK",E=["contextualSearch","externalUrlRegex"],S=null;function x(e){var t=e.hit,n=e.children;return a.createElement(c.Z,{to:t.url},n)}function C(e){var t=e.state,n=e.onClose,r=(0,d.Ob)().generateSearchPageLink;return a.createElement(c.Z,{to:r(t.query),onClick:n},a.createElement(w.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function _(e){var t,c,p,m,h,g=e.contextualSearch,v=e.externalUrlRegex,b=(0,o.Z)(e,E),_=(0,l.Z)().siteMetadata,T=["language:"+(p=(0,d._q)()).locale,p.tags.map((function(e){return"docusaurus_tag:"+e}))],L=null!=(t=null==(c=b.searchParameters)?void 0:c.facetFilters)?t:[],O=g?(m=L,[].concat((h=function(e){return"string"==typeof e?[e]:e})(T),h(m))):L,A=Object.assign({},b.searchParameters,{facetFilters:O}),P=(0,s.C)().withBaseUrl,R=(0,u.k6)(),N=(0,a.useRef)(null),I=(0,a.useRef)(null),D=(0,a.useState)(!1),j=D[0],M=D[1],F=(0,a.useState)(void 0),B=F[0],z=F[1],U=(0,a.useCallback)((function(){return S?Promise.resolve():Promise.all([n.e(6815).then(n.bind(n,76815)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,46945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,18894))]).then((function(e){var t=e[0].DocSearchModal;S=t}))}),[]),Z=(0,a.useCallback)((function(){U().then((function(){N.current=document.createElement("div"),document.body.insertBefore(N.current,document.body.firstChild),M(!0)}))}),[U,M]),$=(0,a.useCallback)((function(){var e;M(!1),null==(e=N.current)||e.remove()}),[M]),q=(0,a.useCallback)((function(e){U().then((function(){M(!0),z(e.key)}))}),[U,M,z]),H=(0,a.useRef)({navigate:function(e){var t=e.itemUrl;(0,d.Fx)(v,t)?window.location.href=t:R.push(t)}}).current,G=(0,a.useRef)((function(e){return e.map((function(e){if((0,d.Fx)(v,e.url))return e;var t=new URL(e.url);return Object.assign({},e,{url:P(""+t.pathname+t.hash)})}))})).current,V=(0,a.useMemo)((function(){return function(e){return a.createElement(C,(0,r.Z)({},e,{onClose:$}))}}),[$]),W=(0,a.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",_.docusaurusVersion),e}),[_.docusaurusVersion]);!function(e){var t=e.isOpen,n=e.onOpen,r=e.onClose,o=e.onInput,i=e.searchButtonRef;a.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?r():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,r,o,i])}({isOpen:j,onOpen:Z,onClose:$,onInput:q,searchButtonRef:I});var K=(0,w.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"});return a.createElement(a.Fragment,null,a.createElement(f.Z,null,a.createElement("link",{rel:"preconnect",href:"https://"+b.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),a.createElement("div",{className:k},a.createElement(y,{onTouchStart:U,onFocus:U,onMouseOver:U,onClick:Z,ref:I,translations:{buttonText:K,buttonAriaLabel:K}})),j&&S&&N.current&&(0,i.createPortal)(a.createElement(S,(0,r.Z)({onClose:$,initialScrollY:window.scrollY,initialQuery:B,navigator:H,transformItems:G,hitComponent:x,transformSearchClient:W},b.searchPagePath&&{resultsFooterComponent:V},b,{searchParameters:A})),N.current))}function T(){var e=(0,l.Z)().siteConfig;return a.createElement(_,e.themeConfig.algolia)}},8802:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var o,a=e.split(/[#?]/)[0],i="/"===a||a===r?a:(o=a,n?function(e){return e.endsWith("/")?e:e+"/"}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));return e.replace(a,i)}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}})},86010:function(e,t,n){"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0;d--){var p=i[d];"."===p?a(i,d):".."===p?(a(i,d),f++):f&&(a(i,d),f--)}if(!s)for(;f--;f)i.unshift("..");!s||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var u=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),o=l(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},s=n(2177);function c(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function h(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&u(e.state,t.state)}function v(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),f({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,d(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,f({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),s=a.querySelector(r.barSelector),c=r.speed,f=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),u(s,i(e,c,f)),1===e?(u(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){u(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),s=document.querySelector(r.parent);return u(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),s!=document.body&&c(s,"nprogress-custom-parent"),s.appendChild(t),t},n.remove=function(){f(document.documentElement,"nprogress-busy"),f(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),u=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function s(e,t){return("string"==typeof e?e:d(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=d(e),r=n+t;s(n,t)||(e.className=r.substring(1))}function f(e,t){var n,r=d(e);s(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function d(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},27418:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,a){for(var i,l,u=o(e),s=1;se.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,o,a]=t;if(r&&a){r=parseInt(r),a=parseInt(a);const e=r=f.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof o)){var C,_=1;if(b){if(!(C=a(k,S,e,v))||C.index>=e.length)break;var T=C.index,L=C.index+C[0].length,O=S;for(O+=E.value.length;T>=O;)O+=(E=E.next).value.length;if(S=O-=E.value.length,E.value instanceof o)continue;for(var A=E;A!==t.tail&&(Of.reach&&(f.reach=I);var D=E.prev;if(R&&(D=u(t,D,R),S+=R.length),s(t,D,_),E=u(t,D,new o(d,g?r.tokenize(P,g):P,y,P)),N&&u(t,E,N),_>1){var j={cause:d+","+m,reach:I};i(e,t,n,E.prev,S,j),f&&j.reach>f.reach&&(f.reach=j.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function u(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function s(e,t,n){for(var r=t.next,o=0;o"+a.content+""},r}(),o=r;r.default=r,o.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},o.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.c=o.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},o.languages.c.string],char:o.languages.c.char,comment:o.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:o.languages.c}}}}),o.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete o.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(o),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(o),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:o.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),o.languages.js=o.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function a(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return o})),RegExp(e,t)}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var u=i(o);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(u=i(t[r-1])+u,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",u,null,u)}o.content&&"string"!=typeof o.content&&l(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(o),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r=d.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var o=d[i],a="string"==typeof r?r:r.content,l=a.indexOf(o);if(-1!==l){++i;var u=a.substring(0,l),f=s(c[o]),p=a.substring(l+o.length),m=[];if(u&&m.push(u),m.push(f),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(f),new e.Token(r,f,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var f={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function d(e){return"string"==typeof e?e:Array.isArray(e)?e.map(d).join(""):d(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in f&&function t(n){for(var r=0,o=n.length;r",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(o),o.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},o.languages.go=o.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.languages.go["class-name"],o.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:o.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},o.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=d(/^\{$/,/^\}$/);if(-1===l)continue;for(var u=n;u=0&&p(s,"variable-input")}}}}function c(e){return t[n+e]}function f(e,t){t=t||0;for(var n=0;n=a.length);u++){var s=l[u];if("string"==typeof s||s.content&&"string"==typeof s.content){var c=a[o],f=n.tokenStack[c],d="string"==typeof s?s:s.content,p=t(r,c),m=d.indexOf(p);if(m>-1){++o;var h=d.substring(0,m),g=new e.Token(r,e.tokenize(f,n.grammar),"language-"+r,f),v=d.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof s?l.splice.apply(l,[u,1].concat(b)):s.content=b}}else s.content&&i(s.content)}return l}(n.tokens)}}}})}(o),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(o),o.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},u=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(o),o.languages.objectivec=o.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},o.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),o.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete o.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(o),o.languages.scss=o.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),o.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),o.languages.scss.atrule.inside.rest=o.languages.scss,o.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(o),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(o),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(o),o.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(o),t.default=o},29901:function(e){e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:"shell",aliasTitles:{shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (Scss)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:function(e,t,n){const r=n(29901),o=n(39642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6726:function(e,t,n){var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},16500:function(e,t,n){var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=16500},39642:function(e){"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},u=e[r];if(u){function s(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(u.require,s),t(u.optional,s),t(u.modify,s)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var u=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),s=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(u);i=i.map(s),l=(l||[]).map(s);var c=n(i),f=n(l);i.forEach((function e(n){var r=u[n];t(r&&r.require,(function(t){t in f||(c[t]=!0,e(t))}))}));for(var d,p=r(u),m=c;o(m);){for(var h in d={},m){var g=u[h];t(g&&g.modify,(function(e){e in f&&(d[e]=!0)}))}for(var v in f)if(!(v in c))for(var b in p(v))if(b in c){d[v]=!0;break}for(var y in m=d)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},u={};function s(e){if(e in l)return l[e];u[e]=!0;var o,c=[];for(var f in t(e))f in n&&c.push(f);if(0===c.length)o=r(e);else{var d=i(c.map((function(e){var t=s(e);return delete u[e],t})));a?o=a(d,(function(){return r(e)})):r(e)}return l[e]=o}for(var c in n)s(c);var f=[];for(var d in u)f.push(l[d]);return i(f)}(p,c,t,n)}};return w}}();e.exports=t},92703:function(e,t,n){"use strict";var r=n(50414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},45697:function(e,t,n){e.exports=n(92703)()},50414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:function(e,t,n){"use strict";var r=n(67294),o=n(27418),a=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n