diff --git a/404.html b/404.html new file mode 100644 index 0000000..17108d6 --- /dev/null +++ b/404.html @@ -0,0 +1,106 @@ + + + + + + + Page Not Found + + + +
+
4 0 4
+
+ Page not found +
+ 去首页 +
+ + + + + + Back + +
+
+ + + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..730b515 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +zj1123581321.com \ No newline at end of file diff --git a/ad.txt b/ad.txt new file mode 100644 index 0000000..f4c56bf --- /dev/null +++ b/ad.txt @@ -0,0 +1 @@ +google.com, pub-2920695321218858, DIRECT, f08c47fec0942fa0 \ No newline at end of file diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..9b93bdd --- /dev/null +++ b/archives/index.html @@ -0,0 +1,240 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000..3bda5e8 --- /dev/null +++ b/atom.xml @@ -0,0 +1,83 @@ + + + https://zj1123581321.com/ + 杂谈by立行 + 2023-10-19T14:43:03.101Z + https://github.com/jpmonette/feed + + + 晚来天欲雪, + https://zj1123581321.com/images/avatar.png + https://zj1123581321.com/favicon.ico + All rights reserved 2023, 杂谈by立行 + + <![CDATA[怎样给 Electron 应用抓包]]> + https://zj1123581321.com/post/zen-yang-gei-electron-ying-yong-zhua-bao/ + + + 2023-10-17T11:18:26.000Z + + + <![CDATA[精准转写:利用 Whisper 处理音视频转文字-不完全指南]]> + https://zj1123581321.com/post/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu/ + + + 2023-10-15T08:29:09.000Z + + + <![CDATA[备份手机微信聊天记录到电脑,解决提示问题"当前网络环境复杂,请尝试使用其他网络"]]> + https://zj1123581321.com/post/bei-fen-shou-ji-wei-xin-liao-tian-ji-lu-dao-dian-nao-jie-jue-ti-shi-wen-ti-dang-qian-wang-luo-huan-jing-fu-za-qing-chang-shi-shi-yong-qi-ta-wang-luo/ + + + 2023-04-08T16:41:08.000Z + + + <![CDATA[Windows 文件管理器和 H265 ]]> + https://zj1123581321.com/post/windows-wen-jian-guan-li-qi-he-h265/ + + + 2022-07-13T16:18:05.000Z + + + <![CDATA[多平台微信视频号直播下载方法]]> + https://zj1123581321.com/post/duo-ping-tai-wei-xin-shi-pin-hao-zhi-bo-xia-zai-fang-fa/ + + + 2022-05-15T15:51:22.000Z + + + <![CDATA[怎么在 Win10 上将小娜替换为小爱同学?]]> + https://zj1123581321.com/post/zen-me-zai-win10-shang-jiang-xiao-nuo-ti-huan-wei-xiao-ai-tong-xue/ + + + 2022-05-13T16:08:11.000Z + + + <![CDATA[漫步者音箱红外接入 Home Assistant记录]]> + https://zj1123581321.com/post/man-bu-zhe-yin-xiang-hong-wai-jie-ru-home-assistant-ji-lu/ + + + 2022-05-08T15:05:08.000Z + + + <![CDATA[WordPress 迁移 Gridea 记录]]> + https://zj1123581321.com/post/wordpress-qian-yi-gridea-ji-lu/ + + + 2022-05-05T16:22:04.000Z + + + <![CDATA[写在迁移之前]]> + https://zj1123581321.com/post/220504-Start/ + + + 2022-05-03T17:02:03.000Z + + + <![CDATA[Tasker××,Android 自动化实例]]> + https://zj1123581321.com/post/2020-10-12239/ + + + 2020-10-12T03:12:55.000Z + + \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..2f9480e Binary files /dev/null and b/favicon.ico differ diff --git a/images/avatar.png b/images/avatar.png new file mode 100644 index 0000000..2f9480e Binary files /dev/null and b/images/avatar.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..d315141 --- /dev/null +++ b/index.html @@ -0,0 +1,383 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+ +
+
+
+ 杂谈by立行 +
+
+ 晚来天欲雪, +
+ + + + +
+ +
+ 找到我 👉 +
+ + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ 杂谈by立行 +
+
+ + +
+ +
+ +
+

+ + 怎样给 Electron 应用抓包 + +

+
2023-10-17
+
+ 今天测试 Memo 的翻译服务,发现经常失败,于是想抓包看看失败原因。 +很自然的打开了电脑上的 Fidder,但出乎意料的是完全抓不到 Memo 的任何 Http 请求...(已开启 https 抓包,其他软件测试正常) +搜了一下,发现可能... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +

+
2023-10-15
+
+ 背景 +前阵子女朋友去读研,授课是全英的,加之又有很多专业名词,有时就会出现理解能力跟不上讲课速度的情况。 +因此借助课堂回放/录音复习也变成了一项每周必做的工作,但是完全回看一个三小时长的课程显然是不现实的,所以,音视频转文字就成了必选项。 +... +
+ + Read more + +
+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +
+ +
+ +
+

+ + 备份手机微信聊天记录到电脑,解决提示问题"当前网络环境复杂,请尝试使用其他网络" + +

+
2023-04-09
+
+ 测试设备 + +Windows 微信 3.7.6.44 +Android 微信 8.0.34 +红米 K50,MIUI 13 + +背景 +我有一个持续了三年的习惯——每周备份当周的微信聊天记录。但微信的备份功能做得实在是很烂,经常遇到网络问题: + +当前... +
+ + Read more + +
+ +
+ +
+ +
+

+ + Windows 文件管理器和 H265 + +

+
2022-07-14
+
+ 很早之前在 Win10 遇到的和 H265 相关的问题是不显示缩略图,解决方法往上比较成熟,安装Download K-Lite Codec Pack 即可。 +最近业务需要,通过『要你命三千』从抖音/快手上下载了很多无水印的视频,其中一部分是... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 多平台微信视频号直播下载方法 + +

+
2022-05-15
+
+ 昨日晚上在外面吃饭时发现有两个比较感兴趣的老师都在视频号做直播,两边的内容都想听,但无奈只有一台手机,也没办法确定之后是否有回放,遂生下载微信视频号直播随后观看的想法。 +下载微信视频号直播大体可以分成三步: + +抓包获取视频号直播推流地址 +调... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 怎么在 Win10 上将小娜替换为小爱同学? + +

+
2022-05-14
+
+ 最近入手了一台米物 Art 键盘,上面有一个语音唤醒键。但是在 Win10 上,它默认唤醒的是小娜(Cortana),众所周知小娜在 Win10 上基本没用,所以自然产生一个想法:怎么把唤醒的小娜替换为小爱同学? +首先通过键位监测发现,键盘... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 漫步者音箱红外接入 Home Assistant记录 + +

+
2022-05-08
+
+ 背景 +最近买了一对漫步者 RT-1700 作为桌面音箱,该音箱可以通过有线和蓝牙接入,但想切换需要使用自带的红外遥控器。 +这对于一个懒人而言,实在是太不方便了。 +很自然地想着可以通过模拟红外信号将其接入到米家中。正好家里有一个小米空调伴侣 ... +
+ + Read more + +
+ +
+ +
+ +
+

+ + WordPress 迁移 Gridea 记录 + +

+
2022-05-06
+
+ 五一假期花了大概一天把之前放在 WordPress 上的历史文章迁移到 Gridea 上面,里面还是存了不少坑,这里做个记录。 +基本流程 +全套流程大概可以有以下几步: + +配置 Gridea 在 Github 的仓库和本地同步网络环境。 +导出... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 写在迁移之前 + +

+
2022-05-04
+
+ 大学时我曾经有一个搭在阿里云上的 WordPress 站点存放着历史的文章,一年一百多的价格也还可以接受。但毕业之后,一方面折腾的心思变少了,一年也更新不了几篇文章;另一方面,续费的价格直接升到了 1300 左右,想想这个投入产出比,遂将老... +
+ + Read more + +
+ + 写在迁移之前 + +
+ +
+ +
+

+ + Tasker××,Android 自动化实例 + +

+
2020-10-12
+
+ 引言 +前些天,几个月前看到了 从通知实现钱迹 Tasker 自动化记账 - 少数派,想起来了之前购买即遗忘于角落的 Tasker...心有戚戚焉。加之自动化记账这件事确实 get 到我了,于是籍此开始折腾 Tasker 的自动化之路。 +经过... +
+ + Read more + +
+ +
+ +
+ + + + + + +
+
+ + + + + \ No newline at end of file diff --git a/media/css/prism-atom-dark.css b/media/css/prism-atom-dark.css new file mode 100644 index 0000000..523fc4b --- /dev/null +++ b/media/css/prism-atom-dark.css @@ -0,0 +1,142 @@ +/** + * atom-dark theme for `prism.js` + * Based on Atom's `atom-dark` theme: https://github.com/atom/atom-dark-syntax + * @author Joe Gibson (@gibsjose) + */ + + code[class*="language-"], + pre[class*="language-"] { + color: #c5c8c6; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + /* Code blocks */ + pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + } + + :not(pre) > code[class*="language-"], + pre[class*="language-"] { + background: #1d1f21; + } + + /* Inline code */ + :not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + } + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: #7C7C7C; + } + + .token.punctuation { + color: #c5c8c6; + } + + .namespace { + opacity: .7; + } + + .token.property, + .token.keyword, + .token.tag { + color: #96CBFE; + } + + .token.class-name { + color: #FFFFB6; + text-decoration: underline; + } + + .token.boolean, + .token.constant { + color: #99CC99; + } + + .token.symbol, + .token.deleted { + color: #f92672; + } + + .token.number { + color: #FF73FD; + } + + .token.selector, + .token.attr-name, + .token.string, + .token.char, + .token.builtin, + .token.inserted { + color: #A8FF60; + } + + .token.variable { + color: #C6C5FE; + } + + .token.operator { + color: #EDEDED; + } + + .token.entity { + color: #FFFFB6; + cursor: help; + } + + .token.url { + color: #96CBFE; + } + + .language-css .token.string, + .style .token.string { + color: #87C38A; + } + + .token.atrule, + .token.attr-value { + color: #F9EE98; + } + + .token.function { + color: #DAD085; + } + + .token.regex { + color: #E9C062; + } + + .token.important { + color: #fd971f; + } + + .token.important, + .token.bold { + font-weight: bold; + } + + .token.italic { + font-style: italic; + } \ No newline at end of file diff --git a/media/css/prism-github.css b/media/css/prism-github.css new file mode 100644 index 0000000..7ebf71b --- /dev/null +++ b/media/css/prism-github.css @@ -0,0 +1,123 @@ +/** + * GHColors theme by Avi Aryan (http://aviaryan.in) + * Inspired by Github syntax coloring + */ + + code[class*="language-"], + pre[class*="language-"] { + color: #393A34; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + font-size: .9em; + line-height: 1.2em; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + pre > code[class*="language-"] { + font-size: 1em; + } + + pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, + code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + background: #b3d4fc; + } + + pre[class*="language-"]::selection, pre[class*="language-"] ::selection, + code[class*="language-"]::selection, code[class*="language-"] ::selection { + background: #b3d4fc; + } + + /* Code blocks */ + pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background-color: white; + } + + /* Inline code */ + :not(pre) > code[class*="language-"] { + padding: .2em; + padding-top: 1px; + padding-bottom: 1px; + background: #f8f8f8; + border: 1px solid #dddddd; + } + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: #999988; + font-style: italic; + } + + .token.namespace { + opacity: .7; + } + + .token.string, + .token.attr-value { + color: #e3116c; + } + + .token.punctuation, + .token.operator { + color: #393A34; /* no highlight */ + } + + .token.entity, + .token.url, + .token.symbol, + .token.number, + .token.boolean, + .token.variable, + .token.constant, + .token.property, + .token.regex, + .token.inserted { + color: #36acaa; + } + + .token.atrule, + .token.keyword, + .token.attr-name, + .language-autohotkey .token.selector { + color: #00a4db; + } + + .token.function, + .token.deleted, + .language-autohotkey .token.tag { + color: #9a050f; + } + + .token.tag, + .token.selector, + .language-autohotkey .token.keyword { + color: #00009f; + } + + .token.important, + .token.function, + .token.bold { + font-weight: bold; + } + + .token.italic { + font-style: italic; + } \ No newline at end of file diff --git a/media/css/prism-synthwave84.css b/media/css/prism-synthwave84.css new file mode 100644 index 0000000..85dd866 --- /dev/null +++ b/media/css/prism-synthwave84.css @@ -0,0 +1,140 @@ +/* + * Synthwave '84 Theme originally by Robb Owen [@Robb0wen] for Visual Studio Code + * Demo: https://marc.dev/demo/prism-synthwave84 + * + * Ported for PrismJS by Marc Backes [@themarcba] + */ + + code[class*="language-"], + pre[class*="language-"] { + color: #f92aad; + text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; + background: none; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + /* Code blocks */ + pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + } + + :not(pre) > code[class*="language-"], + pre[class*="language-"] { + background-color: transparent !important; + background-image: linear-gradient(to bottom, #2a2139 75%, #34294f); + } + + /* Inline code */ + :not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; + } + + .token.comment, + .token.block-comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: #8e8e8e; + } + + .token.punctuation { + color: #ccc; + } + + .token.tag, + .token.attr-name, + .token.namespace, + .token.number, + .token.unit, + .token.hexcode, + .token.deleted { + color: #e2777a; + } + + .token.property, + .token.selector { + color: #72f1b8; + text-shadow: 0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475; + } + + .token.function-name { + color: #6196cc; + } + + .token.boolean, + .token.selector .token.id, + .token.function { + color: #fdfdfd; + text-shadow: 0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975; + } + + .token.class-name { + color: #fff5f6; + text-shadow: 0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75; + } + + .token.constant, + .token.symbol { + color: #f92aad; + text-shadow: 0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3; + } + + .token.important, + .token.atrule, + .token.keyword, + .token.selector .token.class, + .token.builtin { + color: #f4eee4; + text-shadow: 0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575; + } + + .token.string, + .token.char, + .token.attr-value, + .token.regex, + .token.variable { + color: #f87c32; + } + + .token.operator, + .token.entity, + .token.url { + color: #67cdcc; + } + + .token.important, + .token.bold { + font-weight: bold; + } + + .token.italic { + font-style: italic; + } + + .token.entity { + cursor: help; + } + + .token.inserted { + color: green; + } \ No newline at end of file diff --git a/media/css/prism-vs-light.css b/media/css/prism-vs-light.css new file mode 100644 index 0000000..3f73d04 --- /dev/null +++ b/media/css/prism-vs-light.css @@ -0,0 +1,165 @@ +/** + * VS theme by Andrew Lock (https://andrewlock.net) + * Inspired by Visual Studio syntax coloring + */ + + code[class*="language-"], + pre[class*="language-"] { + color: #393A34; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + font-size: .9em; + line-height: 1.2em; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + pre > code[class*="language-"] { + font-size: 1em; + } + + pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, + code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + background: #C1DEF1; + } + + pre[class*="language-"]::selection, pre[class*="language-"] ::selection, + code[class*="language-"]::selection, code[class*="language-"] ::selection { + background: #C1DEF1; + } + + /* Code blocks */ + pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background-color: white; + } + + /* Inline code */ + :not(pre) > code[class*="language-"] { + padding: .2em; + padding-top: 1px; + padding-bottom: 1px; + background: #f8f8f8; + border: 1px solid #dddddd; + } + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: #008000; + font-style: italic; + } + + .token.namespace { + opacity: .7; + } + + .token.string { + color: #A31515; + } + + .token.punctuation, + .token.operator { + color: #393A34; /* no highlight */ + } + + .token.url, + .token.symbol, + .token.number, + .token.boolean, + .token.variable, + .token.constant, + .token.inserted { + color: #36acaa; + } + + .token.atrule, + .token.keyword, + .token.attr-value, + .language-autohotkey .token.selector, + .language-json .token.boolean, + .language-json .token.number, + code[class*="language-css"] { + color: #0000ff; + } + + .token.function { + color: #393A34; + } + + .token.deleted, + .language-autohotkey .token.tag { + color: #9a050f; + } + + .token.selector, + .language-autohotkey .token.keyword { + color: #00009f; + } + + .token.important, + .token.bold { + font-weight: bold; + } + + .token.italic { + font-style: italic; + } + + .token.class-name, + .language-json .token.property { + color: #2B91AF; + } + + .token.tag, + .token.selector { + color: #800000; + } + + .token.attr-name, + .token.property, + .token.regex, + .token.entity { + color: #ff0000; + } + + .token.directive.tag .tag { + background: #ffff00; + color: #393A34; + } + + /* overrides color-values for the Line Numbers plugin + * http://prismjs.com/plugins/line-numbers/ + */ + .line-numbers .line-numbers-rows { + border-right-color: #a5a5a5; + } + + .line-numbers-rows > span:before { + color: #2B91AF; + } + + /* overrides color-values for the Line Highlight plugin + * http://prismjs.com/plugins/line-highlight/ + */ + .line-highlight { + background: rgba(193, 222, 241, 0.2); + background: -webkit-linear-gradient(left, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0)); + background: linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0)); + } \ No newline at end of file diff --git a/media/css/tailwind.css b/media/css/tailwind.css new file mode 100644 index 0000000..2892395 --- /dev/null +++ b/media/css/tailwind.css @@ -0,0 +1 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */a,button{background-color:transparent}blockquote,body,dd,figure,h1,h2,h3,h4,hr,ol,p,pre,ul{margin:0}button,hr,input{overflow:visible}img,legend{max-width:100%}a,legend{color:inherit}.cursor-pointer,[role=button],button{cursor:pointer}.markdown>table,.text-left{text-align:left}.btn,.transition-all{-webkit-transition-property:all}.btn,.duration-100{-webkit-transition-duration:.1s}.border-collapse,.markdown>table,table{border-collapse:collapse}.flex-col,.markdown figure{-webkit-box-orient:vertical;-webkit-box-direction:normal}.list-none,.markdown>ol,.markdown>ul:not(.list-none){list-style-type:none}main{display:block}code,pre{font-size:1em}a{text-decoration:inherit}b,strong{font-weight:bolder}small{font-size:80%}sub{font-size:75%;line-height:0;position:relative;vertical-align:baseline;bottom:-.25em}button,input,textarea{font-family:inherit;font-size:100%;margin:0}button{text-transform:none;background-image:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}legend{box-sizing:border-box;display:table;padding:0;white-space:normal}textarea{overflow:auto;resize:vertical}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[hidden]{display:none}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}ol,ul{list-style:none;padding:0}html{-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5}.font-mono,.markdown>h1>code,.markdown>h2>code,.markdown>h3>code,.markdown>h4>code,.markdown>pre,.markdown>table td code,code,pre,pre.markdown{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#999}hr{box-sizing:content-box;height:0;border-top-width:1px}img{border-style:solid;height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}h1,h2,h3,h4{font-size:inherit;font-weight:inherit}button,input,textarea{padding:0;line-height:inherit;color:inherit}canvas,img,svg{display:block;vertical-align:middle}.align-baseline,.markdown>table td code{vertical-align:baseline}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.bg-black{background-color:#000}.bg-white{background-color:#fff}.bg-gray-50{background-color:#faf9f7}.bg-gray-100{background-color:#FAFAFA}.bg-gray-200{background-color:#EAEAEA}.bg-gray-400{background-color:#888}.bg-gray-500{background-color:#666}.bg-gray-600{background-color:#444}.bg-gray-700{background-color:#333}.bg-gray-800{background-color:#111}.bg-orange-100{background-color:#fffaf0}.bg-yellow-50{background-color:#ffd602}.bg-yellow-700{background-color:#b7791f}.bg-green-600{background-color:#38a169}.bg-indigo-100{background-color:#ebf4ff}.bg-indigo-200{background-color:#c3dafe}.bg-indigo-600{background-color:#5a67d8}.hover\:bg-gray-200:hover{background-color:#EAEAEA}.hover\:bg-red-100:hover{background-color:#fff5f5}.hover\:bg-yellow-50:hover{background-color:#ffd602}.hover\:bg-blue-100:hover{background-color:#ebf8ff}.hover\:bg-indigo-100:hover{background-color:#ebf4ff}.border-transparent{border-color:transparent}.border-gray-100{border-color:#FAFAFA}.border-gray-200{border-color:#EAEAEA}.border-gray-300{border-color:#999}.border-gray-500{border-color:#666}.border-gray-700{border-color:#333}.border-orange-600{border-color:#dd6b20}.border-yellow-500{border-color:#ecc94b}.hover\:border-gray-600:hover{border-color:#444}.hover\:border-yellow-50:hover{border-color:#ffd602}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-dotted{border-style:dotted}.border-4{border-width:4px}.border{border-width:1px}.border-t-0{border-top-width:0}.border-t,.markdown>table td{border-top-width:1px}.border-r-0{border-right-width:0}.border-l-0{border-left-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-b-8{border-bottom-width:8px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:flex}.inline-flex{display:-webkit-inline-box;display:inline-flex}.grid{display:grid}.table{display:table}.table-cell{display:table-cell}.hidden{display:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{-webkit-box-align:center;align-items:center}.self-start{align-self:flex-start}.justify-end{-webkit-box-pack:end;justify-content:flex-end}.justify-center{-webkit-box-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.order-1{-webkit-box-ordinal-group:2;order:1}.order-2{-webkit-box-ordinal-group:3;order:2}.clearfix:after{content:"";display:table;clear:both}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-6{height:1.5rem}.h-8{height:2rem}.h-32{height:8rem}.h-40{height:10rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed,.markdown{line-height:1.625}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-16{margin-top:4rem;margin-bottom:4rem}.mx-auto{margin-left:auto;margin-right:auto}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-8{margin-left:-2rem;margin-right:-2rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2,.post-toc li{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mb-8{margin-bottom:2rem}.ml-8{margin-left:2rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mb-16{margin-bottom:4rem}.mt-px{margin-top:1px}.-ml-4{margin-left:-1rem}.-mr-64{margin-right:-16rem}.max-w-4xl{max-width:56rem}.min-h-screen{min-height:100vh}.object-cover{-o-object-fit:cover;object-fit:cover}.outline-none{outline:0}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.pl-0{padding-left:0}.pb-2{padding-bottom:.5rem}.pl-4{padding-left:1rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pl-10{padding-left:2.5rem}.pt-32{padding-top:8rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-box{box-shadow:0 6px 14px 0 rgba(0,0,0,.04)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-none{box-shadow:none}.hover\:shadow-lg:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.text-center{text-align:center}.text-white{color:#fff}.text-gray-200{color:#EAEAEA}.text-gray-300{color:#999}.text-gray-400{color:#888}.text-gray-500{color:#666}.text-gray-700{color:#333}.text-gray-800{color:#111}.text-gray-900{color:#000}.text-red-500{color:#f56565}.text-orange-200{color:#feebc8}.text-orange-900{color:#7b341e}.text-yellow-300{color:#faf089}.text-blue-500{color:#4299e1}.text-indigo-500{color:#667eea}.text-indigo-900{color:#3c366b}.text-purple-400{color:#b794f4}.text-purple-600{color:#805ad5}.text-purple-700{color:#6b46c1}.hover\:text-gray-700:hover{color:#333}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.text-5xl{font-size:3rem}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.visible{visibility:visible}.invisible{visibility:hidden}.break-words{overflow-wrap:break-word}.w-6{width:1.5rem}.w-8{width:2rem}.w-32{width:8rem}.w-64{width:16rem}.w-full{width:100%}.z-10{z-index:10}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.rotate-90{--transform-rotate:90deg}.transition-all{transition-property:all}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}.transition{-webkit-transition:all .1s ease-in!important;transition:all .1s ease-in!important}.translate-r-2px{-webkit-transform:translateX(2px)!important;transform:translateX(2px)!important}.transition-fast{-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.btn{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;background-color:#5a67d8;border-radius:.25rem;color:#fff;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);font-size:.875rem;font-weight:600;transition-property:all;transition-duration:.1s;padding:.5rem 1rem}.btn:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.btn.btn-black{background-color:#111}.btn.btn-white{background-color:#fff;color:#333;box-shadow:none;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s}.btn.btn-white:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}@media (prefers-color-scheme:dark){.btn{background-color:#ffd602;color:#333}.btn.btn-white{background-color:#444;color:#EAEAEA}}.nav.scroll{padding-top:.75rem;padding-bottom:.75rem;box-shadow:1px 2px 18px rgba(0,0,0,.1)}.post-toc li{margin-left:.5rem}.post-toc a{display:block;-webkit-transition:all .2s ease;transition:all .2s ease;color:#888}.post-toc a:hover{color:#000}.markdown>:first-child{margin-top:0}.markdown>*+*{margin-top:1.5rem}.markdown>ol>*+*,.markdown>ul>*+*{margin-top:1rem}.markdown .subnav,.subnav.markdown{display:-webkit-box;display:flex;margin-top:1.5rem;margin-bottom:1.5rem;padding-bottom:.5rem;border-bottom-width:2px;border-color:#999}.markdown .subnav .subnav-link,.subnav-link.markdown .subnav,.subnav-link.subnav.markdown,.subnav.markdown .subnav-link{margin-right:1.5rem;line-height:1;color:#000;font-size:.875rem}.markdown>h2::before,.markdown>h3::before{display:block;height:6rem;margin-top:-6rem;visibility:hidden;content:""}.markdown>hr{border-color:#EAEAEA;margin-top:4rem;margin-bottom:4rem;border-width:0 0 2px}.markdown>p strong,.markdown>ul strong{font-weight:600;color:#111;position:relative;z-index:10}.markdown>p strong::before,.markdown>ul strong::before{display:inline-block;-webkit-transform:rotate(-2deg);transform:rotate(-2deg);position:absolute;background-color:#ffd602;opacity:.3;content:" ";width:100%;height:100%;left:4px;top:-4px;z-index:-1;border-radius:.4rem}@media (prefers-color-scheme:dark){.markdown>hr{border-color:#666}.markdown>p strong,.markdown>ul strong{color:#EAEAEA}}.markdown>ol li :not(pre) code,.markdown>ol li>code,.markdown>p code,.markdown>ul li :not(pre) code,.markdown>ul li>code,p.markdown code.markdown{background-color:#FAFAFA;border-radius:.125rem;font-size:.875rem;padding-left:.25rem;padding-right:.25rem;overflow-wrap:break-word;line-height:1.5;color:#805ad5;font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;vertical-align:baseline;font-weight:400}@media (prefers-color-scheme:dark){.markdown>ol li :not(pre) code,.markdown>ol li>code,.markdown>p code,.markdown>ul li :not(pre) code,.markdown>ul li>code,p.markdown code.markdown{background-color:#333;color:#b794f4}}.markdown>ol li strong code,.markdown>p strong code,.markdown>ul li strong code{font-weight:600}.markdown>pre,pre.markdown{font-weight:400;scrollbar-width:none}.markdown>pre::-webkit-scrollbar,pre.markdown::-webkit-scrollbar{display:none}.markdown>blockquote,blockquote.markdown{color:#7b341e;font-size:.875rem;background-color:#fffaf0;padding:1rem 2rem;margin-left:-1rem;margin-right:-1rem}@media (min-width:768px){.markdown>blockquote,blockquote.markdown{margin-left:-2rem;margin-right:-2rem}}.markdown>blockquote p:first-of-type,blockquote.markdown p:first-of-type{margin-top:0;border-left-width:2px;border-color:#dd6b20;padding-left:1rem}@media (prefers-color-scheme:dark){.markdown>blockquote,blockquote.markdown{background-color:#b7791f;color:#faf089}.markdown>blockquote p:first-of-type,blockquote.markdown p:first-of-type{border-color:#ecc94b}}.markdown>h3>code,.markdown>h4>code{padding-left:.25rem;padding-right:.25rem;background-color:#FAFAFA}.markdown>h1,h1.markdown{margin-bottom:.25rem;line-height:1;color:#000;font-weight:300;font-size:1.875rem}.markdown>h2,h2.markdown{margin-top:4rem;margin-bottom:1rem;color:#000;line-height:1;font-weight:600;font-size:1.5rem}.markdown>h2+h3{margin-top:1.5rem}.markdown>h3,h3.markdown{margin-top:3rem;margin-bottom:.75rem;color:#000;line-height:1.25;font-weight:500;font-size:1.25rem}.markdown>h4,h4.markdown{margin-top:3rem;margin-bottom:0;color:#000;line-height:1.375;font-weight:500;font-size:1.125rem}.markdown>h1+p{margin-top:2rem}.markdown>h1>code,.markdown>h2>code,.markdown>h3>code,.markdown>h4>code{color:#805ad5}.markdown>h3>code{font-size:1.125rem}.markdown>h4>code{font-size:1rem}.markdown>blockquote>p,.markdown>p,p.markdown{font-size:1rem;margin-top:1.5rem}.markdown>ul:not(.list-none){padding-left:0}.markdown>ul:not(.list-none) li{position:relative;padding-left:1.25rem}.markdown>ul:not(.list-none) li::before{position:absolute;left:0;color:#888;display:inline-block;margin-right:.75rem;content:"\2022"}.markdown>ol{counter-reset:item}.markdown>ol>li{position:relative;padding-left:2.5rem}.markdown>ol>li::before{position:absolute;top:0;left:0;margin-top:1px;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;height:1.5rem;width:1.5rem;background-color:#c3dafe;border-radius:9999px;color:#3c366b;font-size:.75rem;font-weight:700;content:counter(item);counter-increment:item}@media (prefers-color-scheme:dark){.markdown>ol>li::before{background-color:#5a67d8;color:#EAEAEA}}.markdown>:not(pre):not(h1):not(h2):not(h3):not(h4)>code,.markdown>ol code,.markdown>ul code{background-color:#FAFAFA;font-size:.875rem;line-height:1.5}@media (prefers-color-scheme:dark){.markdown>:not(pre):not(h1):not(h2):not(h3):not(h4)>code,.markdown>ol code,.markdown>ul code{background-color:#333;color:#b794f4}}.markdown pre{margin-left:-1rem!important;margin-right:-1rem!important}@media (min-width:768px){.markdown pre{margin-left:-2rem!important;margin-right:-2rem!important}}.markdown>ol li pre,.markdown>pre,.markdown>ul li pre,pre.markdown{display:-webkit-box;display:flex;padding:0;background-color:#111;font-size:.875rem;line-height:1.5}.markdown>ol li pre code,.markdown>pre code,.markdown>ul li pre code,pre code.markdown{padding:1rem;color:#EAEAEA;overflow:auto}.markdown>table{width:100%}.markdown>table th{font-size:.875rem;font-weight:600;color:#333;padding:.5rem;background-color:#FAFAFA}@media (prefers-color-scheme:dark){.markdown>table th{background-color:#333;color:#999}}.markdown>table td{padding:.5rem;border-color:#EAEAEA;font-size:.875rem}.markdown>table td code{background-color:#FAFAFA;padding-left:.25rem;padding-right:.25rem;font-size:.75rem;color:#6b46c1}@media (prefers-color-scheme:dark){.markdown>table td{border-color:#333}.markdown>table td code{background-color:#333;color:#b794f4}}.markdown figure{margin-left:-1rem;margin-right:-1rem;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;background-color:#FAFAFA;outline:0;flex-direction:column}@media (min-width:768px){.markdown figure{margin-left:-2rem;margin-right:-2rem}}.markdown figure img{cursor:-webkit-zoom-in;cursor:zoom-in}@media (prefers-color-scheme:dark){.markdown figure{background-color:#666}}.markdown .contains-task-list{list-style-type:none;padding-left:32px;margin-left:2rem}.markdown .task-list-item{position:relative;padding-left:0!important}.markdown .task-list-item:before{content:''!important}.markdown .task-list-item-checkbox{position:absolute;cursor:pointer;width:18px;height:18px;margin:4px 0 0;left:-24px;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transition:all .35s ease;transition:all .35s ease}.markdown .task-list-item-checkbox:checked{-webkit-transform:rotate(0);transform:rotate(0)}.markdown .task-list-item-checkbox:checked:before{border:transparent;background-color:#38a169}.markdown .task-list-item-checkbox:checked:after{-webkit-transform:rotate(-45deg) scale(1);transform:rotate(-45deg) scale(1)}.markdown .task-list-item-checkbox:checked+.task-list-item-label{color:#888;background-color:#EAEAEA}@media (prefers-color-scheme:dark){.markdown .task-list-item-checkbox:checked+.task-list-item-label{background-color:#666;color:#999}}.markdown .task-list-item-checkbox:before{content:"";width:18px;height:18px;box-sizing:border-box;display:inline-block;border-width:1px;border-color:#EAEAEA;background-color:#fff;position:absolute;top:0;left:0;-webkit-transition:all .35s ease;transition:all .35s ease}@media (prefers-color-scheme:dark){.markdown .task-list-item-checkbox:before{border-color:#666;background-color:#888}}.markdown .task-list-item-checkbox:after{content:"";-webkit-transform:rotate(-45deg) scale(0);transform:rotate(-45deg) scale(0);width:9px;height:5px;border:1px solid #fff;border-top:none;border-right:none;position:absolute;display:inline-block;top:5px;left:5px;-webkit-transition:all .35s ease;transition:all .35s ease}.markdown .markdownIt-TOC{background-color:#ebf4ff;padding:2rem;margin-left:-1rem;margin-right:-1rem}@media (min-width:768px){.markdown .markdownIt-TOC{margin-left:-2rem;margin-right:-2rem}}.markdown .markdownIt-TOC li:before{content:''!important}.markdown .markdownIt-TOC li a{display:inline-block;margin-bottom:1rem}.post-toc-container .markdownIt-TOC{margin-left:-1rem}.post-toc-container .markdownIt-TOC ul{padding-left:1rem}.post-toc-container .markdownIt-TOC a{display:inline-block}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:block{display:block}.md\:hidden{display:none}.md\:flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.md\:order-1{-webkit-box-ordinal-group:2;order:1}.md\:order-2{-webkit-box-ordinal-group:3;order:2}.md\:h-32{height:8rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-8{margin-left:2rem;margin-right:2rem}.md\:mb-0{margin-bottom:0}.md\:ml-4{margin-left:1rem}.md\:px-0{padding-left:0;padding-right:0}.md\:py-1{padding-top:.25rem;padding-bottom:.25rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:pr-16{padding-right:4rem}.md\:pt-64{padding-top:16rem}.md\:text-left{text-align:left}.md\:w-56{width:14rem}}@media (prefers-color-scheme:dark){.markdown .markdownIt-TOC{background-color:#111}.markdown>h1,.markdown>h2,.markdown>h3,.markdown>h4,h1.markdown,h2.markdown,h3.markdown,h4.markdown{color:#EAEAEA}.dark\:bg-gray-500{background-color:#666}.dark\:bg-gray-600{background-color:#444}.dark\:bg-gray-700{background-color:#333}.dark\:bg-gray-800{background-color:#111}.dark\:bg-yellow-50{background-color:#ffd602}.dark\:bg-indigo-500{background-color:#667eea}.dark\:hover\:bg-black:hover{background-color:#000}.dark\:hover\:bg-gray-600:hover{background-color:#444}.dark\:border-gray-400{border-color:#888}.dark\:border-gray-600{border-color:#444}.dark\:border-gray-700{border-color:#333}.dark\:hover\:border-gray-200:hover{border-color:#EAEAEA}.dark\:text-gray-200{color:#EAEAEA}.dark\:text-gray-300{color:#999}.dark\:text-gray-700{color:#333}.dark\:hover\:text-white:hover{color:#fff}} \ No newline at end of file diff --git a/media/gridea.png b/media/gridea.png new file mode 100644 index 0000000..7b39ec6 Binary files /dev/null and b/media/gridea.png differ diff --git a/media/images/custom-wechat.png b/media/images/custom-wechat.png new file mode 100644 index 0000000..de011e0 Binary files /dev/null and b/media/images/custom-wechat.png differ diff --git a/media/prism.js b/media/prism.js new file mode 100644 index 0000000..490b82f --- /dev/null +++ b/media/prism.js @@ -0,0 +1,205 @@ +/* PrismJS 1.19.0 +https://prismjs.com/download.html#themes=prism-twilight&languages=markup+css+clike+javascript+abap+abnf+actionscript+ada+antlr4+apacheconf+apl+applescript+aql+arduino+arff+asciidoc+asm6502+aspnet+autohotkey+autoit+bash+basic+batch+bbcode+bison+bnf+brainfuck+brightscript+bro+c+csharp+cpp+cil+coffeescript+cmake+clojure+crystal+csp+css-extras+d+dart+diff+django+dns-zone-file+docker+ebnf+eiffel+ejs+elixir+elm+etlua+erb+erlang+fsharp+firestore-security-rules+flow+fortran+ftl+gcode+gdscript+gedcom+gherkin+git+glsl+gml+go+graphql+groovy+haml+handlebars+haskell+haxe+hcl+http+hpkp+hsts+ichigojam+icon+inform7+ini+io+j+java+javadoc+javadoclike+javastacktrace+jolie+jq+jsdoc+js-extras+js-templates+json+jsonp+json5+julia+keyman+kotlin+latex+latte+less+lilypond+liquid+lisp+livescript+lolcode+lua+makefile+markdown+markup-templating+matlab+mel+mizar+monkey+moonscript+n1ql+n4js+nand2tetris-hdl+nasm+neon+nginx+nim+nix+nsis+objectivec+ocaml+opencl+oz+parigp+parser+pascal+pascaligo+pcaxis+perl+php+phpdoc+php-extras+plsql+powershell+processing+prolog+properties+protobuf+pug+puppet+pure+python+q+qml+qore+r+jsx+tsx+renpy+reason+regex+rest+rip+roboconf+robotframework+ruby+rust+sas+sass+scss+scala+scheme+shell-session+smalltalk+smarty+solidity+soy+sparql+splunk-spl+sqf+sql+stylus+swift+tap+tcl+textile+toml+tt2+turtle+twig+typescript+t4-cs+t4-vb+t4-templating+vala+vbnet+velocity+verilog+vhdl+vim+visual-basic+wasm+wiki+xeora+xojo+xquery+yaml+zig */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,C={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof _?new _(e.type,C.util.encode(e.content),e.alias):Array.isArray(e)?e.map(C.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(k instanceof _)){if(h&&y!=n.length-1){if(c.lastIndex=v,!(O=c.exec(e)))break;for(var b=O.index+(f&&O[1]?O[1].length:0),w=O.index+O[0].length,A=y,P=v,x=n.length;A"+r.content+""},!u.document)return u.addEventListener&&(C.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,t=n.code,a=n.immediateClose;u.postMessage(C.highlight(t,C.languages[r],r)),a&&u.close()},!1)),C;var e=C.util.currentScript();if(e&&(C.filename=e.src,e.hasAttribute("data-manual")&&(C.manual=!0)),!C.manual){function r(){C.manual||C.highlightAll()}var t=document.readyState;"loading"===t||"interactive"===t&&e&&e.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)}return C}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:(?!)*\]\s*)?>/i,greedy:!0},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var n={"included-cdata":{pattern://i,inside:s}};n["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var t={};t[a]={pattern:RegExp("(<__[\\s\\S]*?>)(?:\\s*|[\\s\\S])*?(?=<\\/__>)".replace(/__/g,a),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",t)}}),Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +!function(s){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var e=s.languages.markup;e&&(e.tag.addInlined("style","css"),s.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:e.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:s.languages.css}},alias:"language-css"}},e.tag))}(Prism); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|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)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?[.?]?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*[\s\S]*?\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.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]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{"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:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.js=Prism.languages.javascript; +Prism.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:"string"},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:"comment"},keyword:{pattern:/(\s|\.|^)(?:SCIENTIFIC_WITH_LEADING_ZERO|SCALE_PRESERVING_SCIENTIFIC|RMC_COMMUNICATION_FAILURE|END-ENHANCEMENT-SECTION|MULTIPLY-CORRESPONDING|SUBTRACT-CORRESPONDING|VERIFICATION-MESSAGE|DIVIDE-CORRESPONDING|ENHANCEMENT-SECTION|CURRENCY_CONVERSION|RMC_SYSTEM_FAILURE|START-OF-SELECTION|MOVE-CORRESPONDING|RMC_INVALID_STATUS|CUSTOMER-FUNCTION|END-OF-DEFINITION|ENHANCEMENT-POINT|SYSTEM-EXCEPTIONS|ADD-CORRESPONDING|SCALE_PRESERVING|SELECTION-SCREEN|CURSOR-SELECTION|END-OF-SELECTION|LOAD-OF-PROGRAM|SCROLL-BOUNDARY|SELECTION-TABLE|EXCEPTION-TABLE|IMPLEMENTATIONS|PARAMETER-TABLE|RIGHT-JUSTIFIED|UNIT_CONVERSION|AUTHORITY-CHECK|LIST-PROCESSING|SIGN_AS_POSTFIX|COL_BACKGROUND|IMPLEMENTATION|INTERFACE-POOL|TRANSFORMATION|IDENTIFICATION|ENDENHANCEMENT|LINE-SELECTION|INITIALIZATION|LEFT-JUSTIFIED|SELECT-OPTIONS|SELECTION-SETS|COMMUNICATION|CORRESPONDING|DECIMAL_SHIFT|PRINT-CONTROL|VALUE-REQUEST|CHAIN-REQUEST|FUNCTION-POOL|FIELD-SYMBOLS|FUNCTIONALITY|INVERTED-DATE|SELECTION-SET|CLASS-METHODS|OUTPUT-LENGTH|CLASS-CODING|COL_NEGATIVE|ERRORMESSAGE|FIELD-GROUPS|HELP-REQUEST|NO-EXTENSION|NO-TOPOFPAGE|REDEFINITION|DISPLAY-MODE|ENDINTERFACE|EXIT-COMMAND|FIELD-SYMBOL|NO-SCROLLING|SHORTDUMP-ID|ACCESSPOLICY|CLASS-EVENTS|COL_POSITIVE|DECLARATIONS|ENHANCEMENTS|FILTER-TABLE|SWITCHSTATES|SYNTAX-CHECK|TRANSPORTING|ASYNCHRONOUS|SYNTAX-TRACE|TOKENIZATION|USER-COMMAND|WITH-HEADING|ABAP-SOURCE|BREAK-POINT|CHAIN-INPUT|COMPRESSION|FIXED-POINT|NEW-SECTION|NON-UNICODE|OCCURRENCES|RESPONSIBLE|SYSTEM-CALL|TRACE-TABLE|ABBREVIATED|CHAR-TO-HEX|END-OF-FILE|ENDFUNCTION|ENVIRONMENT|ASSOCIATION|COL_HEADING|EDITOR-CALL|END-OF-PAGE|ENGINEERING|IMPLEMENTED|INTENSIFIED|RADIOBUTTON|SYSTEM-EXIT|TOP-OF-PAGE|TRANSACTION|APPLICATION|CONCATENATE|DESTINATION|ENHANCEMENT|IMMEDIATELY|NO-GROUPING|PRECOMPILED|REPLACEMENT|TITLE-LINES|ACTIVATION|BYTE-ORDER|CLASS-POOL|CONNECTION|CONVERSION|DEFINITION|DEPARTMENT|EXPIRATION|INHERITING|MESSAGE-ID|NO-HEADING|PERFORMING|QUEUE-ONLY|RIGHTSPACE|SCIENTIFIC|STATUSINFO|STRUCTURES|SYNCPOINTS|WITH-TITLE|ATTRIBUTES|BOUNDARIES|CLASS-DATA|COL_NORMAL|DD\/MM\/YYYY|DESCENDING|INTERFACES|LINE-COUNT|MM\/DD\/YYYY|NON-UNIQUE|PRESERVING|SELECTIONS|STATEMENTS|SUBROUTINE|TRUNCATION|TYPE-POOLS|ARITHMETIC|BACKGROUND|ENDPROVIDE|EXCEPTIONS|IDENTIFIER|INDEX-LINE|OBLIGATORY|PARAMETERS|PERCENTAGE|PUSHBUTTON|RESOLUTION|COMPONENTS|DEALLOCATE|DISCONNECT|DUPLICATES|FIRST-LINE|HEAD-LINES|NO-DISPLAY|OCCURRENCE|RESPECTING|RETURNCODE|SUBMATCHES|TRACE-FILE|ASCENDING|BYPASSING|ENDMODULE|EXCEPTION|EXCLUDING|EXPORTING|INCREMENT|MATCHCODE|PARAMETER|PARTIALLY|PREFERRED|REFERENCE|REPLACING|RETURNING|SELECTION|SEPARATED|SPECIFIED|STATEMENT|TIMESTAMP|TYPE-POOL|ACCEPTING|APPENDAGE|ASSIGNING|COL_GROUP|COMPARING|CONSTANTS|DANGEROUS|IMPORTING|INSTANCES|LEFTSPACE|LOG-POINT|QUICKINFO|READ-ONLY|SCROLLING|SQLSCRIPT|STEP-LOOP|TOP-LINES|TRANSLATE|APPENDING|AUTHORITY|CHARACTER|COMPONENT|CONDITION|DIRECTORY|DUPLICATE|MESSAGING|RECEIVING|SUBSCREEN|ACCORDING|COL_TOTAL|END-LINES|ENDMETHOD|ENDSELECT|EXPANDING|EXTENSION|INCLUDING|INFOTYPES|INTERFACE|INTERVALS|LINE-SIZE|PF-STATUS|PROCEDURE|PROTECTED|REQUESTED|RESUMABLE|RIGHTPLUS|SAP-SPOOL|SECONDARY|STRUCTURE|SUBSTRING|TABLEVIEW|NUMOFCHAR|ADJACENT|ANALYSIS|ASSIGNED|BACKWARD|CHANNELS|CHECKBOX|CONTINUE|CRITICAL|DATAINFO|DD\/MM\/YY|DURATION|ENCODING|ENDCLASS|FUNCTION|LEFTPLUS|LINEFEED|MM\/DD\/YY|OVERFLOW|RECEIVED|SKIPPING|SORTABLE|STANDARD|SUBTRACT|SUPPRESS|TABSTRIP|TITLEBAR|TRUNCATE|UNASSIGN|WHENEVER|ANALYZER|COALESCE|COMMENTS|CONDENSE|DECIMALS|DEFERRED|ENDWHILE|EXPLICIT|KEYWORDS|MESSAGES|POSITION|PRIORITY|RECEIVER|RENAMING|TIMEZONE|TRAILING|ALLOCATE|CENTERED|CIRCULAR|CONTROLS|CURRENCY|DELETING|DESCRIBE|DISTANCE|ENDCATCH|EXPONENT|EXTENDED|GENERATE|IGNORING|INCLUDES|INTERNAL|MAJOR-ID|MODIFIER|NEW-LINE|OPTIONAL|PROPERTY|ROLLBACK|STARTING|SUPPLIED|ABSTRACT|CHANGING|CONTEXTS|CREATING|CUSTOMER|DATABASE|DAYLIGHT|DEFINING|DISTINCT|DIVISION|ENABLING|ENDCHAIN|ESCAPING|HARMLESS|IMPLICIT|INACTIVE|LANGUAGE|MINOR-ID|MULTIPLY|NEW-PAGE|NO-TITLE|POS_HIGH|SEPARATE|TEXTPOOL|TRANSFER|SELECTOR|DBMAXLEN|ITERATOR|SELECTOR|ARCHIVE|BIT-XOR|BYTE-CO|COLLECT|COMMENT|CURRENT|DEFAULT|DISPLAY|ENDFORM|EXTRACT|LEADING|LISTBOX|LOCATOR|MEMBERS|METHODS|NESTING|POS_LOW|PROCESS|PROVIDE|RAISING|RESERVE|SECONDS|SUMMARY|VISIBLE|BETWEEN|BIT-AND|BYTE-CS|CLEANUP|COMPUTE|CONTROL|CONVERT|DATASET|ENDCASE|FORWARD|HEADERS|HOTSPOT|INCLUDE|INVERSE|KEEPING|NO-ZERO|OBJECTS|OVERLAY|PADDING|PATTERN|PROGRAM|REFRESH|SECTION|SUMMING|TESTING|VERSION|WINDOWS|WITHOUT|BIT-NOT|BYTE-CA|BYTE-NA|CASTING|CONTEXT|COUNTRY|DYNAMIC|ENABLED|ENDLOOP|EXECUTE|FRIENDS|HANDLER|HEADING|INITIAL|\*-INPUT|LOGFILE|MAXIMUM|MINIMUM|NO-GAPS|NO-SIGN|PRAGMAS|PRIMARY|PRIVATE|REDUCED|REPLACE|REQUEST|RESULTS|UNICODE|WARNING|ALIASES|BYTE-CN|BYTE-NS|CALLING|COL_KEY|COLUMNS|CONNECT|ENDEXEC|ENTRIES|EXCLUDE|FILTERS|FURTHER|HELP-ID|LOGICAL|MAPPING|MESSAGE|NAMETAB|OPTIONS|PACKAGE|PERFORM|RECEIVE|STATICS|VARYING|BINDING|CHARLEN|GREATER|XSTRLEN|ACCEPT|APPEND|DETAIL|ELSEIF|ENDING|ENDTRY|FORMAT|FRAMES|GIVING|HASHED|HEADER|IMPORT|INSERT|MARGIN|MODULE|NATIVE|OBJECT|OFFSET|REMOTE|RESUME|SAVING|SIMPLE|SUBMIT|TABBED|TOKENS|UNIQUE|UNPACK|UPDATE|WINDOW|YELLOW|ACTUAL|ASPECT|CENTER|CURSOR|DELETE|DIALOG|DIVIDE|DURING|ERRORS|EVENTS|EXTEND|FILTER|HANDLE|HAVING|IGNORE|LITTLE|MEMORY|NO-GAP|OCCURS|OPTION|PERSON|PLACES|PUBLIC|REDUCE|REPORT|RESULT|SINGLE|SORTED|SWITCH|SYNTAX|TARGET|VALUES|WRITER|ASSERT|BLOCKS|BOUNDS|BUFFER|CHANGE|COLUMN|COMMIT|CONCAT|COPIES|CREATE|DDMMYY|DEFINE|ENDIAN|ESCAPE|EXPAND|KERNEL|LAYOUT|LEGACY|LEVELS|MMDDYY|NUMBER|OUTPUT|RANGES|READER|RETURN|SCREEN|SEARCH|SELECT|SHARED|SOURCE|STABLE|STATIC|SUBKEY|SUFFIX|TABLES|UNWIND|YYMMDD|ASSIGN|BACKUP|BEFORE|BINARY|BIT-OR|BLANKS|CLIENT|CODING|COMMON|DEMAND|DYNPRO|EXCEPT|EXISTS|EXPORT|FIELDS|GLOBAL|GROUPS|LENGTH|LOCALE|MEDIUM|METHOD|MODIFY|NESTED|OTHERS|REJECT|SCROLL|SUPPLY|SYMBOL|ENDFOR|STRLEN|ALIGN|BEGIN|BOUND|ENDAT|ENTRY|EVENT|FINAL|FLUSH|GRANT|INNER|SHORT|USING|WRITE|AFTER|BLACK|BLOCK|CLOCK|COLOR|COUNT|DUMMY|EMPTY|ENDDO|ENDON|GREEN|INDEX|INOUT|LEAVE|LEVEL|LINES|MODIF|ORDER|OUTER|RANGE|RESET|RETRY|RIGHT|SMART|SPLIT|STYLE|TABLE|THROW|UNDER|UNTIL|UPPER|UTF-8|WHERE|ALIAS|BLANK|CLEAR|CLOSE|EXACT|FETCH|FIRST|FOUND|GROUP|LLANG|LOCAL|OTHER|REGEX|SPOOL|TITLE|TYPES|VALID|WHILE|ALPHA|BOXED|CATCH|CHAIN|CHECK|CLASS|COVER|ENDIF|EQUIV|FIELD|FLOOR|FRAME|INPUT|LOWER|MATCH|NODES|PAGES|PRINT|RAISE|ROUND|SHIFT|SPACE|SPOTS|STAMP|STATE|TASKS|TIMES|TRMAC|ULINE|UNION|VALUE|WIDTH|EQUAL|LOG10|TRUNC|BLOB|CASE|CEIL|CLOB|COND|EXIT|FILE|GAPS|HOLD|INCL|INTO|KEEP|KEYS|LAST|LINE|LONG|LPAD|MAIL|MODE|OPEN|PINK|READ|ROWS|TEST|THEN|ZERO|AREA|BACK|BADI|BYTE|CAST|EDIT|EXEC|FAIL|FIND|FKEQ|FONT|FREE|GKEQ|HIDE|INIT|ITNO|LATE|LOOP|MAIN|MARK|MOVE|NEXT|NULL|RISK|ROLE|UNIT|WAIT|ZONE|BASE|CALL|CODE|DATA|DATE|FKGE|GKGE|HIGH|KIND|LEFT|LIST|MASK|MESH|NAME|NODE|PACK|PAGE|POOL|SEND|SIGN|SIZE|SOME|STOP|TASK|TEXT|TIME|USER|VARY|WITH|WORD|BLUE|CONV|COPY|DEEP|ELSE|FORM|FROM|HINT|ICON|JOIN|LIKE|LOAD|ONLY|PART|SCAN|SKIP|SORT|TYPE|UNIX|VIEW|WHEN|WORK|ACOS|ASIN|ATAN|COSH|EACH|FRAC|LESS|RTTI|SINH|SQRT|TANH|AVG|BIT|DIV|ISO|LET|OUT|PAD|SQL|ALL|CI_|CPI|END|LOB|LPI|MAX|MIN|NEW|OLE|RUN|SET|\?TO|YES|ABS|ADD|AND|BIG|FOR|HDB|JOB|LOW|NOT|SAP|TRY|VIA|XML|ANY|GET|IDS|KEY|MOD|OFF|PUT|RAW|RED|REF|SUM|TAB|XSD|CNT|COS|EXP|LOG|SIN|TAN|XOR|AT|CO|CP|DO|GT|ID|IF|NS|OR|BT|CA|CS|GE|NA|NB|EQ|IN|LT|NE|NO|OF|ON|PF|TO|AS|BY|CN|IS|LE|NP|UP|E|I|M|O|Z|C|X)\b/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:"keyword"},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:"punctuation"},{pattern:/[|{}]/,alias:"punctuation"}],punctuation:/[,.:()]/}; +!function(n){var i="(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)";Prism.languages.abnf={comment:/;.*/,string:{pattern:/(?:%[is])?"[^"\n\r]*"/,greedy:!0,inside:{punctuation:/^%[is]/}},range:{pattern:/%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i,alias:"number"},terminal:{pattern:/%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i,alias:"number"},repetition:{pattern:/(^|[^\w-])(?:\d*\*\d*|\d+)/,lookbehind:!0,alias:"operator"},definition:{pattern:/(^[ \t]*)(?:[a-z][\w-]*|<[^>\r\n]*>)(?=\s*=)/m,lookbehind:!0,alias:"keyword",inside:{punctuation:/<|>/}},"core-rule":{pattern:RegExp("(?:(^|[^<\\w-])"+i+"|<"+i+">)(?![\\w-])","i"),lookbehind:!0,alias:["rule","constant"],inside:{punctuation:/<|>/}},rule:{pattern:/(^|[^<\w-])[a-z][\w-]*|<[^>\r\n]*>/i,lookbehind:!0,inside:{punctuation:/<|>/}},operator:/=\/?|\//,punctuation:/[()\[\]]/}}(); +Prism.languages.actionscript=Prism.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),Prism.languages.actionscript["class-name"].alias="function",Prism.languages.markup&&Prism.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:Prism.languages.markup}}); +Prism.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/i,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],"attr-name":/\b'\w+/i,keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|new|return|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|not|null|of|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:true|false)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:[_a-z\d])*\b/i}; +Prism.languages.antlr4={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,string:{pattern:/'(?:\\.|[^\\'\r\n])*'/,greedy:!0},"character-class":{pattern:/\[(?:\\.|[^\\\]\r\n])*\]/,greedy:!0,alias:"regex",inside:{range:{pattern:/([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/,lookbehind:!0,alias:"punctuation"},escape:/\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/,punctuation:/[\[\]]/}},action:{pattern:/\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/,greedy:!0,inside:{content:{pattern:/(\{)[\s\S]+(?=\})/,lookbehind:!0},punctuation:/[{}]/}},command:{pattern:/(->\s*)(?:\s*(?:,\s*)?[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i,lookbehind:!0,inside:{function:/\b\w+(?=\s*(?:[,(]|$))/,punctuation:/[,()]/}},annotation:{pattern:/@\w+(?:::\w+)*/,alias:"keyword"},label:{pattern:/#[ \t]*\w+/,alias:"punctuation"},keyword:/\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/,definition:[{pattern:/\b[a-z]\w*(?=\s*:)/,alias:["rule","class-name"]},{pattern:/\b[A-Z]\w*(?=\s*:)/,alias:["token","constant"]}],constant:/\b[A-Z][A-Z_]*\b/,operator:/\.\.|->|[|~]|[*+?]\??/,punctuation:/[;:()=]/},Prism.languages.g4=Prism.languages.antlr4; +Prism.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^\s*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|Type|UserFile|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferSize|BufferedLogs|CGIDScriptTimeout|CGIMapExtension|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DTracePrivileges|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtFilterDefine|ExtFilterOptions|ExtendedStatus|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|KeepAlive|KeepAliveTimeout|KeptBodySize|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|LanguagePriority|Limit(?:InternalRecursion|Request(?:Body|FieldSize|Fields|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|MMapFile|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|ModMimeUsePathInfo|ModemStandard|MultiviewsMatch|Mutex|NWSSLTrustedCerts|NWSSLUpgradeable|NameVirtualHost|NoProxy|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|RLimitCPU|RLimitMEM|RLimitNPROC|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|SSIETag|SSIEndTag|SSIErrorMsg|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|SRPUnknownUserSeed|SRPVerifierFile|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UseStapling|UserName|VerifyClient|VerifyDepth)|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadStackSize|ThreadsPerChild|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b *.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:\w,?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}; +Prism.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:\d*\.?\d+(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:"function"},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:"operator"},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺]/,alias:"operator"},assignment:{pattern:/←/,alias:"keyword"},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:"builtin"}}; +Prism.languages.applescript={comment:[/\(\*(?:\(\*[\s\S]*?\*\)|[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/}; +Prism.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*{)/i}],function:/(?!\d)\w+(?=\s*\()/,boolean:/(?:true|false)/i,range:{pattern:/\.\./,alias:"operator"},number:/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i,operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/}; +Prism.languages.c=Prism.languages.extend("clike",{"class-name":{pattern:/(\b(?:enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,number:/(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c.boolean; +Prism.languages.cpp=Prism.languages.extend("c",{"class-name":{pattern:/(\b(?:class|enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),Prism.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}); +Prism.languages.arduino=Prism.languages.extend("cpp",{keyword:/\b(?:setup|if|else|while|do|for|return|in|instanceof|default|function|loop|goto|switch|case|new|try|throw|catch|finally|null|break|continue|boolean|bool|void|byte|word|string|String|array|int|long|integer|double)\b/,builtin:/\b(?:KeyboardController|MouseController|SoftwareSerial|EthernetServer|EthernetClient|LiquidCrystal|LiquidCrystal_I2C|RobotControl|GSMVoiceCall|EthernetUDP|EsploraTFT|HttpClient|RobotMotor|WiFiClient|GSMScanner|FileSystem|Scheduler|GSMServer|YunClient|YunServer|IPAddress|GSMClient|GSMModem|Keyboard|Ethernet|Console|GSMBand|Esplora|Stepper|Process|WiFiUDP|GSM_SMS|Mailbox|USBHost|Firmata|PImage|Client|Server|GSMPIN|FileIO|Bridge|Serial|EEPROM|Stream|Mouse|Audio|Servo|File|Task|GPRS|WiFi|Wire|TFT|GSM|SPI|SD|runShellCommandAsynchronously|analogWriteResolution|retrieveCallingNumber|printFirmwareVersion|analogReadResolution|sendDigitalPortPair|noListenOnLocalhost|readJoystickButton|setFirmwareVersion|readJoystickSwitch|scrollDisplayRight|getVoiceCallStatus|scrollDisplayLeft|writeMicroseconds|delayMicroseconds|beginTransmission|getSignalStrength|runAsynchronously|getAsynchronously|listenOnLocalhost|getCurrentCarrier|readAccelerometer|messageAvailable|sendDigitalPorts|lineFollowConfig|countryNameWrite|runShellCommand|readStringUntil|rewindDirectory|readTemperature|setClockDivider|readLightSensor|endTransmission|analogReference|detachInterrupt|countryNameRead|attachInterrupt|encryptionType|readBytesUntil|robotNameWrite|readMicrophone|robotNameRead|cityNameWrite|userNameWrite|readJoystickY|readJoystickX|mouseReleased|openNextFile|scanNetworks|noInterrupts|digitalWrite|beginSpeaker|mousePressed|isActionDone|mouseDragged|displayLogos|noAutoscroll|addParameter|remoteNumber|getModifiers|keyboardRead|userNameRead|waitContinue|processInput|parseCommand|printVersion|readNetworks|writeMessage|blinkVersion|cityNameRead|readMessage|setDataMode|parsePacket|isListening|setBitOrder|beginPacket|isDirectory|motorsWrite|drawCompass|digitalRead|clearScreen|serialEvent|rightToLeft|setTextSize|leftToRight|requestFrom|keyReleased|compassRead|analogWrite|interrupts|WiFiServer|disconnect|playMelody|parseFloat|autoscroll|getPINUsed|setPINUsed|setTimeout|sendAnalog|readSlider|analogRead|beginWrite|createChar|motorsStop|keyPressed|tempoWrite|readButton|subnetMask|debugPrint|macAddress|writeGreen|randomSeed|attachGPRS|readString|sendString|remotePort|releaseAll|mouseMoved|background|getXChange|getYChange|answerCall|getResult|voiceCall|endPacket|constrain|getSocket|writeJSON|getButton|available|connected|findUntil|readBytes|exitValue|readGreen|writeBlue|startLoop|IPAddress|isPressed|sendSysex|pauseMode|gatewayIP|setCursor|getOemKey|tuneWrite|noDisplay|loadImage|switchPIN|onRequest|onReceive|changePIN|playFile|noBuffer|parseInt|overflow|checkPIN|knobRead|beginTFT|bitClear|updateIR|bitWrite|position|writeRGB|highByte|writeRed|setSpeed|readBlue|noStroke|remoteIP|transfer|shutdown|hangCall|beginSMS|endWrite|attached|maintain|noCursor|checkReg|checkPUK|shiftOut|isValid|shiftIn|pulseIn|connect|println|localIP|pinMode|getIMEI|display|noBlink|process|getBand|running|beginSD|drawBMP|lowByte|setBand|release|bitRead|prepare|pointTo|readRed|setMode|noFill|remove|listen|stroke|detach|attach|noTone|exists|buffer|height|bitSet|circle|config|cursor|random|IRread|setDNS|endSMS|getKey|micros|millis|begin|print|write|ready|flush|width|isPIN|blink|clear|press|mkdir|rmdir|close|point|yield|image|BSSID|click|delay|read|text|move|peek|beep|rect|line|open|seek|fill|size|turn|stop|home|find|step|tone|sqrt|RSSI|SSID|end|bit|tan|cos|sin|pow|map|abs|max|min|get|run|put)\b/,constant:/\b(?:DIGITAL_MESSAGE|FIRMATA_STRING|ANALOG_MESSAGE|REPORT_DIGITAL|REPORT_ANALOG|INPUT_PULLUP|SET_PIN_MODE|INTERNAL2V56|SYSTEM_RESET|LED_BUILTIN|INTERNAL1V1|SYSEX_START|INTERNAL|EXTERNAL|DEFAULT|OUTPUT|INPUT|HIGH|LOW)\b/}); +Prism.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}; +!function(t){var n={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\]\\]|\\.)*\]|[^\]\\]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},a=t.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1/m,alias:"comment"},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?!\|)(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*])?(?:[<^>](?:\.[<^>])?|\.[<^>])?[a-z]*)(?=\|)/,alias:"attr-value"},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})(?:\r?\n|\r)(?:[\s\S]*(?:\r?\n|\r))??\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:"punctuation"},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:"symbol"},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} +.+|^\.(?![\s.]).*/m,alias:"important",inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:"tag"},attributes:n,hr:{pattern:/^'{3,}$/m,alias:"punctuation"},"page-break":{pattern:/^<{3,}$/m,alias:"punctuation"},admonition:{pattern:/^(?:TIP|NOTE|IMPORTANT|WARNING|CAUTION):/m,alias:"keyword"},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:"symbol"},{pattern:/<\d+>/,alias:"symbol"}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:(?:\S+)??\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"]|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:n.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"]|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?: ['`]|.)+?(?:(?:\r?\n|\r)(?: ['`]|.)+?)*['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"]|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:n,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|TM|R)\)/,alias:"builtin"},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:"punctuation"}};function i(t){for(var n={},i=0,e=(t=t.split(" ")).length;i>=?|<<=?|[-=]>|([-+&|?])\1|~|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),Prism.languages.insertBefore("csharp","class-name",{"generic-method":{pattern:/\w+\s*<[^>\r\n]+?>\s*(?=\()/,inside:{function:/^\w+/,"class-name":{pattern:/\b[A-Z]\w*(?:\.\w+)*\b/,inside:{punctuation:/\./}},keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp; +Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/i,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:Prism.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/i,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/i,alias:"tag"},rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{directive:Prism.languages.aspnet.directive},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp-script":{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:Prism.languages.csharp||{}}}); +Prism.languages.autohotkey={comment:{pattern:/(^[^";\n]*(?:"[^"\n]*?"[^"\n]*?)*)(?:;.*$|^\s*\/\*[\s\S]*\n\*\/)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/m,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+?(?=\()/m,tag:/^[ \t]*[^\s:]+?(?=:(?:[^:]|$))/m,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,punctuation:/[{}[\]():,]/,boolean:/\b(?:true|false)\b/,selector:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|cos|dllcall|exp|fileexist|Fileopen|floor|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|IsObject|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|strsplit|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__New|__Call|__Get|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,important:/#\b(?:AllowSameLineComments|ClipboardTimeout|CommentFlag|ErrorStdOut|EscapeChar|HotkeyInterval|HotkeyModifierTimeout|Hotstring|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Include|IncludeAgain|InstallKeybdHook|InstallMouseHook|KeyHistory|LTrim|MaxHotkeysPerInterval|MaxMem|MaxThreads|MaxThreadsBuffer|MaxThreadsPerHotkey|NoEnv|NoTrayIcon|Persistent|SingleInstance|UseHook|WinActivateForce)\b/i,keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Region|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|TryAgain|Type|UnCheck|underline|Unicode|Unlock|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i}; +Prism.languages.autoit={comment:[/;.*/,{pattern:/(^\s*)#(?:comments-start|cs)[\s\S]*?^\s*#(?:comments-end|ce)/m,lookbehind:!0}],url:{pattern:/(^\s*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^\s*)#\w+/m,lookbehind:!0,alias:"keyword"},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:True|False)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Or|Not)\b/i,punctuation:/[\[\]().,:]/}; +!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={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}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};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*(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s*(?:\r?\n|\r)[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:n}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|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|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|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|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;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\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}};for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],r=n.variable[1].inside,s=0;s?^_ +\-.A-Z\d])*"/i,greedy:!0},number:/(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}; +!function(e){var r=/%%?[~:\w]+%?|!\S+!/,t={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},n=/"[^"]*"/,i=/(?:\b|-)\d+\b/;Prism.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/^for\b|\b(?:in|do)\b/i,string:n,parameter:t,variable:r,number:i,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: ?\/[a-z?](?:[ :](?:"[^"]*"|\S+))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|\S+)?(?:==| (?:equ|neq|lss|leq|gtr|geq) )(?:"[^"]*"|\S+))/im,lookbehind:!0,inside:{keyword:/^if\b|\b(?:not|cmdextversion|defined|errorlevel|exist)\b/i,string:n,parameter:t,variable:r,number:i,operator:/\^|==|\b(?:equ|neq|lss|leq|gtr|geq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: ?\/[a-z](?:[ :](?:"[^"]*"|\S+))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:n,parameter:t,variable:[r,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:i,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^\w+\b/i,string:n,parameter:t,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:r,number:i,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(); +Prism.languages.bbcode={tag:{pattern:/\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))*\s*\]/,inside:{tag:{pattern:/^\[\/?[^\s=\]]+/,inside:{punctuation:/^\[\/?/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\]/,"attr-name":/[^\s=\]]+/}}}; +Prism.languages.bison=Prism.languages.extend("c",{}),Prism.languages.insertBefore("bison","comment",{bison:{pattern:/^[\s\S]*?%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:"punctuation"},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:"variable",inside:{punctuation:/<|>/}},rest:Prism.languages.c}},comment:Prism.languages.c.comment,string:Prism.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}}); +Prism.languages.bnf={string:{pattern:/"[^\r\n"]*"|'[^\r\n']*'/},definition:{pattern:/<[^<>\r\n\t]+>(?=\s*::=)/,alias:["rule","keyword"],inside:{punctuation:/^<|>$/}},rule:{pattern:/<[^<>\r\n\t]+>/,inside:{punctuation:/^<|>$/}},operator:/::=|[|()[\]{}*+?]|\.{3}/},Prism.languages.rbnf=Prism.languages.bnf; +Prism.languages.brainfuck={pointer:{pattern:/<|>/,alias:"keyword"},increment:{pattern:/\+/,alias:"inserted"},decrement:{pattern:/-/,alias:"deleted"},branching:{pattern:/\[|\]/,alias:"important"},operator:/[.,]/,comment:/\S+/}; +Prism.languages.brightscript={comment:/(?:\brem|').*/i,"directive-statement":{pattern:/(^[\t ]*)#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if).*/im,lookbehind:!0,alias:"property",inside:{"error-message":{pattern:/(^#error).+/,lookbehind:!0},directive:{pattern:/^#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if)/,alias:"keyword"},expression:{pattern:/[\s\S]+/,inside:null}}},property:{pattern:/([\r\n{,][\t ]*)(?:(?!\d)\w+|"(?:[^"\r\n]|"")*"(?!"))(?=[ \t]*:)/,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},"class-name":{pattern:/(\bAs[\t ]+)\w+/i,lookbehind:!0},keyword:/\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\b/i,boolean:/\b(?:true|false)\b/i,function:/\b(?!\d)\w+(?=[\t ]*\()/i,number:/(?:\b\d+(?:\.\d+)?(?:[ed][+-]\d+)?|&h[a-f\d]+)\b[%&!#]?/i,operator:/--|\+\+|>>=?|<<=?|<>|[-+*/\\<>]=?|[:^=?]|\b(?:and|mod|not|or)\b/i,punctuation:/[.,;()[\]{}]/,constant:/\b(?:LINE_NUM)\b/i},Prism.languages.brightscript["directive-statement"].inside.expression.inside=Prism.languages.brightscript; +Prism.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:TODO|FIXME|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(?:function|hook|event) \w+(?:::\w+)?/,inside:{keyword:/^(?:function|hook|event)/}},variable:{pattern:/(?:global|local) \w+/i,inside:{keyword:/(?:global|local)/}},builtin:/(?:@(?:load(?:-(?:sigs|plugin))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|group|error_handler|type_column))/,constant:{pattern:/const \w+/i,inside:{keyword:/const/}},keyword:/\b(?:break|next|continue|alarm|using|of|add|delete|export|print|return|schedule|when|timeout|addr|any|bool|count|double|enum|file|int|interval|pattern|opaque|port|record|set|string|subnet|table|time|vector|for|if|else|in|module|function)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}; +Prism.languages.cil={comment:/\/\/.*/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},directive:{pattern:/(^|\W)\.[a-z]+(?=\s)/,lookbehind:!0,alias:"class-name"},variable:/\[[\w\.]+\]/,keyword:/\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|iant|idispatch|implements|import|initonly|instance|u?int(?:8|16|32|64)?|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\b/,function:/\b(?:(?:constrained|unaligned|volatile|readonly|tail|no)\.)?(?:conv\.(?:[iu][1248]?|ovf\.[iu][1248]?(?:\.un)?|r\.un|r4|r8)|ldc\.(?:i4(?:\.[0-9]+|\.[mM]1|\.s)?|i8|r4|r8)|ldelem(?:\.[iu][1248]?|\.r[48]|\.ref|a)?|ldind\.(?:[iu][1248]?|r[48]|ref)|stelem\.?(?:i[1248]?|r[48]|ref)?|stind\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\.[0-3s]|a(?:\.s)?)?|ldloc(?:\.[0-9]+|\.s)?|sub(?:\.ovf(?:\.un)?)?|mul(?:\.ovf(?:\.un)?)?|add(?:\.ovf(?:\.un)?)?|stloc(?:\.[0-3s])?|refany(?:type|val)|blt(?:\.un)?(?:\.s)?|ble(?:\.un)?(?:\.s)?|bgt(?:\.un)?(?:\.s)?|bge(?:\.un)?(?:\.s)?|unbox(?:\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\.s)?|bne\.un(?:\.s)?|ldloca(?:\.s)?|brzero(?:\.s)?|brtrue(?:\.s)?|brnull(?:\.s)?|brinst(?:\.s)?|starg(?:\.s)?|leave(?:\.s)?|shr(?:\.un)?|rem(?:\.un)?|div(?:\.un)?|clt(?:\.un)?|alignment|ldvirtftn|castclass|beq(?:\.s)?|mkrefany|localloc|ckfinite|rethrow|ldtoken|ldsflda|cgt\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stloc|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|clt|cgt|ceq|box|and|or|br)\b/,boolean:/\b(?:true|false)\b/,number:/\b-?(?:0x[0-9a-fA-F]+|[0-9]+)(?:\.[0-9a-fA-F]+)?\b/i,punctuation:/[{}[\];(),:=]|IL_[0-9A-Za-z]+/}; +!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(Prism); +Prism.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\${(?:[^{}$]|\${[^{}$]*})*}/,inside:{punctuation:/\${|}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?|(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT)|(?:CTEST_CUSTOM_(?:MAXIMUM_(?:(?:FAIL|PASS)ED_TEST_OUTPUT_SIZE|NUMBER_OF_(?:ERROR|WARNING)S)|ERROR_(?:P(?:OST|RE)_CONTEXT|EXCEPTION|MATCH)|P(?:OST|RE)_MEMCHECK|WARNING_(?:EXCEPTION|MATCH)|(?:MEMCHECK|TESTS)_IGNORE|P(?:OST|RE)_TEST|COVERAGE_EXCLUDE)|ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ARCHIVE_OUTPUT_NAME|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEBUG_POSTFIX|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:ON|OFF|TRUE|FALSE)\b/,namespace:/\b(?:PROPERTIES|SHARED|PRIVATE|STATIC|PUBLIC|INTERFACE|TARGET_OBJECTS)\b/,operator:/\b(?:NOT|AND|OR|MATCHES|LESS|GREATER|EQUAL|STRLESS|STRGREATER|STREQUAL|VERSION_LESS|VERSION_EQUAL|VERSION_GREATER|DEFINED)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:"class-name"},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/}; +Prism.languages.clojure={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},operator:/(?:::|[:|'])\b[a-z][\w*+!?-]*\b/i,keyword:{pattern:/([^\w+*'?-])(?:def|if|do|let|\.\.|quote|var|->>|->|fn|loop|recur|throw|try|monitor-enter|\.|new|set!|def\-|defn|defn\-|defmacro|defmulti|defmethod|defstruct|defonce|declare|definline|definterface|defprotocol|==|defrecord|>=|deftype|<=|defproject|ns|\*|\+|\-|\/|<|=|>|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|conj|cons|constantly|cond|if-not|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|deref|difference|disj|dissoc|distinct|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|for|fnseq|frest|gensym|get-proxy-class|get|hash-map|hash-set|identical\?|identity|if-let|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|line-seq|list\*|list|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|time|to-array|to-array-2d|tree-seq|true\?|union|up|update-proxy|val|vals|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[^\w+*'?-])/,lookbehind:!0},boolean:/\b(?:true|false|nil)\b/,number:/\b[\da-f]+\b/i,punctuation:/[{}\[\](),]/}; +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[.+?]|\\.|[^/\\\r\n])+\/[gim]{0,3}(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}],e.languages.rb=e.languages.ruby}(Prism); +!function(e){e.languages.crystal=e.languages.extend("ruby",{keyword:[/\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|select|self|sizeof|struct|super|then|type|typeof|uninitialized|union|unless|until|when|while|with|yield|__DIR__|__END_LINE__|__FILE__|__LINE__)\b/,{pattern:/(\.\s*)(?:is_a|responds_to)\?/,lookbehind:!0}],number:/\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\da-fA-F_]*[\da-fA-F]|(?:\d(?:[\d_]*\d)?)(?:\.[\d_]*\d)?(?:[eE][+-]?[\d_]*\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\b/}),e.languages.insertBefore("crystal","string",{attribute:{pattern:/@\[.+?\]/,alias:"attr-name",inside:{delimiter:{pattern:/^@\[|\]$/,alias:"tag"},rest:e.languages.crystal}},expansion:[{pattern:/\{\{.+?\}\}/,inside:{delimiter:{pattern:/^\{\{|\}\}$/,alias:"tag"},rest:e.languages.crystal}},{pattern:/\{%.+?%\}/,inside:{delimiter:{pattern:/^\{%|%\}$/,alias:"tag"},rest:e.languages.crystal}}]})}(Prism); +Prism.languages.csp={directive:{pattern:/\b(?:(?:base-uri|form-action|frame-ancestors|plugin-types|referrer|reflected-xss|report-to|report-uri|require-sri-for|sandbox) |(?:block-all-mixed-content|disown-opener|upgrade-insecure-requests)(?: |;)|(?:child|connect|default|font|frame|img|manifest|media|object|script|style|worker)-src )/i,alias:"keyword"},safe:{pattern:/'(?:self|none|strict-dynamic|(?:nonce-|sha(?:256|384|512)-)[a-zA-Z\d+=/]+)'/,alias:"selector"},unsafe:{pattern:/(?:'unsafe-inline'|'unsafe-eval'|'unsafe-hashed-attributes'|\*)/,alias:"function"}}; +!function(e){e.languages.css.selector={pattern:e.languages.css.selector,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-:.\w]+/,id:/#[-:.\w]+/,attribute:{pattern:/\[(?:[^[\]"']|("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1)*\]/,greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)[-*\w\xA0-\uFFFF]*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},attribute:{pattern:/^(\s*)[-\w\xA0-\uFFFF]+/,lookbehind:!0},value:[/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,{pattern:/(=\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}],punctuation:/[()]/}},e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*/i,lookbehind:!0}});var a={pattern:/(\d)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?\d*\.?\d+/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#(?:[\da-f]{1,2}){3,4}\b/i,alias:"color"},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|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)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:a,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:a,number:n})}(Prism); +Prism.languages.d=Prism.languages.extend("clike",{comment:[{pattern:/^\s*#!.+/,greedy:!0},{pattern:RegExp("(^|[^\\\\])(?:"+["\\/\\+(?:\\/\\+[\\s\\S]*?\\+\\/|(?!\\/\\+)[\\s\\S])*?\\+\\/","\\/\\/.*","\\/\\*[\\s\\S]*?\\*\\/"].join("|")+")"),lookbehind:!0,greedy:!0}],string:[{pattern:RegExp(['\\b[rx]"(?:\\\\[\\s\\S]|[^\\\\"])*"[cwd]?','\\bq"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})"','\\bq"((?!\\d)\\w+)$[\\s\\S]*?^\\1"','\\bq"(.)[\\s\\S]*?\\2"',"'(?:\\\\(?:\\W|\\w+)|[^\\\\])'",'(["`])(?:\\\\[\\s\\S]|(?!\\3)[^\\\\])*\\3[cwd]?'].join("|"),"m"),greedy:!0},{pattern:/\bq\{(?:\{[^{}]*\}|[^{}])*\}/,greedy:!0,alias:"token-string"}],number:[/\b0x\.?[a-f\d_]+(?:(?!\.\.)\.[a-f\d_]*)?(?:p[+-]?[a-f\d_]+)?[ulfi]*/i,{pattern:/((?:\.\.)?)(?:\b0b\.?|\b|\.)\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:e[+-]?\d[\d_]*)?[ulfi]*/i,lookbehind:!0}],keyword:/\$|\b(?:abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__(?:(?:FILE|MODULE|LINE|FUNCTION|PRETTY_FUNCTION|DATE|EOF|TIME|TIMESTAMP|VENDOR|VERSION)__|gshared|traits|vector|parameters)|string|wstring|dstring|size_t|ptrdiff_t)\b/,operator:/\|[|=]?|&[&=]?|\+[+=]?|-[-=]?|\.?\.\.|=[>=]?|!(?:i[ns]\b|<>?=?|>=?|=)?|\bi[ns]\b|(?:<[<>]?|>>?>?|\^\^|[*\/%^~])=?/}),Prism.languages.insertBefore("d","keyword",{property:/\B@\w*/}),Prism.languages.insertBefore("d","function",{register:{pattern:/\b(?:[ABCD][LHX]|E[ABCD]X|E?(?:BP|SP|DI|SI)|[ECSDGF]S|CR[0234]|DR[012367]|TR[3-7]|X?MM[0-7]|R[ABCD]X|[BS]PL|R[BS]P|[DS]IL|R[DS]I|R(?:[89]|1[0-5])[BWD]?|XMM(?:[89]|1[0-5])|YMM(?:1[0-5]|\d))\b|\bST(?:\([0-7]\)|\b)/,alias:"variable"}}); +Prism.languages.dart=Prism.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|default|deferred|do|dynamic|else|enum|export|external|extends|factory|final|finally|for|get|if|implements|import|in|library|new|null|operator|part|rethrow|return|set|static|super|switch|this|throw|try|typedef|var|void|while|with|yield)\b/],operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),Prism.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}}); +!function(d){d.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d+.*$/m]};var r={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(r).forEach(function(e){var n=r[e],a=[];/^\w+$/.test(e)||a.push(/\w+/.exec(e)[0]),"diff"===e&&a.push("bold"),d.languages.diff[e]={pattern:RegExp("^(?:["+n+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a}}),Object.defineProperty(d.languages.diff,"PREFIXES",{value:r})}(Prism); +!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1]?|>[=>]?|[&|^~]/,number:/\b\d+(?:\.\d+)?\b/,boolean:/[Tt]rue|[Ff]alse|[Nn]one/,variable:/\b\w+?\b/,punctuation:/[{}[\](),.:;]/};var n=/{{[\s\S]*?}}|{%[\s\S]*?%}|{#[\s\S]*?#}/g,o=e.languages["markup-templating"];e.hooks.add("before-tokenize",function(e){o.buildPlaceholders(e,"django",n)}),e.hooks.add("after-tokenize",function(e){o.tokenizePlaceholders(e,"django")}),e.languages.jinja2=e.languages.django,e.hooks.add("before-tokenize",function(e){o.buildPlaceholders(e,"jinja2",n)}),e.hooks.add("after-tokenize",function(e){o.tokenizePlaceholders(e,"jinja2")})}(Prism); +Prism.languages["dns-zone-file"]={comment:/;.*/,string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},variable:[{pattern:/(^\$ORIGIN[ \t]+)\S+/m,lookbehind:!0},{pattern:/(^|\s)@(?=\s|$)/,lookbehind:!0}],keyword:/^\$(?:ORIGIN|INCLUDE|TTL)(?=\s|$)/m,class:{pattern:/(^|\s)(?:IN|CH|CS|HS)(?=\s|$)/,lookbehind:!0,alias:"keyword"},type:{pattern:/(^|\s)(?:A|A6|AAAA|AFSDB|APL|ATMA|CAA|CDNSKEY|CDS|CERT|CNAME|DHCID|DLV|DNAME|DNSKEY|DS|EID|GID|GPOS|HINFO|HIP|IPSECKEY|ISDN|KEY|KX|LOC|MAILA|MAILB|MB|MD|MF|MG|MINFO|MR|MX|NAPTR|NB|NBSTAT|NIMLOC|NINFO|NS|NSAP|NSAP-PTR|NSEC|NSEC3|NSEC3PARAM|NULL|NXT|OPENPGPKEY|PTR|PX|RKEY|RP|RRSIG|RT|SIG|SINK|SMIMEA|SOA|SPF|SRV|SSHFP|TA|TKEY|TLSA|TSIG|TXT|UID|UINFO|UNSPEC|URI|WKS|X25)(?=\s|$)/,lookbehind:!0,alias:"keyword"},punctuation:/[()]/},Prism.languages["dns-zone"]=Prism.languages["dns-zone-file"]; +Prism.languages.docker={keyword:{pattern:/(^\s*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)/im,lookbehind:!0},string:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,comment:/#.*/,punctuation:/---|\.\.\.|[:[\]{}\-,|>?]/},Prism.languages.dockerfile=Prism.languages.docker; +Prism.languages.ebnf={comment:/\(\*[\s\S]*?\*\)/,string:{pattern:/"[^"\r\n]*"|'[^'\r\n]*'/,greedy:!0},special:{pattern:/\?[^?\r\n]*\?/,greedy:!0,alias:"class-name"},definition:{pattern:/^(\s*)[a-z]\w*(?:[ \t]+[a-z]\w*)*(?=\s*=)/im,lookbehind:!0,alias:["rule","keyword"]},rule:/[a-z]\w*(?:[ \t]+[a-z]\w*)*/i,punctuation:/\([:/]|[:/]\)|[.,;()[\]{}]/,operator:/[-=|*/!]/}; +Prism.languages.eiffel={comment:/--.*/,string:[{pattern:/"([^[]*)\[[\s\S]*?\]\1"/,greedy:!0},{pattern:/"([^{]*)\{[\s\S]*?\}\1"/,greedy:!0},{pattern:/"(?:%\s+%|%.|[^%"\r\n])*"/,greedy:!0}],char:/'(?:%.|[^%'\r\n])+'/,keyword:/\b(?:across|agent|alias|all|and|attached|as|assign|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\b/i,boolean:/\b(?:True|False)\b/i,"class-name":{pattern:/\b[A-Z][\dA-Z_]*\b/,alias:"builtin"},number:[/\b0[xcb][\da-f](?:_*[\da-f])*\b/i,/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?e[+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/i],punctuation:/:=|<<|>>|\(\||\|\)|->|\.(?=\w)|[{}[\];(),:?]/,operator:/\\\\|\|\.\.\||\.\.|\/[~\/=]?|[><]=?|[-+*^=~]/}; +!function(a){a.languages.ejs={delimiter:{pattern:/^<%[-_=]?|[-_]?%>$/,alias:"punctuation"},comment:/^#[\s\S]*/,"language-javascript":{pattern:/[\s\S]+/,inside:a.languages.javascript}},a.hooks.add("before-tokenize",function(e){a.languages["markup-templating"].buildPlaceholders(e,"ejs",/<%(?!%)[\s\S]+?%>/g)}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"ejs")})}(Prism); +Prism.languages.elixir={comment:/#.*/m,regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},"attr-name":/\w+\??:(?!:)/,capture:{pattern:/(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,lookbehind:!0,alias:"function"},argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},Prism.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:Prism.languages.elixir}}}}); +Prism.languages.elm={comment:/--.*|{-[\s\S]*?-}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\(?:[abfnrtv\\"]|\d+|x[0-9a-fA-F]+))*"/,greedy:!0}],import_statement:{pattern:/^\s*import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}; +Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}; +!function(e){e.languages.etlua={delimiter:{pattern:/^<%[-=]?|-?%>$/,alias:"punctuation"},"language-lua":{pattern:/[\s\S]+/,inside:e.languages.lua}},e.hooks.add("before-tokenize",function(a){e.languages["markup-templating"].buildPlaceholders(a,"etlua",/<%[\s\S]+?%>/g)}),e.hooks.add("after-tokenize",function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"etlua")})}(Prism); +!function(n){n.languages.erb=n.languages.extend("ruby",{}),n.languages.insertBefore("erb","comment",{delimiter:{pattern:/^<%=?|%>$/,alias:"punctuation"}}),n.hooks.add("before-tokenize",function(e){n.languages["markup-templating"].buildPlaceholders(e,"erb",/<%=?(?:[^\r\n]|[\r\n](?!=begin)|[\r\n]=begin\s[\s\S]*?^=end)+?%>/gm)}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"erb")})}(Prism); +Prism.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\d+#[a-z0-9]+/i,/(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/}; +Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?|'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,number:[/\b0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b0b[01]+(?:y|uy)?\b/,/(?:\b\d+\.?\d*|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|u[lsy]?|UL)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}),Prism.languages.insertBefore("fsharp","punctuation",{"computation-expression":{pattern:/[_a-z]\w*(?=\s*\{)/i,alias:"keyword"}}),Prism.languages.insertBefore("fsharp","string",{annotation:{pattern:/\[<.+?>\]/,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:Prism.languages.fsharp}}}}); +Prism.languages["firestore-security-rules"]=Prism.languages.extend("clike",{comment:/\/\/.*/,keyword:/\b(?:allow|function|if|match|null|return|rules_version|service)\b/,operator:/&&|\|\||[<>!=]=?|[-+*/%=]|\b(?:in|is)\b/}),delete Prism.languages["firestore-security-rules"]["class-name"],Prism.languages.insertBefore("firestore-security-rules","keyword",{path:{pattern:/(^|[\s(),])(?:\/(?:[\w\xA0-\uFFFF]+|\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)))+/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)/,inside:{operator:/=/,keyword:/\*\*/,punctuation:/[.$(){}]/}},punctuation:/[/]/}},method:{pattern:/(\ballow\s+)[a-z]+(?:\s*,\s*[a-z]+)*(?=\s*[:;])/,lookbehind:!0,alias:"builtin",inside:{punctuation:/,/}}}); +!function(a){a.languages.flow=a.languages.extend("javascript",{}),a.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),a.languages.flow["function-variable"].pattern=/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,delete a.languages.flow.parameter,a.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(a.languages.flow.keyword)||(a.languages.flow.keyword=[a.languages.flow.keyword]),a.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(Prism); +Prism.languages.fortran={"quoted-number":{pattern:/[BOZ](['"])[A-F0-9]+\1/i,alias:"number"},string:{pattern:/(?:\w+_)?(['"])(?:\1\1|&(?:\r\n?|\n)(?:\s*!.+(?:\r\n?|\n))?|(?!\1).)*(?:\1|&)/,inside:{comment:{pattern:/(&(?:\r\n?|\n)\s*)!.*/,lookbehind:!0}}},comment:{pattern:/!.*/,greedy:!0},boolean:/\.(?:TRUE|FALSE)\.(?:_\w+)?/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[ED][+-]?\d+)?(?:_\w+)?/i,keyword:[/\b(?:INTEGER|REAL|DOUBLE ?PRECISION|COMPLEX|CHARACTER|LOGICAL)\b/i,/\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\b/i,/\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\b/i,/\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEWHERE|ELSEIF|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\b/i],operator:[/\*\*|\/\/|=>|[=\/]=|[<>]=?|::|[+\-*=%]|\.(?:EQ|NE|LT|LE|GT|GE|NOT|AND|OR|EQV|NEQV)\.|\.[A-Z]+\./i,{pattern:/(^|(?!\().)\/(?!\))/,lookbehind:!0}],punctuation:/\(\/|\/\)|[(),;:&]/}; +!function(n){for(var a="(?!<#--)[^()\"']|\\((?:)*\\)|<#--[\\s\\S]*?--\x3e|\"(?:[^\\\\\"]|\\\\.)*\"|'(?:[^\\\\']|\\\\.)*'",e=0;e<2;e++)a=a.replace(//g,a);a=a.replace(//g,"[^sS]");var t={comment:/<#--[\s\S]*?-->/,string:[{pattern:/\br("|')(?:(?!\1)[^\\]|\\.)*\1/,greedy:!0},{pattern:RegExp("(\"|')(?:(?!\\1|\\$\\{)[^\\\\]|\\\\.|\\$\\{(?:)*?\\})*\\1".replace(//g,a)),greedy:!0,inside:{interpolation:{pattern:RegExp("((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:)*?\\}".replace(//g,a)),lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:null}}}}],keyword:/\b(?:as)\b/,boolean:/\b(?:true|false)\b/,"builtin-function":{pattern:/((?:^|[^?])\?\s*)\w+/,lookbehind:!0,alias:"function"},function:/\w+(?=\s*\()/,number:/\d+(?:\.\d+)?/,operator:/\.\.[<*!]?|->|--|\+\+|&&|\|\||\?{1,2}|[-+*/%!=<>]=?|\b(?:gt|gte|lt|lte)\b/,punctuation:/[,;.:()[\]{}]/};t.string[1].inside.interpolation.inside.rest=t,n.languages.ftl={"ftl-comment":{pattern:/^<#--[\s\S]*/,alias:"comment"},"ftl-directive":{pattern:/^<[\s\S]+>$/,inside:{directive:{pattern:/(^<\/?)[#@][a-z]\w*/i,lookbehind:!0,alias:"keyword"},punctuation:/^<\/?|\/?>$/,content:{pattern:/[\s\S]*\S[\s\S]*/,alias:"ftl",inside:t}}},"ftl-interpolation":{pattern:/^\$\{[\s\S]*\}$/,inside:{punctuation:/^\$\{|\}$/,content:{pattern:/[\s\S]*\S[\s\S]*/,alias:"ftl",inside:t}}}},n.hooks.add("before-tokenize",function(e){var t=RegExp("<#--[\\s\\S]*?--\x3e|<\\/?[#@][a-zA-Z](?:)*?>|\\$\\{(?:)*?\\}".replace(//g,a),"gi");n.languages["markup-templating"].buildPlaceholders(e,"ftl",t)}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"ftl")})}(Prism); +Prism.languages.gcode={comment:/;.*|\B\(.*?\)\B/,string:{pattern:/"(?:""|[^"])*"/,greedy:!0},keyword:/\b[GM]\d+(?:\.\d+)?\b/,property:/\b[A-Z]/,checksum:{pattern:/\*\d+/,alias:"punctuation"},punctuation:/:/}; +Prism.languages.gdscript={comment:/#.*/,string:{pattern:/@?(?:("|')(?:(?!\1)[^\n\\]|\\[\s\S])*\1(?!"|')|"""(?:[^\\]|\\[\s\S])*?""")/,greedy:!0},"class-name":{pattern:/(^(?:class_name|class|extends)[ \t]+|^export\([ \t]*|\bas[ \t]+|(?:\b(?:const|var)[ \t]|[,(])[ \t]*\w+[ \t]*:[ \t]*|->[ \t]*)[a-zA-Z_]\w*/m,lookbehind:!0},keyword:/\b(?:and|as|assert|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|if|in|is|master|mastersync|match|not|null|onready|or|pass|preload|puppet|puppetsync|remote|remotesync|return|self|setget|signal|static|tool|var|while|yield)\b/,function:/[a-z_]\w*(?=[ \t]*\()/i,variable:/\$\w+/,number:[/\b0b[01_]+\b|\b0x[\da-fA-F_]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.[\d_]+)(?:e[+-]?[\d_]+)?\b/,/\b(?:INF|NAN|PI|TAU)\b/],constant:/\b[A-Z][A-Z_\d]*\b/,boolean:/\b(?:false|true)\b/,operator:/->|:=|&&|\|\||<<|>>|[-+*/%&|!<>=]=?|[~^]/,punctuation:/[.:,;()[\]{}]/}; +Prism.languages.gedcom={"line-value":{pattern:/(^\s*\d+ +(?:@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?\w+ +).+/m,lookbehind:!0,inside:{pointer:{pattern:/^@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@$/,alias:"variable"}}},tag:{pattern:/(^\s*\d+ +(?:@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@ +)?)\w+/m,lookbehind:!0,alias:"string"},level:{pattern:/(^\s*)\d+/m,lookbehind:!0,alias:"number"},pointer:{pattern:/@\w[\w!"$%&'()*+,\-./:;<=>?[\\\]^`{|}~\x80-\xfe #]*@/,alias:"variable"}}; +!function(a){var n="(?:\r?\n|\r)[ \t]*\\|.+\\|.*";Prism.languages.gherkin={pystring:{pattern:/("""|''')[\s\S]+?\1/,alias:"string"},comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},tag:{pattern:/(^[ \t]*)@\S*/m,lookbehind:!0},feature:{pattern:/((?:^|\r?\n|\r)[ \t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|laH|Lastnost|Mak|Mogucnost|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|perbogh|poQbogh malja'|Potrzeba biznesowa|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:]+(?:\r?\n|\r|$))*/,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]+/,lookbehind:!0},keyword:/[^:\r\n]+:/}},scenario:{pattern:/(^[ \t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram senaryo|Dyagram Senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|Examples|EXAMPLZ|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|ghantoH|Grundlage|Hannergrond|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut|lut chovnatlh|lutmey|Lýsing Atburðarásar|Lýsing Dæma|Menggariskan Senario|MISHUN|MISHUN SRSLY|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan senaryo|Plan Senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo|Senaryo deskripsyon|Senaryo Deskripsyon|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie|Situasie Uiteensetting|Skenario|Skenario konsep|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa|Swa hwaer swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo\-ho\-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\r\n]*/m,lookbehind:!0,inside:{important:{pattern:/(:)[^\r\n]*/,lookbehind:!0},keyword:/[^:\r\n]+:/}},"table-body":{pattern:RegExp("("+n+")(?:"+n+")+"),lookbehind:!0,inside:{outline:{pattern:/<[^>]+?>/,alias:"variable"},td:{pattern:/\s*[^\s|][^|]*/,alias:"string"},punctuation:/\|/}},"table-head":{pattern:RegExp(n),inside:{th:{pattern:/\s*[^\s|][^|]*/,alias:"variable"},punctuation:/\|/}},atrule:{pattern:/(^[ \t]+)(?:'ach|'a|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cando|Cand|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|Dato|DEN|Den youse gotta|Dengan|De|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|Entonces|En|Epi|E|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kadar|Kada|Kad|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Majd|Maka|Manawa|Mas|Ma|Menawa|Men|Mutta|Nalikaning|Nalika|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Og|Och|Oletetaan|Onda|Ond|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|qaSDI'|Quando|Quand|Quan|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|ugeholl|Und|Un|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadani|Zadano|Zadan|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \t])/m,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*'/,inside:{outline:{pattern:/<[^>]+?>/,alias:"variable"}}},outline:{pattern:/<[^>]+?>/,alias:"variable"}}}(); +Prism.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m}; +Prism.languages.glsl=Prism.languages.extend("clike",{comment:[/\/\*[\s\S]*?\*\//,/\/\/(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/],number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ulf]*/i,keyword:/\b(?:attribute|const|uniform|varying|buffer|shared|coherent|volatile|restrict|readonly|writeonly|atomic_uint|layout|centroid|flat|smooth|noperspective|patch|sample|break|continue|do|for|while|switch|case|default|if|else|subroutine|in|out|inout|float|double|int|void|bool|true|false|invariant|precise|discard|return|d?mat[234](?:x[234])?|[ibdu]?vec[234]|uint|lowp|mediump|highp|precision|[iu]?sampler[123]D|[iu]?samplerCube|sampler[12]DShadow|samplerCubeShadow|[iu]?sampler[12]DArray|sampler[12]DArrayShadow|[iu]?sampler2DRect|sampler2DRectShadow|[iu]?samplerBuffer|[iu]?sampler2DMS(?:Array)?|[iu]?samplerCubeArray|samplerCubeArrayShadow|[iu]?image[123]D|[iu]?image2DRect|[iu]?imageCube|[iu]?imageBuffer|[iu]?image[12]DArray|[iu]?imageCubeArray|[iu]?image2DMS(?:Array)?|struct|common|partition|active|asm|class|union|enum|typedef|template|this|resource|goto|inline|noinline|public|static|extern|external|interface|long|short|half|fixed|unsigned|superp|input|output|hvec[234]|fvec[234]|sampler3DRect|filter|sizeof|cast|namespace|using)\b/}),Prism.languages.insertBefore("glsl","comment",{preprocessor:{pattern:/(^[ \t]*)#(?:(?:define|undef|if|ifdef|ifndef|else|elif|endif|error|pragma|extension|version|line)\b)?/m,lookbehind:!0,alias:"builtin"}}); +Prism.languages.gamemakerlanguage=Prism.languages.gml=Prism.languages.extend("clike",{number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ulf]*/i,keyword:/\b(?:if|else|switch|case|default|break|for|repeat|while|do|until|continue|exit|return|globalvar|var|enum)\b/,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not|with|at|xor|not)\b/,constant:/\b(?:self|other|all|noone|global|local|undefined|pointer_(?:invalid|null)|action_(?:stop|restart|continue|reverse)|pi|GM_build_date|GM_version|timezone_(?:local|utc)|gamespeed_(?:fps|microseconds)|ev_(?:create|destroy|step|alarm|keyboard|mouse|collision|other|draw|draw_(?:begin|end|pre|post)|keypress|keyrelease|trigger|(?:left|right|middle|no)_button|(?:left|right|middle)_press|(?:left|right|middle)_release|mouse_(?:enter|leave|wheel_up|wheel_down)|global_(?:left|right|middle)_button|global_(?:left|right|middle)_press|global_(?:left|right|middle)_release|joystick(?:1|2)_(?:left|right|up|down|button1|button2|button3|button4|button5|button6|button7|button8)|outside|boundary|game_start|game_end|room_start|room_end|no_more_lives|animation_end|end_of_path|no_more_health|user\d|step_(?:normal|begin|end)|gui|gui_begin|gui_end)|vk_(?:nokey|anykey|enter|return|shift|control|alt|escape|space|backspace|tab|pause|printscreen|left|right|up|down|home|end|delete|insert|pageup|pagedown|f\d|numpad\d|divide|multiply|subtract|add|decimal|lshift|lcontrol|lalt|rshift|rcontrol|ralt)|mb_(?:any|none|left|right|middle)|c_(?:aqua|black|blue|dkgray|fuchsia|gray|green|lime|ltgray|maroon|navy|olive|purple|red|silver|teal|white|yellow|orange)|fa_(?:left|center|right|top|middle|bottom|readonly|hidden|sysfile|volumeid|directory|archive)|pr_(?:pointlist|linelist|linestrip|trianglelist|trianglestrip|trianglefan)|bm_(?:complex|normal|add|max|subtract|zero|one|src_colour|inv_src_colour|src_color|inv_src_color|src_alpha|inv_src_alpha|dest_alpha|inv_dest_alpha|dest_colour|inv_dest_colour|dest_color|inv_dest_color|src_alpha_sat)|audio_(?:falloff_(?:none|inverse_distance|inverse_distance_clamped|linear_distance|linear_distance_clamped|exponent_distance|exponent_distance_clamped)|old_system|new_system|mono|stereo|3d)|cr_(?:default|none|arrow|cross|beam|size_nesw|size_ns|size_nwse|size_we|uparrow|hourglass|drag|appstart|handpoint|size_all)|spritespeed_framesper(?:second|gameframe)|asset_(?:object|unknown|sprite|sound|room|path|script|font|timeline|tiles|shader)|ds_type_(?:map|list|stack|queue|grid|priority)|ef_(?:explosion|ring|ellipse|firework|smoke|smokeup|star|spark|flare|cloud|rain|snow)|pt_shape_(?:pixel|disk|square|line|star|circle|ring|sphere|flare|spark|explosion|cloud|smoke|snow)|ps_(?:distr|shape)_(?:linear|gaussian|invgaussian|rectangle|ellipse|diamond|line)|ty_(?:real|string)|dll_(?:cdel|cdecl|stdcall)|matrix_(?:view|projection|world)|os_(?:win32|windows|macosx|ios|android|linux|unknown|winphone|win8native|psvita|ps4|xboxone|ps3|uwp)|browser_(?:not_a_browser|unknown|ie|firefox|chrome|safari|safari_mobile|opera|tizen|windows_store|ie_mobile)|device_ios_(?:unknown|iphone|iphone_retina|ipad|ipad_retina|iphone5|iphone6|iphone6plus)|device_(?:emulator|tablet)|display_(?:landscape|landscape_flipped|portrait|portrait_flipped)|of_challenge_(?:win|lose|tie)|leaderboard_type_(?:number|time_mins_secs)|cmpfunc_(?:never|less|equal|lessequal|greater|notequal|greaterequal|always)|cull_(?:noculling|clockwise|counterclockwise)|lighttype_(?:dir|point)|iap_(?:ev_storeload|ev_product|ev_purchase|ev_consume|ev_restore|storeload_ok|storeload_failed|status_uninitialised|status_unavailable|status_loading|status_available|status_processing|status_restoring|failed|unavailable|available|purchased|canceled|refunded)|fb_login_(?:default|fallback_to_webview|no_fallback_to_webview|forcing_webview|use_system_account|forcing_safari)|phy_joint_(?:anchor_1_x|anchor_1_y|anchor_2_x|anchor_2_y|reaction_force_x|reaction_force_y|reaction_torque|motor_speed|angle|motor_torque|max_motor_torque|translation|speed|motor_force|max_motor_force|length_1|length_2|damping_ratio|frequency|lower_angle_limit|upper_angle_limit|angle_limits|max_length|max_torque|max_force)|phy_debug_render_(?:aabb|collision_pairs|coms|core_shapes|joints|obb|shapes)|phy_particle_flag_(?:water|zombie|wall|spring|elastic|viscous|powder|tensile|colourmixing|colormixing)|phy_particle_group_flag_(?:solid|rigid)|phy_particle_data_flag_(?:typeflags|position|velocity|colour|color|category)|achievement_(?:our_info|friends_info|leaderboard_info|info|filter_(?:all_players|friends_only|favorites_only)|type_challenge|type_score_challenge|pic_loaded|show_(?:ui|profile|leaderboard|achievement|bank|friend_picker|purchase_prompt))|network_(?:socket_(?:tcp|udp|bluetooth)|type_(?:connect|disconnect|data|non_blocking_connect)|config_(?:connect_timeout|use_non_blocking_socket|enable_reliable_udp|disable_reliable_udp))|buffer_(?:fixed|grow|wrap|fast|vbuffer|network|u8|s8|u16|s16|u32|s32|u64|f16|f32|f64|bool|text|string|seek_start|seek_relative|seek_end|generalerror|outofspace|outofbounds|invalidtype)|gp_(?:face\d|shoulderl|shoulderr|shoulderlb|shoulderrb|select|start|stickl|stickr|padu|padd|padl|padr|axislh|axislv|axisrh|axisrv)|ov_(?:friends|community|players|settings|gamegroup|achievements)|lb_sort_(?:none|ascending|descending)|lb_disp_(?:none|numeric|time_sec|time_ms)|ugc_(?:result_success|filetype_(?:community|microtrans)|visibility_(?:public|friends_only|private)|query_RankedBy(?:Vote|PublicationDate|Trend|NumTimesReported|TotalVotesAsc|VotesUp|TextSearch)|query_(?:AcceptedForGameRankedByAcceptanceDate|FavoritedByFriendsRankedByPublicationDate|CreatedByFriendsRankedByPublicationDate|NotYetRated)|sortorder_CreationOrder(?:Desc|Asc)|sortorder_(?:TitleAsc|LastUpdatedDesc|SubscriptionDateDesc|VoteScoreDesc|ForModeration)|list_(?:Published|VotedOn|VotedUp|VotedDown|WillVoteLater|Favorited|Subscribed|UsedOrPlayed|Followed)|match_(?:Items|Items_Mtx|Items_ReadyToUse|Collections|Artwork|Videos|Screenshots|AllGuides|WebGuides|IntegratedGuides|UsableInGame|ControllerBindings))|vertex_usage_(?:position|colour|color|normal|texcoord|textcoord|blendweight|blendindices|psize|tangent|binormal|fog|depth|sample)|vertex_type_(?:float\d|colour|color|ubyte4)|layerelementtype_(?:undefined|background|instance|oldtilemap|sprite|tilemap|particlesystem|tile)|tile_(?:rotate|flip|mirror|index_mask)|input_type|se_(?:chorus|compressor|echo|equalizer|flanger|gargle|none|reverb)|text_type|(?:obj|scr|spr|rm)\w+)\b/,variable:/\b(?:x|y|(?:x|y)(?:previous|start)|(?:h|v)speed|direction|speed|friction|gravity|gravity_direction|path_(?:index|position|positionprevious|speed|scale|orientation|endaction)|object_index|id|solid|persistent|mask_index|instance_(?:count|id)|alarm|timeline_(?:index|position|speed|running|loop)|visible|sprite_(?:index|width|height|xoffset|yoffset)|image_(?:number|index|speed|depth|xscale|yscale|angle|alpha|blend)|bbox_(?:left|right|top|bottom)|layer|phy_(?:rotation|(?:position|linear_velocity|speed|com|collision|col_normal)_(?:x|y)|angular_(?:velocity|damping)|position_(?:x|y)previous|speed|linear_damping|bullet|fixed_rotation|active|mass|inertia|dynamic|kinematic|sleeping|collision_points)|working_directory|webgl_enabled|view_(?:(?:y|x|w|h)view|(?:y|x|w|h)port|(?:v|h)(?:speed|border)|visible|surface_id|object|enabled|current|angle)|undefined|transition_(?:steps|kind|color)|temp_directory|show_(?:score|lives|health)|secure_mode|score|room_(?:width|speed|persistent|last|height|first|caption)|room|pointer_(?:null|invalid)|os_(?:version|type|device|browser)|mouse_(?:y|x|lastbutton|button)|lives|keyboard_(?:string|lastkey|lastchar|key)|iap_data|health|gamemaker_(?:version|registered|pro)|game_(?:save|project|display)_(?:id|name)|fps_real|fps|event_(?:type|object|number|action)|error_(?:occurred|last)|display_aa|delta_time|debug_mode|cursor_sprite|current_(?:year|weekday|time|second|month|minute|hour|day)|caption_(?:score|lives|health)|browser_(?:width|height)|background_(?:yscale|y|xscale|x|width|vtiled|vspeed|visible|showcolour|showcolor|index|htiled|hspeed|height|foreground|colour|color|blend|alpha)|async_load|application_surface|argument(?:_relitive|_count|\d)|argument|global|local|self|other)\b/}); +Prism.languages.go=Prism.languages.extend("clike",{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/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete Prism.languages.go["class-name"]; +Prism.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\b/,operator:/[!=|]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/}; +Prism.languages.groovy=Prism.languages.extend("clike",{string:[{pattern:/("""|''')(?:[^\\]|\\[\s\S])*?\1|\$\/(?:\$\/\$|[\s\S])*?\/\$/,greedy:!0},{pattern:/(["'/])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:/\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?[\d]+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.\.(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),.:$]/}),Prism.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment"}}),Prism.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(?:setup|given|when|then|and|cleanup|expect|where):/}),Prism.languages.insertBefore("groovy","function",{annotation:{pattern:/(^|[^.])@\w+/,lookbehind:!0,alias:"punctuation"}}),Prism.hooks.add("wrap",function(e){if("groovy"===e.language&&"string"===e.type){var t=e.content[0];if("'"!=t){var n=/([^\\])(?:\$(?:\{.*?\}|[\w.]+))/;"$"===t&&(n=/([^\$])(?:\$(?:\{.*?\}|[\w.]+))/),e.content=e.content.replace(/</g,"<").replace(/&/g,"&"),e.content=Prism.highlight(e.content,{expression:{pattern:n,lookbehind:!0,inside:Prism.languages.groovy}}),e.classes.push("/"===t?"regex":"gstring")}}}); +!function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ]+.+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ]+.*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ]+.+)/,lookbehind:!0,inside:e.languages.ruby},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ]+.*\|[\t ]*)*/,lookbehind:!0,inside:e.languages.ruby}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w\-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^}])+\}|\[[^\]]+\])*[\/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^}])+\}/,lookbehind:!0,inside:e.languages.ruby},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:e.languages.ruby}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:e.languages.ruby},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],n={},r=0,a=t.length;r@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(a){e.languages["markup-templating"].buildPlaceholders(a,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"handlebars")})}(Prism); +Prism.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--[^-!#$%*+=?&@|~.:<>^\\\/].*|{-[\s\S]*?-})/m,lookbehind:!0},char:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,string:{pattern:/"(?:[^\\"]|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+)|\\\s+\\)*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,import_statement:{pattern:/((?:\r?\n|\r|^)\s*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][_a-zA-Z0-9']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[-!#$%*+=?&@|~.:<>^\\\/]*\.[-!#$%*+=?&@|~.:<>^\\\/]+|[-!#$%*+=?&@|~.:<>^\\\/]+\.[-!#$%*+=?&@|~.:<>^\\\/]*|[-!#$%*+=?&@|~:<>^\\\/]+|`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,hvariable:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*\b/,constant:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*\b/,punctuation:/[{}[\];(),.:]/},Prism.languages.hs=Prism.languages.haskell; +Prism.languages.haxe=Prism.languages.extend("clike",{string:{pattern:/(["'])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:{pattern:/(^|[^\\])\$(?:\w+|\{[^}]+\})/,lookbehind:!0,inside:{interpolation:{pattern:/^\$\w*/,alias:"variable"}}}}},keyword:/\bthis\b|\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|from|for|function|if|implements|import|in|inline|interface|macro|new|null|override|public|private|return|static|super|switch|throw|to|try|typedef|using|var|while)(?!\.)\b/,operator:/\.{3}|\+\+?|-[->]?|[=!]=?|&&?|\|\|?|<[<=]?|>[>=]?|[*\/%~^]/}),Prism.languages.insertBefore("haxe","class-name",{regex:{pattern:/~\/(?:[^\/\\\r\n]|\\.)+\/[igmsu]*/,greedy:!0}}),Prism.languages.insertBefore("haxe","keyword",{preprocessor:{pattern:/#\w+/,alias:"builtin"},metadata:{pattern:/@:?\w+/,alias:"symbol"},reification:{pattern:/\$(?:\w+|(?=\{))/,alias:"variable"}}),Prism.languages.haxe.string.inside.interpolation.inside.rest=Prism.languages.haxe,delete Prism.languages.haxe["class-name"]; +Prism.languages.hcl={comment:/(?:\/\/|#).*|\/\*[\s\S]*?(?:\*\/|$)/,heredoc:{pattern:/<<-?(\w+)[\s\S]*?^\s*\1/m,greedy:!0,alias:"string"},keyword:[{pattern:/(?:resource|data)\s+(?:"(?:\\[\s\S]|[^\\"])*")(?=\s+"[\w-]+"\s+{)/i,inside:{type:{pattern:/(resource|data|\s+)(?:"(?:\\[\s\S]|[^\\"])*")/i,lookbehind:!0,alias:"variable"}}},{pattern:/(?:provider|provisioner|variable|output|module|backend)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+(?={)/i,inside:{type:{pattern:/(provider|provisioner|variable|output|module|backend)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+/i,lookbehind:!0,alias:"variable"}}},{pattern:/[\w-]+(?=\s+{)/}],property:[/[\w-\.]+(?=\s*=(?!=))/,/"(?:\\[\s\S]|[^\\"])+"(?=\s*[:=])/],string:{pattern:/"(?:[^\\$"]|\\[\s\S]|\$(?:(?=")|\$+|[^"${])|\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\})*"/,greedy:!0,inside:{interpolation:{pattern:/(^|[^$])\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\}/,lookbehind:!0,inside:{type:{pattern:/(\b(?:terraform|var|self|count|module|path|data|local)\b\.)[\w\*]+/i,lookbehind:!0,alias:"variable"},keyword:/\b(?:terraform|var|self|count|module|path|data|local)\b/i,function:/\w+(?=\()/,string:{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0},number:/\b0x[\da-f]+|\d+\.?\d*(?:e[+-]?\d+)?/i,punctuation:/[!\$#%&'()*+,.\/;<=>@\[\\\]^`{|}~?:]/}}}},number:/\b0x[\da-f]+|\d+\.?\d*(?:e[+-]?\d+)?/i,boolean:/\b(?:true|false)\b/i,punctuation:/[=\[\]{}]/}; +!function(t){t.languages.http={"request-line":{pattern:/^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\s(?:https?:\/\/|\/)\S+\sHTTP\/[0-9.]+/m,inside:{property:/^(?:POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,"attr-name":/:\w+/}},"response-status":{pattern:/^HTTP\/1.[01] \d+.*/m,inside:{property:{pattern:/(^HTTP\/1.[01] )\d+.*/i,lookbehind:!0}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var a,e,n,i=t.languages,p={"application/javascript":i.javascript,"application/json":i.json||i.javascript,"application/xml":i.xml,"text/xml":i.xml,"text/html":i.html,"text/css":i.css},s={"application/json":!0,"application/xml":!0};for(var r in p)if(p[r]){a=a||{};var T=s[r]?(void 0,n=(e=r).replace(/^[a-z]+\//,""),"(?:"+e+"|\\w+/(?:[\\w.-]+\\+)+"+n+"(?![+\\w.-]))"):r;a[r.replace(/\//g,"-")]={pattern:RegExp("(content-type:\\s*"+T+"[\\s\\S]*?)(?:\\r?\\n|\\r){2}[\\s\\S]*","i"),lookbehind:!0,inside:p[r]}}a&&t.languages.insertBefore("http","header-name",a)}(Prism); +Prism.languages.hpkp={directive:{pattern:/\b(?:(?:includeSubDomains|preload|strict)(?: |;)|pin-sha256="[a-zA-Z\d+=/]+"|(?:max-age|report-uri)=|report-to )/,alias:"keyword"},safe:{pattern:/\d{7,}/,alias:"selector"},unsafe:{pattern:/\d{1,6}/,alias:"function"}}; +Prism.languages.hsts={directive:{pattern:/\b(?:max-age=|includeSubDomains|preload)/,alias:"keyword"},safe:{pattern:/\d{8,}/,alias:"selector"},unsafe:{pattern:/\d{1,7}/,alias:"function"}}; +Prism.languages.ichigojam={comment:/(?:\B'|REM)(?:[^\n\r]*)/i,string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,greedy:!0},number:/\B#[0-9A-F]+|\B`[01]+|(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GSB|GOTO|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|RIGHT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\$|\b)/i,function:/\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\$|\b)/i,label:/(?:\B@[^\s]+)/i,operator:/<[=>]?|>=?|\|\||&&|[+\-*\/=|&^~!]|\b(?:AND|NOT|OR)\b/i,punctuation:/[\[,;:()\]]/}; +Prism.languages.icon={comment:/#.*/,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n_]|\\.|_(?!\1)(?:\r\n|[\s\S]))*\1/,greedy:!0},number:/\b(?:\d+r[a-z\d]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b|\.\d+\b/i,"builtin-keyword":{pattern:/&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\b/,alias:"variable"},directive:{pattern:/\$\w+/,alias:"builtin"},keyword:/\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\b/,function:/(?!\d)\w+(?=\s*[({]|\s*!\s*\[)/,operator:/[+-]:(?!=)|(?:[\/?@^%&]|\+\+?|--?|==?=?|~==?=?|\*\*?|\|\|\|?|<(?:->?|>?=?)(?::=)?|:(?:=:?)?|[!.\\|~]/,punctuation:/[\[\](){},;]/}; +Prism.languages.inform7={string:{pattern:/"[^"]*"/,inside:{substitution:{pattern:/\[[^\]]+\]/,inside:{delimiter:{pattern:/\[|\]/,alias:"punctuation"}}}}},comment:{pattern:/\[[^\]]+\]/,greedy:!0},title:{pattern:/^[ \t]*(?:volume|book|part(?! of)|chapter|section|table)\b.+/im,alias:"important"},number:{pattern:/(^|[^-])(?:\b\d+(?:\.\d+)?(?:\^\d+)?\w*|\b(?:one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve))\b(?!-)/i,lookbehind:!0},verb:{pattern:/(^|[^-])\b(?:applying to|are|attacking|answering|asking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:s|ing)?|consulting|contain(?:s|ing)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:ve|s|ving)|hold(?:s|ing)?|impl(?:y|ies)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:s|ing)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:s|ing)?|setting|showing|singing|sleeping|smelling|squeezing|switching|support(?:s|ing)?|swearing|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:s|ing)?|var(?:y|ies|ying)|waiting|waking|waving|wear(?:s|ing)?)\b(?!-)/i,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^-])\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|unless|the story)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\b(?!-)/i,lookbehind:!0},property:{pattern:/(^|[^-])\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: on| off)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\b(?!-)/i,lookbehind:!0,alias:"symbol"},position:{pattern:/(^|[^-])\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\b(?!-)/i,lookbehind:!0,alias:"keyword"},type:{pattern:/(^|[^-])\b(?:actions?|activit(?:y|ies)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\b(?!-)/i,lookbehind:!0,alias:"variable"},punctuation:/[.,:;(){}]/},Prism.languages.inform7.string.inside.substitution.inside.rest=Prism.languages.inform7,Prism.languages.inform7.string.inside.substitution.inside.rest.text={pattern:/\S(?:\s*\S)*/,alias:"comment"}; +Prism.languages.ini={comment:/^[ \t]*[;#].*$/m,selector:/^[ \t]*\[.*?\]/m,constant:/^[ \t]*[^\s=]+?(?=[ \t]*=)/m,"attr-value":{pattern:/=.*/,inside:{punctuation:/^[=]/}}}; +Prism.languages.io={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"triple-quoted-string":{pattern:/"""(?:\\[\s\S]|(?!""")[^\\])*"""/,greedy:!0,alias:"string"},string:{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},keyword:/\b(?:activate|activeCoroCount|asString|block|break|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getSlot|getEnvironmentVariable|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|call|try|type|uniqueId|updateSlot|wait|while|write|yield)\b/,builtin:/\b(?:Array|AudioDevice|AudioMixer|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Regex|SGML|SGMLElement|SGMLParser|SQLite|Server|Sequence|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink|Random|BigNum|Sequence)\b/,boolean:/\b(?:true|false|nil)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e-?\d+)?/i,operator:/[=!*/%+-^&|]=|>>?=?|<+*\-%$|,#][.:]?|[?^]\.?|[;\[]:?|[~}"i][.:]|[ACeEIjLor]\.|(?:[_\/\\qsux]|_?\d):)/,alias:"keyword"},number:/\b_?(?:(?!\d:)\d+(?:\.\d+)?(?:(?:[ejpx]|ad|ar)_?\d+(?:\.\d+)?)*(?:b_?[\da-z]+(?:\.[\da-z]+)?)?|_(?!\.))/,adverb:{pattern:/[~}]|[\/\\]\.?|[bfM]\.|t[.:]/,alias:"builtin"},operator:/[=a][.:]|_\./,conjunction:{pattern:/&(?:\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\.|`:?|[\^LS]:|"/,alias:"variable"},punctuation:/[()]/}; +!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|null|open|opens|package|private|protected|provides|public|requires|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,a=/\b[A-Z](?:\w*[a-z]\w*)?\b/;e.languages.java=e.languages.extend("clike",{"class-name":[a,/\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/],keyword:t,function:[e.languages.clike.function,{pattern:/(\:\:)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0},namespace:{pattern:/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)[a-z]\w*(?:\.[a-z]\w*)+/,lookbehind:!0,inside:{punctuation:/\./}},generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism); +!function(n){n.languages.php=n.languages.extend("clike",{keyword:/\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,boolean:{pattern:/\b(?:false|true)\b/i,alias:"constant"},constant:[/\b[A-Z_][A-Z0-9_]*\b/,/\b(?:null)\b/i],comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),n.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),n.languages.insertBefore("php","comment",{delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"}}),n.languages.insertBefore("php","keyword",{variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),n.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var e={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,lookbehind:!0,inside:n.languages.php};n.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:e}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:e}}}),delete n.languages.php.string,n.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){n.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/gi)}}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism); +!function(p){var a=p.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(a,"addSupport",{value:function(a,e){"string"==typeof a&&(a=[a]),a.forEach(function(a){!function(a,e){var n="doc-comment",t=p.languages[a];if(t){var r=t[n];if(!r){var o={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}};r=(t=p.languages.insertBefore(a,"comment",o))[n]}if(r instanceof RegExp&&(r=t[n]={pattern:r}),Array.isArray(r))for(var i=0,s=r.length;i/,lookbehind:!0,inside:{punctuation:/[.<>]/}}],namespace:{pattern:/(@(?:exception|throws|see|link|linkplain)\s+)(?:[a-z\d]+\.)+/,lookbehind:!0,inside:{punctuation:/\./}},"code-section":[{pattern:/(\{@code\s+)(?:[^{}]|\{[^{}]*\})+?(?=\s*\})/,lookbehind:!0,inside:e},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:e}],tag:a.languages.markup.tag}),a.languages.javadoclike.addSupport("java",a.languages.javadoc)}(Prism); +Prism.languages.javastacktrace={summary:{pattern:/^[\t ]*(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?:\:.*)?$/m,inside:{keyword:{pattern:/^(\s*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,lookbehind:!0},string:{pattern:/^(\s*)"[^"]*"/,lookbehind:!0},exceptions:{pattern:/^(:?\s*)[\w$.]+(?=:|$)/,lookbehind:!0,inside:{"class-name":/[\w$]+(?=$|:)/,namespace:/[a-z]\w*/,punctuation:/[.:]/}},message:{pattern:/(:\s*)\S.*/,lookbehind:!0,alias:"string"},punctuation:/[:]/}},"stack-frame":{pattern:/^[\t ]*at [\w$.]+(?:)?\([^()]*\)/m,inside:{keyword:{pattern:/^(\s*)at/,lookbehind:!0},source:[{pattern:/(\()\w+.\w+:\d+(?=\))/,lookbehind:!0,inside:{file:/^\w+\.\w+/,punctuation:/:/,"line-number":{pattern:/\d+/,alias:"number"}}},{pattern:/(\()[^()]*(?=\))/,lookbehind:!0,inside:{keyword:/^(?:Unknown Source|Native Method)$/}}],"class-name":/[\w$]+(?=\.(?:|[\w$]+)\()/,function:/(?:|[\w$]+)(?=\()/,namespace:/[a-z]\w*/,punctuation:/[.()]/}},more:{pattern:/^[\t ]*\.{3} \d+ [a-z]+(?: [a-z]+)*/m,inside:{punctuation:/\.{3}/,number:/\d+/,keyword:/\b[a-z]+(?: [a-z]+)*\b/}}}; +Prism.languages.jolie=Prism.languages.extend("clike",{keyword:/\b(?:include|define|is_defined|undef|main|init|outputPort|inputPort|Location|Protocol|Interfaces|RequestResponse|OneWay|type|interface|extender|throws|cset|csets|forward|Aggregates|Redirects|embedded|courier|execution|sequential|concurrent|single|scope|install|throw|comp|cH|default|global|linkIn|linkOut|synchronized|this|new|for|if|else|while|in|Jolie|Java|Javascript|nullProcess|spawn|constants|with|provide|until|exit|foreach|instanceof|over|service)\b/,builtin:/\b(?:undefined|string|int|void|long|Byte|bool|double|float|char|any)\b/,number:/(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?l?/i,operator:/-[-=>]?|\+[+=]?|<[<=]?|[>=*!]=?|&&|\|\||[:?\/%^]/,symbol:/[|;@]/,punctuation:/[,.]/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0}}),delete Prism.languages.jolie["class-name"],Prism.languages.insertBefore("jolie","keyword",{function:{pattern:/((?:\b(?:outputPort|inputPort|in|service|courier)\b|@)\s*)\w+/,lookbehind:!0},aggregates:{pattern:/(\bAggregates\s*:\s*)(?:\w+(?:\s+with\s+\w+)?\s*,\s*)*\w+(?:\s+with\s+\w+)?/,lookbehind:!0,inside:{"with-extension":{pattern:/\bwith\s+\w+/,inside:{keyword:/\bwith\b/}},function:{pattern:/\w+/},punctuation:{pattern:/,/}}},redirects:{pattern:/(\bRedirects\s*:\s*)(?:\w+\s*=>\s*\w+\s*,\s*)*(?:\w+\s*=>\s*\w+)/,lookbehind:!0,inside:{punctuation:{pattern:/,/},function:{pattern:/\w+/},symbol:{pattern:/=>/}}}}); +!function(e){var n="\\\\\\((?:[^()]|\\([^()]*\\))*\\)",t=RegExp('"(?:[^"\r\\n\\\\]|\\\\[^\r\\n(]|__)*"'.replace(/__/g,n)),i={interpolation:{pattern:RegExp("((?:^|[^\\\\])(?:\\\\{2})*)"+n),lookbehind:!0,inside:{content:{pattern:/^(\\\()[\s\S]+(?=\)$)/,lookbehind:!0,inside:null},punctuation:/^\\\(|\)$/}}},a=e.languages.jq={comment:/#.*/,property:{pattern:RegExp(t.source+"(?=\\s*:(?!:))"),greedy:!0,inside:i},string:{pattern:t,greedy:!0,inside:i},function:{pattern:/(\bdef\s+)[a-z_]\w+/i,lookbehind:!0},variable:/\B\$\w+/,"property-literal":{pattern:/[a-z_]\w*(?=\s*:(?!:))/i,alias:"property"},keyword:/\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\b/,boolean:/\b(?:true|false)\b/,number:/(?:\b\d+\.|\B\.)?\d+(?:[eE][+-]?\d+)?\b/,operator:[{pattern:/\|=?/,alias:"pipe"},/\.\.|[!=<>]?=|\?\/\/|\/\/=?|[-+*/%]=?|[<>?]|\b(?:and|or|not)\b/],"c-style-function":{pattern:/\b[a-z_]\w*(?=\s*\()/i,alias:"function"},punctuation:/::|[()\[\]{},:;]|\.(?=\s*[\[\w$])/,dot:{pattern:/\./,alias:"important"}};i.interpolation.inside.content.inside=a}(Prism); +!function(a){var e=a.languages.javascript,n="{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}",s="(@(?:param|arg|argument|property)\\s+(?:"+n+"\\s+)?)";a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+"[$\\w\\xA0-\\uFFFF.]+(?=\\s|$)"),lookbehind:!0,inside:{punctuation:/\./}}}),a.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+"\\[[$\\w\\xA0-\\uFFFF.]+(?:=[^[\\]]+)?\\](?=\\s|$)"),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:e,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{punctuation:/[.,:?=<>|{}()[\]]/}},{pattern:/(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/,lookbehind:!0,inside:{punctuation:/\./}}],example:{pattern:/(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^(\s*(?:\*\s*)?).+$/m,lookbehind:!0,inside:e,alias:"language-javascript"}}}}),a.languages.javadoclike.addSupport("javascript",a.languages.jsdoc)}(Prism); +!function(a){a.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+a.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),a.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+a.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),a.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),a.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),a.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),a.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:/(\.\s*)#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var e=["function","function-variable","method","method-variable","property-access"],t=0;t=v.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=v[f],i="string"==typeof r?r:r.content,o=i.indexOf(a);if(-1!==o){++f;var s=i.substring(0,o),p=d(y[a]),l=i.substring(o+a.length),g=[];if(s&&g.push(s),g.push(p),l){var u=[l];e(u),g.push.apply(g,u)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(g)),n+=g.length-1):r.content=g}}else{var c=r.content;Array.isArray(c)?e(c):e([c])}}}(n),new u.Token(i,n,"language-"+i,a)}u.languages.javascript["template-string"]=[t("css","\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)"),t("html","\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?="),t("svg","\\bsvg"),t("markdown","\\b(?:md|markdown)"),t("graphql","\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)"),e].filter(Boolean);var s={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}u.hooks.add("after-tokenize",function(e){e.language in s&&!function e(t){for(var n=0,r=t.length;n]?|<(?:<=?|[=:])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥]/,punctuation:/[{}[\];(),.:]/,constant:/\b(?:(?:NaN|Inf)(?:16|32|64)?)\b/}; +Prism.languages.keyman={comment:/\bc\s.*/i,function:/\[\s*(?:(?:CTRL|SHIFT|ALT|LCTRL|RCTRL|LALT|RALT|CAPS|NCAPS)\s+)*(?:[TKU]_[\w?]+|".+?"|'.+?')\s*\]/i,string:/("|').*?\1/,bold:[/&(?:baselayout|bitmap|capsononly|capsalwaysoff|shiftfreescaps|copyright|ethnologuecode|hotkey|includecodes|keyboardversion|kmw_embedcss|kmw_embedjs|kmw_helpfile|kmw_helptext|kmw_rtl|language|layer|layoutfile|message|mnemoniclayout|name|oldcharposmatching|platform|targets|version|visualkeyboard|windowslanguages)\b/i,/\b(?:bitmap|bitmaps|caps on only|caps always off|shift frees caps|copyright|hotkey|language|layout|message|name|version)\b/i],keyword:/\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|return|reset|save|set|store|use)\b/i,atrule:/\b(?:ansi|begin|unicode|group|using keys|match|nomatch)\b/i,number:/\b(?:U\+[\dA-F]+|d\d+|x[\da-f]+|\d+)\b/i,operator:/[+>\\,()]/,tag:/\$(?:keyman|kmfl|weaver|keymanweb|keymanonly):/i}; +!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[/\w+(?=\s*\()/,{pattern:/(\.)\w+(?=\s*\{)/,lookbehind:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var n=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:n}}(Prism); +!function(a){var e=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:e,alias:"regex"}};a.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/,lookbehind:!0,alias:"class-name"},function:{pattern:e,alias:"selector"},punctuation:/[[\]{}&]/},a.languages.tex=a.languages.latex,a.languages.context=a.languages.latex}(Prism); +!function(t){t.languages.latte={comment:/^\{\*[\s\S]*/,ld:{pattern:/^\{(?:[=_]|\/?(?!\d|\w+\()\w+|)/,inside:{punctuation:/^\{\/?/,tag:{pattern:/.+/,alias:"important"}}},rd:{pattern:/\}$/,inside:{punctuation:/.+/}},php:{pattern:/\S(?:[\s\S]*\S)?/,alias:"language-php",inside:t.languages.php}};var e=t.languages.extend("markup",{});t.languages.insertBefore("inside","attr-value",{"n-attr":{pattern:/n:[\w-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+))?/,inside:{"attr-name":{pattern:/^[^\s=]+/,alias:"important"},"attr-value":{pattern:/=[\s\S]+/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}],php:{pattern:/\S(?:[\s\S]*\S)?/,inside:t.languages.php}}}}}},e.tag),t.hooks.add("before-tokenize",function(a){if("latte"===a.language){t.languages["markup-templating"].buildPlaceholders(a,"latte",/\{\*[\s\S]*?\*\}|\{[^'"\s{}*](?:[^"'/{}]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|\/\*[\s\S]*?\*\/)*?\}/g),a.grammar=e}}),t.hooks.add("after-tokenize",function(a){t.languages["markup-templating"].tokenizePlaceholders(a,"latte")})}(Prism); +Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};])*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}}); +Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"|'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[a-zA-Z]+|\S)/,alias:"string"},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])[-+]?(?:\d+\/\d+|\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?)\b/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s)]|$)/,lookbehind:!0},punctuation:/[()']/}; +!function(e){for(var n='\\((?:[^();"#\\\\]|\\\\[\\s\\S]|;.*|"(?:[^"\\\\]|\\\\.)*"|#(?:\\{(?:(?!#\\})[\\s\\S])*#\\}|[^{])|)*\\)',d=0;d<5;d++)n=n.replace(//g,n);n=n.replace(//g,"[^\\s\\S]");var i=e.languages.lilypond={comment:/%(?:(?!\{).*|\{[\s\S]*?%\})/,"embedded-scheme":{pattern:RegExp('(^|[=\\s])#(?:"(?:[^"\\\\]|\\\\.)*"|[^\\s()"]*(?:[^\\s()]|))'.replace(//g,n),"m"),lookbehind:!0,greedy:!0,inside:{scheme:{pattern:/^(#)[\s\S]+$/,lookbehind:!0,alias:"language-scheme",inside:{"embedded-lilypond":{pattern:/#\{[\s\S]*?#\}/,greedy:!0,inside:{punctuation:/^#\{|#\}$/,lilypond:{pattern:/[\s\S]+/,alias:"language-lilypond",inside:null}}},rest:e.languages.scheme}},punctuation:/#/}},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},"class-name":{pattern:/(\\new\s+)[\w-]+/,lookbehind:!0},keyword:{pattern:/\\[a-z][-\w]*/i,inside:{punctuation:/^\\/}},operator:/[=|]|<<|>>/,punctuation:{pattern:/(^|[a-z\d])(?:'+|,+|[_^]?-[_^]?(?:[-+^!>._]|(?=\d))|[_^]\.?|[.!])|[{}()[\]<>^~]|\\[()[\]<>\\!]|--|__/,lookbehind:!0},number:/\b\d+(?:\/\d+)?\b/};i["embedded-scheme"].inside.scheme.inside["embedded-lilypond"].inside.lilypond.inside=i,e.languages.ly=i}(Prism); +Prism.languages.liquid={keyword:/\b(?:comment|endcomment|if|elsif|else|endif|unless|endunless|for|endfor|case|endcase|when|in|break|assign|continue|limit|offset|range|reversed|raw|endraw|capture|endcapture|tablerow|endtablerow)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0},function:{pattern:/(^|[\s;|&])(?:append|prepend|capitalize|cycle|cols|increment|decrement|abs|at_least|at_most|ceil|compact|concat|date|default|divided_by|downcase|escape|escape_once|first|floor|join|last|lstrip|map|minus|modulo|newline_to_br|plus|remove|remove_first|replace|replace_first|reverse|round|rstrip|size|slice|sort|sort_natural|split|strip|strip_html|strip_newlines|times|truncate|truncatewords|uniq|upcase|url_decode|url_encode|include|paginate)(?=$|[\s;|&])/,lookbehind:!0}}; +!function(e){function n(e){return RegExp("(\\()"+e+"(?=[\\s\\)])")}function a(e){return RegExp("([\\s([])"+e+"(?=[\\s)])")}var t="[-+*/_~!@$%^=<>{}\\w]+",r="(\\()",i="(?=\\))",s="(?=\\s)",o={heading:{pattern:/;;;.*/,alias:["comment","title"]},comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0,inside:{argument:/[-A-Z]+(?=[.,\s])/,symbol:RegExp("`"+t+"'")}},"quoted-symbol":{pattern:RegExp("#?'"+t),alias:["variable","symbol"]},"lisp-property":{pattern:RegExp(":"+t),alias:"property"},splice:{pattern:RegExp(",@?"+t),alias:["symbol","variable"]},keyword:[{pattern:RegExp(r+"(?:(?:lexical-)?let\\*?|(?:cl-)?letf|if|when|while|unless|cons|cl-loop|and|or|not|cond|setq|error|message|null|require|provide|use-package)"+s),lookbehind:!0},{pattern:RegExp(r+"(?:for|do|collect|return|finally|append|concat|in|by)"+s),lookbehind:!0}],declare:{pattern:n("declare"),lookbehind:!0,alias:"keyword"},interactive:{pattern:n("interactive"),lookbehind:!0,alias:"keyword"},boolean:{pattern:a("(?:t|nil)"),lookbehind:!0},number:{pattern:a("[-+]?\\d+(?:\\.\\d*)?"),lookbehind:!0},defvar:{pattern:RegExp(r+"def(?:var|const|custom|group)\\s+"+t),lookbehind:!0,inside:{keyword:/^def[a-z]+/,variable:RegExp(t)}},defun:{pattern:RegExp(r+"(?:cl-)?(?:defun\\*?|defmacro)\\s+"+t+"\\s+\\([\\s\\S]*?\\)"),lookbehind:!0,inside:{keyword:/^(?:cl-)?def\S+/,arguments:null,function:{pattern:RegExp("(^\\s)"+t),lookbehind:!0},punctuation:/[()]/}},lambda:{pattern:RegExp(r+"lambda\\s+\\((?:&?"+t+"\\s*)*\\)"),lookbehind:!0,inside:{keyword:/^lambda/,arguments:null,punctuation:/[()]/}},car:{pattern:RegExp(r+t),lookbehind:!0},punctuation:[/(?:['`,]?\(|[)\[\]])/,{pattern:/(\s)\.(?=\s)/,lookbehind:!0}]},l={"lisp-marker":RegExp("&[-+*/_~!@$%^=<>{}\\w]+"),rest:{argument:{pattern:RegExp(t),alias:"variable"},varform:{pattern:RegExp(r+t+"\\s+\\S[\\s\\S]*"+i),lookbehind:!0,inside:{string:o.string,boolean:o.boolean,number:o.number,symbol:o.symbol,punctuation:/[()]/}}}},p="\\S+(?:\\s+\\S+)*",d={pattern:RegExp(r+"[\\s\\S]*"+i),lookbehind:!0,inside:{"rest-vars":{pattern:RegExp("&(?:rest|body)\\s+"+p),inside:l},"other-marker-vars":{pattern:RegExp("&(?:optional|aux)\\s+"+p),inside:l},keys:{pattern:RegExp("&key\\s+"+p+"(?:\\s+&allow-other-keys)?"),inside:l},argument:{pattern:RegExp(t),alias:"variable"},punctuation:/[()]/}};o.lambda.inside.arguments=d,o.defun.inside.arguments=e.util.clone(d),o.defun.inside.arguments.inside.sublist=d,e.languages.lisp=o,e.languages.elisp=o,e.languages.emacs=o,e.languages["emacs-lisp"]=o}(Prism); +Prism.languages.livescript={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\])#.*/,lookbehind:!0}],"interpolated-string":{pattern:/(^|[^"])("""|")(?:\\[\s\S]|(?!\2)[^\\])*\2(?!")/,lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(^|[^\\])#[a-z_](?:-?[a-z]|[\d_])*/m,lookbehind:!0},interpolation:{pattern:/(^|[^\\])#\{[^}]+\}/m,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^#\{|\}$/,alias:"variable"}}},string:/[\s\S]+/}},string:[{pattern:/('''|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/<\[[\s\S]*?\]>/,greedy:!0},/\\[^\s,;\])}]+/],regex:[{pattern:/\/\/(?:\[.+?]|\\.|(?!\/\/)[^\\])+\/\/[gimyu]{0,5}/,greedy:!0,inside:{comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0}}},{pattern:/\/(?:\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}/,greedy:!0}],keyword:{pattern:/(^|(?!-).)\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\b/m,lookbehind:!0},"keyword-operator":{pattern:/(^|[^-])\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?:nt| not)?|not|of|or|til|to|typeof|with|xor)(?!-)\b)/m,lookbehind:!0,alias:"operator"},boolean:{pattern:/(^|[^-])\b(?:false|no|off|on|true|yes)(?!-)\b/m,lookbehind:!0},argument:{pattern:/(^|(?!\.&\.)[^&])&(?!&)\d*/m,lookbehind:!0,alias:"variable"},number:/\b(?:\d+~[\da-z]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[a-z]\w*)?)/i,identifier:/[a-z_](?:-?[a-z]|[\d_])*/i,operator:[{pattern:/( )\.(?= )/,lookbehind:!0},/\.(?:[=~]|\.\.?)|\.(?:[&|^]|<<|>>>?)\.|:(?:=|:=?)|&&|\|[|>]|<(?:<[>=?]?|-(?:->?|>)?|\+\+?|@@?|%%?|\*\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\^\^?|[\/?]/],punctuation:/[(){}\[\]|.,:;`]/},Prism.languages.livescript["interpolated-string"].inside.interpolation.inside.rest=Prism.languages.livescript; +Prism.languages.lolcode={comment:[/\bOBTW\s+[\s\S]*?\s+TLDR\b/,/\bBTW.+/],string:{pattern:/"(?::.|[^"])*"/,inside:{variable:/:\{[^}]+\}/,symbol:[/:\([a-f\d]+\)/i,/:\[[^\]]+\]/,/:[)>o":]/]},greedy:!0},number:/(?:\B-)?(?:\b\d+\.?\d*|\B\.\d+)/,symbol:{pattern:/(^|\s)(?:A )?(?:YARN|NUMBR|NUMBAR|TROOF|BUKKIT|NOOB)(?=\s|,|$)/,lookbehind:!0,inside:{keyword:/A(?=\s)/}},label:{pattern:/((?:^|\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\w*/,lookbehind:!0,alias:"string"},function:{pattern:/((?:^|\s)(?:I IZ|HOW IZ I|IZ) )[a-zA-Z]\w*/,lookbehind:!0},keyword:[{pattern:/(^|\s)(?:O HAI IM|KTHX|HAI|KTHXBYE|I HAS A|ITZ(?: A)?|R|AN|MKAY|SMOOSH|MAEK|IS NOW(?: A)?|VISIBLE|GIMMEH|O RLY\?|YA RLY|NO WAI|OIC|MEBBE|WTF\?|OMG|OMGWTF|GTFO|IM IN YR|IM OUTTA YR|FOUND YR|YR|TIL|WILE|UPPIN|NERFIN|I IZ|HOW IZ I|IF U SAY SO|SRS|HAS A|LIEK(?: A)?|IZ)(?=\s|,|$)/,lookbehind:!0},/'Z(?=\s|,|$)/],boolean:{pattern:/(^|\s)(?:WIN|FAIL)(?=\s|,|$)/,lookbehind:!0},variable:{pattern:/(^|\s)IT(?=\s|,|$)/,lookbehind:!0},operator:{pattern:/(^|\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:SUM|DIFF|PRODUKT|QUOSHUNT|MOD|BIGGR|SMALLR|BOTH|EITHER|WON|ALL|ANY) OF)(?=\s|,|$)/,lookbehind:!0},punctuation:/\.{3}|…|,|!/}; +Prism.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:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,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/,{pattern:/(\()(?:addsuffix|abspath|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(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/}; +!function(d){function n(n,e){return n=n.replace(//g,"(?:\\\\.|[^\\\\\\n\r]|(?:\r?\n|\r)(?!\r?\n|\r))"),e&&(n=n+"|"+n.replace(/_/g,"\\*")),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+n+")")}var e="(?:\\\\.|``.+?``|`[^`\r\\n]+`|[^\\\\|\r\\n`])+",t="\\|?__(?:\\|__)+\\|?(?:(?:\r?\n|\r)|$)".replace(/__/g,e),a="\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\r?\n|\r)";d.languages.markdown=d.languages.extend("markup",{}),d.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+t+a+"(?:"+t+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+t+a+")(?:"+t+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(e),inside:d.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+t+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+t+"$"),inside:{"table-header":{pattern:RegExp(e),alias:"important",inside:d.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/(^[ \t]*(?:\r?\n|\r))(?: {4}|\t).+(?:(?:\r?\n|\r)(?: {4}|\t).+)*/m,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\r?\n|\r))[\s\S]+?(?=(?:\r?\n|\r)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\r?\n|\r)(?:==+|--+)(?=[ \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("__(?:(?!_)|_(?:(?!_))+_)+__",!0),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n("_(?:(?!_)|__(?:(?!_))+__)+_",!0),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n("(~~?)(?:(?!~))+?\\2",!1),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)| ?\\[(?:(?!\\]))+\\])',!1),lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(\[)[^\]]+(?=\]$)/,lookbehind:!0},content:{pattern:/(^!?\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),["url","bold","italic","strike"].forEach(function(e){["url","bold","italic","strike"].forEach(function(n){e!==n&&(d.languages.markdown[e].inside.content.inside[n]=d.languages.markdown[n])})}),d.hooks.add("after-tokenize",function(n){"markdown"!==n.language&&"md"!==n.language||!function n(e){if(e&&"string"!=typeof e)for(var t=0,a=e.length;t=~]=?|&&?|\|\|?/,punctuation:/\.{3}|[.,;\[\](){}!]/}; +Prism.languages.mel={comment:/\/\/.*/,code:{pattern:/`(?:\\.|[^\\`\r\n])*`/,greedy:!0,alias:"italic",inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},variable:/\$\w+/,number:/\b0x[\da-fA-F]+\b|\b\d+\.?\d*|\B\.\d+/,flag:{pattern:/-[^\d\W]\w*/,alias:"operator"},keyword:/\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\b/,function:/\w+(?=\()|\b(?:about|abs|addAttr|addAttributeEditorNodeHelp|addDynamic|addNewShelfTab|addPP|addPanelCategory|addPrefixToName|advanceToNextDrivenKey|affectedNet|affects|aimConstraint|air|alias|aliasAttr|align|alignCtx|alignCurve|alignSurface|allViewFit|ambientLight|angle|angleBetween|animCone|animCurveEditor|animDisplay|animView|annotate|appendStringArray|applicationName|applyAttrPreset|applyTake|arcLenDimContext|arcLengthDimension|arclen|arrayMapper|art3dPaintCtx|artAttrCtx|artAttrPaintVertexCtx|artAttrSkinPaintCtx|artAttrTool|artBuildPaintMenu|artFluidAttrCtx|artPuttyCtx|artSelectCtx|artSetPaintCtx|artUserPaintCtx|assignCommand|assignInputDevice|assignViewportFactories|attachCurve|attachDeviceAttr|attachSurface|attrColorSliderGrp|attrCompatibility|attrControlGrp|attrEnumOptionMenu|attrEnumOptionMenuGrp|attrFieldGrp|attrFieldSliderGrp|attrNavigationControlGrp|attrPresetEditWin|attributeExists|attributeInfo|attributeMenu|attributeQuery|autoKeyframe|autoPlace|bakeClip|bakeFluidShading|bakePartialHistory|bakeResults|bakeSimulation|basename|basenameEx|batchRender|bessel|bevel|bevelPlus|binMembership|bindSkin|blend2|blendShape|blendShapeEditor|blendShapePanel|blendTwoAttr|blindDataType|boneLattice|boundary|boxDollyCtx|boxZoomCtx|bufferCurve|buildBookmarkMenu|buildKeyframeMenu|button|buttonManip|CBG|cacheFile|cacheFileCombine|cacheFileMerge|cacheFileTrack|camera|cameraView|canCreateManip|canvas|capitalizeString|catch|catchQuiet|ceil|changeSubdivComponentDisplayLevel|changeSubdivRegion|channelBox|character|characterMap|characterOutlineEditor|characterize|chdir|checkBox|checkBoxGrp|checkDefaultRenderGlobals|choice|circle|circularFillet|clamp|clear|clearCache|clip|clipEditor|clipEditorCurrentTimeCtx|clipSchedule|clipSchedulerOutliner|clipTrimBefore|closeCurve|closeSurface|cluster|cmdFileOutput|cmdScrollFieldExecuter|cmdScrollFieldReporter|cmdShell|coarsenSubdivSelectionList|collision|color|colorAtPoint|colorEditor|colorIndex|colorIndexSliderGrp|colorSliderButtonGrp|colorSliderGrp|columnLayout|commandEcho|commandLine|commandPort|compactHairSystem|componentEditor|compositingInterop|computePolysetVolume|condition|cone|confirmDialog|connectAttr|connectControl|connectDynamic|connectJoint|connectionInfo|constrain|constrainValue|constructionHistory|container|containsMultibyte|contextInfo|control|convertFromOldLayers|convertIffToPsd|convertLightmap|convertSolidTx|convertTessellation|convertUnit|copyArray|copyFlexor|copyKey|copySkinWeights|cos|cpButton|cpCache|cpClothSet|cpCollision|cpConstraint|cpConvClothToMesh|cpForces|cpGetSolverAttr|cpPanel|cpProperty|cpRigidCollisionFilter|cpSeam|cpSetEdit|cpSetSolverAttr|cpSolver|cpSolverTypes|cpTool|cpUpdateClothUVs|createDisplayLayer|createDrawCtx|createEditor|createLayeredPsdFile|createMotionField|createNewShelf|createNode|createRenderLayer|createSubdivRegion|cross|crossProduct|ctxAbort|ctxCompletion|ctxEditMode|ctxTraverse|currentCtx|currentTime|currentTimeCtx|currentUnit|curve|curveAddPtCtx|curveCVCtx|curveEPCtx|curveEditorCtx|curveIntersect|curveMoveEPCtx|curveOnSurface|curveSketchCtx|cutKey|cycleCheck|cylinder|dagPose|date|defaultLightListCheckBox|defaultNavigation|defineDataServer|defineVirtualDevice|deformer|deg_to_rad|delete|deleteAttr|deleteShadingGroupsAndMaterials|deleteShelfTab|deleteUI|deleteUnusedBrushes|delrandstr|detachCurve|detachDeviceAttr|detachSurface|deviceEditor|devicePanel|dgInfo|dgdirty|dgeval|dgtimer|dimWhen|directKeyCtx|directionalLight|dirmap|dirname|disable|disconnectAttr|disconnectJoint|diskCache|displacementToPoly|displayAffected|displayColor|displayCull|displayLevelOfDetail|displayPref|displayRGBColor|displaySmoothness|displayStats|displayString|displaySurface|distanceDimContext|distanceDimension|doBlur|dolly|dollyCtx|dopeSheetEditor|dot|dotProduct|doubleProfileBirailSurface|drag|dragAttrContext|draggerContext|dropoffLocator|duplicate|duplicateCurve|duplicateSurface|dynCache|dynControl|dynExport|dynExpression|dynGlobals|dynPaintEditor|dynParticleCtx|dynPref|dynRelEdPanel|dynRelEditor|dynamicLoad|editAttrLimits|editDisplayLayerGlobals|editDisplayLayerMembers|editRenderLayerAdjustment|editRenderLayerGlobals|editRenderLayerMembers|editor|editorTemplate|effector|emit|emitter|enableDevice|encodeString|endString|endsWith|env|equivalent|equivalentTol|erf|error|eval|evalDeferred|evalEcho|event|exactWorldBoundingBox|exclusiveLightCheckBox|exec|executeForEachObject|exists|exp|expression|expressionEditorListen|extendCurve|extendSurface|extrude|fcheck|fclose|feof|fflush|fgetline|fgetword|file|fileBrowserDialog|fileDialog|fileExtension|fileInfo|filetest|filletCurve|filter|filterCurve|filterExpand|filterStudioImport|findAllIntersections|findAnimCurves|findKeyframe|findMenuItem|findRelatedSkinCluster|finder|firstParentOf|fitBspline|flexor|floatEq|floatField|floatFieldGrp|floatScrollBar|floatSlider|floatSlider2|floatSliderButtonGrp|floatSliderGrp|floor|flow|fluidCacheInfo|fluidEmitter|fluidVoxelInfo|flushUndo|fmod|fontDialog|fopen|formLayout|format|fprint|frameLayout|fread|freeFormFillet|frewind|fromNativePath|fwrite|gamma|gauss|geometryConstraint|getApplicationVersionAsFloat|getAttr|getClassification|getDefaultBrush|getFileList|getFluidAttr|getInputDeviceRange|getMayaPanelTypes|getModifiers|getPanel|getParticleAttr|getPluginResource|getenv|getpid|glRender|glRenderEditor|globalStitch|gmatch|goal|gotoBindPose|grabColor|gradientControl|gradientControlNoAttr|graphDollyCtx|graphSelectContext|graphTrackCtx|gravity|grid|gridLayout|group|groupObjectsByName|HfAddAttractorToAS|HfAssignAS|HfBuildEqualMap|HfBuildFurFiles|HfBuildFurImages|HfCancelAFR|HfConnectASToHF|HfCreateAttractor|HfDeleteAS|HfEditAS|HfPerformCreateAS|HfRemoveAttractorFromAS|HfSelectAttached|HfSelectAttractors|HfUnAssignAS|hardenPointCurve|hardware|hardwareRenderPanel|headsUpDisplay|headsUpMessage|help|helpLine|hermite|hide|hilite|hitTest|hotBox|hotkey|hotkeyCheck|hsv_to_rgb|hudButton|hudSlider|hudSliderButton|hwReflectionMap|hwRender|hwRenderLoad|hyperGraph|hyperPanel|hyperShade|hypot|iconTextButton|iconTextCheckBox|iconTextRadioButton|iconTextRadioCollection|iconTextScrollList|iconTextStaticLabel|ikHandle|ikHandleCtx|ikHandleDisplayScale|ikSolver|ikSplineHandleCtx|ikSystem|ikSystemInfo|ikfkDisplayMethod|illustratorCurves|image|imfPlugins|inheritTransform|insertJoint|insertJointCtx|insertKeyCtx|insertKnotCurve|insertKnotSurface|instance|instanceable|instancer|intField|intFieldGrp|intScrollBar|intSlider|intSliderGrp|interToUI|internalVar|intersect|iprEngine|isAnimCurve|isConnected|isDirty|isParentOf|isSameObject|isTrue|isValidObjectName|isValidString|isValidUiName|isolateSelect|itemFilter|itemFilterAttr|itemFilterRender|itemFilterType|joint|jointCluster|jointCtx|jointDisplayScale|jointLattice|keyTangent|keyframe|keyframeOutliner|keyframeRegionCurrentTimeCtx|keyframeRegionDirectKeyCtx|keyframeRegionDollyCtx|keyframeRegionInsertKeyCtx|keyframeRegionMoveKeyCtx|keyframeRegionScaleKeyCtx|keyframeRegionSelectKeyCtx|keyframeRegionSetKeyCtx|keyframeRegionTrackCtx|keyframeStats|lassoContext|lattice|latticeDeformKeyCtx|launch|launchImageEditor|layerButton|layeredShaderPort|layeredTexturePort|layout|layoutDialog|lightList|lightListEditor|lightListPanel|lightlink|lineIntersection|linearPrecision|linstep|listAnimatable|listAttr|listCameras|listConnections|listDeviceAttachments|listHistory|listInputDeviceAxes|listInputDeviceButtons|listInputDevices|listMenuAnnotation|listNodeTypes|listPanelCategories|listRelatives|listSets|listTransforms|listUnselected|listerEditor|loadFluid|loadNewShelf|loadPlugin|loadPluginLanguageResources|loadPrefObjects|localizedPanelLabel|lockNode|loft|log|longNameOf|lookThru|ls|lsThroughFilter|lsType|lsUI|Mayatomr|mag|makeIdentity|makeLive|makePaintable|makeRoll|makeSingleSurface|makeTubeOn|makebot|manipMoveContext|manipMoveLimitsCtx|manipOptions|manipRotateContext|manipRotateLimitsCtx|manipScaleContext|manipScaleLimitsCtx|marker|match|max|memory|menu|menuBarLayout|menuEditor|menuItem|menuItemToShelf|menuSet|menuSetPref|messageLine|min|minimizeApp|mirrorJoint|modelCurrentTimeCtx|modelEditor|modelPanel|mouse|movIn|movOut|move|moveIKtoFK|moveKeyCtx|moveVertexAlongDirection|multiProfileBirailSurface|mute|nParticle|nameCommand|nameField|namespace|namespaceInfo|newPanelItems|newton|nodeCast|nodeIconButton|nodeOutliner|nodePreset|nodeType|noise|nonLinear|normalConstraint|normalize|nurbsBoolean|nurbsCopyUVSet|nurbsCube|nurbsEditUV|nurbsPlane|nurbsSelect|nurbsSquare|nurbsToPoly|nurbsToPolygonsPref|nurbsToSubdiv|nurbsToSubdivPref|nurbsUVSet|nurbsViewDirectionVector|objExists|objectCenter|objectLayer|objectType|objectTypeUI|obsoleteProc|oceanNurbsPreviewPlane|offsetCurve|offsetCurveOnSurface|offsetSurface|openGLExtension|openMayaPref|optionMenu|optionMenuGrp|optionVar|orbit|orbitCtx|orientConstraint|outlinerEditor|outlinerPanel|overrideModifier|paintEffectsDisplay|pairBlend|palettePort|paneLayout|panel|panelConfiguration|panelHistory|paramDimContext|paramDimension|paramLocator|parent|parentConstraint|particle|particleExists|particleInstancer|particleRenderInfo|partition|pasteKey|pathAnimation|pause|pclose|percent|performanceOptions|pfxstrokes|pickWalk|picture|pixelMove|planarSrf|plane|play|playbackOptions|playblast|plugAttr|plugNode|pluginInfo|pluginResourceUtil|pointConstraint|pointCurveConstraint|pointLight|pointMatrixMult|pointOnCurve|pointOnSurface|pointPosition|poleVectorConstraint|polyAppend|polyAppendFacetCtx|polyAppendVertex|polyAutoProjection|polyAverageNormal|polyAverageVertex|polyBevel|polyBlendColor|polyBlindData|polyBoolOp|polyBridgeEdge|polyCacheMonitor|polyCheck|polyChipOff|polyClipboard|polyCloseBorder|polyCollapseEdge|polyCollapseFacet|polyColorBlindData|polyColorDel|polyColorPerVertex|polyColorSet|polyCompare|polyCone|polyCopyUV|polyCrease|polyCreaseCtx|polyCreateFacet|polyCreateFacetCtx|polyCube|polyCut|polyCutCtx|polyCylinder|polyCylindricalProjection|polyDelEdge|polyDelFacet|polyDelVertex|polyDuplicateAndConnect|polyDuplicateEdge|polyEditUV|polyEditUVShell|polyEvaluate|polyExtrudeEdge|polyExtrudeFacet|polyExtrudeVertex|polyFlipEdge|polyFlipUV|polyForceUV|polyGeoSampler|polyHelix|polyInfo|polyInstallAction|polyLayoutUV|polyListComponentConversion|polyMapCut|polyMapDel|polyMapSew|polyMapSewMove|polyMergeEdge|polyMergeEdgeCtx|polyMergeFacet|polyMergeFacetCtx|polyMergeUV|polyMergeVertex|polyMirrorFace|polyMoveEdge|polyMoveFacet|polyMoveFacetUV|polyMoveUV|polyMoveVertex|polyNormal|polyNormalPerVertex|polyNormalizeUV|polyOptUvs|polyOptions|polyOutput|polyPipe|polyPlanarProjection|polyPlane|polyPlatonicSolid|polyPoke|polyPrimitive|polyPrism|polyProjection|polyPyramid|polyQuad|polyQueryBlindData|polyReduce|polySelect|polySelectConstraint|polySelectConstraintMonitor|polySelectCtx|polySelectEditCtx|polySeparate|polySetToFaceNormal|polySewEdge|polyShortestPathCtx|polySmooth|polySoftEdge|polySphere|polySphericalProjection|polySplit|polySplitCtx|polySplitEdge|polySplitRing|polySplitVertex|polyStraightenUVBorder|polySubdivideEdge|polySubdivideFacet|polyToSubdiv|polyTorus|polyTransfer|polyTriangulate|polyUVSet|polyUnite|polyWedgeFace|popen|popupMenu|pose|pow|preloadRefEd|print|progressBar|progressWindow|projFileViewer|projectCurve|projectTangent|projectionContext|projectionManip|promptDialog|propModCtx|propMove|psdChannelOutliner|psdEditTextureFile|psdExport|psdTextureFile|putenv|pwd|python|querySubdiv|quit|rad_to_deg|radial|radioButton|radioButtonGrp|radioCollection|radioMenuItemCollection|rampColorPort|rand|randomizeFollicles|randstate|rangeControl|readTake|rebuildCurve|rebuildSurface|recordAttr|recordDevice|redo|reference|referenceEdit|referenceQuery|refineSubdivSelectionList|refresh|refreshAE|registerPluginResource|rehash|reloadImage|removeJoint|removeMultiInstance|removePanelCategory|rename|renameAttr|renameSelectionList|renameUI|render|renderGlobalsNode|renderInfo|renderLayerButton|renderLayerParent|renderLayerPostProcess|renderLayerUnparent|renderManip|renderPartition|renderQualityNode|renderSettings|renderThumbnailUpdate|renderWindowEditor|renderWindowSelectContext|renderer|reorder|reorderDeformers|requires|reroot|resampleFluid|resetAE|resetPfxToPolyCamera|resetTool|resolutionNode|retarget|reverseCurve|reverseSurface|revolve|rgb_to_hsv|rigidBody|rigidSolver|roll|rollCtx|rootOf|rot|rotate|rotationInterpolation|roundConstantRadius|rowColumnLayout|rowLayout|runTimeCommand|runup|sampleImage|saveAllShelves|saveAttrPreset|saveFluid|saveImage|saveInitialState|saveMenu|savePrefObjects|savePrefs|saveShelf|saveToolSettings|scale|scaleBrushBrightness|scaleComponents|scaleConstraint|scaleKey|scaleKeyCtx|sceneEditor|sceneUIReplacement|scmh|scriptCtx|scriptEditorInfo|scriptJob|scriptNode|scriptTable|scriptToShelf|scriptedPanel|scriptedPanelType|scrollField|scrollLayout|sculpt|searchPathArray|seed|selLoadSettings|select|selectContext|selectCurveCV|selectKey|selectKeyCtx|selectKeyframeRegionCtx|selectMode|selectPref|selectPriority|selectType|selectedNodes|selectionConnection|separator|setAttr|setAttrEnumResource|setAttrMapping|setAttrNiceNameResource|setConstraintRestPosition|setDefaultShadingGroup|setDrivenKeyframe|setDynamic|setEditCtx|setEditor|setFluidAttr|setFocus|setInfinity|setInputDeviceMapping|setKeyCtx|setKeyPath|setKeyframe|setKeyframeBlendshapeTargetWts|setMenuMode|setNodeNiceNameResource|setNodeTypeFlag|setParent|setParticleAttr|setPfxToPolyCamera|setPluginResource|setProject|setStampDensity|setStartupMessage|setState|setToolTo|setUITemplate|setXformManip|sets|shadingConnection|shadingGeometryRelCtx|shadingLightRelCtx|shadingNetworkCompare|shadingNode|shapeCompare|shelfButton|shelfLayout|shelfTabLayout|shellField|shortNameOf|showHelp|showHidden|showManipCtx|showSelectionInTitle|showShadingGroupAttrEditor|showWindow|sign|simplify|sin|singleProfileBirailSurface|size|sizeBytes|skinCluster|skinPercent|smoothCurve|smoothTangentSurface|smoothstep|snap2to2|snapKey|snapMode|snapTogetherCtx|snapshot|soft|softMod|softModCtx|sort|sound|soundControl|source|spaceLocator|sphere|sphrand|spotLight|spotLightPreviewPort|spreadSheetEditor|spring|sqrt|squareSurface|srtContext|stackTrace|startString|startsWith|stitchAndExplodeShell|stitchSurface|stitchSurfacePoints|strcmp|stringArrayCatenate|stringArrayContains|stringArrayCount|stringArrayInsertAtIndex|stringArrayIntersector|stringArrayRemove|stringArrayRemoveAtIndex|stringArrayRemoveDuplicates|stringArrayRemoveExact|stringArrayToString|stringToStringArray|strip|stripPrefixFromName|stroke|subdAutoProjection|subdCleanTopology|subdCollapse|subdDuplicateAndConnect|subdEditUV|subdListComponentConversion|subdMapCut|subdMapSewMove|subdMatchTopology|subdMirror|subdToBlind|subdToPoly|subdTransferUVsToCache|subdiv|subdivCrease|subdivDisplaySmoothness|substitute|substituteAllString|substituteGeometry|substring|surface|surfaceSampler|surfaceShaderList|swatchDisplayPort|switchTable|symbolButton|symbolCheckBox|sysFile|system|tabLayout|tan|tangentConstraint|texLatticeDeformContext|texManipContext|texMoveContext|texMoveUVShellContext|texRotateContext|texScaleContext|texSelectContext|texSelectShortestPathCtx|texSmudgeUVContext|texWinToolCtx|text|textCurves|textField|textFieldButtonGrp|textFieldGrp|textManip|textScrollList|textToShelf|textureDisplacePlane|textureHairColor|texturePlacementContext|textureWindow|threadCount|threePointArcCtx|timeControl|timePort|timerX|toNativePath|toggle|toggleAxis|toggleWindowVisibility|tokenize|tokenizeList|tolerance|tolower|toolButton|toolCollection|toolDropped|toolHasOptions|toolPropertyWindow|torus|toupper|trace|track|trackCtx|transferAttributes|transformCompare|transformLimits|translator|trim|trunc|truncateFluidCache|truncateHairCache|tumble|tumbleCtx|turbulence|twoPointArcCtx|uiRes|uiTemplate|unassignInputDevice|undo|undoInfo|ungroup|uniform|unit|unloadPlugin|untangleUV|untitledFileName|untrim|upAxis|updateAE|userCtx|uvLink|uvSnapshot|validateShelfName|vectorize|view2dToolCtx|viewCamera|viewClipPlane|viewFit|viewHeadOn|viewLookAt|viewManip|viewPlace|viewSet|visor|volumeAxis|vortex|waitCursor|warning|webBrowser|webBrowserPrefs|whatIs|window|windowPref|wire|wireContext|workspace|wrinkle|wrinkleContext|writeTake|xbmLangPathList|xform)\b/,operator:[/\+[+=]?|-[-=]?|&&|\|\||[<>]=|[*\/!=]=?|[%^]/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,:;?\[\](){}]/},Prism.languages.mel.code.inside.rest=Prism.languages.mel; +Prism.languages.mizar={comment:/::.+/,keyword:/@proof\b|\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|equals|end|environ|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:y|ies)|when|where|with|wrt)\b/,parameter:{pattern:/\$(?:10|\d)/,alias:"variable"},variable:/\w+(?=:)/,number:/(?:\b|-)\d+\b/,operator:/\.\.\.|->|&|\.?=/,punctuation:/\(#|#\)|[,:;\[\](){}]/}; +Prism.languages.monkey={string:/"[^"\r\n]*"/,comment:[{pattern:/^#Rem\s+[\s\S]*?^#End/im,greedy:!0},{pattern:/'.+/,greedy:!0}],preprocessor:{pattern:/(^[ \t]*)#.+/m,lookbehind:!0,alias:"comment"},function:/\w+(?=\()/,"type-char":{pattern:/(\w)[?%#$]/,lookbehind:!0,alias:"variable"},number:{pattern:/((?:\.\.)?)(?:(?:\b|\B-\.?|\B\.)\d+(?:(?!\.\.)\.\d*)?|\$[\da-f]+)/i,lookbehind:!0},keyword:/\b(?:Void|Strict|Public|Private|Property|Bool|Int|Float|String|Array|Object|Continue|Exit|Import|Extern|New|Self|Super|Try|Catch|Eachin|True|False|Extends|Abstract|Final|Select|Case|Default|Const|Local|Global|Field|Method|Function|Class|End|If|Then|Else|ElseIf|EndIf|While|Wend|Repeat|Until|Forever|For|To|Step|Next|Return|Module|Interface|Implements|Inline|Throw|Null)\b/i,operator:/\.\.|<[=>]?|>=?|:?=|(?:[+\-*\/&~|]|\b(?:Mod|Shl|Shr)\b)=?|\b(?:And|Not|Or)\b/i,punctuation:/[.,:;()\[\]]/}; +Prism.languages.moonscript={comment:/--.*/,string:[{pattern:/'[^']*'|\[(=*)\[[\s\S]*?\]\1\]/,greedy:!0},{pattern:/"[^"]*"/,greedy:!0,inside:{interpolation:{pattern:/#\{[^{}]*\}/,inside:{moonscript:{pattern:/(^#\{)[\s\S]+(?=\})/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/#\{|\}/,alias:"punctuation"}}}}}],"class-name":[{pattern:/(\b(?:class|extends)[ \t]+)\w+/,lookbehind:!0},/\b[A-Z]\w*/],keyword:/\b(?:class|continue|do|else|elseif|export|extends|for|from|if|import|in|local|nil|return|self|super|switch|then|unless|using|when|while|with)\b/,variable:/@@?\w*/,property:{pattern:/\b(?!\d)\w+(?=:)|(:)(?!\d)\w+/,lookbehind:!0},function:{pattern:/\b(?:_G|_VERSION|assert|collectgarbage|coroutine\.(?:running|create|resume|status|wrap|yield)|debug\.(?:debug|gethook|getinfo|getlocal|getupvalue|setlocal|setupvalue|sethook|traceback|getfenv|getmetatable|getregistry|setfenv|setmetatable)|dofile|error|getfenv|getmetatable|io\.(?:stdin|stdout|stderr|close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|ipairs|load|loadfile|loadstring|math\.(?:abs|acos|asin|atan|atan2|ceil|sin|cos|tan|deg|exp|floor|log|log10|max|min|fmod|modf|cosh|sinh|tanh|pow|rad|sqrt|frexp|ldexp|random|randomseed|pi)|module|next|os\.(?:clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\.(?:cpath|loaded|loadlib|path|preload|seeall)|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|string\.(?:byte|char|dump|find|len|lower|rep|sub|upper|format|gsub|gmatch|match|reverse)|table\.(?:maxn|concat|sort|insert|remove)|tonumber|tostring|type|unpack|xpcall)\b/,inside:{punctuation:/\./}},boolean:/\b(?:false|true)\b/,number:/(?:\B\.\d+|\b\d+\.\d+|\b\d+(?=[eE]))(?:[eE][-+]?\d+)?\b|\b(?:0x[a-fA-F\d]+|\d+)(?:U?LL)?\b/,operator:/\.{3}|[-=]>|~=|(?:[-+*/%<>!=]|\.\.)=?|[:#^]|\b(?:and|or)\b=?|\b(?:not)\b/,punctuation:/[.,()[\]{}\\]/},Prism.languages.moonscript.string[1].inside.interpolation.inside.moonscript.inside=Prism.languages.moonscript,Prism.languages.moon=Prism.languages.moonscript; +Prism.languages.n1ql={comment:/\/\*[\s\S]*?(?:$|\*\/)/,parameter:/\$[\w.]+/,string:{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\]|\1\1)*\1/,greedy:!0},identifier:{pattern:/`(?:\\[\s\S]|[^\\`]|``)*`/,greedy:!0},function:/\b(?:ABS|ACOS|ARRAY_AGG|ARRAY_APPEND|ARRAY_AVG|ARRAY_CONCAT|ARRAY_CONTAINS|ARRAY_COUNT|ARRAY_DISTINCT|ARRAY_FLATTEN|ARRAY_IFNULL|ARRAY_INSERT|ARRAY_INTERSECT|ARRAY_LENGTH|ARRAY_MAX|ARRAY_MIN|ARRAY_POSITION|ARRAY_PREPEND|ARRAY_PUT|ARRAY_RANGE|ARRAY_REMOVE|ARRAY_REPEAT|ARRAY_REPLACE|ARRAY_REVERSE|ARRAY_SORT|ARRAY_STAR|ARRAY_SUM|ARRAY_SYMDIFF|ARRAY_SYMDIFFN|ARRAY_UNION|ASIN|ATAN|ATAN2|AVG|BASE64|BASE64_DECODE|BASE64_ENCODE|BITAND|BITCLEAR|BITNOT|BITOR|BITSET|BITSHIFT|BITTEST|BITXOR|CEIL|CLOCK_LOCAL|CLOCK_MILLIS|CLOCK_STR|CLOCK_TZ|CLOCK_UTC|CONTAINS|CONTAINS_TOKEN|CONTAINS_TOKEN_LIKE|CONTAINS_TOKEN_REGEXP|COS|COUNT|CURL|DATE_ADD_MILLIS|DATE_ADD_STR|DATE_DIFF_MILLIS|DATE_DIFF_STR|DATE_FORMAT_STR|DATE_PART_MILLIS|DATE_PART_STR|DATE_RANGE_MILLIS|DATE_RANGE_STR|DATE_TRUNC_MILLIS|DATE_TRUNC_STR|DECODE_JSON|DEGREES|DURATION_TO_STR|E|ENCODED_SIZE|ENCODE_JSON|EXP|FLOOR|GREATEST|HAS_TOKEN|IFINF|IFMISSING|IFMISSINGORNULL|IFNAN|IFNANORINF|IFNULL|INITCAP|ISARRAY|ISATOM|ISBOOLEAN|ISNUMBER|ISOBJECT|ISSTRING|IsBitSET|LEAST|LENGTH|LN|LOG|LOWER|LTRIM|MAX|META|MILLIS|MILLIS_TO_LOCAL|MILLIS_TO_STR|MILLIS_TO_TZ|MILLIS_TO_UTC|MILLIS_TO_ZONE_NAME|MIN|MISSINGIF|NANIF|NEGINFIF|NOW_LOCAL|NOW_MILLIS|NOW_STR|NOW_TZ|NOW_UTC|NULLIF|OBJECT_ADD|OBJECT_CONCAT|OBJECT_INNER_PAIRS|OBJECT_INNER_VALUES|OBJECT_LENGTH|OBJECT_NAMES|OBJECT_PAIRS|OBJECT_PUT|OBJECT_REMOVE|OBJECT_RENAME|OBJECT_REPLACE|OBJECT_UNWRAP|OBJECT_VALUES|PAIRS|PI|POLY_LENGTH|POSINFIF|POSITION|POWER|RADIANS|RANDOM|REGEXP_CONTAINS|REGEXP_LIKE|REGEXP_POSITION|REGEXP_REPLACE|REPEAT|REPLACE|REVERSE|ROUND|RTRIM|SIGN|SIN|SPLIT|SQRT|STR_TO_DURATION|STR_TO_MILLIS|STR_TO_TZ|STR_TO_UTC|STR_TO_ZONE_NAME|SUBSTR|SUFFIXES|SUM|TAN|TITLE|TOARRAY|TOATOM|TOBOOLEAN|TOKENS|TOKENS|TONUMBER|TOOBJECT|TOSTRING|TRIM|TRUNC|TYPE|UPPER|WEEKDAY_MILLIS|WEEKDAY_STR)(?=\s*\()/i,keyword:/\b(?:ALL|ALTER|ANALYZE|AS|ASC|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|CONNECT|CONTINUE|CORRELATE|COVER|CREATE|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FLATTEN|FOR|FORCE|FROM|FUNCTION|GRANT|GROUP|GSI|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LAST|LEFT|LET|LETTING|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NULL|NUMBER|OBJECT|OFFSET|ON|OPTION|ORDER|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROCEDURE|PUBLIC|RAW|REALM|REDUCE|RENAME|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|SATISFIES|SCHEMA|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TO|TRANSACTION|TRIGGER|TRUNCATE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WITH|WORK|XOR)\b/i,boolean:/\b(?:TRUE|FALSE)\b/i,number:/(?:\b\d+\.|\B\.)\d+e[+\-]?\d+\b|\b\d+\.?\d*|\B\.\d+\b/i,operator:/[-+*\/=%]|!=|==?|\|\||<[>=]?|>=?|\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\b/i,punctuation:/[;[\](),.{}:]/}; +Prism.languages.n4js=Prism.languages.extend("javascript",{keyword:/\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),Prism.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),Prism.languages.n4jsd=Prism.languages.n4js; +Prism.languages["nand2tetris-hdl"]={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,keyword:/\b(?:CHIP|IN|OUT|PARTS|BUILTIN|CLOCKED)\b/,boolean:/\b(?:true|false)\b/,function:/[A-Za-z][A-Za-z0-9]*(?=\()/,number:/\b\d+\b/,operator:/=|\.\./,punctuation:/[{}[\];(),:]/}; +Prism.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-zA-Z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|(?=\$))(?:0[hx][\da-f]*\.?[\da-f]+(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|\d*\.?\d+(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[\[\]*+\-\/%<>=&|$!]/}; +Prism.languages.neon={comment:{pattern:/#.*/,greedy:!0},datetime:{pattern:/(^|[[{(=:,\s])\d\d\d\d-\d\d?-\d\d?(?:(?:[Tt]| +)\d\d?:\d\d:\d\d(?:\.\d*)? *(?:Z|[-+]\d\d?(?::?\d\d)?)?)?(?=$|[\]}),\s])/,lookbehind:!0,alias:"number"},key:{pattern:/(^|[[{(,\s])[^,:=[\]{}()'"\s]+(?=\s*:(?:$|[\]}),\s])|\s*=)/,lookbehind:!0,alias:"atrule"},number:{pattern:/(^|[[{(=:,\s])[+-]?(?:0x[\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\d+\.?\d*|\.?\d+)(?:[eE][+-]?\d+)?)(?=$|[\]}),:=\s])/,lookbehind:!0},boolean:{pattern:/(^|[[{(=:,\s])(?:true|false|yes|no)(?=$|[\]}),:=\s])/i,lookbehind:!0},null:{pattern:/(^|[[{(=:,\s])(?:null)(?=$|[\]}),:=\s])/i,lookbehind:!0,alias:"keyword"},string:{pattern:/(^|[[{(=:,\s])(?:('''|""")\r?\n(?:(?:[^\r\n]|\r?\n(?![\t ]*\2))*\r?\n)?[\t ]*\2|'[^'\r\n]*'|"(?:\\.|[^"\r\n])*")/,lookbehind:!0,greedy:!0},literal:{pattern:/(^|[[{(=:,\s])(?:[^#"\',:=[\]{}()\s`-]|[:-][^"\',=[\]{}()\s])(?:[^,:=\]})(\s]+|:(?![\s,\]})]|$)|[ \t]+[^#,:=\]})(\s])*/,lookbehind:!0,alias:"string"},punctuation:/[,:=[\]{}()-]/}; +Prism.languages.nginx=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},keyword:/\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types|ssl_session_tickets|ssl_stapling|ssl_stapling_verify|ssl_ecdh_curve|ssl_trusted_certificate|more_set_headers|ssl_early_data)\b/i}),Prism.languages.insertBefore("nginx","keyword",{variable:/\$[a-z_]+/i}); +Prism.languages.nim={comment:/#.*/,string:{pattern:/(?:(?:\b(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")|'(?:\\(?:\d+|x[\da-fA-F]{2}|.)|[^'])')/,greedy:!0},number:/\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/,keyword:/\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/,function:{pattern:/(?:(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/,inside:{operator:/\*$/}},ignore:{pattern:/`[^`\r\n]+`/,inside:{punctuation:/`/}},operator:{pattern:/(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|of|or|in|is|isnot|mod|not|notin|shl|shr|xor)\b)/m,lookbehind:!0},punctuation:/[({\[]\.|\.[)}\]]|[`(){}\[\],:]/}; +Prism.languages.nix={comment:/\/\*[\s\S]*?\*\/|#.*/,string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^}]|\{[^}]*\})*}/,lookbehind:!0,inside:{antiquotation:{pattern:/^\$(?=\{)/,alias:"variable"}}}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"variable"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:url|Tarball)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:true|false)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},Prism.languages.nix.string.inside.interpolation.inside.rest=Prism.languages.nix; +Prism.languages.nsis={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|[#;].*)/,lookbehind:!0},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:{pattern:/(^\s*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|Banner|BG(?:Font|Gradient|Image)|BrandingText|BringToFront|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|WriteUTF16LE|Seek|Write|WriteByte|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DlgItem|DLLVersion(?:Local)?|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|LabelAddress|TempFileName)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|Silent)|InitPluginsDir|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|Name|Nop|ns(?:Dialogs|Exec)|NSISdl|OutFile|Page(?:Callbacks)?|PE(?:DllCharacteristics|SubsysVer)|Pop|Push|Quit|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|Unicode|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UninstPage|UnRegDLL|UserInfo|Var|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle)\b/m,lookbehind:!0},property:/\b(?:admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user|ARCHIVE|FILE_(?:ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK(?:(?:CR|CU|LM)(?:32|64)?|DD|PD|U)|HKEY_(?:CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(?:ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)\b/,constant:/\${[\w\.:\^-]+}|\$\([\w\.:\^-]+\)/i,variable:/\$\w+/i,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|\+\+?|<=?|>=?|==?=?|&&?|\|\|?|[?*\/~^%]/,punctuation:/[{}[\];(),.:]/,important:{pattern:/(^\s*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|ifdef|ifmacrodef|ifmacrondef|ifndef|if|include|insertmacro|macroend|macro|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\b/im,lookbehind:!0}}; +Prism.languages.objectivec=Prism.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete Prism.languages.objectivec["class-name"]; +Prism.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},type_variable:{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},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:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}\[\]|_.,:;]/}; +!function(E){E.languages.opencl=E.languages.extend("c",{keyword:/\b(?:__attribute__|(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|auto|break|case|cl_(?:image_format|mem_fence_flags)|clk_event_t|complex|const|continue|default|do|(?:float|double)(?:16(?:x(?:1|16|2|4|8))?|1x(?:1|16|2|4|8)|2(?:x(?:1|16|2|4|8))?|3|4(?:x(?:1|16|2|4|8))?|8(?:x(?:1|16|2|4|8))?)?|else|enum|event_t|extern|for|goto|(?:u?(?:char|short|int|long)|half|quad|bool)(?:2|3|4|8|16)?|if|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|imaginary|inline|intptr_t|ndrange_t|packed|pipe|ptrdiff_t|queue_t|register|reserve_id_t|restrict|return|sampler_t|signed|size_t|sizeof|static|struct|switch|typedef|uintptr_t|uniform|union|unsigned|void|volatile|while)\b/,"function-opencl-kernel":{pattern:/\b(?:abs(?:_diff)?|a?(?:cos|sin)(?:h|pi)?|add_sat|aligned|all|and|any|async(?:_work_group_copy|_work_group_strided_copy)?|atan(?:2?(?:pi)?|h)?|atom_(?:add|and|cmpxchg|dec|inc|max|min|or|sub|xchg|xor)|barrier|bitselect|cbrt|ceil|clamp|clz|copies|copysign|cross|degrees|distance|dot|endian|erf|erfc|exp(?:2|10)?|expm1|fabs|fast_(?:distance|length|normalize)|fdim|floor|fma|fmax|fmin|fract|frexp|fro|from|get_(?:global_(?:id|offset|size)|group_id|image_(?:channel_data_type|channel_order|depth|dim|height|width)|local(?:_id|_size)|num_groups|work_dim)|hadd|(?:half|native)_(?:cos|divide|exp(?:2|10)?|log(?:2|10)?|powr|recip|r?sqrt|sin|tan)|hypot|ilogb|is(?:equal|finite|greater(?:equal)?|inf|less(?:equal|greater)?|nan|normal|notequal|(?:un)?ordered)|ldexp|length|lgamma|lgamma_r|log(?:b|1p|2|10)?|mad(?:24|_hi|_sat)?|max|mem(?:_fence)?|min|mix|modf|mul24|mul_hi|nan|nextafter|normalize|pow[nr]?|prefetch|radians|read_(?:image)(?:f|h|u?i)|read_mem_fence|remainder|remquo|reqd_work_group_size|rhadd|rint|rootn|rotate|round|rsqrt|select|shuffle2?|sign|signbit|sincos|smoothstep|sqrt|step|sub_sat|tan|tanh|tanpi|tgamma|to|trunc|upsample|vec_(?:step|type_hint)|v(?:load|store)(?:_half)?(?:2|3|4|8|16)?|v(?:loada_half|storea?(?:_half)?)(?:2|3|4|8|16)?(?:_(?:rte|rtn|rtp|rtz))?|wait_group_events|work_group_size_hint|write_image(?:f|h|u?i)|write_mem_fence)\b/,alias:"function"},"constant-opencl-kernel":{pattern:/\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:LOCAL|GLOBAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT)_(?:DIG|EPSILON|MANT_DIG|(?:MIN|MAX)(?:(?:_10)?_EXP)?)|FLT_RADIX|HUGE_VALF|INFINITY|(?:INT|LONG|SCHAR|SHRT|UCHAR|UINT|ULONG)_(?:MAX|MIN)|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:10|2)E?|PI[24]?|SQRT(?:1_2|2))|NAN)\b/,alias:"constant"}});var _={"type-opencl-host":{pattern:/\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|short|int|long)|float|double)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\b/,alias:"keyword"},"boolean-opencl-host":{pattern:/\bCL_(?:TRUE|FALSE)\b/,alias:"boolean"},"constant-opencl-host":{pattern:/\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:16|24|8|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\b/,alias:"constant"},"function-opencl-host":{pattern:/\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|Kernel|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\b/,alias:"function"}};E.languages.insertBefore("c","keyword",_),_["type-opencl-host-cpp"]={pattern:/\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|Sampler|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|UserEvent)\b/,alias:"keyword"},E.languages.insertBefore("cpp","keyword",_)}(Prism); +Prism.languages.oz={comment:/\/\*[\s\S]*?\*\/|%.*/,string:{pattern:/"(?:[^"\\]|\\[\s\S])*"/,greedy:!0},atom:{pattern:/'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,alias:"builtin"},keyword:/[$_]|\[\]|\b(?:at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,function:[/[a-z][A-Za-z\d]*(?=\()/,{pattern:/(\{)[A-Z][A-Za-z\d]*/,lookbehind:!0}],number:/\b(?:0[bx][\da-f]+|\d+\.?\d*(?:e~?\d+)?\b)|&(?:[^\\]|\\(?:\d{3}|.))/i,variable:/\b[A-Z][A-Za-z\d]*|`(?:[^`\\]|\\.)+`/,"attr-name":/\w+(?=:)/,operator:/:(?:=|::?)|<[-:=]?|=(?:=|=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,punctuation:/[\[\](){}.:;?]/}; +Prism.languages.parigp={comment:/\/\*[\s\S]*?\*\/|\\\\.*/,string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},keyword:function(){var r=["breakpoint","break","dbg_down","dbg_err","dbg_up","dbg_x","forcomposite","fordiv","forell","forpart","forprime","forstep","forsubgroup","forvec","for","iferr","if","local","my","next","return","until","while"];return r=r.map(function(r){return r.split("").join(" *")}).join("|"),RegExp("\\b(?:"+r+")\\b")}(),function:/\w[\w ]*?(?= *\()/,number:{pattern:/((?:\. *\. *)?)(?:\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *[+-]? *\d(?: *\d)*)?/i,lookbehind:!0},operator:/\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?:(?: *<)?(?: *=)?| *>)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,punctuation:/[\[\]{}().,:;|]/}; +!function(e){var n=e.languages.parser=e.languages.extend("markup",{keyword:{pattern:/(^|[^^])(?:\^(?:case|eval|for|if|switch|throw)\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\b)/,lookbehind:!0},variable:{pattern:/(^|[^^])\B\$(?:\w+|(?=[.{]))(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{punctuation:/\.|:+/}},function:{pattern:/(^|[^^])\B[@^]\w+(?:(?:\.|::?)\w+)*(?:\.|::?)?/,lookbehind:!0,inside:{keyword:{pattern:/(^@)(?:GET_|SET_)/,lookbehind:!0},punctuation:/\.|:+/}},escape:{pattern:/\^(?:[$^;@()\[\]{}"':]|#[a-f\d]*)/i,alias:"builtin"},punctuation:/[\[\](){};]/});n=e.languages.insertBefore("parser","keyword",{"parser-comment":{pattern:/(\s)#.*/,lookbehind:!0,alias:"comment"},expression:{pattern:/(^|[^^])\((?:[^()]|\((?:[^()]|\((?:[^()])*\))*\))*\)/,greedy:!0,lookbehind:!0,inside:{string:{pattern:/(^|[^^])(["'])(?:(?!\2)[^^]|\^[\s\S])*\2/,lookbehind:!0},keyword:n.keyword,variable:n.variable,function:n.function,boolean:/\b(?:true|false)\b/,number:/\b(?:0x[a-f\d]+|\d+\.?\d*(?:e[+-]?\d+)?)\b/i,escape:n.escape,operator:/[~+*\/\\%]|!(?:\|\|?|=)?|&&?|\|\|?|==|<[<=]?|>[>=]?|-[fd]?|\b(?:def|eq|ge|gt|in|is|le|lt|ne)\b/,punctuation:n.punctuation}}}),n=e.languages.insertBefore("inside","punctuation",{expression:n.expression,keyword:n.keyword,variable:n.variable,function:n.function,escape:n.escape,"parser-punctuation":{pattern:n.punctuation,alias:"punctuation"}},n.tag.inside["attr-value"])}(Prism); +Prism.languages.pascal={comment:[/\(\*[\s\S]+?\*\)/,/\{[\s\S]+?\}/,/\/\/.*/],string:{pattern:/(?:'(?:''|[^'\r\n])*'|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/i,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},Prism.languages.objectpascal=Prism.languages.pascal; +!function(e){var n="(?:\\w+(?:)?|)".replace(//g,"\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\)"),i=e.languages.pascaligo={comment:/\(\*[\s\S]+?\*\)|\/\/.*/,string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1|\^[a-z]/i,greedy:!0},"class-name":[{pattern:RegExp("(\\btype\\s+\\w+\\s+is\\s+)".replace(//g,n),"i"),lookbehind:!0,inside:null},{pattern:RegExp("(?=\\s+is\\b)".replace(//g,n),"i"),inside:null},{pattern:RegExp("(:\\s*)".replace(//g,n)),lookbehind:!0,inside:null}],keyword:{pattern:/(^|[^&])\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\b/i,lookbehind:!0},boolean:{pattern:/(^|[^&])\b(?:True|False)\b/i,lookbehind:!0},builtin:{pattern:/(^|[^&])\b(?:bool|int|list|map|nat|record|string|unit)\b/i,lookbehind:!0},function:/\w+(?=\s*\()/i,number:[/%[01]+|&[0-7]+|\$[a-f\d]+/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?(?:mtz|n)?/i],operator:/->|=\/=|\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=|]|\b(?:and|mod|or)\b/,punctuation:/\(\.|\.\)|[()\[\]:;,.{}]/},t=["comment","keyword","builtin","operator","punctuation"].reduce(function(e,n){return e[n]=i[n],e},{});i["class-name"].forEach(function(e){e.inside=t})}(Prism); +Prism.languages.pcaxis={string:/"[^"]*"/,keyword:{pattern:/((?:^|;)\s*)[-A-Z\d]+(?:\s*\[[-\w]+\])?(?:\s*\("[^"]*"(?:,\s*"[^"]*")*\))?(?=\s*=)/,lookbehind:!0,greedy:!0,inside:{keyword:/^[-A-Z\d]+/,language:{pattern:/^(\s*)\[[-\w]+\]/,lookbehind:!0,inside:{punctuation:/^\[|\]$/,property:/[-\w]+/}},"sub-key":{pattern:/^(\s*)[\s\S]+/,lookbehind:!0,inside:{parameter:{pattern:/"[^"]*"/,alias:"property"},punctuation:/^\(|\)$|,/}}}},operator:/=/,tlist:{pattern:/TLIST\s*\(\s*\w+(?:(?:\s*,\s*"[^"]*")+|\s*,\s*"[^"]*"-"[^"]*")?\s*\)/,greedy:!0,inside:{function:/^TLIST/,property:{pattern:/^(\s*\(\s*)\w+/,lookbehind:!0},string:/"[^"]*"/,punctuation:/[(),]/,operator:/-/}},punctuation:/[;,]/,number:{pattern:/(^|\s)\d+(?:\.\d+)?(?!\S)/,lookbehind:!0},boolean:/YES|NO/},Prism.languages.px=Prism.languages.pcaxis; +Prism.languages.perl={comment:[{pattern:/(^\s*)=\w+[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+)+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/}; +!function(a){var e="(?:[a-zA-Z]\\w*|[|\\\\[\\]])+";a.languages.phpdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp("(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:"+e+"\\s+)?)\\$\\w+"),lookbehind:!0}}),a.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp("(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\s+)"+e),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]}),a.languages.javadoclike.addSupport("php",a.languages.phpdoc)}(Prism); +Prism.languages.insertBefore("php","variable",{this:/\$this\b/,global:/\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/static|self|parent/,punctuation:/::|\\/}}}); +Prism.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},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(?:_INSERT|COL)?|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|RETURNS?|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(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+\.?\d*|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; +!function(E){var A=E.languages.plsql=E.languages.extend("sql",{comment:[/\/\*[\s\S]*?\*\//,/--.*/]}),T=A.keyword;Array.isArray(T)||(T=A.keyword=[T]),T.unshift(/\b(?:ACCESS|AGENT|AGGREGATE|ARRAY|ARROW|AT|ATTRIBUTE|AUDIT|AUTHID|BFILE_BASE|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BYTE|CALLING|CHAR_BASE|CHARSET(?:FORM|ID)|CLOB_BASE|COLAUTH|COLLECT|CLUSTERS?|COMPILED|COMPRESS|CONSTANT|CONSTRUCTOR|CONTEXT|CRASH|CUSTOMDATUM|DANGLING|DATE_BASE|DEFINE|DETERMINISTIC|DURATION|ELEMENT|EMPTY|EXCEPTIONS?|EXCLUSIVE|EXTERNAL|FINAL|FORALL|FORM|FOUND|GENERAL|HEAP|HIDDEN|IDENTIFIED|IMMEDIATE|INCLUDING|INCREMENT|INDICATOR|INDEXES|INDICES|INFINITE|INITIAL|ISOPEN|INSTANTIABLE|INTERFACE|INVALIDATE|JAVA|LARGE|LEADING|LENGTH|LIBRARY|LIKE[24C]|LIMITED|LONG|LOOP|MAP|MAXEXTENTS|MAXLEN|MEMBER|MINUS|MLSLABEL|MULTISET|NAME|NAN|NATIVE|NEW|NOAUDIT|NOCOMPRESS|NOCOPY|NOTFOUND|NOWAIT|NUMBER(?:_BASE)?|OBJECT|OCI(?:COLL|DATE|DATETIME|DURATION|INTERVAL|LOBLOCATOR|NUMBER|RAW|REF|REFCURSOR|ROWID|STRING|TYPE)|OFFLINE|ONLINE|ONLY|OPAQUE|OPERATOR|ORACLE|ORADATA|ORGANIZATION|ORL(?:ANY|VARY)|OTHERS|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETERS?|PASCAL|PCTFREE|PIPE(?:LINED)?|PRAGMA|PRIOR|PRIVATE|RAISE|RANGE|RAW|RECORD|REF|REFERENCE|REM|REMAINDER|RESULT|RESOURCE|RETURNING|REVERSE|ROW(?:ID|NUM|TYPE)|SAMPLE|SB[124]|SEGMENT|SELF|SEPARATE|SEQUENCE|SHORT|SIZE(?:_T)?|SPARSE|SQL(?:CODE|DATA|NAME|STATE)|STANDARD|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUCCESSFUL|SYNONYM|SYSDATE|TABAUTH|TDO|THE|TIMEZONE_(?:ABBR|HOUR|MINUTE|REGION)|TRAILING|TRANSAC(?:TIONAL)?|TRUSTED|UB[124]|UID|UNDER|UNTRUSTED|VALIDATE|VALIST|VARCHAR2|VARIABLE|VARIANCE|VARRAY|VIEWS|VOID|WHENEVER|WRAPPED|ZONE)\b/i);var R=A.operator;Array.isArray(R)||(R=A.operator=[R]),R.unshift(/:=/)}(Prism); +!function(e){var t=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\(.*?\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*]|[^\[\]])*]|[^\[\]])*]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/i,function:[/\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},o=t.string[0].inside;o.boolean=t.boolean,o.variable=t.variable,o.function.inside=t}(); +Prism.languages.processing=Prism.languages.extend("clike",{keyword:/\b(?:break|catch|case|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*\/]=?/}),Prism.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|XML|[A-Z]\w*)\b/,alias:"variable"}}),Prism.languages.processing.function.pattern=/\w+(?=\s*\()/,Prism.languages.processing["class-name"].alias="variable"; +Prism.languages.prolog={comment:[/%.+/,/\/\*[\s\S]*?\*\//],string:{pattern:/(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\b(?:fx|fy|xf[xy]?|yfx?)\b/,variable:/\b[A-Z_]\w*/,function:/\b[a-z]\w*(?:(?=\()|\/\d+)/,number:/\b\d+\.?\d*/,operator:/[:\\=><\-?*@\/;+^|!$.]+|\b(?:is|mod|not|xor)\b/,punctuation:/[(){}\[\],]/}; +Prism.languages.properties={comment:/^[ \t]*[#!].*$/m,"attr-value":{pattern:/(^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?: *[=:] *| ))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ \t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?= *[=:] *| )/m,punctuation:/[=:]/}; +!function(e){var a=/\b(?:double|float|[su]?int(?:32|64)|s?fixed(?:32|64)|bool|string|bytes)\b/;e.languages.protobuf=e.languages.extend("clike",{"class-name":{pattern:/(\b(?:enum|extend|message|service)\s+)[A-Za-z_]\w*(?=\s*\{)/,lookbehind:!0},keyword:/\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|service|syntax|to)\b/}),e.languages.insertBefore("protobuf","operator",{map:{pattern:/\bmap<\s*[\w.]+\s*,\s*[\w.]+\s*>(?=\s+[A-Za-z_]\w*\s*[=;])/,alias:"class-name",inside:{punctuation:/[<>.,]/,builtin:a}},builtin:a,"positional-class-name":{pattern:/(?:\b|\B\.)[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?=\s+[A-Za-z_]\w*\s*[=;])/,alias:"class-name",inside:{punctuation:/\./}},annotation:{pattern:/(\[\s*)[A-Za-z_]\w*(?=\s*=)/,lookbehind:!0}})}(Prism); +!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ]+.+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:e.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]+).+/m,lookbehind:!0,inside:e.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]+).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:e.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:e.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:e.languages.javascript}],punctuation:/[.\-!=|]+/};for(var t=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","less","livescript","markdown",{filter:"sass",language:"scss"},"stylus"],n={},a=0,i=t.length;a\s*|^\s*))\/(?:[^\/\\]|\\[\s\S])+\/(?:[imx]+\b|\B)/,lookbehind:!0,greedy:!0,inside:{"extended-regex":{pattern:/^\/(?:[^\/\\]|\\[\s\S])+\/[im]*x[im]*$/,inside:{comment:/#.*/}}}},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:\$\{(?:[^'"}]|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}|(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{"double-quoted":{pattern:/^"[\s\S]*"$/,inside:{}}}},variable:{pattern:/\$(?:::)?\w+(?:::\w+)*/,inside:{punctuation:/::/}},"attr-name":/(?:\w+|\*)(?=\s*=>)/,function:[{pattern:/(\.)(?!\d)\w+/,lookbehind:!0},/\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\b|\b(?!\d)\w+(?=\()/],number:/\b(?:0x[a-f\d]+|\d+(?:\.\d+)?(?:e-?\d+)?)\b/i,boolean:/\b(?:true|false)\b/,keyword:/\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\b/,datatype:{pattern:/\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\b/,alias:"symbol"},operator:/=[=~>]?|![=~]?|<(?:<\|?|[=~|-])?|>[>=]?|->?|~>|\|>?>?|[*\/%+?]|\b(?:and|in|or)\b/,punctuation:/[\[\]{}().,;]|:+/};var n=[{pattern:/(^|[^\\])\$\{(?:[^'"{}]|\{[^}]*\}|(["'])(?:(?!\2)[^\\]|\\[\s\S])*\2)+\}/,lookbehind:!0,inside:{"short-variable":{pattern:/(^\$\{)(?!\w+\()(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}},delimiter:{pattern:/^\$/,alias:"variable"},rest:e.languages.puppet}},{pattern:/(^|[^\\])\$(?:::)?\w+(?:::\w+)*/,lookbehind:!0,alias:"variable",inside:{punctuation:/::/}}];e.languages.puppet.heredoc[0].inside.interpolation=n,e.languages.puppet.string.inside["double-quoted"].inside.interpolation=n}(Prism); +!function(r){r.languages.pure={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0},/#!.+/],"inline-lang":{pattern:/%<[\s\S]+?%>/,greedy:!0,inside:{lang:{pattern:/(^%< *)-\*-.+?-\*-/,lookbehind:!0,alias:"comment"},delimiter:{pattern:/^%<.*|%>$/,alias:"punctuation"}}},string:{pattern:/"(?:\\.|[^"\\\r\n])*"/,greedy:!0},number:{pattern:/((?:\.\.)?)(?:\b(?:inf|nan)\b|\b0x[\da-f]+|(?:\b(?:0b)?\d+(?:\.\d)?|\B\.\d)\d*(?:e[+-]?\d+)?L?)/i,lookbehind:!0},keyword:/\b(?:ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|NULL|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\b/,function:/\b(?:abs|add_(?:(?:fundef|interface|macdef|typedef)(?:_at)?|addr|constdef|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_(?:matrix|pointer)|byte_c?string(?:_pointer)?|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|short|sentry|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\b/,special:{pattern:/\b__[a-z]+__\b/i,alias:"builtin"},operator:/(?=\b_|[^_])[!"#$%&'*+,\-.\/:<=>?@\\^_`|~\u00a1-\u00bf\u00d7-\u00f7\u20d0-\u2bff]+|\b(?:and|div|mod|not|or)\b/,punctuation:/[(){}\[\];,|]/};["c",{lang:"c++",alias:"cpp"},"fortran"].forEach(function(e){var t=e;if("string"!=typeof e&&(t=e.alias,e=e.lang),r.languages[t]){var a={};a["inline-lang-"+t]={pattern:RegExp("%< *-\\*- *{lang}\\d* *-\\*-[\\s\\S]+?%>".replace("{lang}",e.replace(/([.+*?\/\\(){}\[\]])/g,"\\$1")),"i"),inside:r.util.clone(r.languages.pure["inline-lang"].inside)},a["inline-lang-"+t].inside.rest=r.util.clone(r.languages[t]),r.languages.insertBefore("pure","inline-lang",a)}}),r.languages.c&&(r.languages.pure["inline-lang"].inside.rest=r.util.clone(r.languages.c))}(Prism); +Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\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]|rb|br)?("""|''')[\s\S]+?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\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:/(^\s*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|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(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; +Prism.languages.q={string:/"(?:\\.|[^"\\\r\n])*"/,comment:[{pattern:/([\t )\]}])\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|\r?\n|\r)\/[\t ]*(?:(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?(?:\\(?=[\t ]*(?:\r?\n|\r))|$)|\S.*)/,lookbehind:!0,greedy:!0},{pattern:/^\\[\t ]*(?:\r?\n|\r)[\s\S]+/m,greedy:!0},{pattern:/^#!.+/m,greedy:!0}],symbol:/`(?::\S+|[\w.]*)/,datetime:{pattern:/0N[mdzuvt]|0W[dtz]|\d{4}\.\d\d(?:m|\.\d\d(?:T(?:\d\d(?::\d\d(?::\d\d(?:[.:]\d\d\d)?)?)?)?)?[dz]?)|\d\d:\d\d(?::\d\d(?:[.:]\d\d\d)?)?[uvt]?/,alias:"number"},number:/\b(?![01]:)(?:0[wn]|0W[hj]?|0N[hje]?|0x[\da-fA-F]+|\d+\.?\d*(?:e[+-]?\d+)?[hjfeb]?)/,keyword:/\\\w+\b|\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\b/,adverb:{pattern:/['\/\\]:?|\beach\b/,alias:"function"},verb:{pattern:/(?:\B\.\B|\b[01]:|<[=>]?|>=?|[:+\-*%,!?_~=|$&#@^]):?/,alias:"operator"},punctuation:/[(){}\[\];.]/}; +!function(e){for(var r=/(?:[^\\()[\]{}"'/]||\/(?![*/])||\(*\)|\[*\]|\{*\}|\\[\s\S])/.source.replace(//g,"\"(?:\\\\.|[^\\\\\"\r\\n])*\"|'(?:\\\\.|[^\\\\'\r\\n])*'").replace(//g,"\\/\\/.*|\\/\\*(?:(?!\\*\\/)[\\s\\S])*\\*\\/"),t=0;t<2;t++)r=r.replace(//g,r);r=r.replace(//g,"[^\\s\\S]"),e.languages.qml={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},"javascript-function":{pattern:RegExp("((?:^|;)[ \t]*)function\\s+[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*\\(*\\)\\s*\\{*\\}".replace(//g,r),"m"),lookbehind:!0,greedy:!0,alias:"language-javascript",inside:e.languages.javascript},"class-name":{pattern:/((?:^|[:;])[ \t]*)(?!\d)\w+(?=[ \t]*\{|[ \t]+on\b)/m,lookbehind:!0},property:[{pattern:/((?:^|[;{])[ \t]*)(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,lookbehind:!0},{pattern:/((?:^|[;{])[ \t]*)property[ \t]+(?!\d)\w+(?:\.\w+)*[ \t]+(?!\d)\w+(?:\.\w+)*(?=[ \t]*:)/m,lookbehind:!0,inside:{keyword:/^property/,property:/\w+(?:\.\w+)*/}}],"javascript-expression":{pattern:RegExp("(:[ \t]*)(?![\\s;}[])(?:(?!$|[;}]))+".replace(//g,r),"m"),lookbehind:!0,greedy:!0,alias:"language-javascript",inside:e.languages.javascript},string:/"(?:\\.|[^\\"\r\n])*"/,keyword:/\b(?:as|import|on)\b/,punctuation:/[{}[\]:;,]/}}(Prism); +Prism.languages.qore=Prism.languages.extend("clike",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:\/\/|#).*)/,lookbehind:!0},string:{pattern:/("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},variable:/\$(?!\d)\w+\b/,keyword:/\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:int|float|number|bool|string|date|list)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01]+|0x[\da-f]*\.?[\da-fp\-]+|\d*\.?\d+e?\d*[df]|\d*\.?\d+)\b/i,boolean:/\b(?:true|false)\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\|[|=]?|[*\/%^]=?|[~?])/,lookbehind:!0},function:/\$?\b(?!\d)\w+(?=\()/}); +Prism.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+\.?\d*|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/,punctuation:/[(){}\[\],;]/}; +!function(i){var t=i.util.clone(i.languages.javascript);i.languages.jsx=i.languages.extend("markup",t),i.languages.jsx.tag.pattern=/<\/?(?:[\w.:-]+\s*(?:\s+(?:[\w.:$-]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s{'">=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}))*\s*\/?)?>/i,i.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,i.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i,i.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,i.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},i.languages.jsx.tag),i.languages.insertBefore("inside","attr-value",{script:{pattern:/=(?:\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:i.languages.jsx},alias:"language-javascript"}},i.languages.jsx.tag);var o=function(t){return t?"string"==typeof t?t:"string"==typeof t.content?t.content:t.content.map(o).join(""):""},p=function(t){for(var n=[],e=0;e"===a.content[a.content.length-1].content||n.push({tagName:o(a.content[0].content[1]),openedBraces:0}):0]?|>[=>]?|[&|^~]|\b(?:or|and|not|with|at)\b/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.reason=Prism.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(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),Prism.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete Prism.languages.reason.function; +Prism.languages.vala=Prism.languages.extend("clike",{"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=(?:\?\s+|\*?\s+\*?)\w+)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|interface|new|struct|enum)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],constant:/\b[A-Z0-9_]+\b/,function:/\w+(?=\s*\()/,keyword:/\b(?:bool|char|double|float|null|size_t|ssize_t|string|unichar|void|int|int8|int16|int32|int64|long|short|uchar|uint|uint8|uint16|uint32|uint64|ulong|ushort|class|delegate|enum|errordomain|interface|namespace|struct|break|continue|do|for|foreach|return|while|else|if|switch|assert|case|default|abstract|const|dynamic|ensures|extern|inline|internal|override|private|protected|public|requires|signal|static|virtual|volatile|weak|async|owned|unowned|try|catch|finally|throw|as|base|construct|delete|get|in|is|lock|new|out|params|ref|sizeof|set|this|throws|typeof|using|value|var|yield)\b/i,number:/(?:\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)(?:f|u?l?)?/i,operator:/\+\+|--|&&|\|\||<<=?|>>=?|=>|->|~|[+\-*\/%&^|=!<>]=?|\?\??|\.\.\./,punctuation:/[{}[\];(),.:]/}),Prism.languages.insertBefore("vala","string",{"raw-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},"template-string":{pattern:/@"[\s\S]*?"/,greedy:!0,inside:{interpolation:{pattern:/\$(?:\([^)]*\)|[a-zA-Z]\w*)/,inside:{delimiter:{pattern:/^\$\(?|\)$/,alias:"punctuation"},rest:Prism.languages.vala}},string:/[\s\S]+/}}}),Prism.languages.insertBefore("vala","keyword",{regex:{pattern:/\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[imsx]{0,4}(?=\s*(?:$|[\r\n,.;})\]]))/,greedy:!0}}); +!function(n){var e={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},a=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|c[a-zA-Z]|0[0-7]{0,2}|[123][0-7]{2}|.)/,r=/\\[wsd]|\.|\\p{[^{}]+}/i,i="(?:[^\\\\-]|"+a.source+")",s=RegExp(i+"-"+i),t={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},c=[/\\(?![123][0-7]{2})[1-9]/,{pattern:/\\k<[^<>']+>/,inside:{"group-name":t}}];n.languages.regex={charset:{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"charset-negation":{pattern:/(^\[)\^/,lookbehind:!0},"charset-punctuation":/^\[|\]$/,range:{pattern:s,inside:{escape:a,"range-punctuation":/-/}},"special-escape":e,charclass:r,backreference:c,escape:a}},"special-escape":e,charclass:r,backreference:c,anchor:/[$^]|\\[ABbGZz]/,escape:a,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|?@\[\\\]^_`{|}~])\2+)(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,inside:{punctuation:/^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}},{pattern:/(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2+(?=\r?\n|\r|$)/,lookbehind:!0,inside:{punctuation:/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,important:/.+/}}],hr:{pattern:/((?:\r?\n|\r){2})([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\2{3,}(?=(?:\r?\n|\r){2})/,lookbehind:!0,alias:"punctuation"},field:{pattern:/(^\s*):[^:\r\n]+:(?= )/m,lookbehind:!0,alias:"attr-name"},"command-line-option":{pattern:/(^\s*)(?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:--|\/)[a-z\d-]+)(?:[ =](?:[a-z][\w-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}\S)/im,lookbehind:!0,alias:"symbol"},"literal-block":{pattern:/::(?:\r?\n|\r){2}([ \t]+).+(?:(?:\r?\n|\r)\1.+)*/,inside:{"literal-block-punctuation":{pattern:/^::/,alias:"punctuation"}}},"quoted-literal-block":{pattern:/::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,inside:{"literal-block-punctuation":{pattern:/^(?:::|([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])\1*)/m,alias:"punctuation"}}},"list-bullet":{pattern:/(^\s*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,lookbehind:!0,alias:"punctuation"},"doctest-block":{pattern:/(^\s*)>>> .+(?:(?:\r?\n|\r).+)*/m,lookbehind:!0,inside:{punctuation:/^>>>/}},inline:[{pattern:/(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s).*?[^\s]\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,lookbehind:!0,inside:{bold:{pattern:/(^\*\*).+(?=\*\*$)/,lookbehind:!0},italic:{pattern:/(^\*).+(?=\*$)/,lookbehind:!0},"inline-literal":{pattern:/(^``).+(?=``$)/,lookbehind:!0,alias:"symbol"},role:{pattern:/^:[^:]+:|:[^:]+:$/,alias:"function",inside:{punctuation:/^:|:$/}},"interpreted-text":{pattern:/(^`).+(?=`$)/,lookbehind:!0,alias:"attr-value"},substitution:{pattern:/(^\|).+(?=\|$)/,lookbehind:!0,alias:"attr-value"},punctuation:/\*\*?|``?|\|/}}],link:[{pattern:/\[[^\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,alias:"string",inside:{punctuation:/^\[|\]_$/}},{pattern:/(?:\b[a-z\d]+(?:[_.:+][a-z\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,alias:"string",inside:{punctuation:/^_?`|`$|`?_?_$/}}],punctuation:{pattern:/(^\s*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,lookbehind:!0}}; +Prism.languages.rip={comment:/#.*/,keyword:/(?:=>|->)|\b(?:class|if|else|switch|case|return|exit|try|catch|finally|raise)\b/,builtin:/@|\bSystem\b/,boolean:/\b(?:true|false)\b/,date:/\b\d{4}-\d{2}-\d{2}\b/,time:/\b\d{2}:\d{2}:\d{2}\b/,datetime:/\b\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\b/,character:/\B`[^\s`'",.:;#\/\\()<>\[\]{}]\b/,regex:{pattern:/(^|[^/])\/(?!\/)(?:\[.+?]|\\.|[^/\\\r\n])+\/(?=\s*(?:$|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},symbol:/:[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/,string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},number:/[+-]?(?:(?:\d+\.\d+)|(?:\d+))/,punctuation:/(?:\.{2,3})|[`,.:;=\/\\()<>\[\]{}]/,reference:/[^\d\s`'",.:;#\/\\()<>\[\]{}][^\s`'",.:;#\/\\()<>\[\]{}]*/}; +Prism.languages.roboconf={comment:/#.*/,keyword:{pattern:/(^|\s)(?:(?:facet|instance of)(?=[ \t]+[\w-]+[ \t]*\{)|(?:external|import)\b)/,lookbehind:!0},component:{pattern:/[\w-]+(?=[ \t]*\{)/,alias:"variable"},property:/[\w.-]+(?=[ \t]*:)/,value:{pattern:/(=[ \t]*)[^,;]+/,lookbehind:!0,alias:"attr-value"},optional:{pattern:/\(optional\)/,alias:"builtin"},wildcard:{pattern:/(\.)\*/,lookbehind:!0,alias:"operator"},punctuation:/[{},.;:=]/}; +!function(t){var r={pattern:/(^[ \t]*| {2}|\t)#.*/m,lookbehind:!0,greedy:!0},o={pattern:/((?:^|[^\\])(?:\\{2})*)[$@&%]\{(?:[^{}\r\n]|\{[^{}\r\n]*\})*\}/,lookbehind:!0,inside:{punctuation:/^[$@&%]\{|\}$/}};function n(t,n){var e={"section-header":{pattern:/^ ?\*{3}.+?\*{3}/,alias:"keyword"}};for(var a in n)e[a]=n[a];return e.tag={pattern:/([\r\n](?: |\t)[ \t]*)\[[-\w]+\]/,lookbehind:!0,inside:{punctuation:/\[|\]/}},e.variable=o,e.comment=r,{pattern:RegExp("^ ?\\*{3}[ \t]*[ \t]*\\*{3}(?:.|[\r\\n](?!\\*{3}))*".replace(//g,t),"im"),alias:"section",inside:e}}var e={pattern:/(\[Documentation\](?: |\t)[ \t]*)(?![ \t]|#)(?:.|[ \t]*(?:\r\n?|\n)[ \t]*\.{3}[ \t]*)+/,lookbehind:!0,alias:"string"},a={pattern:/([\r\n] ?)(?!#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0,alias:"function",inside:{variable:o}},i={pattern:/([\r\n](?: |\t)[ \t]*)(?!\[|\.{3}|#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0,inside:{variable:o}};t.languages.robotframework={settings:n("Settings",{documentation:{pattern:/([\r\n] ?Documentation(?: |\t)[ \t]*)(?![ \t]|#)(?:.|[ \t]*(?:\r\n?|\n)[ \t]*\.{3}[ \t]*)+/,lookbehind:!0,alias:"string"},property:{pattern:/([\r\n] ?)(?!\.{3}|#)(?:\S(?:[ \t]\S)*)+/,lookbehind:!0}}),variables:n("Variables"),"test-cases":n("Test Cases",{"test-name":a,documentation:e,property:i}),keywords:n("Keywords",{"keyword-name":a,documentation:e,property:i}),tasks:n("Tasks",{"task-name":a,documentation:e,property:i}),comment:r},t.languages.robot=t.languages.robotframework}(Prism); +Prism.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[{pattern:/b?r(#*)"(?:\\.|(?!"\1)[^\\\r\n])*"\1/,greedy:!0},{pattern:/b?"(?:\\.|[^\\\r\n"])*"/,greedy:!0}],char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u{(?:[\da-fA-F]_*){1,6}|.)|[^\\\r\n\t'])'/,alias:"string"},"lifetime-annotation":{pattern:/'[^\s>']+/,alias:"symbol"},keyword:/\b(?:abstract|alignof|as|async|await|be|box|break|const|continue|crate|do|dyn|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|Self|struct|super|true|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,greedy:!0,alias:"attr-name"},function:[/\w+(?=\s*\()/,/\w+!(?=\s*\(|\[)/],"macro-rules":{pattern:/\w+!/,alias:"function"},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[|:,]/,operator:/[&*]/}},punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/}; +!function(e){var t="(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))",a=/\b(?:\d[\da-f]*x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,n={pattern:RegExp(t+"[bx]"),alias:"number"},i={pattern:/(^|\s+)(?:proc\s+\w+|quit|run|data(?!\=))\b/i,alias:"keyword",lookbehind:!0},s=[/\/\*[\s\S]*?\*\//,{pattern:/(^\s*|;\s*)\*[^;]*;/m,lookbehind:!0}],r={pattern:RegExp(t),greedy:!0},o=/[$%@.(){}\[\];,\\]/,l={pattern:/%?\w+(?=\()/,alias:"keyword"},d={function:l,"arg-value":{pattern:/(\s*=\s*)[A-Z\.]+/i,lookbehind:!0},operator:/=/,"macro-variable":{pattern:/&[^\.]*\./i,alias:"string"},arg:{pattern:/[A-Z]+/i,alias:"keyword"},number:a,"numeric-constant":n,punctuation:o,string:r},c={pattern:/\b(?:format|put)\b=?[\w'$.]+/im,inside:{keyword:/^(?:format|put)(?=\=)/i,equals:/=/,format:{pattern:/(?:\w|\$\d)+\.\d?/i,alias:"number"}}},p={pattern:/\b(?:format|put)\s+[\w']+(?:\s+[$.\w]+)+(?=;)/i,inside:{keyword:/^(?:format|put)/i,format:{pattern:/[\w$]+\.\d?/,alias:"number"}}},u={pattern:/((?:^|[\s])=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\d?)\b/i,lookbehind:!0,alias:"keyword"},m={pattern:/(^|\s)(?:submit(?:\s+(?:load|parseonly|norun))?|endsubmit)\b/i,lookbehind:!0,alias:"keyword"},b="accessControl|cdm|aggregation|aStore|ruleMining|audio|autotune|bayesianNetClassifier|bioMedImage|boolRule|builtins|cardinality|sccasl|clustering|copula|countreg|dataDiscovery|dataPreprocess|dataSciencePilot|dataStep|decisionTree|deepLearn|deepNeural|varReduce|simSystem|ds2|deduplication|ecm|entityRes|espCluster|explainModel|factmac|fastKnn|fcmpact|fedSql|freqTab|gam|gleam|graphSemiSupLearn|gVarCluster|hiddenMarkovModel|hyperGroup|image|iml|ica|kernalPca|langModel|ldaTopic|sparseML|mlTools|mixed|modelPublishing|mbc|network|optNetwork|neuralNet|nonlinear|nmf|nonParametricBayes|optimization|panel|pls|percentile|pca|phreg|qkb|qlim|quantreg|recommend|tsReconcile|deepRnn|regression|reinforcementLearn|robustPca|sampling|sparkEmbeddedProcess|search(?:Analytics)?|sentimentAnalysis|sequence|configuration|session(?:Prop)?|severity|simple|smartData|sandwich|spatialreg|stabilityMonitoring|spc|loadStreams|svDataDescription|svm|table|conditionalRandomFields|text(?:Rule(?:Develop|Score)|Mining|Parse|Topic|Util|Filters|Frequency)|tsInfo|timeData|transpose|uniTimeSeries",g={pattern:RegExp("(^|\\s)(?:action\\s+)?(?:)\\.[a-z]+\\b[^;]+".replace(//g,b),"i"),lookbehind:!0,inside:{keyword:RegExp("(?:)\\.[a-z]+\\b".replace(//g,b),"i"),action:{pattern:/(?:action)/i,alias:"keyword"},function:l,"arg-value":d["arg-value"],operator:d.operator,comment:s,argument:d.arg,number:a,"numeric-constant":n,punctuation:o,string:r}},k={pattern:/((?:^|\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class(?:lev)?|close|column|computed?|contains|continue|data(?=\=)|define|delete|describe|document|do\s+over|do|dol|drop|dul|end(?:source|comp)?|entryTitle|else|eval(?:uate)?|exec(?:ute)?|exit|fill(?:attrs)?|file(?:name)?|flist|fnc|function(?:list)?|goto|global|group(?:by)?|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|name|noobs|nowd|_?null_|ods|options|or|otherwise|out(?:put)?|over(?:lay)?|plot|put|print|raise|ranexp|rannor|rbreak|retain|return|select|set|session|sessref|source|statgraph|sum|summarize|table|temp|terminate|then\s+do|then|title\d?|to|var|when|where|xaxisopts|yaxisopts|y2axisopts)\b/i,lookbehind:!0};e.languages.sas={datalines:{pattern:/^(\s*)(?:(?:data)?lines|cards);[\s\S]+?^\s*;/im,lookbehind:!0,alias:"string",inside:{keyword:{pattern:/^(?:(?:data)?lines|cards)/i},punctuation:/;/}},"proc-sql":{pattern:/(^proc\s+(?:fed)?sql(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|quit|run|data);|(?![\s\S]))/im,lookbehind:!0,inside:{sql:{pattern:RegExp("^[ \t]*(?:select|alter\\s+table|(?:create|describe|drop)\\s+(?:index|table(?:\\s+constraints)?|view)|create\\s+unique\\s+index|insert\\s+into|update)(?:|[^;\"'])+;".replace(//g,t),"im"),alias:"language-sql",inside:e.languages.sql},"global-statements":u,"sql-statements":{pattern:/(^|\s)(?:disconnect\s+from|exec(?:ute)?|begin|commit|rollback|reset|validate)\b/i,lookbehind:!0,alias:"keyword"},number:a,"numeric-constant":n,punctuation:o,string:r}},"proc-groovy":{pattern:/(^proc\s+groovy(?:\s+[\w|=]+)?;)(?:\s*submit)[\s\S]+?(?=^(?:proc\s+\w+|quit|run|data);|(?![\s\S]))/im,lookbehind:!0,inside:{groovy:{pattern:RegExp("(^[ \t]*submit(?:\\s+(?:load|parseonly|norun))?)(?:|[^\"'])+?(?=endsubmit;)".replace(//g,t),"im"),lookbehind:!0,alias:"language-groovy",inside:e.languages.groovy},"submit-statement":m,"global-statements":u,number:a,"numeric-constant":n,punctuation:o,string:r}},"proc-lua":{pattern:/(^proc\s+lua(?:\s+[\w|=]+)?;)(?:\s*submit)[\s\S]+?(?=^(?:proc\s+\w+|quit|run|data);|(?![\s\S]))/im,lookbehind:!0,inside:{lua:{pattern:RegExp("(^[ \t]*submit(?:\\s+(?:load|parseonly|norun))?)(?:|[^\"'])+?(?=endsubmit;)".replace(//g,t),"im"),lookbehind:!0,alias:"language-lua",inside:e.languages.lua},"submit-statement":m,"global-statements":u,number:a,"numeric-constant":n,punctuation:o,string:r}},"proc-cas":{pattern:/(^proc\s+cas(?:\s+[\w|=]+)?;)[\s\S]+?(?=^(?:proc\s+\w+|quit|data);|(?![\s\S]))/im,lookbehind:!0,inside:{"statement-var":{pattern:/((?:^|\s)=?)saveresult\s+[^;]+/im,lookbehind:!0,inside:{statement:{pattern:/^saveresult\s+\S+/i,inside:{keyword:/^(?:saveresult)/i}},rest:d}},"cas-actions":g,statement:{pattern:/((?:^|\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,lookbehind:!0,inside:d},step:i,keyword:k,function:l,comment:s,format:c,altformat:p,"global-statements":u,number:a,"numeric-constant":n,punctuation:o,string:r}},"proc-args":{pattern:RegExp("(^proc\\s+\\w+\\s+)(?!\\s)(?:[^;\"']|)+;".replace(//g,t),"im"),lookbehind:!0,inside:d},"macro-keyword":{pattern:/((?:^|\s)=?)%(?:ABORT|BQUOTE|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|NRBQUOTE|NRQUOTE|NRSTR|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUOTE|QUPCASE|RETURN|RUN|SCAN|STR|SUBSTR|SUPERQ|SYMDEL|SYMGLOBL|SYMLOCAL|SYMEXIST|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\b/i,lookbehind:!0,alias:"keyword"},"macro-declaration":{pattern:/^%macro[^;]+(?=;)/im,inside:{keyword:/%macro/i}},"macro-end":{pattern:/^%mend[^;]+(?=;)/im,inside:{keyword:/%mend/i}},macro:{pattern:/%_\w+(?=\()/,alias:"keyword"},input:{pattern:/\binput\s+[-\w\s/*.$&]+;/i,inside:{input:{alias:"keyword",pattern:/^input/i},comment:s,number:a,"numeric-constant":n}},"options-args":{pattern:/(^options)[-'"|/\\<>*+=:()\w\s]*(?=;)/im,lookbehind:!0,inside:d},"cas-actions":g,comment:s,function:l,format:c,altformat:p,"numeric-constant":n,datetime:{pattern:RegExp(t+"(?:dt?|t)"),alias:"number"},string:r,step:i,keyword:k,"operator-keyword":{pattern:/\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,alias:"operator"},number:a,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?/i,punctuation:o}}(Prism); +!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,a=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:a}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:a,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)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism); +Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; +Prism.languages.scala=Prism.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b0x[\da-f]*\.?[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e\d+)?[dfl]?/i,symbol:/'[^\d\s\\]\w*/}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala.function; +!function(s){var n=["([\"'])(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|`[^`]+`|(?!\\1)[^\\\\])*\\1","<<-?\\s*(\\w+?)\\s*(?:\r?\n|\r)[\\s\\S]*?(?:\r?\n|\r)\\2","<<-?\\s*([\"'])(\\w+)\\3\\s*(?:\r?\n|\r)[\\s\\S]*?(?:\r?\n|\r)\\4"].join("|");s.languages["shell-session"]={command:{pattern:RegExp("\\$(?:[^\r\\n'\"<]|<>)+".replace(/<>/g,n)),inside:{bash:{pattern:/(\$\s*)[\s\S]+/,lookbehind:!0,alias:"language-bash",inside:s.languages.bash},sh:{pattern:/^\$/,alias:"important"}}},output:{pattern:/.(?:.*(?:\r\n?|\n|.$))*/}}}(Prism); +Prism.languages.smalltalk={comment:/"(?:""|[^"])*"/,character:{pattern:/\$./,alias:"string"},string:/'(?:''|[^'])*'/,symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/\b\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/}; +!function(n){n.languages.smarty={comment:/\{\*[\s\S]*?\*\}/,delimiter:{pattern:/^\{|\}$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][-+]?\d+)?/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->)(?!\d)\w+/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],function:[{pattern:/(\|\s*)@?(?!\d)\w+/,lookbehind:!0},/^\/?(?!\d)\w+/,/(?!\d)\w+(?=\()/],"attr-name":{pattern:/\w+\s*=\s*(?:(?!\d)\w+)?/,inside:{variable:{pattern:/(=\s*)(?!\d)\w+/,lookbehind:!0},operator:/=/}},punctuation:[/[\[\]().,:`]|->/],operator:[/[+\-*\/%]|==?=?|[!<>]=?|&&|\|\|?/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/],keyword:/\b(?:false|off|on|no|true|yes)\b/},n.hooks.add("before-tokenize",function(e){var t=!1;n.languages["markup-templating"].buildPlaceholders(e,"smarty",/\{\*[\s\S]*?\*\}|\{[\s\S]+?\}/g,function(e){return"{/literal}"===e&&(t=!1),!t&&("{literal}"===e&&(t=!0),!0)})}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"smarty")})}(Prism); +Prism.languages.solidity=Prism.languages.extend("clike",{"class-name":{pattern:/(\b(?:contract|enum|interface|library|new|struct|using)\s+)(?!\d)[\w$]+/,lookbehind:!0},keyword:/\b(?:_|anonymous|as|assembly|assert|break|calldata|case|constant|constructor|continue|contract|default|delete|do|else|emit|enum|event|external|for|from|function|if|import|indexed|inherited|interface|internal|is|let|library|mapping|memory|modifier|new|payable|pragma|private|public|pure|require|returns?|revert|selfdestruct|solidity|storage|struct|suicide|switch|this|throw|using|var|view|while)\b/,operator:/=>|->|:=|=:|\*\*|\+\+|--|\|\||&&|<<=?|>>=?|[-+*/%^&|<>!=]=?|[~?]/}),Prism.languages.insertBefore("solidity","keyword",{builtin:/\b(?:address|bool|string|u?int(?:8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?|byte|bytes(?:[1-9]|[12]\d|3[0-2])?)\b/}),Prism.languages.insertBefore("solidity","number",{version:{pattern:/([<>]=?|\^)\d+\.\d+\.\d+\b/,lookbehind:!0,alias:"number"}}); +!function(t){var e=/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,a=/\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-F]+\b/;t.languages.soy={comment:[/\/\*[\s\S]*?\*\//,{pattern:/(\s)\/\/.*/,lookbehind:!0,greedy:!0}],"command-arg":{pattern:/({+\/?\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\s+)\.?[\w.]+/,lookbehind:!0,alias:"string",inside:{punctuation:/\./}},parameter:{pattern:/({+\/?\s*@?param\??\s+)\.?[\w.]+/,lookbehind:!0,alias:"variable"},keyword:[{pattern:/({+\/?[^\S\r\n]*)(?:\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\??|rb|sp|switch|template|xid)/,lookbehind:!0},/\b(?:any|as|attributes|bool|css|float|in|int|js|html|list|map|null|number|string|uri)\b/],delimiter:{pattern:/^{+\/?|\/?}+$/,alias:"punctuation"},property:/\w+(?==)/,variable:{pattern:/\$[^\W\d]\w*(?:\??(?:\.\w+|\[[^\]]+]))*/,inside:{string:{pattern:e,greedy:!0},number:a,punctuation:/[\[\].?]/}},string:{pattern:e,greedy:!0},function:[/\w+(?=\()/,{pattern:/(\|[^\S\r\n]*)\w+/,lookbehind:!0}],boolean:/\b(?:true|false)\b/,number:a,operator:/\?:?|<=?|>=?|==?|!=|[+*/%-]|\b(?:and|not|or)\b/,punctuation:/[{}()\[\]|.,:]/},t.hooks.add("before-tokenize",function(e){var a=!1;t.languages["markup-templating"].buildPlaceholders(e,"soy",/{{.+?}}|{.+?}|\s\/\/.*|\/\*[\s\S]*?\*\//g,function(e){return"{/literal}"===e&&(a=!1),!a&&("{literal}"===e&&(a=!0),!0)})}),t.hooks.add("after-tokenize",function(e){t.languages["markup-templating"].tokenizePlaceholders(e,"soy")})}(Prism); +Prism.languages.turtle={comment:{pattern:/#.*/,greedy:!0},"multiline-string":{pattern:/"""(?:(?:""?)?(?:[^"\\]|\\.))*"""|'''(?:(?:''?)?(?:[^'\\]|\\.))*'''/,greedy:!0,alias:"string",inside:{comment:/#.*/}},string:{pattern:/"(?:[^\\"\r\n]|\\.)*"|'(?:[^\\'\r\n]|\\.)*'/,greedy:!0},url:{pattern:/<(?:[^\x00-\x20<>"{}|^`\\]|\\(?:u[\da-f]{4}|U[\da-f]{8}))*>/i,greedy:!0,inside:{punctuation:/[<>]/}},function:{pattern:/(?:(?![-.\d\xB7])[-.\w\xB7\xC0-\uFFFD]+)?:(?:(?![-.])(?:[-.:\w\xC0-\uFFFD]|%[\da-f]{2}|\\.)+)?/i,inside:{"local-name":{pattern:/([^:]*:)[\s\S]+/,lookbehind:!0},prefix:{pattern:/[\s\S]+/,inside:{punctuation:/:/}}}},number:/[+-]?\b\d+\.?\d*(?:e[+-]?\d+)?/i,punctuation:/[{}.,;()[\]]|\^\^/,boolean:/\b(?:true|false)\b/,keyword:[/(?:\ba|@prefix|@base)\b|=/,/\b(?:graph|base|prefix)\b/i],tag:{pattern:/@[a-z]+(?:-[a-z\d]+)*/i,inside:{punctuation:/@/}}},Prism.languages.trig=Prism.languages.turtle; +Prism.languages.sparql=Prism.languages.extend("turtle",{variable:{pattern:/[?$]\w+/,greedy:!0},boolean:/\b(?:true|false)\b/i}),Prism.languages.insertBefore("sparql","punctuation",{keyword:[/\b(?:A|ADD|ALL|AS|ASC|ASK|BNODE|BY|CLEAR|CONSTRUCT|COPY|CREATE|DATA|DEFAULT|DELETE|DESC|DESCRIBE|DISTINCT|DROP|EXISTS|FILTER|FROM|GROUP|HAVING|INSERT|INTO|LIMIT|LOAD|MINUS|MOVE|NAMED|NOT|NOW|OFFSET|OPTIONAL|ORDER|RAND|REDUCED|SELECT|SEPARATOR|SERVICE|SILENT|STRUUID|UNION|USING|UUID|VALUES|WHERE)\b/i,/\b(?:ABS|AVG|BIND|BOUND|CEIL|COALESCE|CONCAT|CONTAINS|COUNT|DATATYPE|DAY|ENCODE_FOR_URI|FLOOR|GROUP_CONCAT|HOURS|IF|IRI|isBLANK|isIRI|isLITERAL|isNUMERIC|isURI|LANG|LANGMATCHES|LCASE|MAX|MD5|MIN|MINUTES|MONTH|ROUND|REGEX|REPLACE|sameTerm|SAMPLE|SECONDS|SHA1|SHA256|SHA384|SHA512|STR|STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|SUBSTR|SUM|TIMEZONE|TZ|UCASE|URI|YEAR)\b(?=\s*\()/i,/\b(?:GRAPH|BASE|PREFIX)\b/i]}),Prism.languages.rq=Prism.languages.sparql; +Prism.languages["splunk-spl"]={comment:/`comment\("(?:\\.|[^\\"])*"\)`/,string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0},keyword:/\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\b/i,"operator-word":{pattern:/\b(?:and|as|by|not|or|xor)\b/i,alias:"operator"},function:/\w+(?=\s*\()/,property:/\w+(?=\s*=(?!=))/,date:{pattern:/\b\d{1,2}\/\d{1,2}\/\d{1,4}(?:(?::\d{1,2}){3})?\b/,alias:"number"},number:/\b\d+(?:\.\d+)?\b/,boolean:/\b(?:f|false|t|true)\b/i,operator:/[<>=]=?|[-+*/%|]/,punctuation:/[()[\],]/}; +Prism.languages.sqf=Prism.languages.extend("clike",{string:{pattern:/"(?:(?:"")?[^"])*"(?!")|'(?:[^'])*'/,greedy:!0},keyword:/\b(?:breakOut|breakTo|call|case|catch|default|do|echo|else|execVM|execFSM|exitWith|for|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|from|goto|if|nil|preprocessFile|preprocessFileLineNumbers|private|scopeName|spawn|step|switch|then|throw|to|try|while|with)\b/i,"magic-variable":{pattern:/\b(?:_exception|_fnc_scriptName|_fnc_scriptNameParent|_forEachIndex|_this|_thisEventHandler|_thisFSM|_thisScript|_x|this|thisList|thisTrigger)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/i,function:/\b(?:abs|accTime|acos|action|actionIDs|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|actionParams|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addForce|addForceGeneratorRTD|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addTorque|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|admin|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityCurveRTD|airDensityRTD|airplaneThrottle|airportSide|AISFinishHeal|alive|all3DENEntities|allAirports|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSimpleObjects|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|ammoOnPylon|animate|animateBay|animateDoor|animatePylon|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|briefingName|buildingExit|buildingPos|buldozer_EnableRoadDiag|buldozer_IsEnabledRoadDiag|buldozer_LoadNewRoads|buldozer_reloadOperMap|buttonAction|buttonSetAction|cadetMode|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canTriggerDynamicSimulation|canUnloadInCombat|canVehicleCargo|captive|captiveNum|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clear3DENAttribute|clear3DENInventory|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearForcesRTD|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearVehicleInit|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|collectiveRTD|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|confirmSensorTarget|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPCampaignDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctAddHeader|ctAddRow|ctClear|ctCurSel|ctData|ctFindHeaderRows|ctFindRowHeader|ctHeaderControls|ctHeaderCount|ctRemoveHeaders|ctRemoveRows|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetDisabledColor|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPixelPrecision|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTextColorSecondary|ctrlSetTextSecondary|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlTextSecondary|ctrlTextWidth|ctrlType|ctrlVisible|ctRowControls|ctRowCount|ctSetCurSel|ctSetData|ctSetHeaderTemplate|ctSetRowTemplate|ctSetValue|ctValue|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteGroupWhenEmpty|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeScripts|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureFrameToFile|diag_captureSlowFrame|diag_codePerformance|diag_drawMode|diag_dynamicSimulationEnd|diag_enable|diag_enabled|diag_fps|diag_fpsMin|diag_frameNo|diag_lightNewLoad|diag_list|diag_log|diag_logSlowFrame|diag_mergeConfigFile|diag_recordTurretLimits|diag_setLightNew|diag_tickTime|diag_toggle|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableMapIndicators|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|drawTriangle|driver|drop|dynamicSimulationDistance|dynamicSimulationDistanceCoef|dynamicSimulationEnabled|dynamicSimulationSystemEnabled|east|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableAutoStartUpRTD|enableAutoTrimRTD|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableDynamicSimulation|enableDynamicSimulationSystem|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableInfoPanelComponent|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableStressDamage|enableTeamSwitch|enableTraffic|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|enableVehicleSensor|enableWeaponDisassembly|endl|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesPowerRTD|enginesRpmRTD|enginesTorqueRTD|entities|environmentEnabled|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|exec|execEditorScript|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findIf|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagAnimationPhase|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|forceAddUniform|forceAtPositionRTD|forcedMap|forceEnd|forceFlagTexture|forceFollowRoad|forceGeneratorRTD|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forgetTarget|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|fromEditor|fuel|fullCrew|gearIDCAmmoCount|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllEnvSoundControllers|getAllHitPointsDamage|getAllOwnedMines|getAllSoundControllers|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getCompatiblePylonMagazines|getConnectedUAV|getContainerMaxLoad|getCursorObjectParams|getCustomAimCoef|getDammage|getDescription|getDir|getDirVisual|getDLCAssetsUsage|getDLCAssetsUsageByName|getDLCs|getDLCUsageTime|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getEngineTargetRpmRTD|getEnvSoundController|getFatigue|getFieldManualStartPage|getForcedFlagTexture|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getMissionLayerEntities|getMissionLayers|getModelInfo|getMousePosition|getMusicPlayedTime|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlateNumber|getPlayerChannel|getPlayerScores|getPlayerUID|getPlayerUIDOld|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getPylonMagazines|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getRotorBrakeRTD|getShadowDistance|getShotParents|getSlingLoad|getSoundController|getSoundControllerResult|getSpeed|getStamina|getStatValue|getSuppression|getTerrainGrid|getTerrainHeightASL|getText|getTotalDLCUsageTime|getTrimOffsetRTD|getUnitLoadout|getUnitTrait|getUserMFDText|getUserMFDValue|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWingsOrientationRTD|getWingsPositionRTD|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|image|importAllGroups|importance|in|inArea|inAreaArray|incapacitatedState|independent|inflame|inflamed|infoPanel|infoPanelComponentEnabled|infoPanelComponents|infoPanels|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isAimPrecisionEnabled|isArray|isAutoHoverOn|isAutonomous|isAutoStartUpEnabledRTD|isAutotest|isAutoTrimOnRTD|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDamageAllowed|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isGroupDeletedWhenEmpty|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLaserOn|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isMultiplayerSolo|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isRemoteExecuted|isRemoteExecutedJIP|isServer|isShowing3DIcons|isSimpleObject|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isStressDamageEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUIContext|isUniformAllowed|isVehicleCargo|isVehicleRadarOn|isVehicleSensorEnabled|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbColorRight|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbPictureRight|lbSelection|lbSetColor|lbSetColorRight|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetPictureRight|lbSetPictureRightColor|lbSetPictureRightColorDisabled|lbSetPictureRightColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetText|lbSetTextRight|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbTextRight|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaderboardRequestRowsFriends|leaderboardRequestRowsGlobal|leaderboardRequestRowsGlobalAroundUser|leaderboardsRequestUploadScore|leaderboardsRequestUploadScoreKeepBest|leaderboardState|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|listRemoteTargets|listVehicleSensors|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbColorRight|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbPictureRight|lnbSetColor|lnbSetColorRight|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetPictureColor|lnbSetPictureColorRight|lnbSetPictureColorSelected|lnbSetPictureColorSelectedRight|lnbSetPictureRight|lnbSetText|lnbSetTextRight|lnbSetValue|lnbSize|lnbSort|lnbSortByValue|lnbText|lnbTextRight|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|menuAction|menuAdd|menuChecked|menuClear|menuCollapse|menuData|menuDelete|menuEnable|menuEnabled|menuExpand|menuHover|menuPicture|menuSetAction|menuSetCheck|menuSetData|menuSetPicture|menuSetValue|menuShortcut|menuShortcutText|menuSize|menuSort|menuText|menuURL|menuValue|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|modelToWorld|modelToWorldVisual|modelToWorldVisualWorld|modelToWorldWorld|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nMenuItems|numberOfEnginesRTD|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGear|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openDSInterface|openMap|openSteamApp|openYoutubeVideo|opfor|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseSimpleArray|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|processDiaryLink|processInitCommands|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remoteExecutedOwner|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponAttachmentCargo|removeWeaponCargo|removeWeaponGlobal|removeWeaponTurret|reportRemoteTarget|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safeZoneH|safeZoneW|safeZoneWAbs|safeZoneX|safeZoneXAbs|safeZoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectMax|selectMin|selectNoPlayer|selectPlayer|selectRandom|selectRandomWeighted|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENLogicType|set3DENMissionAttribute|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setActualCollectiveRTD|setAirplaneThrottle|setAirportSide|setAmmo|setAmmoCargo|setAmmoOnPylon|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setBrakesRTD|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTI|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setConvoySeparation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setCustomWeightRTD|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDriveOnPath|setDropInterval|setDynamicSimulationDistance|setDynamicSimulationDistanceCoef|setEditorMode|setEditorObjectScope|setEffectCondition|setEngineRpmRTD|setFace|setFaceAnimation|setFatigue|setFeatureType|setFlagAnimationPhase|setFlagOwner|setFlagSide|setFlagTexture|setFog|setForceGeneratorRTD|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setInfoPanel|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlateNumber|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setPylonLoadOut|setPylonsPriority|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setRotorBrakeRTD|setShadowDistance|setShotParents|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskMarkerOffset|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setToneMapping|setToneMappingParams|setTrafficDensity|setTrafficDistance|setTrafficGap|setTrafficSpeed|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setUserMFDText|setUserMFDValue|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleInit|setVehicleLock|setVehiclePosition|setVehicleRadar|setVehicleReceiveRemoteTargets|setVehicleReportOwnPosition|setVehicleReportRemoteTargets|setVehicleTIPars|setVehicleVarName|setVelocity|setVelocityModelSpace|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWantedRpmRTD|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWingForceScaleRTD|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targets|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|terrainIntersectAtASL|text|textLog|textLogFormat|tg|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|toArray|toFixed|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerDynamicSimulation|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCollapseAll|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvExpandAll|tvPicture|tvPictureRight|tvSetColor|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetSelectColor|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAIOperMapObstructionTest|useAISteeringComponent|useAudioTimeForMoves|userInputDisabled|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorModelToWorld|vectorModelToWorldVisual|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vectorWorldToModel|vectorWorldToModelVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicleReceiveRemoteTargets|vehicleReportOwnPosition|vehicleReportRemoteTargets|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleScoretable|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponAccessoriesCargo|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|wind|windDir|windRTD|windStr|wingsForcesRTD|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\b/i,number:/(?:\$|\b0x)[\da-f]+\b|(?:\B\.\d+|\b\d+(?:\.\d+)?)(?:e[+-]?\d+)?\b/i,operator:/##|>>|&&|\|\||[!=<>]=?|[-+*/%#^]|\b(?:and|mod|not|or)\b/i,constant:/\bDIK(?:_[a-z\d]+)+\b/i}),Prism.languages.insertBefore("sqf","string",{macro:{pattern:/(^\s*)#[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{directive:{pattern:/#[a-z]+\b/i,alias:"keyword"},comment:Prism.languages.sqf.comment}}}),delete Prism.languages.sqf["class-name"]; +!function(n){var t={url:/url\((["']?).*?\1\)/i,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+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},n.languages.stylus={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(?:\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(Prism); +Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(?:\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.languages.swift; +Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\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*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}|\s*#))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},Prism.languages.yml=Prism.languages.yaml; +Prism.languages.tap={fail:/not ok[^#{\n\r]*/,pass:/ok[^#{\n\r]*/,pragma:/pragma [+-][a-z]+/,bailout:/bail out!.*/i,version:/TAP version \d+/i,plan:/\d+\.\.\d+(?: +#.*)?/,subtest:{pattern:/# Subtest(?:: .*)?/,greedy:!0},punctuation:/[{}]/,directive:/#.*/,yamlish:{pattern:/(^[^\S\r\n]*)---(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?[^\S\r\n]*\.\.\.$/m,lookbehind:!0,inside:Prism.languages.yaml,alias:"language-yaml"}}; +Prism.languages.tcl={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"/,greedy:!0},variable:[{pattern:/(\$)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/,lookbehind:!0},{pattern:/(\$){[^}]+}/,lookbehind:!0},{pattern:/(^\s*set[ \t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\w+/m,lookbehind:!0}],function:{pattern:/(^\s*proc[ \t]+)[^\s]+/m,lookbehind:!0},builtin:[{pattern:/(^\s*)(?:proc|return|class|error|eval|exit|for|foreach|if|switch|while|break|continue)\b/m,lookbehind:!0},/\b(?:elseif|else)\b/],scope:{pattern:/(^\s*)(?:global|upvar|variable)\b/m,lookbehind:!0,alias:"constant"},keyword:{pattern:/(^\s*|\[)(?:after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|Safe_Base|scan|seek|set|socket|source|split|string|subst|Tcl|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|wordBreak(?:After|Before)|test|vars)|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\b/m,lookbehind:!0},operator:/!=?|\*\*?|==|&&?|\|\|?|<[=<]?|>[=>]?|[-+~\/%?^]|\b(?:eq|ne|in|ni)\b/,punctuation:/[{}()\[\]]/}; +!function(e){var n="(?:\\([^|)]+\\)|\\[[^\\]]+\\]|\\{[^}]+\\})+",i={css:{pattern:/\{[^}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^)]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\\/]\d+|\S/},t=e.languages.textile=e.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:RegExp("^[a-z]\\w*(?:"+n+"|[<>=()])*\\."),inside:{modifier:{pattern:RegExp("(^[a-z]\\w*)(?:"+n+"|[<>=()])+(?=\\.)"),lookbehind:!0,inside:i},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:RegExp("^[*#]+(?:"+n+")?\\s+.+","m"),inside:{modifier:{pattern:RegExp("(^[*#]+)"+n),lookbehind:!0,inside:i},punctuation:/^[*#]+/}},table:{pattern:RegExp("^(?:(?:"+n+"|[<>=()^~])+\\.\\s*)?(?:\\|(?:(?:"+n+"|[<>=()^~_]|[\\\\/]\\d+)+\\.)?[^|]*)+\\|","m"),inside:{modifier:{pattern:RegExp("(^|\\|(?:\\r?\\n|\\r)?)(?:"+n+"|[<>=()^~_]|[\\\\/]\\d+)+(?=\\.)"),lookbehind:!0,inside:i},punctuation:/\||^\./}},inline:{pattern:RegExp("(\\*\\*|__|\\?\\?|[*_%@+\\-^~])(?:"+n+")?.+?\\1"),inside:{bold:{pattern:RegExp("(^(\\*\\*?)(?:"+n+")?).+?(?=\\2)"),lookbehind:!0},italic:{pattern:RegExp("(^(__?)(?:"+n+")?).+?(?=\\2)"),lookbehind:!0},cite:{pattern:RegExp("(^\\?\\?(?:"+n+")?).+?(?=\\?\\?)"),lookbehind:!0,alias:"string"},code:{pattern:RegExp("(^@(?:"+n+")?).+?(?=@)"),lookbehind:!0,alias:"keyword"},inserted:{pattern:RegExp("(^\\+(?:"+n+")?).+?(?=\\+)"),lookbehind:!0},deleted:{pattern:RegExp("(^-(?:"+n+")?).+?(?=-)"),lookbehind:!0},span:{pattern:RegExp("(^%(?:"+n+")?).+?(?=%)"),lookbehind:!0},modifier:{pattern:RegExp("(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])"+n),lookbehind:!0,inside:i},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(\])\S+$/,lookbehind:!0},punctuation:/[\[\]]/}},link:{pattern:RegExp('"(?:'+n+')?[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),inside:{text:{pattern:RegExp('(^"(?:'+n+')?)[^"]+(?=")'),lookbehind:!0},modifier:{pattern:RegExp('(^")'+n),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:RegExp("!(?:"+n+"|[<>=()])*[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?"),inside:{source:{pattern:RegExp("(^!(?:"+n+"|[<>=()])*)[^!\\s()]+(?:\\([^)]+\\))?(?=!)"),lookbehind:!0,alias:"url"},modifier:{pattern:RegExp("(^!)(?:"+n+"|[<>=()])+"),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^)]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:TM|R|C)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}}),a=t.phrase.inside,o={inline:a.inline,link:a.link,image:a.image,footnote:a.footnote,acronym:a.acronym,mark:a.mark};t.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i;var r=a.inline.inside;r.bold.inside=o,r.italic.inside=o,r.inserted.inside=o,r.deleted.inside=o,r.span.inside=o;var d=a.table.inside;d.inline=o.inline,d.link=o.link,d.image=o.image,d.footnote=o.footnote,d.acronym=o.acronym,d.mark=o.mark}(Prism); +!function(e){var d="(?:[\\w-]+|'[^'\n\r]*'|\"(?:\\.|[^\\\\\"\r\n])*\")";Prism.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp("(^\\s*\\[\\s*(?:\\[\\s*)?)"+d+"(?:\\s*\\.\\s*"+d+")*(?=\\s*\\])","m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp("(^\\s*|[{,]\\s*)"+d+"(?:\\s*\\.\\s*"+d+")*(?=\\s*=)","m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?/i,alias:"number"},{pattern:/\d{2}:\d{2}:\d{2}(?:\.\d+)?/i,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?(?:inf|nan)\b/,boolean:/\b(?:true|false)\b/,punctuation:/[.,=[\]{}]/}}(); +!function(t){t.languages.tt2=t.languages.extend("clike",{comment:/#.*|\[%#[\s\S]*?%\]/,keyword:/\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|TAGS|THROW|TRY|SWITCH|UNLESS|USE|WHILE|WRAPPER)\b/,punctuation:/[[\]{},()]/}),t.languages.insertBefore("tt2","number",{operator:/=[>=]?|!=?|<=?|>=?|&&|\|\|?|\b(?:and|or|not)\b/,variable:{pattern:/[a-z]\w*(?:\s*\.\s*(?:\d+|\$?[a-z]\w*))*/i}}),t.languages.insertBefore("tt2","keyword",{delimiter:{pattern:/^(?:\[%|%%)-?|-?%]$/,alias:"punctuation"}}),t.languages.insertBefore("tt2","string",{"single-quoted-string":{pattern:/'[^\\']*(?:\\[\s\S][^\\']*)*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"[^\\"]*(?:\\[\s\S][^\\"]*)*"/,greedy:!0,alias:"string",inside:{variable:{pattern:/\$(?:[a-z]\w*(?:\.(?:\d+|\$?[a-z]\w*))*)/i}}}}),delete t.languages.tt2.string,t.hooks.add("before-tokenize",function(e){t.languages["markup-templating"].buildPlaceholders(e,"tt2",/\[%[\s\S]+?%\]/g)}),t.hooks.add("after-tokenize",function(e){t.languages["markup-templating"].tokenizePlaceholders(e,"tt2")})}(Prism); +Prism.languages.twig={comment:/\{#[\s\S]*?#\}/,tag:{pattern:/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}/,inside:{ld:{pattern:/^(?:\{\{-?|\{%-?\s*\w+)/,inside:{punctuation:/^(?:\{\{|\{%)-?/,keyword:/\w+/}},rd:{pattern:/-?(?:%\}|\}\})$/,inside:{punctuation:/.+/}},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:true|false|null)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-xor|b-or|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],property:/\b[a-zA-Z_]\w*\b/,punctuation:/[()\[\]{}:.,]/}},other:{pattern:/\S(?:[\s\S]*\S)?/,inside:Prism.languages.markup}}; +!function(n){function i(e,t,a){return{pattern:RegExp("<#"+e+"[\\s\\S]*?#>"),alias:"block",inside:{delimiter:{pattern:RegExp("^<#"+e+"|#>$"),alias:"important"},content:{pattern:/[\s\S]+/,inside:t,alias:a}}}}n.languages["t4-templating"]=Object.defineProperty({},"createT4",{value:function(e){var t=n.languages[e],a="language-"+e;return{block:{pattern:/<#[\s\S]+?#>/,inside:{directive:i("@",{"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/,inside:{punctuation:/^=|^["']|["']$/}},keyword:/\w+(?=\s)/,"attr-name":/\w+/}),expression:i("=",t,a),"class-feature":i("\\+",t,a),standard:i("",t,a)}}}}})}(Prism); +Prism.languages.t4=Prism.languages["t4-cs"]=Prism.languages["t4-templating"].createT4("csharp"); +Prism.languages["visual-basic"]={comment:{pattern:/(?:['‘’]|REM\b).*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:[^\S\r\n]_[^\S\r\n]*(?:\r\n?|\n)|.)+/i,alias:"comment",greedy:!0},string:{pattern:/\$?["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[^\S\r\n]*(?:\d+([/-])\d+\1\d+(?:[^\S\r\n]+(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))?|(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))[^\S\r\n]*#/i,alias:"builtin"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:U?[ILS]|[FRD])?/i,boolean:/\b(?:True|False|Nothing)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|TypeOf|U(?:Integer|Long|Short)|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\b/i,operator:[/[+\-*/\\^<=>&#@$%!]/,{pattern:/([^\S\r\n])_(?=[^\S\r\n]*[\r\n])/,lookbehind:!0}],punctuation:/[{}().,:?]/},Prism.languages.vb=Prism.languages["visual-basic"]; +Prism.languages["t4-vb"]=Prism.languages["t4-templating"].createT4("visual-basic"); +Prism.languages.vbnet=Prism.languages.extend("basic",{keyword:/(?:\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDEC|CDBL|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEFAULT|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LINE INPUT|LET|LIB|LIKE|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPERATOR|OPEN|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHORT|SINGLE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SYNCLOCK|SWAP|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\$|\b)/i,comment:[{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},{pattern:/(^|[^\\:])'.*/,lookbehind:!0}]}); +!function(e){e.languages.velocity=e.languages.extend("markup",{});var n={variable:{pattern:/(^|[^\\](?:\\\\)*)\$!?(?:[a-z][\w-]*(?:\([^)]*\))?(?:\.[a-z][\w-]*(?:\([^)]*\))?|\[[^\]]+])*|{[^}]+})/i,lookbehind:!0,inside:{}},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},number:/\b\d+\b/,boolean:/\b(?:true|false)\b/,operator:/[=!<>]=?|[+*/%-]|&&|\|\||\.\.|\b(?:eq|g[et]|l[et]|n(?:e|ot))\b/,punctuation:/[(){}[\]:,.]/};n.variable.inside={string:n.string,function:{pattern:/([^\w-])[a-z][\w-]*(?=\()/,lookbehind:!0},number:n.number,boolean:n.boolean,punctuation:n.punctuation},e.languages.insertBefore("velocity","comment",{unparsed:{pattern:/(^|[^\\])#\[\[[\s\S]*?]]#/,lookbehind:!0,greedy:!0,inside:{punctuation:/^#\[\[|]]#$/}},"velocity-comment":[{pattern:/(^|[^\\])#\*[\s\S]*?\*#/,lookbehind:!0,greedy:!0,alias:"comment"},{pattern:/(^|[^\\])##.*/,lookbehind:!0,greedy:!0,alias:"comment"}],directive:{pattern:/(^|[^\\](?:\\\\)*)#@?(?:[a-z][\w-]*|{[a-z][\w-]*})(?:\s*\((?:[^()]|\([^()]*\))*\))?/i,lookbehind:!0,inside:{keyword:{pattern:/^#@?(?:[a-z][\w-]*|{[a-z][\w-]*})|\bin\b/,inside:{punctuation:/[{}]/}},rest:n}},variable:n.variable}),e.languages.velocity.tag.inside["attr-value"].inside.rest=e.languages.velocity}(Prism); +Prism.languages.verilog={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},property:/\B\$\w+\b/,constant:/\B`\w+\b/,function:/\w+(?=\()/,keyword:/\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|class|case|casex|casez|cell|chandle|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endspecify|endsequence|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\b/,important:/\b(?:always_latch|always_comb|always_ff|always)\b ?@?/,number:/\B##?\d+|(?:\b\d+)?'[odbh] ?[\da-fzx_?]+|\b\d*[._]?\d+(?:e[-+]?\d+)?/i,operator:/[-+{}^~%*\/?=!<>&|]+/,punctuation:/[[\];(),.:]/}; +Prism.languages.vhdl={comment:/--.+/,"vhdl-vectors":{pattern:/\b[oxb]"[\da-f_]+"|"[01uxzwlh-]+"/i,alias:"number"},"quoted-function":{pattern:/"\S+?"(?=\()/,alias:"function"},string:/"(?:[^\\"\r\n]|\\(?:\r\n|[\s\S]))*"/,constant:/\b(?:use|library)\b/i,keyword:/\b(?:'active|'ascending|'base|'delayed|'driving|'driving_value|'event|'high|'image|'instance_name|'last_active|'last_event|'last_value|'left|'leftof|'length|'low|'path_name|'pos|'pred|'quiet|'range|'reverse_range|'right|'rightof|'simple_name|'stable|'succ|'transaction|'val|'value|access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with)\b/i,boolean:/\b(?:true|false)\b/i,function:/\w+(?=\()/,number:/'[01uxzwlh-]'|\b(?:\d+#[\da-f_.]+#|\d[\d_.]*)(?:e[-+]?\d+)?/i,operator:/[<>]=?|:=|[-+*/&=]|\b(?:abs|not|mod|rem|sll|srl|sla|sra|rol|ror|and|or|nand|xnor|xor|nor)\b/i,punctuation:/[{}[\];(),.:]/}; +Prism.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|sm|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}; +Prism.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|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|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!#$%&'*+\-./:<=>?@\\^_`|~]+/i,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:/[()]/}; +Prism.languages.wiki=Prism.languages.extend("markup",{"block-comment":{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0,alias:"comment"},heading:{pattern:/^(=+).+?\1/m,inside:{punctuation:/^=+|=+$/,important:/.+/}},emphasis:{pattern:/('{2,5}).+?\1/,inside:{"bold-italic":{pattern:/(''''').+?(?=\1)/,lookbehind:!0,alias:["bold","italic"]},bold:{pattern:/(''')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},italic:{pattern:/('')[^'](?:.*?[^'])?(?=\1)/,lookbehind:!0},punctuation:/^''+|''+$/}},hr:{pattern:/^-{4,}/m,alias:"punctuation"},url:[/ISBN +(?:97[89][ -]?)?(?:\d[ -]?){9}[\dx]\b|(?:RFC|PMID) +\d+/i,/\[\[.+?\]\]|\[.+?\]/],variable:[/__[A-Z]+__/,/\{{3}.+?\}{3}/,/\{\{.+?\}\}/],symbol:[/^#redirect/im,/~{3,5}/],"table-tag":{pattern:/((?:^|[|!])[|!])[^|\r\n]+\|(?!\|)/m,lookbehind:!0,inside:{"table-bar":{pattern:/\|$/,alias:"punctuation"},rest:Prism.languages.markup.tag.inside}},punctuation:/^(?:\{\||\|\}|\|-|[*#:;!|])|\|\||!!/m}),Prism.languages.insertBefore("wiki","tag",{nowiki:{pattern:/<(nowiki|pre|source)\b[\s\S]*?>[\s\S]*?<\/\1>/i,inside:{tag:{pattern:/<(?:nowiki|pre|source)\b[\s\S]*?>|<\/(?:nowiki|pre|source)>/i,inside:Prism.languages.markup.tag.inside}}}}); +!function(n){n.languages.xeora=n.languages.extend("markup",{constant:{pattern:/\$(?:DomainContents|PageRenderDuration)\$/,inside:{punctuation:{pattern:/\$/}}},variable:{pattern:/\$@?(?:#+|[-+*~=^])?[\w.]+\$/,inside:{punctuation:{pattern:/[$.]/},operator:{pattern:/#+|[-+*~=^@]/}}},"function-inline":{pattern:/\$F:[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?\$/,inside:{variable:{pattern:/(?:[,|])@?(?:#+|[-+*~=^])?[\w.]+/,inside:{punctuation:{pattern:/[,.|]/},operator:{pattern:/#+|[-+*~=^@]/}}},punctuation:{pattern:/\$\w:|[$:?.,|]/}},alias:"function"},"function-block":{pattern:/\$XF:{[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?}:XF\$/,inside:{punctuation:{pattern:/[$:{}?.,|]/}},alias:"function"},"directive-inline":{pattern:/\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\/\w.]+\$/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}}},alias:"function"},"directive-block-open":{pattern:/\$\w+:{|\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\w.]+:{(?:![A-Z]+)?/,inside:{punctuation:{pattern:/\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,inside:{tag:{pattern:/#\d/}}},attribute:{pattern:/![A-Z]+$/,inside:{punctuation:{pattern:/!/}},alias:"keyword"}},alias:"function"},"directive-block-separator":{pattern:/}:[-\w.]+:{/,inside:{punctuation:{pattern:/[:{}]/}},alias:"function"},"directive-block-close":{pattern:/}:[-\w.]+\$/,inside:{punctuation:{pattern:/[:{}$]/}},alias:"function"}}),n.languages.insertBefore("inside","punctuation",{variable:n.languages.xeora["function-inline"].inside.variable},n.languages.xeora["function-block"]),n.languages.xeoracube=n.languages.xeora}(Prism); +Prism.languages.xojo={comment:{pattern:/(?:'|\/\/|Rem\b).+/i,inside:{keyword:/^Rem/i}},string:{pattern:/"(?:""|[^"])*"/,greedy:!0},number:[/(?:\b\d+\.?\d*|\B\.\d+)(?:E[+-]?\d+)?/i,/&[bchou][a-z\d]+/i],symbol:/#(?:If|Else|ElseIf|Endif|Pragma)\b/i,keyword:/\b(?:AddHandler|App|Array|As(?:signs)?|By(?:Ref|Val)|Break|Call|Case|Catch|Const|Continue|CurrentMethodName|Declare|Dim|Do(?:wnTo)?|Each|Else(?:If)?|End|Exit|Extends|False|Finally|For|Global|If|In|Lib|Loop|Me|Next|Nil|Optional|ParamArray|Raise(?:Event)?|ReDim|Rem|RemoveHandler|Return|Select|Self|Soft|Static|Step|Super|Then|To|True|Try|Ubound|Until|Using|Wend|While)\b/i,operator:/<[=>]?|>=?|[+\-*\/\\^=]|\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|Xor|WeakAddressOf)\b/i,punctuation:/[.,;:()]/}; +!function(r){r.languages.xquery=r.languages.extend("markup",{"xquery-comment":{pattern:/\(:[\s\S]*?:\)/,greedy:!0,alias:"comment"},string:{pattern:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,greedy:!0},extension:{pattern:/\(#.+?#\)/,alias:"symbol"},variable:/\$[\w-:]+/,axis:{pattern:/(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,lookbehind:!0,alias:"operator"},"keyword-operator":{pattern:/(^|[^:-])\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\b(?=$|[^:-])/,lookbehind:!0,alias:"operator"},keyword:{pattern:/(^|[^:-])\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\b(?=$|[^:-])/,lookbehind:!0},function:/[\w-]+(?::[\w-]+)*(?=\s*\()/,"xquery-element":{pattern:/(element\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"tag"},"xquery-attribute":{pattern:/(attribute\s+)[\w-]+(?::[\w-]+)*/,lookbehind:!0,alias:"attr-name"},builtin:{pattern:/(^|[^:-])\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|ENTITIES|ENTITY|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|ID|IDREFS?|int|integer|language|long|Name|NCName|negativeInteger|NMTOKENS?|nonNegativeInteger|nonPositiveInteger|normalizedString|NOTATION|positiveInteger|QName|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\b(?=$|[^:-])/,lookbehind:!0},number:/\b\d+(?:\.\d+)?(?:E[+-]?\d+)?/,operator:[/[+*=?|@]|\.\.?|:=|!=|<[=<]?|>[=>]?/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}],punctuation:/[[\](){},;:/]/}),r.languages.xquery.tag.pattern=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,r.languages.xquery.tag.inside["attr-value"].pattern=/=(?:("|')(?:\\[\s\S]|{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}|(?!\1)[^\\])*\1|[^\s'">=]+)/i,r.languages.xquery.tag.inside["attr-value"].inside.punctuation=/^="|"$/,r.languages.xquery.tag.inside["attr-value"].inside.expression={pattern:/{(?!{)(?:{(?:{[^}]*}|[^}])*}|[^}])+}/,inside:r.languages.xquery,alias:"language-xquery"};var s=function(e){return"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(s).join("")},l=function(e){for(var t=[],n=0;n"===a.content[a.content.length-1].content||t.push({tagName:s(a.content[0].content[1]),openedBraces:0}):!(0|(?:\\[[^[\\]]*\\]|\\*(?!\\*)|\\*\\*)(?:\\s*|\\s*const\\b|\\s*volatile\\b|\\s*allowzero\\b)*)".replace(//g,r)+"\\s*)*"+"(?:\\bpromise\\b|(?:\\berror\\.)?(?:\\.)*(?!\\s+))".replace(//g,a)+")+";n.languages.zig={comment:[{pattern:/\/{3}.*/,alias:"doc-comment"},/\/{2}.*/],string:[{pattern:/(^|[^\\@])c?"(?:[^"\\\r\n]|\\.)*"/,lookbehind:!0,greedy:!0},{pattern:/([\r\n])([ \t]+c?\\{2}).*(?:(?:\r\n?|\n)\2.*)*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\])'(?:[^'\\\r\n]|\\(?:.|x[a-fA-F\d]{2}|u\{[a-fA-F\d]{1,6}\}))'/,lookbehind:!0,greedy:!0}],builtin:/\B@(?!\d)\w+(?=\s*\()/,label:{pattern:/(\b(?:break|continue)\s*:\s*)\w+\b|\b(?!\d)\w+\b(?=\s*:\s*(?:\{|while\b))/,lookbehind:!0},"class-name":[/\b(?!\d)\w+(?=\s*=\s*(?:(?:extern|packed)\s+)?(?:enum|struct|union)\s*[({])/,{pattern:RegExp("(:\\s*)(?=\\s*(?:\\s*)?[=;,)])|(?=\\s*(?:\\s*)?\\{)".replace(//g,s).replace(//g,r)),lookbehind:!0,inside:null},{pattern:RegExp("(\\)\\s*)(?=\\s*(?:\\s*)?;)".replace(//g,s).replace(//g,r)),lookbehind:!0,inside:null}],"builtin-types":{pattern:/\b(?:anyerror|bool|c_u?(?:short|int|long|longlong)|c_longdouble|c_void|comptime_(?:float|int)|[iu](?:8|16|32|64|128|size)|f(?:16|32|64|128)|noreturn|type|void)\b/,alias:"keyword"},keyword:e,function:/\b(?!\d)\w+(?=\s*\()/,number:/\b(?:0b[01]+|0o[0-7]+|0x[a-fA-F\d]+\.?[a-fA-F\d]*(?:[pP][+-]?[a-fA-F\d]+)?|\d+\.?\d*(?:[eE][+-]?\d+)?)\b/,boolean:/\b(?:false|true)\b/,operator:/\.[*?]|\.{2,3}|[-=]>|\*\*|\+\+|\|\||(?:<<|>>|[-+*]%|[-+*/%^&|<>!=])=?|[?~]/,punctuation:/[.:,;(){}[\]]/},n.languages.zig["class-name"].forEach(function(e){null===e.inside&&(e.inside=n.languages.zig)})}(Prism); diff --git a/media/scripts/main.js b/media/scripts/main.js new file mode 100644 index 0000000..bef248d --- /dev/null +++ b/media/scripts/main.js @@ -0,0 +1,45 @@ +new Vue({ + el: '#app', + data() { + return { + scrolled: false, + showToc: false, + showMenu: false, + } + }, + computed: { + text() { + return encodeURIComponent(document.title) + }, + url() { + return encodeURIComponent(window.location.href) + } + }, + mounted() { + window.addEventListener('scroll', this.navOnScroll) + }, + methods: { + oepnUrl(url) { + window.open(url, '_blank') + }, + navOnScroll() { + if (window.scrollY > 20) { + this.scrolled = true + } else { + this.scrolled = false + } + }, + backToUp() { + window.scrollTo(0, 0) + }, + shareToTwitter() { + window.open(`https://twitter.com/share?text=${this.text}&url=${this.url}`, '_blank', 'width=615,height=505') + }, + shareToWeibo() { + window.open(`https://service.weibo.com/share/share.php?title=${this.text}&url=${this.url}`, '_blank', 'width=615,height=505') + }, + shareToTelegram() { + window.open(`https://telegram.me/share/url?text=${this.text}&url=${this.url}`, '_blank', 'width=615,height=505') + }, + }, +}) \ No newline at end of file diff --git a/page/2/index.html b/page/2/index.html new file mode 100644 index 0000000..138f099 --- /dev/null +++ b/page/2/index.html @@ -0,0 +1,281 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+ + +
+ +
+ +
+

+ + 1G 数据、70+软件、万字长文,手把手教你如何将 Win10 从零打造成工作『利器』 + +

+
2020-04-06
+
+ 前些天逛知乎时遇到了这样一个问题:『新买了笔记本电脑后,需要进行哪些基本的设置和下载?』 +想起了自己从一个电脑小白一路摸索过来,和各路流氓斗智斗勇的辛酸历程。 +然后我就想把这过程中的坑和经验分享出来,帮助大家更高效地使用 Win10 。尽管... +
+ + Read more + +
+ +
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ +
+

+ + B 站?Why&How? + +

+
2020-01-30
+
+ B 站?Why&How? +大概是在 2019 年下半年,我的信息源里面开始频繁出现 B 站的相关消息。 + +B 站 UP 主“独立菌”给曹大引了数千粉丝 +半佛仙人、巫师经济学在 B 站的迅速崛起 +视频战争 2019 +身边朋友有的一天看... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 谈谈我的 2019 和 2020 + +

+
2020-01-16
+
+ 1 说说废话 +本来脑海里构思 2019 总结的时候有一大堆话想说,但真正要写下来的时候,又不知道从何说起。 +算了,那还是先从公众号开始吧,很抱歉 2019 年最后几个月公众号基本没更新。原因其实就两个,第一确实是忙,下半年很多事情赶到一块了... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 一般性书籍怎么找——玩转PDF系列03 + +

+
2019-07-20
+
+ 思路 +相较于格式多为 PDF、来源相对固定的教材类书籍,一般的书籍不论是格式还是来源都要丰富得多。 +但各家站点的书籍种类多有不全,所谓寻找一般的书籍,其实也就是在多个网站之间切换搜索,尽快找到目标书籍。所以影响快速找书结果的因素不外乎两个:... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 怎么查看并保存被微信屏蔽的文章? + +

+
2019-05-16
+
+ 微信最近发布了 2018 数据报告。报告指出,截至2018年9月,微信月活用户达到 10.82 亿。 +尽管微信公众号近年来的打开率不断下降,但不可否认的是,微信庞大用户基数使得绝大多数内容生产者都不能舍弃这块战场。 +根据《2017 年微信经... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 图床使用及迁移:写在新浪图床失效之后 + +

+
2019-04-28
+
+ 新浪微博图床在近期已经逐渐开启了防盗链,导致不少曾经依赖新浪微博图床的博客图片均无法显示。 +本文总结了在迁移图床、重新选择工具上面的一些经验。希望对你有所帮助。 +一 迁移 +1.1 一键迁移至阿里云OSS +1.2 数据库替换链接 +1.3 批量... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 英文教材怎么找——玩转PDF系列02 + +

+
2019-04-13
+
+ 心心念念的 “玩转PDF系列教程”终于等到了第二期(原谅我最近实在是太忙了,拖了这么久才发)。 +上一期我们谈了怎么找中文教材,并且推出了“电子教材计划”。后台的反馈挺好的,但是收藏率远远高于分享率...你们不知道好东西值得分享嘛🙄🙄🙄... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 中文教材怎么找——玩转PDF系列01 + +

+
2019-03-24
+
+ 0 引子 +我在公众号的菜单里面创建了一个“教材库”,放了一些计算机和数学的教材。原意只是想方便需要的人寻找,尽量节省诸位的时间。不过随着粉丝量的增多,后台催促我出教程的声音日益频繁,也对,授人以鱼不如授人以渔。📚 +毕竟相较于音频、视频课程... +
+ + Read more + +
+ +
+ +
+ + + + + + +
+
+ + + + + \ No newline at end of file diff --git a/post-images/1680973263571.png b/post-images/1680973263571.png new file mode 100644 index 0000000..d9f1d6c Binary files /dev/null and b/post-images/1680973263571.png differ diff --git a/post-images/1697362002886.png b/post-images/1697362002886.png new file mode 100644 index 0000000..657c406 Binary files /dev/null and b/post-images/1697362002886.png differ diff --git a/post-images/220504-Start.jpg b/post-images/220504-Start.jpg new file mode 100644 index 0000000..3ddbb6c Binary files /dev/null and b/post-images/220504-Start.jpg differ diff --git a/post-images/P1Op5XfnI9iZslz.png b/post-images/P1Op5XfnI9iZslz.png new file mode 100644 index 0000000..656248c Binary files /dev/null and b/post-images/P1Op5XfnI9iZslz.png differ diff --git a/post-images/hello-gridea.png b/post-images/hello-gridea.png new file mode 100644 index 0000000..bbd1205 Binary files /dev/null and b/post-images/hello-gridea.png differ diff --git a/post-images/image-20231015172805840.png b/post-images/image-20231015172805840.png new file mode 100644 index 0000000..fd6ead9 Binary files /dev/null and b/post-images/image-20231015172805840.png differ diff --git a/post-images/image-20231015172942167.png b/post-images/image-20231015172942167.png new file mode 100644 index 0000000..657c406 Binary files /dev/null and b/post-images/image-20231015172942167.png differ diff --git a/post-images/image-20231015184125116.png b/post-images/image-20231015184125116.png new file mode 100644 index 0000000..b94cc3d Binary files /dev/null and b/post-images/image-20231015184125116.png differ diff --git a/post-images/image-20231015205318025.png b/post-images/image-20231015205318025.png new file mode 100644 index 0000000..9cf32dc Binary files /dev/null and b/post-images/image-20231015205318025.png differ diff --git a/post-images/image-20231015205512123.png b/post-images/image-20231015205512123.png new file mode 100644 index 0000000..e4c0a6f Binary files /dev/null and b/post-images/image-20231015205512123.png differ diff --git a/post-images/image-20231015211743520.png b/post-images/image-20231015211743520.png new file mode 100644 index 0000000..4f59bb0 Binary files /dev/null and b/post-images/image-20231015211743520.png differ diff --git a/post-images/image-20231015213724039.png b/post-images/image-20231015213724039.png new file mode 100644 index 0000000..4f59bb0 Binary files /dev/null and b/post-images/image-20231015213724039.png differ diff --git a/post-images/image-20231015230928775.png b/post-images/image-20231015230928775.png new file mode 100644 index 0000000..d406fd6 Binary files /dev/null and b/post-images/image-20231015230928775.png differ diff --git a/post-images/image-20231015232947090.png b/post-images/image-20231015232947090.png new file mode 100644 index 0000000..1d1453d Binary files /dev/null and b/post-images/image-20231015232947090.png differ diff --git a/post-images/image-20231016001016709.png b/post-images/image-20231016001016709.png new file mode 100644 index 0000000..e4baa56 Binary files /dev/null and b/post-images/image-20231016001016709.png differ diff --git a/post-images/image-20231016002138481.png b/post-images/image-20231016002138481.png new file mode 100644 index 0000000..3a1df6d Binary files /dev/null and b/post-images/image-20231016002138481.png differ diff --git a/post-images/image-20231016003953822.png b/post-images/image-20231016003953822.png new file mode 100644 index 0000000..e47f787 Binary files /dev/null and b/post-images/image-20231016003953822.png differ diff --git a/post-images/image-20231017193005765.png b/post-images/image-20231017193005765.png new file mode 100644 index 0000000..8f02647 Binary files /dev/null and b/post-images/image-20231017193005765.png differ diff --git a/post-images/image-20231017194523091.png b/post-images/image-20231017194523091.png new file mode 100644 index 0000000..2462a42 Binary files /dev/null and b/post-images/image-20231017194523091.png differ diff --git a/post-images/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu.jpeg b/post-images/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu.jpeg new file mode 100644 index 0000000..c601cf4 Binary files /dev/null and b/post-images/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu.jpeg differ diff --git a/post/2019-03-25129/index.html b/post/2019-03-25129/index.html new file mode 100644 index 0000000..d5d09c1 --- /dev/null +++ b/post/2019-03-25129/index.html @@ -0,0 +1,472 @@ + + + + + + +中文教材怎么找——玩转PDF系列01 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 中文教材怎么找——玩转PDF系列01 +

+ +
+
2019-03-24 · 10 min read
+ + + + 书籍 + + + + + 找书 + + + + + 搜索 + + +
+
+

0 引子

+

我在公众号的菜单里面创建了一个“教材库”,放了一些计算机和数学的教材。原意只是想方便需要的人寻找,尽量节省诸位的时间。不过随着粉丝量的增多,后台催促我出教程的声音日益频繁,也对,授人以鱼不如授人以渔。📚

+

毕竟相较于音频、视频课程,书籍能传递的信息更为系统,也更加全面。通过书籍学习的知识也更利于复习。

+

获取电子书籍不应该成为我们的门槛

+

好人做到底,打磨出了一套 玩转PDF系列 教程集。涵盖了从寻找书籍处理PDF 再到各平台选择阅读器的全套流程。

+

关于 PDF 的一般问题看这套教程就够了。👌

+

为什么需要“玩转PDF系列”这套教程?

+

一来是随着 iPad 和 surface 的逐渐流行,越来越多的人选择了数字化的学习方式。但是很多人或者找不到数字学习材料,或者找到的材料质量不高,这样大大损伤了数字化学习的效率

+

二来是因为 PDF 有着全平台兼容性,不论是 Windows、Mac、Linux 抑或是 Android、iOS,PDF 的显示效果都是相同的。这种特性也使 PDF 更为了绝大多数教材、报告、文章的发布版本。但是很多人对 PDF 知之甚少,也不知道怎样去处理有关 PDF 的常见问题。

+

好了,话不多说,进入今天的正题——怎么找中文教材。

+
+

写在前面

+

促使人们搜寻 PDF 教材的原因有很多,或许是厌恶了纸质书籍的重量、或许是负担不起原书的价格,但不管是出于怎样的目的,我仍然十分建议你能够购买一本对应的正版书籍支持作者,这是对别人劳动成果的尊重

+

1 中文电子教材背景介绍

+

中文教材的电子化做的是不如英文教材的。英文教材大多都是由源文档直接输出,而中文教材大多是成书扫描影印得来的。这也就是为什么同样一本书,英文教材的 PDF 可能只有几 MB 大小,但是翻译成中文后 PDF 可能就会变成上百 MB 大小。并且扫描的 PDF 文件如果没有经过 OCR 识别,是不支持对文字进行操作的。

+

市面上多数中文 PDF 教材不外乎四种来源——图书馆扫描图书流出、个人扫描书籍上传、开源书籍(很少)、出版社文件流出(很少)

+

知道了来源就可以对症下药了,下面说怎么找。👀

+

PS:找到 Word、mobi、Epub、格式的教材也可以通过相关软件转换成 PDF,具体方法可以参考mobi / epub / azw3 书籍格式分不清楚?

+

2 中文 PDF 教材获取方法

+

2.1 网盘搜索器

+

国内的文件共享大多使用的都是网盘,教材也不例外。这里的网盘除了百度网盘,还包括微盘(新浪)、蓝奏云、城通网盘等一众云储存服务提供商。

+

但是这些网盘大多没有提供搜索功能,这里的“搜索”指搜索非公开分享的内容。拿百度网盘举例,公开分享是我们可以直接搜索到的。但是如果带提取码的分享,官方并没有提供这样的搜索入口。

+

这也就催生出了一大批的网盘搜索器,比如 磁力猫西林街。这种网站还有很多,Google 一下一大堆。

+
mark
+

这里推荐几个,都是做聚合网盘搜索器进行搜索的🤞🤞🤞

+

2.1.1 虫部落-快搜

+
mark
+

注意上栏、侧栏、底栏

+

虫部落的强大远不止于此,但是由于这次的主题是 PDF 相关,所以就不在这里展开了。

+

2.1.2 龙轩导航

+
mark
+

同样也是非常强大的一个导航页,除了网盘搜也还有很多其他的实用功能,也不展开了。

+

2.1.3 猎手导航

+
mark
+

同样,不展开讲。

+

至于百度网盘不限速的方法,下文也会讲到。🎁

+

2.2 论坛、BBS

+

有些教材通过网盘搜索仍然是搜索不到的,这时候就需要到对应学科专门的论坛去找了,而且大概率是可以找到的

+

这里说几个学科常用的论坛✔✔✔

+

2.2.1 CSDN

+
mark
+

面向学科:计算机、数学为主

+

虽然 CSDN 文章质量不咋地,但是它可能真的是全国最大的盗版资源汇集地了。😶

+

2.2.2 小木虫

+
mark
+

面向学科:理工科为主

+

论坛整体的氛围较好,资源也比较丰富。

+

2.2.3 经管之家

+
mark
+

面向学科:经济、金融、管理等

+

2.2.4 怎么下载

+

如你所见,这些论坛都需要通过论坛币/积分/金币等虚拟货币进行下载。通常可以通过每日签到等手段赚取,但是比较麻烦而且比较慢。

+

如果只是偶尔下载一次,建议直接去万能某宝搜索下载。🛒

+
mark
+

如果需要经常下载,最好可以拥有自己的账号及对应的论坛币

+

其中 CSDN 一般没有账号出售,需要另外想办法获取积分。方法和渠道你可以加入后面的「电子教材计划」📚后获取。

+

2.2.5 Github💻

+

面向学科:计算机、数学为主

+

之所以放在这个位置,是因为 Github 的开源性,书籍可以免费下载

+

这里简单列举几个

+
mark
+
    +
  1. 经典技术书籍 PDF 文件,持续更新...
  2. +
  3. Directory of Python books
  4. +
  5. 经典编程书籍大全
  6. +
  7. 中医药古籍文本
  8. +
  9. [译] 面向数据科学的概率论
  10. +
+

小技巧:用 “awesome”加你想要搜索的关键词往往有意想不到的收获。🥚

+

2.3 找专业人员购买

+

2.3.1 确认图书馆是否扫描过及其清晰度

+

上文提到过,中文 PDF 教材一部分来源是图书馆扫描图书流出,所以找具有管理权限的人也可以获取相关的 PDF 书籍。

+
mark
+

首先请到全国图书馆参考咨询联盟检索图书,通过书名、ISBN、作者等多种方式都可以进行检索(推荐使用 ISBN 检索,效率非常高)

+

PS:ISBN 就是书背面右下角条形码处的数字,也可以在电商网站详情页找到。

+
mark
+

如果图书详情页的右上角有试读(版权、前言、目录、正文),则可以通过这种途径购买。如果没有试读,则无法通过这种途径购买。

+

点进去查看清晰度,试读的清晰度就是制作出来的 PDF 教材的清晰度

+
mark
+

2.3.2 找人购买

+

你可以在通过淘宝等途径找到这类人员,通常一本价格 5-15 元不等,自己挑选即可。

+

为了避免打广告的嫌疑,文章中不做推荐。但是你可以在后台回复”电子书购买“获取我推荐的一位从业者联系方式,一本大概 3 元。

+

PS:图书馆的扫描格式是 PDG,转成 PDF 需要一定的时间,请耐心等待。

+

2.4 通用搜索引擎搜索

+

如果走到了这一步,要么你的书比较新,图书馆还没来得及扫描;要么就是书比较偏,需求不大。

+

所以,还是得依靠广大的网友了。用通用搜索引擎搜索。建议使用 Google 或者及其镜像网站

+

当然,搜索也是有技巧的。

+

2.4.1 善于利用 ”filetype:“

+
mark
+

注意冒号是英文的冒号

+

filetype 也就是只显示某一文件类型,例如.doc .pdf .xls .ppt .txt

+

2.4.2 善于利用英文双引号 ”“

+
mark
+

双引号里面的内容是精确匹配的,也就是说连接中必定含有双引号里面相同的内容。在很多相似书籍中检索很方便。

+

2.4.3 善于利用 “-”

+
mark
+

减号通常用来排除某一搜索内容,图示即为 不含 python 的 machine learning 搜索结果。

+

注意:前一个关键词和减号之间必须有空格,后一个关键词和减号之间不能有空格

+

2.4.4 更多搜索语法技巧

+

搜索的语法技巧还有很多,这里不做展开。你可以参考这篇文章了解。当然,只要会几种常用的就能够大大提高检索的效率了。

+

PS:现在多数的搜索引擎是基于关键词检索而非语义检索,所以请不要输入”如何找到笨方法学python这本书“🙃🙃🙃,而应该拆分关键词——”笨方法 python” 。

+

2.5 杂项

+
mark
+

中国哲学书电子化计划

+

类似的专门计划应该还有,欢迎留言区内补充。🔗

+

2.6 众筹扫描

+

如果前面的方法都试过了但是还是走到了这一步,恭喜你,你即将解锁一个新的技能。😬

+

请自己扫描吧...

+

淘宝买书——寄送到淘宝扫描店——获取 PDF。

+

一般报价:

+
+

报价:拆书扫描0.1元/面,不拆书扫描0.2元/面。A3扫描要拆书0.2元/面。如您的书300页,拆书为30元。

+
+

400 dpi 的清晰度足够,建议拆书扫描,效果很好。

+

如果是刚需,十分建议对此书发起众筹扫描,平摊成本。因为稍微厚一些的书可能卖 15 元,但扫描制作成 PDF 一套服务下来可能会过百。

+

你可以加入后文的 「电子教材计划」发起你的众筹需求(首先自己有个判断需求是否小众)

+

3 高阶技巧

+

3.1 关于百度网盘不限速

+
mark
+

GitHub 上关于百度网盘不限速的项目有很多,比如 ProxyeeDown 你可以自行搜索。

+

市面上也会有一些相对成熟的第三方软件,比如 速盘PanDownload

+

当然,第三方的客户端都是有风险的,可能账号会被限速。

+

你也可以使用 IDM+油猴脚本 ,更保险一些。如果你懒得折腾,这里推荐奶酪的方法

+

3.2 Chrome+Context Search 插件配合提高搜索效率

+

每次搜索都需要重新打开网页,键入关键词,比较麻烦。使用这一款插件可以加快搜索效率。

+
mark
+

效果如图

+

下期预告:英文教材怎么找?

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2019-04-13141/index.html b/post/2019-04-13141/index.html new file mode 100644 index 0000000..d7a2d37 --- /dev/null +++ b/post/2019-04-13141/index.html @@ -0,0 +1,425 @@ + + + + + + +英文教材怎么找——玩转PDF系列02 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 英文教材怎么找——玩转PDF系列02 +

+ +
+
2019-04-13 · 9 min read
+ + + + 书籍 + + + + + 找书 + + + + + 搜索 + + +
+
+

心心念念的 “玩转PDF系列教程”终于等到了第二期(原谅我最近实在是太忙了,拖了这么久才发)。

+

上一期我们谈了怎么找中文教材,并且推出了“电子教材计划”。后台的反馈挺好的,但是收藏率远远高于分享率...你们不知道好东西值得分享嘛🙄🙄🙄

+

好了,回到正题。虽然中文教材已经能够满足多数人的需求了,而且阅读起来也相对容易。但是在某些学科,当你阅读了英文的教材之后,再对比一下国内的教材,你就会发现差距还是很明显的。排除翻译等因素,国内教材和国外教材的逻辑结构、指导思想、可读性都会有较大的差异。

+

当然,每个人喜好不同,选择自己合适的就是了。但国外一本普通教材可能随随便便就破千,多选几本书的话轻松小一万就没了。如何找到英文电子教材就成为了我们不得不面对的事情。(当然,我个人非常鼓励大家有能力了之后去买正版,不要竭泽而渔

+

好消息是——按照下文的教程,你基本可以顺利找到 80% 的英文教材。Enjoy

+
+

一 英文电子教材背景介绍

+

与中文教材不同,英文教材的电子化程度很高。它们大多由源文档直接输出,体积小、质量高。而中文电子教材大多是成书扫描影印得来,体积大,不利于检索。

+

二者来源不同,所以检索的思路也有所差异。

+

英文教材通常在专门的电子书资源网站才能有较好的检索效果。这个时候采用 Google 这类通用搜索引擎反而不是上上之选了。

+

PS:找到 Word、mobi、Epub、格式的教材也可以通过相关软件转换成 PDF,具体方法可以参考mobi / epub / azw3 书籍格式分不清楚?

+

二 英文电子教材获取方法

+

2.1 Z-library 系列网站

+
+

Z-Library is one of the largest online libraries in the world. We aim to make literature accessible for everyone. Today, Z-Library contains over 3 400 000 books and 73 000 000 articles.

+

Z-Library has many servers in the USA, Panama, Russia, Germany, Finland, Malaysia and Luxembourg. Our stored data now totals more than 160 TB! Every month, millions of people use Z-Library for their purposes — this shows us that we are on the right track. But it will be difficult to achieve our goals without your help. Z-Library is a non-profit project that exists at its founder’s expense, and with your support. Only thanks to your support over the past six months, we’ve made many improvements: full-text search, ZAlerts, recommender system, download history, improved advanced search and much more.

+
+

以上是 Z-library 计划的介绍。书籍品类极其丰富,pdf、djvu、epub 格式都有,免费下载。不过每次下载完一本才能下载第二本。

+

项目有很多个镜像网站(毕竟动了很多人的奶酪),比如 BookscBookokBookFi

+
Booksc
+

PS: 除了教材,你还可以下载其他的电子书和文章。如果下载速度过慢,可以考虑采用百度云的离线下载功能。

+

2.2 Library Genesis / LibGen 系列网站

+
+

Library Genesis or LibGen is a search engine for articles and books on various topics,[1]which allows free access to content that is otherwise paywalled or not digitized elsewhere.[2] Among others, it carries PDFs of content from Elsevier's ScienceDirectweb-portal.[3]

+

In 2015, the website became involved in a legal case when Elsevier accused it of providing pirate access to articles and books.[3] LibGen is reported to be registered in both Russia and Amsterdam, making it unclear which legislation applies,[3][4] and whether defendants will show up in a United States court hearing.[3] LibGen is blocked by a number of ISPs in the United Kingdom,[5] but such DNS-based blocks are claimed to do little to deter access.[3] In late October 2015, the District Court for the Southern District of New York ordered LibGen to shut down and to suspend use of the domain name (libgen.org),[6] but the site is accessible through alternate domains.[7][8]

+

As of 5 June 2018, Library Genesis states that its database contains more than 2.7 million books and 58 million science magazine files.[9]

+
+

以上是维基百科对于该项目的介绍。

+

同样,该项目存在多个镜像网站。比如 libgen1libgen2

+
libgen1
+
libgen2
+

PS:该项目收录书籍也是极为全面,除了教材还有其他书籍、文章、杂志可供下载。

+

2.3 一些杂站

+

Z-library 项目和 LibGen 项目通常已经可以满足绝大部分需求了。或者说,如果在这两个项目中都检索不到相关资源,通过其他方式检索到的机会也不会很大了。但这句话也不是绝对的,毕竟互联网太大了,每天都会有新的信息被上传到互联网上,这两个项目能够囊括的书籍还是有限的。下面也推荐一些杂站,或许会有新的收获。

+

2.3.1 EBBOKEE

+
Ebookee
+

EBookEE 也是我常用的英文电子书检索网站,品类是这几个网站中相对丰富的。

+

2.3.2 FreeBookSpot

+
FreeBookSpot
+

无需注册,直接下载。

+

2.3.3 Free-Ebooks

+
FreeEbook
+

免费注册后方可下载。

+

2.3.4 ManyBooks

+
Manybooks
+

“它所提供的免费电子书超过2万本。你可以通过分类,作者,书名和语言进行搜索查询,每本书都包含一个简介,包括书名,作者,国家和内容简介。所有电子书含都可以下载保存为几十种电子书格式,比如Doc,PDF,RTF,JAR,TXT等等。”

+

2.3.5 Free Computer Books

+
FreeComputerBooks
+

一个专门收集计算机,逻辑,数学,演讲报告和教程等专业知识电子书的网站。网站有达到 12 层的分类系统,超过 150个 子分类。

+

2.3.6 FreeTechBooks

+
FreetechBooks
+

Database of Free / Open Access Online Computer Science Books, Textbooks, and Lecture Notes (1211 books and growing)

+

2.3.7 Online Computer

+
OnlineComputerBooks
+

2.4 Github

+

在上期“如何寻找中文电子教材”中提到过 GitHub,事实上,GitHub 上面的英文书籍资源是要远多于中文书籍资源的。当然,主要学科还是计算机和数学。

+

举几个例子。

+

2.4.1 Directory of Python books

+
awesome python books
+

2.4.2 EbookFoundation

+
ebookfoundation
+

小技巧**:用 “**awesome”加你想要搜索的关键词往往有意想不到的收获。🥚

+

2.5 通用搜索引擎搜索

+

如果走到了这一步,要么你的书比较新,大的网站没有收录;要么你的书比较偏,需求的人极少。

+

但互联网太大了,网友的力量是无穷的。这时我们需要用通用搜索引擎搜索。建议使用 Google 或者及其镜像网站

+

当然,搜索也是有技巧的。

+

2.4.1 善于利用 ”filetype:“

+
+

注意冒号是英文的冒号

+

filetype 也就是只显示某一文件类型,例如.doc .pdf .xls .ppt .txt

+

2.4.2 善于利用英文双引号 ”“

+
+

双引号里面的内容是精确匹配的,也就是说连接中必定含有双引号里面相同的内容。在很多相似书籍中检索很方便。

+

2.4.3 善于利用 “-”

+
+

减号通常用来排除某一搜索内容,图示即为 不含 python 的 machine learning 搜索结果。

+

注意:前一个关键词和减号之间必须有空格,后一个关键词和减号之间不能有空格

+

2.4.4 更多搜索语法技巧

+

搜索的语法技巧还有很多,这里不做展开。你可以参考这篇文章了解。当然,只要会几种常用的就能够大大提高检索的效率了。

+

PS:现在多数的搜索引擎是基于关键词检索而非语义检索,所以请不要输入”如何找到笨方法学python这本书“🙃🙃🙃,而应该拆分关键词——”笨方法 python” 。

+

三 其他

+

3.1 电子教材计划 📚

+

在上次的文章里我推出了「电子教材计划」。目的是希望能够打造一个学科教材库,帮你更快的找到自己需要的教材。如果你有兴趣,可以点我进一步了解

+

3.2 玩转PDF系列教程

+

寻找书籍处理PDF,再到各平台选择阅读器,看这套教程就够了。

+

为什么需要“玩转PDF系列”这套教程?

+

一来是随着 iPad 和 surface 的逐渐流行,越来越多的人选择了数字化的学习方式。但是很多人或者找不到数字学习材料,或者找到的材料质量不高,这样大大损伤了数字化学习的效率

+

二来是因为 PDF 有着全平台兼容性,不论是 Windows、Mac、Linux 抑或是 Android、iOS,PDF 的显示效果都是相同的。这种特性也使 PDF 更为了绝大多数教材、报告、文章的发布版本。但是很多人对 PDF 知之甚少,也不知道怎样去处理有关 PDF 的常见问题。

+
+

下期预告:一般性书籍怎么找

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2019-04-28154/index.html b/post/2019-04-28154/index.html new file mode 100644 index 0000000..0ae23e7 --- /dev/null +++ b/post/2019-04-28154/index.html @@ -0,0 +1,390 @@ + + + + + + +图床使用及迁移:写在新浪图床失效之后 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 图床使用及迁移:写在新浪图床失效之后 +

+ +
+
2019-04-28 · 3 min read
+ + + + 雕虫小技 + + +
+
+

新浪微博图床在近期已经逐渐开启了防盗链,导致不少曾经依赖新浪微博图床的博客图片均无法显示。

+

本文总结了在迁移图床、重新选择工具上面的一些经验。希望对你有所帮助。

+

一 迁移

+

1.1 一键迁移至阿里云OSS

+

1.2 数据库替换链接

+

1.3 批量保存微博图床图片到服务器(wordpress)

+

1.4 批量保存微博图床图片到本地

+

视频教程

+

1.5 总结的一些非迁移方法(暂时可用)

+
    +
  • 修改域名
  • +
  • 修改referrer
  • +
  • 切换 http
  • +
  • 内嵌 iframe
  • +
  • 第三方反代
  • +
+

二 Windows 平台图床工具选择

+

2.1 Mpic

+
图床神器
+

Windows 平台下应该是最好的图床工具了。有如下的优点。

+
    +
  • 多种格式选择
  • +
  • 截图/复制图片自动上传
  • +
  • 链接自动复制到剪贴板
  • +
  • 图片自动瘦身
  • +
  • ...
  • +
+

缺点是只支持七牛云。

+

2.2 PicGo

+

新晋的 Windows、Mac、Linux 全平台图床工具。支持微博图床、七牛图床、腾讯云 COS v4/v5、又拍云、GitHub、SM.MS、阿里云 OSS、Imgur。

+
PicGo
+

另外支持插件

+

官方使用说明,关于 PicGo 的更多介绍,你可以查看这里

+

三 Mac 平台图床工具选择

+

3.1 iPic

+

Mac 上的图床神器,目前支持微博(即默认图床)、七牛云又拍云阿里云 OSS腾讯云 COSImgurFlickrAmazon S3

+

支持复制上传、手动上传、拖曳上传。

+

作者的开发历程,更多介绍

+

同时还有 iPic Mover,可以通过 iPic 上传 Markdown 中的图片(包括本地或网络图片)至新的图床,并替换 Markdown 中的图片地址

+

3.2 PicGo

+

见上文。

+

四 Chrome 平台图床工具选择

+

4.1 七牛在线存图

+
微博图床
+

新浪图床挂了之后,Chrome 上很难找到像微博图床这样强大的插件了。对我而言,Chrome 平台图床插件的一个刚需是直接上传网页图片到图床,我找到了「七牛在线存图」这个插件勉强替代。不过只支持七牛云、生成的链接不能直接复制到剪贴板、不能直接传 Gif...只能是将就一下了。

+

五 图床选择

+

可以参考这篇文章

+

想选择七牛云的朋友们请注意,七牛云需要自己有一个备案的域名(通常购买并备案一个域名需要两周以上的时间),结合自己情况再决定七牛云是否适合自己。

+

Reference

+
    +
  1. +

    猫雅博客:解决了新浪图片加了防盗链图片失效教程

    +
  2. +
  3. +

    图床和图片迁移和轮子

    +
  4. +
  5. +

    图床迁移说明

    +
  6. +
  7. +

    typora + iPic 方便的上传图片到服务器

    +
  8. +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2019-05-16177/index.html b/post/2019-05-16177/index.html new file mode 100644 index 0000000..8aece65 --- /dev/null +++ b/post/2019-05-16177/index.html @@ -0,0 +1,405 @@ + + + + + + +怎么查看并保存被微信屏蔽的文章? - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 怎么查看并保存被微信屏蔽的文章? +

+ +
+
2019-05-16 · 6 min read
+ + + + 雕虫小技 + + +
+
+

微信最近发布了 2018 数据报告。报告指出,截至2018年9月,微信月活用户达到 10.82 亿

+

尽管微信公众号近年来的打开率不断下降,但不可否认的是,微信庞大用户基数使得绝大多数内容生产者都不能舍弃这块战场。

+

根据《2017 年微信经济数据报告》和《2017 微信用户研究和商机洞察》数据,截至 2017 年底微信公众号已超过 1000 万个,其中活跃账号 350 万,较 2016 年增长 14%,月活跃粉丝数为 7.97 亿。

+

自然,微信的生态里面有非常多的优质内容生产者,他们对外输出了许多富有价值的内容。

+

那么,当我们读到精彩绝伦的文章时,我们应该怎么保存?微信收藏么?

+

我的建议是:怎么保存都可以,但别用「微信收藏」

+

一 为什么我不推荐你使用”微信收藏“

+

1.1 只保存网址,不保存内容。

+

绝大多数情况是没问题的,但是有时候由于种种原因,文章会被微信屏蔽,亦或者被作者删除。这个时候,虽然它在你的收藏列表里面,但是你已经无法再查看它的内容了,这就完全丧失了收藏的意义。

+
作者删除
+
内容被屏蔽
+

1.2 平台兼容性差

+

在手机上看到的值得记录的文章或许我们还可以「发送到微信收藏」。但如果在电脑上,再使用微信收藏文章恐怕就没有那么方便了,总不能来回复制粘贴吧。

+

那我们怎么做才能真正意义上收藏文章呢?推荐你使用第三方云笔记。

+

二 使用第三方云笔记

+

2.1 云笔记收藏不怕原文被屏蔽/被删除的原理

+

微信收藏只记录网址,不保存内容。但是第三方云笔记通常会既保存内容,也保存网址。哪怕文章被微信屏蔽了,自己依旧可以查看使用第三方云笔记收藏之后的内容。

+

如果把一篇文章比做成一个房子,那么微信收藏是只保留了钥匙(网址),所以房子一旦被拆除(被删除/屏蔽),钥匙也就毫无意义。而第三方云笔记的收藏功能则是另外建造了一栋一模一样的房子,所以即便原来的房子没有了,我们仍然可以看到原来的房子是什么样子。

+

2.2 使用云笔记的优势

+

2.2.1 可以剪藏内容

+

原理中已经介绍得很明白了,这是真正意义上的收藏。文章的具体内容会保存到你的云笔记本里面,便于日后查看。

+

2.2.2 多平台兼容,支持网页剪藏

+
    +
  • 微信:支持 一键发送到云笔记
  • +
  • 电脑上的浏览器:支持 一键剪藏
  • +
  • App:支持分享到云笔记应用
  • +
+
一键发送
+
OneNote 剪藏网页
+

2.2.3 可检索性强

+

由于文章的内容已经被保存到了我们自己的笔记本里,所以即使日后我们忘记了文章的标题,我们仍然可以通过检索零星的字词快速定位到目标文章。

+

2.2.4 生态相对完善

+

专业的云笔记平台一般会和多家平台合作,针对不同内容平台进行专门的优化,也可以和其他工具形成联动。更可以使用 IFTTT,这类自动化工具实现更多玩法。

+
IFTTT 内的 Evernote 玩法
+

2.3 如何选择云笔记平台

+

国际上的两大主流笔记应用:Evernote、OneNote

+

2.3.1 Evernote(印象笔记)

+

Evernote 是一款专注于笔记的应用。而印象笔记则是它的中国地区版本,二者账户独立(不共享同一个数据库),印象笔记比 Evernote 多了一些本地化的功能,比如保存微信微博内容。

+

优点

+
    +
  • 多平台通用(Windows、Mac、Android、iOS、Chrome、Firefox 等)
  • +
  • 第三方服务支持度高,可以和许多平台联动(三者里最好的)
  • +
  • 支持保存微信、微博内容(印象笔记)
  • +
  • 一键网页剪藏,保留排版(印象笔记的网页剪藏效果吊打 OneNote,更别说有道云笔记了)
  • +
+

限制

+
    +
  • 免费帐户不支持笔记离线查看和编辑。有时笔记可以从缓存中访问,但可能会导致同步时的冲突。
  • +
  • 免费账户仅限同步 2 台设备。
  • +
+
印象笔记价格
+

2.3.2 OneNote (微软云笔记)

+

OneNote 可能是 Office 套件里面可能是最不常为人所知的一款应用了,微软出品。

+

优点

+
    +
  • 多平台通用(Windows、Mac、Android、iOS、Chrome、Firefox 等)
  • +
  • 背靠 Office,编辑能力出色;和 Office 套件联动方便
  • +
  • 第三方服务支持较好,但是不如印象笔记
  • +
  • 支持保存微信、微博内容
  • +
  • 一键网页剪藏,但会丢失部分排版信息(就是看起来比较丑)
  • +
+

限制

+
    +
  • 免费用户只有 5 G的云空间,需要订购 Office 365 才能扩容
  • +
  • Windows 下 OneNote 2016 总是会在同步上出现迷之bug,其他平台还好
  • +
  • 网页版目前国内无法访问
  • +
+
OneNote UWP 版本
+

2.3.3 Evernote 和 OneNote 的更多对比

+

Evernote 和 OneNote 各有优劣,尽管我是 OneNote 的重度用户,但我也非常羡慕印象笔记强大的剪藏能力和第三方服务支持。但是由于个人平时会使用 Surface 手写笔记,并且订阅了 Office 365,所以也就一直留在了 OneNote 平台。

+

请慎重选择笔记工具,不然以后迁移笔记是非常麻烦的。更多的二者对比请看下面的文章。

+

OneNote 和 Evernote 应如何取舍?

+

Evernote 迁移到 OneNote 工具

+

OneNote 迁移到 Evernote 教程

+

2.4 微信上剪藏文章方法

+ +

三 被屏蔽的文章怎么看

+

原理其实很简单,有价值的东西一定会被有心人收藏

+

复制微信文章的标题,然后使用搜索引擎搜索(微信搜索其实就可以了)即可。(部分文章或许需要使用 Google 才能搜到)

+

举个例子。

+

半佛仙人(公众号:ID:banfoSB)曾经在公众号发布一篇 10 万+的文章《团贷网之死,高利贷团灭简史》。文章写得非常精彩,但是由于种种原因,这篇文章被删除了。

+

使用微信搜索,输入”团贷网之死“。

+
结果
+

再一键保存到自己的云笔记平台,就能彻底留存住这篇文章了。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2019-07-20206/index.html b/post/2019-07-20206/index.html new file mode 100644 index 0000000..52f8fcc --- /dev/null +++ b/post/2019-07-20206/index.html @@ -0,0 +1,374 @@ + + + + + + +一般性书籍怎么找——玩转PDF系列03 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 一般性书籍怎么找——玩转PDF系列03 +

+ +
+
2019-07-20 · 5 min read
+ + + + 书籍 + + + + + 找书 + + + + + 搜索 + + +
+
+

思路

+

相较于格式多为 PDF、来源相对固定的教材类书籍,一般的书籍不论是格式还是来源都要丰富得多。

+

但各家站点的书籍种类多有不全,所谓寻找一般的书籍,其实也就是在多个网站之间切换搜索,尽快找到目标书籍。所以影响快速找书结果的因素不外乎两个:

+
    +
  • 选择的网站收录的书籍是否齐全? +
      +
    • 能否迅速切换网站、甚至于一次在多个网站同时搜索同一个关键词?
    • +
    +
  • +
+

我也将从上述两个方面来给出常用的解决方案。

+

不过提前说一嘴。如果不是有特殊需求或者商城查无此书,建议还是在电子书商店直接购买。至于原因,

+
+

有的时候,免费的就是最贵的。

+
+

懂的自然懂,不懂的我亦不多言。

+

方法

+

豆瓣下载大师

+

使用演示

+

这是我常用的方法,效率高,速度快。不过缺点是目前只能在电脑上使用。

+

演示请看下图右半部分

+
+

在豆瓣上打开一个书籍页面,豆瓣下载大师会同时在多个网站对这一书籍进行查询并返回结果。可以选择隐藏失败的结果。

+

我们只需要点进一个成功的结果后便可进行下载。

+

豆瓣下载大师本质是一个一次输入、多处同时检索的小型搜索引擎。

+

官方功能介绍:

+
+

*显示对应的中英文字幕
+*显示对应的在线视频|在线音频|在线图书
+*支持对豆列进行搜索
+*显示对应的电影|电视剧|纪录片|综艺|动画|音乐|图书等资源(含直链|FTP|BT|磁力|ED2K|NZB|迅雷|百度盘|115盘等)
+*聚合400+主流资源网站|字幕网站|资源搜索引擎网站
+*独家资源颜色自动标记功能:有资源的站显示绿色,无法访问|没登陆的站显示白色,无资源的站显示黄色
+*一键生成电影介绍信息,方便在论坛|网站上发布资源时添加影片介绍
+*独家资源ID智能匹配功能,搜索结果更精准:有IMDB链接按IMDB ID匹配、无IMDB链接按豆瓣ID匹配
+*独家站点按类别智能显示功能,搜索结果更精准:如电视剧类网站仅在电视剧条目出现,动画类网站仅在动画条目出现
+*独家站点按国家智能显示功能,搜索结果更精准:如美剧类网站仅在美剧条目出现,日剧类网站仅在日剧条目出现
+*独家资源年份智能匹配功能,搜索结果更精准,即电影类匹配关键字智能添加年份,非电影类(如剧集、动画等)则不添加年份
+*独家搜索结果缓存机制,使用次数越多,搜索速度越快
+*独家自定义删除站点及自定义更改资源颜色背景色+前景色自定义功能
+*独家资源标记+站点登陆+IMDB TOP 250缓存功能、缓存主动/自动清理功能
+*独家MPAA电影中文分级说明
+*独家电视中文分级说明
+*独家制片成本、本国首周票房、北美首周票房、总票房
+*显示IMDB评分及评分人数,给IMDB Top 250的影视资源添加独有的醒目标记
+*显示Metascore及流行度、本周升降数
+*显示烂番茄评分、鲜度及烂度
+*显示AniDB评分|Bgm评分|MAL评分

+
+

安装方法

+

浏览器选择 火狐(Firefox)或者 谷歌(Chrome),然后安装 暴力猴 或者 Tampermonkey 插件,在脚本安装界面点击安装脚本。(安装有疑问可以后台发送截图留言)

+

PS:如果无法下载 Chrome 和相关插件,后台已经留了 Chrome 的安装包还有 Tampermonkey 的安装文件,可参照下方教程自行安装离线 crx 文件。回复「豆瓣下载」即可获得。

+

Tampermonkey 油猴脚本安装

+

豆瓣资源下载大师:1秒搞定豆瓣电影|音乐|图书下载

+

Chrome crx插件扩展离线安装方法 (兼容全版本)

+

虫部落图书搜索

+

虫部落前些日子也根据诸多找书贴,聚合了一个搜书导航。这个导航里面罗列的网址可能并不多,但都是相对来说搜书效率较高,收录书籍较全的网站。如果你用不了「豆瓣下载大师」的话,不妨试试虫部落的搜书导航。

+
+

网址是 https://ebook.chongbuluo.com

+

其他

+

当然,前两期提到的中文教材电子版检索方法英文教材电子版检索方法对一般的书籍也是适用的。

+

总结一下所有找书的思路

+
+
+

下期预告:「怎么处理 PDF 才能使之更易用」?

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2020-01-16210/index.html b/post/2020-01-16210/index.html new file mode 100644 index 0000000..1afbfa7 --- /dev/null +++ b/post/2020-01-16210/index.html @@ -0,0 +1,398 @@ + + + + + + +谈谈我的 2019 和 2020 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 谈谈我的 2019 和 2020 +

+ +
+
2020-01-16 · 10 min read
+ + + + 总结 + + +
+
+

1 说说废话

+

本来脑海里构思 2019 总结的时候有一大堆话想说,但真正要写下来的时候,又不知道从何说起。

+

算了,那还是先从公众号开始吧,很抱歉 2019 年最后几个月公众号基本没更新。原因其实就两个,第一确实是忙,下半年很多事情赶到一块了,抽不出时间写公众号。第二自然就是懒了,把图文以公众号的形式表达出来,心理上还是有一定的压力的。

+

多数时候我都是在 Telegram 的私人频道里面发言的,一来 TG 全平台客户端比较方便,用手机可以直接分享一些内容;二来是 TG 相对自由,也不担心莫名敏感词无法通过。不过新的一年,我争取保证公众号每月至少一篇内容输出,以此倒逼自己输入。

+
+

2019 年个人在形态上没什么变化,但是在认知上,整个人上半年和下半年可以说是天壤之别。

+

大概是在 2019 的上半年,整个人还是偏理想主义的,成天关注一些 AI、区块链、这些被炒得很热的概念,每天感觉听了很多很多对对行业趋势的预测,对未来的憧憬,看上去仿佛获得了很多知识,但是一深究,就会觉得很空洞,说得都是一些大而无用的东西。

+

有些内容,比如说有的行业趋势分析,你不能说他不对,或许对于大的企业而言,它们有一些指引方向的作用。但是对于我这样微小的个体而言,它们有一个非常致命的问题——没办法落地。那么其实这些内容对于我而言就是有用的废话。看看也就罢了,但不能过于重视。就好像我们每天出门查的都是当地天气,没人会去看世界平均气温怎么样,这对我们的影响太小了。能真正落地执行的,才是我这样微小的个体需要关注的问题。

+

可能也是发现了这个问题,下半年慢慢地整个人的信息源就偏向个体执行类和认知类的内容。在这个过程中,要特别感谢一些老师的帮助。

+

第一个要感谢的是森淼老师,执行力和认知都非常高,过去一年也有幸看到森淼老师是怎么一步一步把一个利用信息差套利的项目落实到位的,非常佩服。森淼老师每天会经常在知识星球里分享一些优质的摘录、牛人、思考。通过森淼老师,发现了很多在不同领域拥有深刻思考+实操经验的前辈,也在落地一项可以套利的小项目。下面是森淼老师的知识星球和写过的文章:

+

森淼老师的知识星球(限免):https://t.zsxq.com/eYvFuFq

+

0成本套利,30分钟打造星球返佣导航站

+

一次饭否账号套利复盘

+

第二个要感谢的是曹大。曹老师江湖人称“互联网百晓生”,作为一名从 PC 时代走过来的老兵,十分清楚很多互联网内容幕后非常 Real 的东西。并且曹老师还愿意讲他的思考和经验分享出来。过去一年,从曹老师这里得到了许多做互联网内容、做人的建议,修正了自己某些错误的认知。真的非常感谢曹大愿意分享经验给年轻人,对于这个年纪的我而言,经验是最宝贵的财富。曹大的分享的的确确帮助我在试错的路上少交了一些学费。

+

职场通病之 - 别把自己当小受

+

年轻人,如何才能抗造之 - 预期管理及心态控制

+

从校园到职场 - 面试官是怎么看简历里的项目经验

+

从校园到职场 - 提问与交流

+

影响力阶级

+

第三个要感谢的是西风老师。如果非要用一个词来形容西风老师,我想可能”人精“这个词最为合适吧。不论是什么事情,背后的利益纠葛、人性抉择都看得非常透亮。当然,有些事也因为说得太明白了让人有点难以接受,“记忆承载”堪称公众号里面的泥石流。

+

对事不对人?现实狠狠的扇了罗振宇一耳光!

+

其实还要感谢家人的支持、朋友的帮助,没有他们,或许我的 2019 年就是另一番风景了。

+

但是看了再多,这些内容于我而言也只能算是信息。未经思考、内化的难以称之为知识。所以下面说说 2019 我做了什么,以及 2020 我将要做什么。

+

2 做过的事和要做的事

+

2.1 做过的事

+
    +
  1. 开通了公众号,上半年全渠道引流大概几千。对应知乎号,点赞 4k,收藏 2w。
  2. +
  3. 年尾开始做视频内容,目前上传了一个视频,全网播放量 2w。
  4. +
  5. 失物招领小程序基本制作完成。
  6. +
+

坦白讲,还是看得多,做得少。可能在具体的技能点上有一定提升,但是相对于吸收的信息量而言,转化率很低。所以新的一年就只有一个主题——试错

+

2.2 2020 任务

+
    +
  1. 上线另一个小程序,日活做到 1000,能收支平衡。如果条件允许的话,尝试线上线下配合运作。
  2. +
  3. 孵化一个月销千单的一次性业务。
  4. +
  5. 全年全网播放量破 100w,b 站粉丝达到 1000,YouTube 播放量过 1w。
  6. +
  7. 托福过 100...
  8. +
  9. 瘦到 130...
  10. +
+

如果顺利的话,小程序和线下业务的结合将会是 2020 工作的重心,或许未必能盈利,但获得了经验也不亏。第二项任务是给自己留个后路,不至于活得太窘迫。第三项任务则是趁着 B 站的红利期给自己占个坑,过两天我也会写一篇对于当下做视频内容的一点思考和建议,毕竟早就是优势,要抓住。最后两项,不能再拖了。

+

如果任务能够顺利完成,就给读者朋友们发个大红包。

+

2.3 长线任务

+
    +
  1. 学习 SEO,孵化一个月 UV 过万的英文站。
  2. +
  3. 提升自己的逻辑性,目前整个人还是缺乏思辨能力,有的文章隐隐觉得不对,但又说不出来哪里有问题。缺乏逻辑还是蛮致命的一个问题。
  4. +
  5. 提升自己讲故事的能力。现在自己插科打诨还行,但要是讲故事,再有趣的故事到我的嘴里也是索然无味。
  6. +
+

暂时就开这么多坑,慢慢填就是了。选择这些事情来做的原因也很简单:它们要么能够为我增长经验,要么可以一次投入,终身收获。毕竟,最大的套利机会就是时间。

+

3 2019 杂言

+

下面谈谈在 2019 年常常在脑海里回荡的内容、数据、感悟。

+
+

当一场浪潮到来的时候,最好的做法不是投身浪潮,而是为浪潮提供工具。

+
+

考研、考公、考证的有没有实现他们的理想我不知道,但我知道的是从源头的课程生产、到线上辅导、甚至是最终端二次卖课的,不少人过得挺滋润的。

+

公众号赚没赚到钱不清楚,但是为创作者提供技术支持的服务商们过得还不错。

+
+

在中国再众所周知的事情,都有一个亿的人不知道,但往往是十个亿的人都不知道。

+
+

信息差永远存在,信息差就是金钱。拿购物随便出两个问题,诸位可以测试一下,看看自己知不知道。

+
    +
  1. 用过 1688 么?
  2. +
  3. 为什么会有专门的网站、App、公众号给你发淘宝商品的优惠券?这些优惠券是哪里来的?
  4. +
+
+

2019年会是过去十年中最差的一年,未来十年中最好的一年

+
+

目测会有一大批看上去能够解决焦虑的服务出来收割。扶住把手,小心别翻车了。赚想要赚钱的人的钱或许是最容易的:)

+
+

B 站 2019 Q3 ,月活 1.28 亿;用户日均使用时长 83 分钟;月均用户互动量 25 亿

+
+

相对于西瓜视频,我更认可 B 站最有可能成为中国的 YouTube。趁着目前 B 站还需要扩充他的长尾内容,找准领域尽快切入,早就是优势。

+
+

欧成效:养老只有一个解

+
+

没说的,拼吧。

+

4 榜单

+

4.1 2019 买过最值的电子产品

+

19 年初入手了一台二手 iPad 2018 32G,在基本解决了文件处理的问题之后,我的 Surface Pro Pen 就基本上退休了。硬件上延迟、偏移不如 iPad,软件上没有 iPad 的生态,除了屏幕素质好一些,Surface Pro ,唉。

+

通过 iPad+全面的软件生态 ,基本实现了无纸化生活。后来拼多多百亿补贴的时候还劝了身边的几个朋友入手 iPad,给他们写了简单的 iPad 文件管理入门(过两天润色一下发出来)。

+

对于经常需要书写的人而言,iPad 就一个字,真香。

+

4.2 2019 最看好的公司

+

拼多多、B 站、美团。

+

4.3 2019 最有价值的支出

+
+

虽然自己极度贫穷,但是还是为祖国的绿化事业尽了一份力的😀。

+

4.4 2019 最想推荐的书

+

2019 读书不多,读的大多目的性也比较强。不如给大家推荐一本非功利性的小说——《亮剑》,没错,就是那个李云龙的亮剑。小说大概读了三四遍,明明知道结局,可每次读完还是流泪。电视剧只是小说的前半部分,后面的内容或许更值得深思。

+

你可以在“微信读书”App 里用无限卡免费阅读,也可以购买实体书。

+
+

就说这么多吧。

+

2020 年已经过去 4% 了,预祝我和诸位在剩下的 96% 里面——( )。白白~

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2020-01-30215/index.html b/post/2020-01-30215/index.html new file mode 100644 index 0000000..42200f5 --- /dev/null +++ b/post/2020-01-30215/index.html @@ -0,0 +1,411 @@ + + + + + + +B 站?Why&How? - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ B 站?Why&How? +

+ +
+
2020-01-30 · 12 min read
+ + + + 杂记 + + +
+
+

B 站?Why&How?

+

大概是在 2019 年下半年,我的信息源里面开始频繁出现 B 站的相关消息。

+
    +
  • B 站 UP 主“独立菌”给曹大引了数千粉丝
  • +
  • 半佛仙人、巫师经济学在 B 站的迅速崛起
  • +
  • 视频战争 2019
  • +
  • 身边朋友有的一天看几个小时 B 站视频
  • +
+

虽然之前早就注册过账号,但一直把 B 站当成一个二次元社区,很少打开。后来看了一下才发现 B 站的内容池原来已经这么大了,除了动画还有科技、生活、时尚、娱乐、广告...我在 B 站学知识真的不是一句虚言。

+
B站的主页分区
+

2019 年 12 月尝试在 B 站占坑,希望 2020 能做到 1000 粉丝(尽管目前进度 1%)。现在感觉还是有些困难的,因为目前在做的内容和 B 站的调性不是很搭,数据在西瓜反而好看很多。不过时日还短,坚持做一年再看看数据如何。

+

写这篇文章主要想分享一下我对视频内容的一点思考和理解,未必正确,只是记录。

+

本文分为两个部分,Why & How

+

为什么要做 B 站?

+

1 视频时代已然来临,B 站的门槛相对于抖音和快手较低

+

博客-微博-抖音/快手,媒体的篇幅从长到短,媒体的形式从文字到图文再到视频。背后是随着基础设施的逐渐完善和内容发布门槛的逐渐降低,内容生产和吸收慢慢从社会金字塔的顶层过渡到整个金字塔。

+

视频相对于图文更易于理解和吸收,自然受众更广。想想点开一篇文章和一个视频,二者的心理压力完全不在一个水平之上。

+

同时,网络提速降费+短视频 App 已经把用户随时随地看视频的习惯培养起来了,可以说视频时代已然来临。

+

有的人会说,短视频只要个手机就能拍,长视频可能还需要电脑进行后期处理,分明是短视频的门槛更低才是。这话不错,拍摄门槛的确是短视频较低,但我想说的是做起一个账号的门槛在 B 站是要低于抖音和快手的。

+

短视频 15 s 的限制使得每一秒都需要进行精心的设计,几秒内不能吸引用户视频直接就会被切。加之现在早已不是初期草莽年代,随随便便发几个视频就会有大量粉丝。目前在短视频领域能做出来的背后基本都有专业的团队,选材、拍摄、后期、推广都需要花费较多的精力,个人创作者如果不是内容有远胜于人的优势,很难在抖音快手起量。

+

而 B 站尽管视频制作上需要一定的门槛,但这样的门槛也过滤掉了一部分创作者。同时 B 站目前创作者的商业化能力是不如抖音快手的,除了有限的几个区可以靠接广告过活,很多内容是空有播放量但是创作者没赚到钱(激励计划也只是激励),这也就导致了 B 站的竞争没有抖音快手激烈。

+

当然,现在 B 站部分内容创作者赚不到钱不代表之后还赚不到钱,但到那个时候做一个账号的难度已经不能同日而语了。

+

2 B 站的用户占比/粘性——这世界终究是属于年轻人的

+

根据 B 站 2019 年 Q3 财报,月活 1.28亿,日活 3760 万,用户日均时长 83 分钟。而整个 B 站用户18-35岁的用户占比达78%,年轻人是 B 站的主力,也是 B 站的未来。

+
 B 站 2019 年 Q3 财报
+

3 B 站还处于成长期,需要大量长尾内容扩充自己的内容池

+
YouTube内容大类
+

做视频的谁不想成为中国的 YouTube 呢?B 站自然也想,YouTube 历经十余年的发展,已经形成了相当完备的内容生态,它像是一个视频图书馆,覆盖了非常多长尾的内容。庞大的内容库和高效的推荐算法使得 YouTube 稳稳成为世界前三的流量池。

+

尽管 B 站目前在不断地出圈,但是其内容池相较于 YouTube 还是显得单薄,许多长尾的内容并没有覆盖到。

+

而长尾的内容虽然天花板低,但是 10 万 的 30% 也比 100 万的 1% 要多得多。早就是优势,现在先把某些长尾领域覆盖吃掉,总比日后面对竞争饱和的生态扼腕叹息要好。

+

4 B 站优质的社区氛围

+

得益于 B 站的会员考试、小黑屋等制度,整个社区的氛围明显高于其他视频平台一个档次。在公众号、微博等其他平台,创作者接广告后评论底下不凡有诸多喝骂之声,但在 B 站,弹幕里都是一片“恭喜阿婆主恰到饭”。B 站的用户乐于见到内容创作者们可以凭借优质的内容获得收益,这种氛围在当下的互联网世界的的确确是难能可贵了。

+

怎么做?

+

1 内容为王,深度优质的内容是一切的根基

+

这在内容行业应该是最基本的道理了,没有足够优质深度的内容,再多的手段也是空中楼阁没办法长久的。

+
宝藏UP 巫师财经
+

2019 年起来的巫师财经,截止 2020.1.28 ,12 个视频,粉丝 209 万,播放近 2000 万。

+

半佛仙人,截止 2020.1.28,10 个视频,粉丝 50 万,播放 1000 万。

+

两个人在各自的领域(金融、风控)都足够深耕,内容优质并且壁垒极高。虽然只做了几个视频,但是单个视频播放量百万有余。粉丝粘性极强,巫师财经即便是未经任何排版的文字稿在公众号每次也是四五万的阅读量。

+

【文案】2019-2020资本市场年度回顾,经济金融大事件盘点

+

内容足够深度、足够优质,粉丝的质量、粘性、转化率才会有卓越的表现,也更容易在某一天突然爆开。

+

2 怎么选材?

+

对于视频创作者而言,选材会影响后期选题广度、制作难度、天花板高度、盈利方式等诸多方面。

+

2.1 YouTube Copy to China

+
Primitive Technology
+

作为世界上最大的视频内容池,在 YouTube 上你可以找到许多奇奇怪怪的频道。Copy to China 在这里是跑得通的,刷到一个自己感兴趣的频道,查看视频上传时间、播放量、制作难度,在国内看能否找到相似定位的内容。

+

如果是一片蓝海,那么恭喜你,发现了一个可以尝试的机会。即便是已经有相似内容,也可以“人有我新”去尝试。

+

2.2 公众号、其他平台图文类内容升维扩展

+

视频大 V 会复现公众号大 V 崛起之路,很多图文内容都可以被升维成视频内容。在新榜选定某一类别查看公众号、微博等图文大 V 的选材和内容,看看能否以视频的形式讲述出来。

+
公众号-百科类别月榜
+

2.3 结合自身经历,抓小众领域

+

许多行业、经历都有自己独特的内容壁垒,寻常人或者刚入门的人很难获取到深度、优质的内容。如果你在某个领域有独到的经验并且可以复用,那么在这个领域深挖也未尝不可。

+

比如 CPA 这种刚需但又难以通过的考试,你考过了并且有独到的、长期可分享的经验;又如高等数学对于一些人而言比较容易挂科,网上虽然有一些学校录播课但是远远不能覆盖掉广袤的需求。可以根据题型、时期从一个过来人的角度做小块小块的讲解视频,形成自己独特的内容库。

+
B 站搜索 CPA
+

2.4 后期怎么盈利

+

销量 = 流量 × 转化率 × 客单价,记住这个公式。

+

自媒体变现不外乎几条路,定制广告、电商带货、知识付费和广告分成,选材好不好至少会影响变现之路的选择广度。

+

定制广告:客单价高,但是需要是特定的几个区的头部账号才可能以此过活。

+

电商带货:公式里的三个点都需要满足一定条件,比较符合美妆、时尚这一类的定位。但如果粉丝粘性高的话,出定制商品收入也很可观。比如星球研究所的《这里是中国》, 定价 168 元,上市 20 天销量破 10 万册。

+
京东-这里是中国
+

知识付费:只是把电商带货里面的货物变成了虚拟的知识、咨询,非常考验粉丝粘性。创作者需要在该领域内有一定的建树和影响力。具体可以看看知识星球那些高活的星球主们。

+

广告分成:坦白讲全网几十万的粉丝光靠广告分成(国内的B站、西瓜、百家号、企鹅号)是很难养活自己的,如果 YouTube 也有较多的播放量,靠着汇率差才能有相对不错的收益。靠广告分成全职养活自己对于多数创作者而言都是一件不太可能的事情。

+

当然,如果不需要考虑金钱那其实只追随自己的兴趣即可。如果有想盈利的打算,定位的问题最好提前想好,毕竟转型不是一件容易的事情。

+

3 做时间的朋友,专注在一个领域深耕

+

老实讲视频早期的红利期已经过了,一方面整个行业竞争者在变多,另一方面平台的规则也在逐步完善。这个过程中会逐步淘汰一大批低质的、缺乏竞争力的创作者,能够基业长青的都是优质、深度的内容创作者。

+

做视频从选材到制作再到推广是一件比较耗费精力的事情,并且个人创作者在冷启动期间将在很长一段时间内面临粉丝寥寥、观看寥寥、没有反馈的尴尬场景。这是一场淘汰赛,能否在这种境况下坚持下去是对内容创作者忍耐力的极大考验。

+

但只要坚持在一个领域深耕,持续产出优质的内容,拉长时间的尺度后,总能闯出自己的一片天。

+

4 了解算法分发原理帮助冷启动

+

这年头酒香也怕巷子深,个人创作者在创作初期应当善于借助平台算法的力量为自己推广

+
协同过滤
+

了解平台算法的分发原理一定程度上能够帮助创作者提交冷启动的效率,这里推荐阅读《内容算法》,作者简介如下。

+
+

作者简介

+

闫泽华,简书签约作者。知乎知识市场产品总监,负责内容付费的产品运营工作。

+

曾任今日头条资深产品经理、“凯叔讲故事”技术负责人和百度搜索架构工程师。在今日头条工作期间,曾先后负责头条视频的数据流和策略分发,头条号粉丝变现相关业务和微头条的策略分发业务,历经了头条视频和粉丝业务快速增长的全过程。

+
+

各平台算法分发的基本原理都是相似的,闫老师在书中用通俗的语言将其讲得很清楚,普通人也能读懂。(你可以在后台回复“内容算法”获得本书)

+

此处简言几笔,创作者创作、推广的过程中需要考虑怎样才能让机器更好地读懂内容,标题、封面、标签、简介能否让机器给内容一个准确的定位?

+

举个例子,假设一个视频标题为“速度与激情的大场面竟然在北京上演了!”,实际内容则是一个飙车视频。机器将其分发给了用户画像有“速度与激情”的观众,结果点击率、完播率数据都不太好看视频反而会被降权。

+

当然市场上还有很多恶意游走在平台规则边缘的行为,对于个人创作者而言,建议仔细阅读平台规则老老实实做内容。草莽期已过,一时的恶意利用规则可能会有短期的收益,但是等到平台完善了规则回过头也会再算账,给对应创作者惩罚措施。

+
平台对自媒体指数评价方式
+

算法分发需要考虑诸多因素、创作者的信用评分、作品表现都会影响之后作品的分发。钻规则的漏洞长久看终究是得不偿失的。

+

结语

+

洋洋洒洒写了几千字,不一定对,但愿对诸君有所助益。

+

有兴趣的朋友不妨一试,毕竟,早就是优势

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2020-01-31220/index.html b/post/2020-01-31220/index.html new file mode 100644 index 0000000..de5deac --- /dev/null +++ b/post/2020-01-31220/index.html @@ -0,0 +1,448 @@ + + + + + + +iPad OS 文件管理入门 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ iPad OS 文件管理入门 +

+ + +
+

iPad OS 文件管理入门

+
+

注:下文 iOS 和 iPad OS 不做区分。

+
+

本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。

+

入手 iPad 之前让我头疼的一直是 iOS 的文件管理能力,但上手之后折腾了一段时间发现倒也能通过各种手段较为妥善地处理这个问题。

+

在使用 iPad 近一年的时间里,除了充电我很少用到数据线,基本都是无线传输。

+

而无线传输的实现方式不外乎两种:第三方网盘或电脑平板二者直接建立连接,两种方式各有优劣,下文我将分享我的一些心得和踩坑的经验。

+

本文中所涉及的方法都着力追求只有两个字——方便。在 iOS 上把文件分享出来,电脑上面就能自动接收而无需下载。

+

第三方网盘

+

OneDrive

+
OneDrive 网页端
+

1 全平台客户端支持:Windows、Mac、 iOS、Android、网页端。

+

2 Win10 OneDrive 文件夹下文件可以放入自动同步、按需同步,较为方便。

+
OneDrive 按需同步
+

3 个人版拥有 5G 空间(仅用于同步文件足够),Office 365 版有 1 T 空间。国内部分高校可以凭借教育邮箱申请 Office 365 教育版,OneDrive 也有 1 T 空间 ,申请地址见下方链接。

+
office 各版本对比
+

4 OneDrive 支持很多第三方接入,但是请注意如果 OneDrive 的教育版是用国内的教育邮箱(.edu.cn 结尾)申请的,可能会在某些第三方 App (比如 nPlayer、Pdf Expert、Documents、Notability)上无法正常连接。但在微软官方 App 上使用是正常的。

+
nplayer 显示错误
+

5 OneDrive 个人版网页端国内不挂代理不可访问,客户端倒是可以连接,不过不同版本的 OneDrive 在不同的运营商网络下面可能会出现玄学速度。可能的解决方法见下方链接。

+

6 如果 C 盘的空间较小,建议将 OneDrive 文件夹的存储位置放在其他盘,教程见下。

+

更多

+

教育版365申请地址

+

如何更改OneDrive文件夹的存储位置(路径)

+

在 Windows 中使用 OneDrive 同步客户端同步文件

+

OneDrive设置自动同步任意文件夹

+

关于OneDrive传输速度慢的原因讲解和解析

+

坚果云

+
我的坚果云
+

坚果云用了三年了,平时它也是我的主力网盘。任意文件夹同步、增量同步、协作分享...诸多功能足以使坚果云担当“国内最好的同步盘平台”的名头(坚果云官方看到请联系我打钱,谢谢)。

+

1 国内最好的多平台同步客户端,支持电脑上任意文件夹同步,非常方便。此外还有增量同步、WebDAV、权限分享等诸多贴心的功能。

+

2 免费版一个月 1G 上传流量,3G 下载流量,空间受限于上传流量。付费版本流量不限,空间 30 G(专业版年付199)。

+

3 国内为数不多支持 WebDAV 的网盘。对于 WebDAV 详细的介绍请点击链接查看,通俗的讲,WebDAV 可以将网盘的空间共享给第三方 App (只要该 App 支持 WebDAV 协议),从而使得该 App 能方便地享受文件同步、分享等功能。

+

在 iPad 上支持 WebDAV 协议的常用应用有:Notability(便于笔记导出和备份)、PDF Expert(文件和电脑双向同步)、nPlayer(直接播放网盘中视频)、WPS(快速打开网盘中的文件)、Documents(强大的文件管理应用)。

+

坚果云搭配 WebDAV 的更多食用方法

+

iCloud

+
win10 商店里的 iCloud
+

如果你是 Mac 用户,没说的,iCloud + Airdrop 应该是最为方便的选择。不过 Windows 用户也可以尝试 iCloud 来同步文件。

+
    +
  1. +

    免费版 5G 空间,十分建议购买50G(月付8元)用于诸多 iOS 应用数据备份。iPad 有价,数据无价。

    +
  2. +
  3. +

    Win10 的 iCloud 可以支持 iCloud 文件夹下文件自动同步。但是 Win10 安装 iCloud 后可能会影响 OneDrive 或其他程序,如果你安装了 iCloud 之后电脑出现了一些从未出现过的小 bug ,建议卸载 iCloud 试试。已经向微软反馈,不知道现在怎么样了。

    +
  4. +
  5. +

    和 iPad OS 配合得最好的网盘(毕竟亲儿子),多数支持云盘的 App 都会支持(甚至是唯一支持)iCloud。

    +
  6. +
  7. +

    同样如果 C 盘的空间较小,建议将 iCloud 文件夹的存储位置放在其他盘。

    +

    多说一嘴,Notability 9.2 版本之前(含)不建议使用 iCloud 进行自动备份,有 bug 可能会导致笔记经常被自动清除然后从云端重新下载,有的时候很耽误事情。不知道后续版本什么时候能够修复这个问题。

    +
  8. +
+

电脑和平板直接建立连接

+

以下两种方式都需要在局域网下(家庭 WIFI、校园网、公司网)才能实现,有一定的局限性但是胜在速度很快。不推荐小白申请公网 IP 折腾,风险较大。

+

FTP 协议+Documents+FileZilla

+

FTP 是一种文件传输协议,iOS、Android、电脑上很多应用都支持。

+

Documents 是 iOS 上支持 FTP 协议的文件管理器,FileZilla 是 能使 Win10 PC 充当 FTP 服务器的软件(比 Win10 自带的 FTP 方便且功能完善)。

+

win10局域网下利用 FileZilla 搭建FTP服务器教程

+

win10 上安装好 FileZilla 之后可以选择任意多个文件夹作为同步文件夹。

+

谈几个 FTP 在 iPad OS 上的应用。

+

1 PDF Expert 自动同步文件夹内文件

+

PDF Expert 除了支持 WebDAV 协议以外还支持 FTP 协议,通过 FTP 协议能够实现电脑上任意文件夹文件双向同步——电脑上修改文件后,PDF Expert 上文件自动同步修改,反之亦然。

+
PDF Expert 添加 FTP 协议
+
PDF Expert 同步文件夹
+

如果长期处于局域网的条件下,这不失为一种非常方便的同步/备份资料的方式。

+

2 nPlayer 播放电脑上视频

+

电脑上下载的视频,直接在 iPad 上流畅观看。nPlayer 上也有 Android 客户端。

+
nPlayer 支持的协议
+

3 Documents 传送大型文件

+

Documents 和 PDF Expert 是一家,所以也支持 WebDAV、FTP 协议。几百兆的文件也就十几秒的事情。

+

唯一不太方便的就是需要先把文件放到 Documents 里面才能通过 FTP 传送,不知道什么时候 iPad OS 的文件能够原生支持 FTP 协议。

+

SMB 协议 + 文件

+
iPad 连接服务器
+

更新到 iOS 13 或 iPad OS 后,自带的“文件”里有一个“连接到服务器”的选项。Windows 可以通过 SMB 协议和 iOS 进行快速传输。

+

win10 设置 SMB 协议连接 iOS 教程

+
    +
  1. “文件”原生支持,应该是局域网下最方便快速的文件互传方案了。
  2. +
  3. 校园网等复杂的大型局域网可能会有玄学问题。
  4. +
  5. 成功连接后二次配置可能之后会面临它在侧栏不显示的玄学问题。
  6. +
  7. 同样也能使用 nPlayer 播放局域网下的视频、PDF Expert 同步文件。
  8. +
+

多说几句

+

用好 iPad OS 自带的文件管理

+

上述的 OneDrive、坚果云、iCloud、SMB协议都可以被整合到系统App“文件” 里面,使用起来非常方便。

+
iPad OS 自带的 Files
+

其他的云盘呢?

+

Google Drive、Dropbox 其实解决了网络问题后也非常方便,但考虑到多数人的网络条件,故不做推荐。

+

不推荐使用百度网盘,一来是速度限制,二来是生态过于封闭,不能和其他第三方 App 协作使用,也不能直接同步,只能当成一个文件中转站。

+

结语

+

如果你是 iPad + Mac 用户,iCloud 就是最优云盘选择;而如果你是 iPad + Windows 用户,则可以选择 OneDrive 和 坚果云 作为主力云盘。

+

合理利用云盘还能减少对于 iPad 自身储存空间的占用,我的 iPad 32G 使用至今还剩 7G 空间。

+

另外如果经常处于局域网环境下,不妨考虑试试 FTP 和 SMB 协议。

+

最后说句跑题的,iPad 一定要做好数据备份。iPad 丢了还可以再买,数据丢了可就真没了。

+

本文首发于公众号 杂谈by立行(ztbylx)

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2020-04-06230/index.html b/post/2020-04-06230/index.html new file mode 100644 index 0000000..28d1c03 --- /dev/null +++ b/post/2020-04-06230/index.html @@ -0,0 +1,1166 @@ + + + + + + +1G 数据、70+软件、万字长文,手把手教你如何将 Win10 从零打造成工作『利器』 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 1G 数据、70+软件、万字长文,手把手教你如何将 Win10 从零打造成工作『利器』 +

+ +
+
2020-04-06 · 46 min read
+ +
+
+

前些天逛知乎时遇到了这样一个问题:『新买了笔记本电脑后,需要进行哪些基本的设置和下载?』

+

想起了自己从一个电脑小白一路摸索过来,和各路流氓斗智斗勇的辛酸历程。

+

然后我就想把这过程中的坑和经验分享出来,帮助大家更高效地使用 Win10 。尽管很多内容限于篇幅也没有展开,但写着写着就 15000 多字了…

+

希望本文能够对诸位有帮助。

+

1G 数据、70+软件、万字长文,手把手教你如何将 Win10 从零打造成工作『利器』。建议先收藏再看

+
+

先晒晒自己的配置吧

+
我的桌面
+
开始菜单
+
合并展示
+

零 写在前面

+

作为一个一年内给自己电脑重装了 6 次系统的男人,在『新买了笔记本电脑后,需要进行哪些基本的设置和下载?』这个问题上恐怕拥有一定的发言权了...

+

作为一个小白

+

新 win10 系统应该做怎样的优化和配置?

+

怎样打造自己的软件安装库?

+

Win10 有哪些必装的软件?

+

怎样优化自己的习惯让 win10 更好用?

+

怎样避免被弹窗骚扰?

+

...

+

这些问题你都可以在本文中找到答案。

+

每一个模块其实都可以单抽出来细讲,但限于篇幅,我讲个大概。后续若有疑问可以在公众号留言。

+

至于你问为什么一年内要重装这么多次系统..Emm

+
我想这些图片可以回答这个问题
+

毕竟,没有什么问题是重装一次系统解决不了的。如果有,那就两次。

+

在摸索的过程中,要特别感谢沨沄极客、奔跑中的奶酪的无私分享,让我少走了很多弯路。写下这篇文章也算是对两位老师“分享”精神的一种传递吧。

+

好了,让我们进入正题。

+

PS:

+
    +
  1. 以下步骤请结合自身需要采用,有的步骤没有需求可不做。
  2. +
  3. 文中的软件会附上官网下载链接,你也可以在公众号 杂谈by立行 回复『重装系统』获取整理好的70+软件集合包
  4. +
  5. 请结合自身的技术水平和风险操作,做好系统备份/创建还原点。本人不对操作不当后的任何后果负责。
  6. +
+
辛苦整理了 70+ 软件的安装包
+

一 系统优化

+

1.1 软件卸载

+

新买的电脑或者重装的系统可能会有一些预装软件,如果对你而言软件无用的话,建议右键直接卸载。

+

列几个常见的预装软件

+
    +
  • +

    Microsoft Store 里面的某些游戏

    +
  • +
  • +

    McAfee迈克菲全方位实时保护

    +
  • +
  • +

    纸牌游戏

    +
  • +
  • +

    XBOX(如果不玩游戏的话)

    +

    如果不知道一个软件有什么用,请自行复制查询,或者干脆不管它。

    +

    关于常见品牌的预装软件及其作用,可以参考这篇文章

    +
  • +
+

1.2 自启动管理

+

1.2.1 管理自启动

+

同时按住 Ctrl+Shift+Esc (都在你键盘左侧)调出任务管理器,左键单击『启动』

+

在你需要禁止的项目上右键调出菜单即可禁用该自启动项目。

+
自启动管理
+

这种方式应该是管理自启动最自然的方式。

+

如果有需要的话,下文也会推荐一个小软件进行高级管理。

+

1.2.2 添加自启动

+

同时按住 Windows+R 键,调出『运行』窗口 ,输入 “shell:startup” (注意冒号是英文冒号)后回车。

+
运行 shellstartup
+

如果想要让某个软件自启动(假设软件自身无法进行设置),将该软件的快捷方式放到这个文件夹里面一份就好。

+

一般的软件都会在安装时创建桌面快捷方式,你可以选择将这个快捷方式复制进去。更多的方法因为涉及到软件安装位置的问题,这里就不赘述了,请自行百度。

+

1.3 主题优化

+

这里我个人不太喜欢 Windows 原来的一套古老图标,所以找了一份顺眼的图标进行替换 (Win10 1909 以下亲测好用)。非必须,看个人喜好。

+
cakeOS by niivu on DeviantArt
+

Cake OS 的主题和图标你可以到这里下载

+

我的演示图里面只安装了图标,并没有安装主题。

+

替换图标操作比较简单,直接点击软件安装即可。

+

替换主题时操作略复杂,请提前创建系统还原点,具体操作指南和注意事项请参考官方指北

+

1.4 文件管理

+

1.4.1 图片、视频、等文件夹迁移位置

+
七大类别文件夹
+

Win10 自带的七大类别文件夹默认是在 C 盘的,如果你 C 盘只有 128G 的话,建议你修改他们的默认位置。

+

方法:在要修改的文件夹上依次点击“右键”-“属性”-“位置”-“移动”

+
修改桌面文件夹位置
+

1.4.2 OneDrive 设定位置

+

云盘应该是当下使用电脑的一个标配。文件同步/备份都离不开一份安全可靠方便的云服务。

+

OneDrive 是微软亲儿子,和 Win10 的结合比较紧密。普通用户有 5G 的空间可用,Office 365 用户有 1T 空间可用。建议重要文件及时放到 OneDrive 或者是其他云盘里备份/同步。

+

这里主要是提醒诸位第一次设置 OneDrive 请谨慎选择默认位置,之后无法修改。C 盘是 128G 的朋友就最好别放在 C 盘了,或者及时开启 『按需同步』的功能减少本地空间占用。

+
第一次打开 OneDrive 需要设定其默认位置
+

关于 OneDrive 的更多使用技巧,可以参考以下这些文章。

+

教育版 365 申请地址

+

如何更改 OneDrive 文件夹的存储位置(路径)

+

在 Windows 中使用 OneDrive 同步客户端同步文件

+

OneDrive 设置自动同步任意文件夹

+

关于 OneDrive 传输速度慢的原因讲解和解析

+

1.4.3 安装 Clover ,常用文件夹固定成目录

+

Clover 主要是可以让文件管理器拥有多个标签页和目录,简化了文件管理。

+
Clover 上栏
+

QTTabBar 也能实现多标签页管理,甚至某些功能更强大,但是缺少 Clover 这样一步到位的目录栏。结合自身需求选择就好。

+
QTTabBar
+

这里特别提醒,Clover 官网新版本已经有很多弹窗和推广内容,非常不建议安装。低版本也会要求强制升级。

+

建议禁止 Clover 联网并且禁止其启动自动更新服务。

+

方法

+

首先需要禁用 Clover 联网,具体可参见 Win 10禁用某个程序联网的教程

+

之后 Win+R 调出『运行』面板,输入 services.msc,找到 HcloverService,“右键”-“属性”-“禁用”

+
Clover 自动更新服务
+

或者安装网友的去广告优化版,删除了升级模块还有这些推广模块。

+

Win10 会报毒并自动删除,可通过设置排除项解决

+

1.5 右键菜单管理/新建文件管理

+

警告:清理右键菜单之前请务必做好注册表备份,避免出现灾难性后果!

+

其实这部分放在软件安装完做最好,那个时候多半你的右键菜单栏已经被填充得密密麻麻了...

+

这方面我体验过市面上很多款右键管理清理工具,火绒、RightMenuMgr、还有各种小工具,说实话,做得都比较浅,一些右键菜单根本无法清理。

+

最终发现了 Right Click Enhancer 这款右键深度清理工具,确实是非常好用,完全能够满足管理右键菜单的诸多需求,具体功能如图。

+
Right Click Enhancer 功能
+

1.6 系统设置优化

+

1.6.1 创建还原点

+

创建系统还原点相当于给电脑拍了一张照片,日后可以根据这张照片恢复成这个还原点时电脑的相关配置、软件。系统还原点是 Windows 非常实用的一个功能。

+

建议装完系统做好基本配置并且安装好常用软件时手动创建一个还原点,方便出了问题时还原;同时也建议折腾电脑前创建一个还原点,给自己留一个退路,毕竟重装系统成本其实挺高的。

+

1.6.2 利用 Dism++ 进行系统优化

+
Dism++ 部分功能
+

Dism++ 是一款非常强大的系统优化工具。像日常垃圾清理、备份更新、关闭一些无用的功能这些方法可能散落在 Windows 各处——注册表、组策略、服务..修改起来很不方便,Dism++ 把这些工具方法抽象出来,做成了一个工具箱真正做到了无门槛使用。

+

我推荐的几个优化设置都放在图里面了,你可以按需参照优化自己的系统。

+

二 软件

+

2.0 多说几句

+

工具最终还是为人服务的。不要本末倒置,沉迷于工具本身。

+

利用工具优化自身的工作流才是我们的最终目的。一款软件的某个功能再厉害,但是如果它不能优化你的工作流,这款软件于你的价值就是 0 。

+

同时也特别强调

+
    +
  1. 电脑软件请尽量去官网或者 GitHub下载,小心各种下载站。
  2. +
  3. 请谨慎选择国产软件安装。
  4. +
  5. 国产软件请不要点击『快速安装』、『极速安装』这类选项。
  6. +
  7. 如果真的不幸被弹窗骚扰,可以参考这篇文章清理电脑的弹窗
  8. +
  9. 电脑软件利用软件自身的更新功能就可以了,无需使用软件管家这类产品进行更新管理。
  10. +
  11. 小众软件做好安装包备份,第三部分也会讲这个问题。
  12. +
  13. 近期 GitHub 很多 Release 迁移到 AWS 上面了,国内访问速度感人。加速方法你可以参考这篇文章
  14. +
  15. 对于那些切实提高自己生产力的软件和服务,记得付费/打赏。
  16. +
+

2.1 UWP 版软件

+

2.1.0 背景知识

+
+

UWP即 Windows 10 中的 Universal Windows Platform 简称。即 Windows 通用应用平台,在Windows 10 Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens 等平台上运行,UWP 不同于传统 PC 上的 exe 应用,也跟只适用于手机端的 App 有本质区别。它并不是为某一个终端而设计,而是可以在所有 Windows10 设备上运行。

+

摘自:百度百科

+
+

用人话讲,UWP 软件就是你从 Microsoft Store 能下载的软件。它比传统的 exe 文件更安全、管理起来也更方便、更节省系统资源。但是生态做得不好,并不广为人所知。

+
Microsoft Store
+

即便如此,Microsoft Store 里面还是有不少精品应用的。

+

之所以推荐使用 UWP 软件,除了安装/更新方便、界面优化好之外,主要是里面的软件是和账号绑定的,下次重装系统可以直接从『我的软件库』里面快速重装。

+

好了,推荐几个我重度使用的 UWP 应用。

+

Tips:

+
    +
  1. UWP 应用如果想要缩小到托盘栏里面,点击最小化是没有用的,需要左键双击托盘栏里面的软件图标。
  2. +
  3. UWP 应用的网络代理需要另外设置,具体可参照这篇文章
  4. +
+

2.1.1 Flux - 护眼

+

Flux 是一款根据时间、位置、使用模式自动调节屏幕色温、亮度的一款护眼应用,关于它的详细介绍和使用说明可以参考我之前的这篇文章 F.lux | 请认真呵护自己的眼睛

+
Welcome to f.lux
+

安装包,也可以从 Microsoft Store 里面安装

+

2.1.2 Ditto Clipboard - 剪贴板管理

+

一款剪贴板历史管理应用,凡是你复制过的东西,都会在 Ditto 里面留下记录,日后你可以直接从 Ditto 里面粘贴。

+

配合快捷键 Ctrl+`(调出历史)、键盘上下键还有回车使用更为高效。

+

同样有安装包也有 UWP 版

+
Ditto
+

2.1.3 Snipaste - 截图

+

我的主力截图工具,搭配 ShareX 或者 FastStone Captura 可解决所有截图相关问题。

+

Snipaste 操作简单,功能强大。

+
    +
  • F1 即可截图,F3 可贴图与屏幕
  • +
  • 截图时可直接取色、定位像素点,并且有实用的参考线。
  • +
  • 截完图可以直接在图像上进行加文字/形状、涂改、马赛克等常用操作
  • +
  • 回放截图记录
  • +
  • 像素级控制截取区域
  • +
+

更多高效实用的功能可以参考官方文档了解,同样也有安装包UWP 版本,功能上并无区别。

+
Snipaste  官网介绍
+

2.1.4 EarTrumpet - 音量输出管理

+

一款小工具,可以单独控制不同软件的输出音量。可以避免出现某一级别系统音量对于 A 软件过低,却对 B 软件过高的情况。

+
EarTrumpet
+

2.1.5 Moon FM - 听播客

+

我的主力播客工具,有简洁优雅的外观和全平台同步支持(尽管需要自己动手操作)。

+

对于有全平台播客需求的朋友,不妨试试 Moon FM

+

更多:利用 IBM Cloudant 实现 Moon FM 多端同步

+
Moon FM UWP 版本
+

2.1.6 Windows Terminal(preview) - 代码开发

+

Win 10 程序猿建议尝试下新版的 Windows Terminal,多标签页/多平台/Emoji 支持..众多实用功能

+
Windows Terminal
+

更多:Windows Terminal: the secret to command line happiness!

+

新生代 Windows 终端:Windows Terminal 的全面自定义

+

2.1.7 Trello - 团队协作

+

团队协作看板工具,方便进行团队协作。也可以作为个人素材池、任务管理。

+
Trello 官方介绍
+

更多: 需要远程办公,不妨用 Trello 进行组织和协作

+

2.1.8 backiee - 壁纸

+

可能是 Win10 上最好的壁纸应用。

+
    +
  • 资源丰富,分辨率极高(4K、5K、8K..)
  • +
  • 构图干净清爽,主题分类合适
  • +
  • 可以设置自动切换,更换壁纸非常方便。
  • +
+
backiee-壁纸工作室
+

2.1.9 Todoist - 任务管理

+

全平台支持的任务清单管理工具,对于有需要的人而言是利器。

+
Todoist 官网图
+

更多: 有哪些关于Todoist的使用经验?

+

2.1.10 Drawboard PDF - PDF 处理

+

专门为 Surface 这类 Win10 平板打造的 PDF 阅读器,对手写笔的支持很好。但是对于不用 Win10 触屏模式的用户,并不推荐购买。

+
Drawboard PDF Easy PDF markup for Windows 10
+

更多:Surface学术指南-Drawboard PDF篇

+

2.2 绿色便携软件

+

2.2.0 背景知识

+

绿色便携软件你可以理解成那些无需你安装,即开即用的软件。更详细的定义你可以参考这里

+

相较于需要安装的软件,它的优点在于重装系统/换电脑时只需要拷贝这些便携软件所在的文件夹即可,无需重新安装,极大减少了操作的繁琐性

+
SUmatra PDF 提供便携版下载
+

缺点就是现在常见软件一般不提供便携版,很多软件都是网友利用安装版本制作的。

+

小部分提供便携版的软件,安装包文件名中通常都包含 『Portable 』。

+
奶酪为 Chrome 做的绿色便携版
+

找软件的绿色便携版通常需要你具备一定的搜索能力和积累,比如 GitHub、精品绿色便携软件PortableAppK

+
我的绿色便携软件仓库
+

下面我推荐几个我常用的绿色便携软件,当然你也可以直接使用对应的安装包版。

+

2.2.1 JJDown - B 站视频下载

+

B 站视频/弹幕下载工具,也可以使用在线版

+
JJDown
+

2.2.2 Aboboo - 英语听说读工具

+
+

Aboboo 能做什么?

+
    +
  1. 学外语 :视频、音频文件都可以做为外语学习材料。
  2. +
  3. 练口语 :独创 VOTE ( 视觉口语训练引擎 )提供每个音节的原声/跟读波形和音调比对。
  4. +
  5. 练听力 :以波形图为主导,选取复读区间,进行局部有重点复读。
  6. +
  7. 做课件 :做课件像写WORD文档一样简单,创造真正自由的学习资源。
  8. +
  9. 听写 :词句篇三大听写模式,实时纠错,实时校对,全文批改总结。
  10. +
  11. 造句 :弹指之间,牢牢掌握句子,支持全鼠标或全键盘操作。
  12. +
  13. 字典 :内置英英、英汉、图片、例句、常用搭配等高品质字典,支持听音查字。
  14. +
  15. 变速 :全程支持音视频文件、录音、英英字典中例句朗读、单词发音等变速不变调。
  16. +
  17. 断句 :自动将音视频文件分割成多个句子,精确、便捷,省去手工断句的麻烦。
  18. +
  19. 工具 :难重点句库、分级生词本、单词发音训练、音频提取、分割、合并、导出,把你的手机变成复读机。
  20. +
+

来源:https://www.aboboo.com/g/#/tutorlial/docs

+
+

英语学习神器,知乎上一众安利,也确实很好用。

+

你可以通过我的邀请链接注册,我会得到一些积分奖励,感谢。

+
如何优雅地使用Aboboo-Swing piggy 的回答
+

更多玩法请参照官方文档还有 Swing piggy 的回答

+

2.2.3 ByPass - 12306 抢票

+

简单、实用、免费的 12306 分流抢票工具,放弃那些加速包吧....另外请务必低调使用。

+
12306 ByPass 分流抢票
+

2.2.4 CapslockPlus - 键盘增强

+

作为一个键盘党,平时快捷键用的飞起。但是键盘上下左右移动键的位置用起来不是很舒服,这个软件可以通过组合 Capslock 和其他按键实现 上下左右/删除/回车/选择等操作,进一步的还有替换文本、快速搜索、绑定窗口等高阶玩法。

+

通过使用 Capslock+,你可以大幅度减少鼠标使用频率,提升自己的工作效率。

+
Capslock+有什么用
+

更多:官方文档

+

Capslock+ 键盘党都爱的高效利器 - 让 Windows 快捷键操作更加灵活强大

+

2.2.5 Captura - 录屏/录音

+

不到 10M 的开源免费小工具,但是录屏/录音功能非常强大。

+
    +
  • 全屏/区域/窗口/录屏
  • +
  • 选择音量输入方式
  • +
  • 可以录制 Gif、截图..
  • +
+
Captura 界面截图
+

2.2.6 菲菲更名宝贝 - 批量命名/文件批量处理

+
+

假如你认为这个软件和别的批量更名软件差不多,那么,你错了……

+

假如你认为这个软件只是批量更名用的,那么,你又错了……

+

哈哈……

+

你是收藏控、整理控吗?有没有大量的文件或文件夹需要处理、归类?有没有使用别的批量更名软件解决不了的问题呢?

+

你是音乐爱好者吗?你有大量的 MP3. APE、OGG、FLAC 等的音乐文件并需要对音乐标签、封面图片或歌词进行批量处理吗?

+

你是摄影爱好者吗?你有大量的照片文件并需要对 Exif 信息进行批量处理吗?

+

你办公使用微软 Office 文档、使用 PDF 文件吗?也许你会对这些文件的文件名批量更改或其特有属性的批量处理有需要呢?

+

……

+

如果回答是肯定的,那么好了,《菲菲更名宝贝 之 得意非凡》软件来了……

+
+

虽然界面上没有那么美观,但是功能上确实没得说..对文件的批量化处理需求基本都可以满足。

+
菲菲更名宝贝 软件界面
+

2.2.7 Ifranview - 图片浏览

+
    +
  • 体积小、运行快、功能强、非商用免费
  • +
  • 支持众多图像、视频、音频格式、可幻灯片显示
  • +
  • 批量转换格式/重命名、无损压缩、加文字、调整色彩
  • +
  • 支持诸多快捷键
  • +
  • 大量插件可结合自身需求安装
  • +
  • ...
  • +
+

主力图片浏览器,日常需求基本都能直接满足。可用于替代 Win10 自带的『照片』

+
Ifranview 界面
+

官方提供的是安装版和 UWP 版本,网友也基于此制作了便携版。

+

2.2.8 Notepad++ - 轻量级代码/记事本

+
+

开源、小巧、免费的代码编辑器,运行便携,体积小、资源占用小

+

支持众多程序语言,比如C++、C#、Java等主流程序语言;

+

支持HTML、XML、ASP,Perl、Python、JS等网页脚本语言。

+

支持语法高亮,语法折叠,宏等编辑器常用功能..

+
+

替代 Win10 自带记事本的最佳选择,最初是为了解决编码问题开始用的,后来就离不开了,临时放几行文字看个代码都方便。

+
Notepad++
+

2.2.9 PeaZip - (解)压缩

+

虽然我主力(解)压缩软件还是古老的 7zip,但是在需要批量处理压缩文件的时候我会选择 PeaZip( Bandzip 收费了)。吸引我的点有两个:

+
    +
  • 智能解压:解压时要么文件夹套娃,要么整个文件夹突然被放出来的文件充满。智能解压能够妥善地解决这个问题。
  • +
  • 密码管理器
  • +
+
PeaZip file explorer and archive manager
+

更多:Bandizip 开始收费后,Peazip 或许是 Windows 压缩软件的下一个不错的选择

+

2.2.10 PhraseExpressPortable - 文本快速输入

+

简单的文本替换用 CapslockPlus 也能实现,但是 PhraseExpress 使用起来更简单也更强大。

+
    +
  • 将动态变量添加到短语中(当前日期/时间/计数变量)
  • +
  • 控制替换后鼠标光标的位置
  • +
  • ...
  • +
+
PhraseExpress 界面
+

经常有重复信息录入的朋友可以考虑一下 CapslockPlus 和 PhraseExpress。

+

2.2.11 PotPlayer - 视频播放器

+

可能是 Windows 平台最好的本地视频播放器。

+
无边框皮肤与缩略图
+
    +
  • 免费绿色无广告
  • +
  • 启动快、占用资源小、解码能力强大
  • +
  • 多样的自定义皮肤资源(无边框皮肤非常舒服)
  • +
  • 功能强大到一屏说不下...
  • +
  • 有直播源的情况下可以直接看电视/WebDav/FTP/HTTP
  • +
+
安装即用,但是也提供了丰富的功能选项可以自定义
+
PotPlayer 直播源
+

2.2.12 QuickLook - 空格预览文件

+

Mac 上一个很方便的功能就是选中文件后按下空格即可快速预览文件内容,查看文件不用打开大型软件等几秒,即点即开,非常方便。

+

QuickLook 就是在 Windows 上实现这个功能的一款软件。

+
QuickLook 按下空格预览,再按一下取消预览
+

支持的格式如下(Office 文件可通过加载插件支持)

+
+
    +
  • Almost all image formats: .png, .apng, .jpg, .bmp, .gif, .psd, Camera RAW, ...
  • +
  • Compressed archives: .zip, .rar, .tar.gz, .7z, etc.
  • +
  • .pdf and .ai file
  • +
  • Almost all audio and video formats: .mp4, .mkv, .m2ts, .ogg, .mp3, .m4a, etc.
  • +
  • Comma-separated values file (.csv)
  • +
  • Email and Outlook Email files (.eml and .msg)
  • +
  • HTML files (.htm, .html)
  • +
  • Markdown file (.md, .markdown)
  • +
  • All kinds of text files (determined by file content)
  • +
  • ...and even more with the help of installable plugins
  • +
+
+

便携版记得按照教程解锁才能正常使用,同时提供了安装文件和 UWP 版本软件,可以自行选择。

+

2.2.13 ScreenToGif - Gif 录制、编辑

+

Windows 平台上最强的 Gif 录制、编辑工具。

+
ScreenToGif 界面
+
为什么使用 ScreenToGif
+

2.2.14 ShareX - 截图

+

ShareX 的优势除了在于本身的截图能力,还在于它强大的工作流支持:OCR、图床、上传到云盘/服务器..

+

如果你还没有找到一款适合自己工作流的截图软件,不妨试试 ShareX。

+
ShareX 界面
+

2.2.15 SumatraPDF - 轻量 PDF 处理

+

小巧的 PDF 阅读器,启动快,占用资源少。如果不需要对 PDF 进行编辑等操作,SumatraPDF 已经能够满足基本的阅读需求了。

+

同时还支持 ePub、MOBI、DjVu 等主流书籍格式,是我电脑上的主力 PDF 阅读器。

+
Sumatra PDF 界面
+

2.2.16 SyncTrayzor Portable - 分布式文件同步

+

我的主力云盘是坚果云,自用确实非常舒服。

+

但是即使是会员,创建共享文件夹也会有协作人数限制。同时对于普通用户而言,坚果云的每月上传下载流量也有限。

+

有的时候需要传一些大文件,或者多人共享一个文件夹,我就会使用 SyncTrayzor——这个分布式同步网盘。

+

像百度网盘/坚果云这类网盘,你分享的文件是先上传到服务器上,对方再从服务器下载文件。

+

而分布式网盘则是你自己就是服务器(或者说所有拥有这个文件的机器都是服务器),文件不经过云端直接传到对方电脑上面。隐私并且高速。

+

关于分布式网盘同步的更多资料你可以参考这篇文章:分布式网盘—Syncthing介绍与使用心得 +教程ver 8.3.2

+
Syncthing
+
    +
  • 支持 Windows、Mac、Linux、Android 多平台
  • +
  • 开源/安全/免费
  • +
  • 支持局域网同步
  • +
+

说说我的使用场景:

+
    +
  • 在女朋友的电脑上建立一个共享文件夹,资料/照片/工具传送会很方便。
  • +
  • 超过 3 个人的团队文件协作,每个人的电脑上都会安装进行文件协作。
  • +
+

也特别提醒

+
    +
  • 分布式就意味着必须有至少两台设备同时在线才能进行同步
  • +
  • 最好只用于熟人间同步文件,同时应该做好权限控制避免被恶意注入不良程序
  • +
+

2.2.17 TrafficMonitor - 网速监控

+
+

这是一个用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。

+
+

良心小工具,其实离开 360 也是有网速显示的。

+
右键菜单与悬浮窗
+

2.2.18 TranslucentTB - 任务栏美化

+

一款让 Win10 任务栏透明/磨砂化的小工具,基本不占用资源。

+
官网演示效果
+

官网之前是便携版,最新版本是安装文件,同时也提供了 UWP 版本。建议使用新版本,功能做得更完善一些。

+

2.2.19 Win-Airplay - iOS 利用 Airplay 投屏 Windows

+
+

iPad/iPhone/Mac 使用 Airplay 镜像到 Windows, 可以把 PC 作为苹果设备的扩展显示器。

+
+
iPad 投屏到 Windows
+

优势在于 iPhone/iPad/Mac 无需安装第三方软件即可投屏到 Windows。

+

一种使用场景是将 iPad 当作手写板,线上开会的时候共享窗口。当然,这种场景更建议你使用 Zoom。

+

2.2.20 天若 OCR - 文字识别

+

小巧而强大的 OCR 识别软件。功能如图:

+
天若OCR文字识别
+

V4.48(含)之前是绿色免费版,之后的版本为收费版,当然功能也对应有所增强。结合自身需要选择版本就好。

+

2.2.21 MapKeyboard - 键盘重映射

+

一款简单的小工具,能帮你把键盘上的某些键映射到另外的键。

+
MapKeyboard 界面
+

部分键盘上会有这样一个按键,长得像一个文档(加鼠标箭头)。

+
鼠标键盘右键
+

我想多数人都没有用过这玩意,它的功能是通过键盘实现鼠标右键的功能。

+

这功能对我而言太鸡肋了,所以我就利用 MapKeyboard 把它映射成 Windows 键,运行快捷键也会方便一点。

+

2.2.22 SpaceSniffer - 磁盘可视化

+

C 盘满了不知道怎么清理,Windows 文件夹又不能直接显示大小。这时你可以使用 SpaceSniffer 这款软件直观地查看各文件夹占用的空间的大小,为进一步清理电脑做准备。

+
磁盘可视化SpaceSniffer
+

利用 SpaceSniffer 清理 C 盘的具体使用教程可以参考这篇文章

+

2.2.23 SwitchHost - host 管理

+

一款能让你更快地管理/切换 host 的软件,程序员可能用得多一些。

+
OneDrive 加速
+

2.2.24 冰点文库下载器 - 资料文档下载

+

见名达意,免积分下载 百度、豆丁、丁香、畅享、MBALib、Book118等文库的文档。

+

下载格式为 PDF,如果需要原文档请利用积分下载或者左转万能某宝。

+
冰点文库下载器界面
+

2.2.25 开始菜单图标修改 - 图标美化

+

通过这款软件,你可以修改开始菜单里面的背景颜色、文字颜色和图标。

+

『你可以有一些大胆的想法了』。

+
软件界面
+

2.2.26 QtScrcpy - Windows/Mac 操控 Android 手机

+
+
    +
  • 支持 macOS / Windows / Linux 平台
  • +
  • 可通过 USB 或 TCP/IP 无线连接
  • +
  • 实时显示/控制 Android 设备屏幕
  • +
  • 支持屏幕录制
  • +
  • 最多支持16台设备连接(可选自行编译增加上限)
  • +
  • 支持拖拽安装 APK / 传输文件
  • +
  • 支持复制粘贴,可双向同步剪贴板
  • +
+
+

经常需要在 Android 和电脑之间切换的朋友可以考虑尝试一下,让自己的效率高一点。当然,基础的做个投屏工具也是完全 OK 的,Android 端同样无需安装任何第三方软件。

+
mac - QtScrcpy
+

甚至在 Windows 平台你还可以绑定按键,实现电脑操控手机吃鸡。

+
QtScrcpy- 自定义按键映射
+

2.3 装机软件$装机必备

+

一般来讲,Office 三件套电脑会预装。所以于普通人而言,真正必备的其实就两种软件——浏览器和 IM(即时通讯软件)。

+

具体一点,也就是下面这几种软件。

+

2.3.1 Chrome - 浏览器

+
2019年浏览器市场份额排行榜 From Statcounter
+

市场份额就是硬道理,Chrome 过半的市场份额倒逼所有网站至少要适应 Chrome 的标准,所以你使用 Chrome 遇到的麻烦最少。

+

同样一个网站,你使用 Chrome 正常,但是使用其他浏览器就可能会出现一些玄学问题,就是这么现实。

+

同时 Chrome 拥有丰富的扩展生态,通过插件/脚本/小书签你可以实现许多骚操作。这部分能说的太多了,篇幅原因不展开,知乎搜一搜 Chrome 使用技巧就好。

+

当然,由于众所周知的原因,Chrome 的扩展生态无法在国内直接在线访问。你可以通过这篇文章了解曲线救国的方法。

+

2.3.2 微信 - IM

+

这个没说的,上亿国人都在用的产品。

+
微信 PC 版
+

2.3.3 TIM(QQ办公版)- IM

+

QQ 有的时候不得不用,但人老了也用不着那些花里胡哨的功能。TIM 就是专注于办公协作的 QQ 。最新版甚至支持微信登录了,账号独立。

+
TIM
+

2.4 装机软件$教育学习类

+

2.4.1 Anki - 英语学习

+

如果你有什么需要记忆消化的东西,比如单词/资料/习题,而你还没有用过 Anki 的话,建议你试试。

+
    +
  • 卡片式学习
  • +
  • 按照记忆周期规律复习
  • +
  • 丰富的插件生态
  • +
  • 全平台(Windows、Mac、iOS、Android、Web)支持
  • +
  • ...
  • +
+
ANKI公开课 学习骇客 i
+

视频地址

+

更多:如果你想深入了解 Anki,推荐关注『学习骇客』,他将 Anki 用地出神入化..

+

英语备考中的ANKI使用建议 | 学习骇客

+

Anki 怎么用? - 高冷冷的回答

+

2.4.2 BookxNote - 拆书/笔记

+

如果你用过 iOS 上面的 MargainNote,我想你应该会对它的高效率赞不绝口。

+
BookxNote 介绍
+

BookxNote 是 Windows 上的一款对标软件,如果你主力阅读平台是 PC ,建议尝试。

+
+

BookxNote解决从书籍的管理,阅读,划重点,笔记的整理,笔记的云存储,到笔记的导出复习整个学习过程。

+
    +
  • 建立自己的书架分类,对阅读的书籍进行分类整理,给书籍加星,打标签,添加备注信息。
  • +
  • 一边阅读,一边画重点,随时调整笔记脑图的逻辑结构,构建自己对书本的知识体系,做到把书本从厚读到薄。
  • +
  • 当把一本书读完后,就需要把所有的知识进行归类整理,软件提供导出笔记数据到各种格式(支持图片,ANKI,HTML,PDF),方便整理,复习,和知识的输出,实现把书本再从薄到厚的过程。
  • +
+
+

2.4.3 印象笔记 - 信息管理

+

每个人都应该有一个电子笔记本,收集整理一切细碎的点逐步构建你的知识体系。

+

市面上主流笔记应用有两个,除了印象笔记就是 OneNote。两款云笔记各有优劣,具体你可以参考我之前的这篇文章

+

微信文章、网页文章、随机 idea 你都可以丢到印象里面,永不丢失。

+
印象笔记  工作必备效率应用
+

2.4.4 Mathpix - Latex 识别

+

如果你厌倦了手动输入 Latex 的痛苦,不妨试试 Mathpix。印刷的公式识别出来正确率 95%以上,可以极大地简化你的工作。

+
MathPix
+

友情提示:免费版有次数限制,升级套餐不如用 天若 OCR 配合 API 划算。

+

2.4.5 有道词典 - 翻译

+

没啥可说的,总得留个本地词典查翻译方便一点。挑一个自己喜欢的,有道、欧路这些都不错。而如果你希望同时查询多个翻译源对比,可以试一下多译这款工具。

+
网易有道词典
+

2.4.6 幕布 - 思维导图

+

比起老牌的思维导图工具 Xmind 这些,幕布在线上化(云端同步、便捷分享)方面做得很好,而且经常送会员。

+
送我的幕布会员...
+
干净、简洁的页面
+

如果你刚加入幕布,可以点击这个链接领取一年多的会员

+

2.5 装机软件$办公类

+

2.5.1 文电通 PDF 阅读器 - PDF 处理

+

电脑上轻量的 PDF 阅读我用 SumatraPDF,轻度的编辑、注释、表单、书签管理功能我用 文电通的 PDF 阅读器(免费),重度的编辑、OCR、合并拆分我用 Adobe Acrobat。

+

对于一般的工作而言,文电通的 PDF 阅读器其实完全可以胜任了。

+
文电通│企业 PDF 软件与解决方案品牌
+

2.5.2 Notion - 信息管理/协作

+

Notion 是这两年才崛起的一款在线笔记应用,Block 的概念非常好用。

+

发挥你的想象力,Notion 就没有边界

+
Notion 可以写笔记、文档
+
Notion 可以打造你的知识库
+
Notion 可以用来做任务项目管理
+
Notion 可以用来做数据库
+

想要更快上手 Notion,你可以参考这篇文章

+

2.5.3 Office Tab - Office 增强

+

还记得上面说的 Clover 么,标签页管理文件的高效让人用了就回不去。

+

而日常处理 Word、Excel、PPT 时,由于 Office 自身并不支持标签页管理,导致一旦同时打开多个文档,在文档间相互切换是一种魔鬼的体验。

+

Office Tab 就是这样一款让你的 Office 支持标签页管理的插件。

+
Word 中的多标签页管理
+

2.5.4 腾讯文档 - 在线文档

+

坦白讲从功能上我更喜欢石墨文档一点,腾讯文档主要是看中了它和 QQ 还有微信之间的协同能力。

+

但腾讯文档自身其实做得也还不错,多人同时编辑文档、表格这种基础功能就不说了。『在线收集表』的功能是一个亮点,相较于问卷星这种需要下载查看详细数据的方式,腾讯文档的收集表可以实时将结果展示到一个 Excel 里面,便于多人共同查看结果。

+
腾讯文档定位
+

关于腾讯、石墨、金山三个办公套件的优劣势你可以查看这篇文章

+

2.5.5 Typora - Markdown 输入

+
+

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。

+

用人话讲,就是你只需要专注于文字图片本身,无需考虑复杂排版的一种输入方式。如果不是对排版有特别要求,文字图片输入用 Markdown 非常舒服而高效。

+
+

相较于 Mac 下争奇斗艳的 Markdown 输入工具,Windows 上能打的 Markdown 输入工具则少得可怜。而 Typora 可能是 Windows 平台下最好的 Markdown 解决方案。

+
Typora — a markdown editor, markdown reader.
+ +

本文就是用 Typora 写的。

+

更多:Typora 完全使用详解

+

2.5.6 网易邮箱大师 - 邮件管理

+

其实 Win10 自带的邮件也还算好用,只是平时我有十多个邮箱需要管理...网易邮箱的多账号管理用起来挺方便。配合自定义签名、通讯录管理,用得时间久了,也就不愿意迁移到其他平台了。

+
界面展示
+

2.6 装机软件$系统管理类

+

2.6.1 7zip - (解)压缩

+

.7z 相对于常见的.zip/.rar压缩格式,压缩率有所提升。甚至在部分 PPT 上,几十 M 的 PPT 可以压缩到不到 5M 。

+

常见的 .7z/.zip/.rar 7zip都支持压缩/解压缩,当然实际上它还支持更多文件格式。

+

虽然没有 PeaZip 智能解压/密码管理的功能,但是 7zip 自身集成在右键菜单里还是蛮方便的,完全可以胜任主力压缩工具。

+
集成在右键菜单的 7zip
+

2.6.2 Startup Delayer - 自启动管理

+

这就是我之前说的更高级的自启动管理器,除了任务管理器中的“启动”,部分 services.msc里面的启动项目也可以直观地进行管理。

+

当然,它最初的目的是用于延时启动减少开机时对于资源的占用进而加快开机时间。

+
    +
  • 可以设定开启后多长时间自启动项目
  • +
  • 可以设定当磁盘/ CPU 占用不超过时才可以自启动
  • +
+
Startup-Delayer 界面
+

2.6.3 Windows 常用库安装 - 系统增强

+
+

电脑知识懂得多一点的朋友们都知道,很多软件是使用 Microsoft Visual Studio 编写的,这类软件的运行是离不开微软系统运行库的,比如像 QQ迅雷Adobe 软件等等,系统运行库是支持大部分软件运行的基础,如果运行库安装不完整的话,就可能会造成一些软件打开的时候报错,提示缺少文件。

+

然而,很多朋友却不知道到底要安装哪些运行库。没关系,今天萝卜君给大家分享的微软常用运行库合集,就是为了解决大家安装运行库的难题的。本运行库合集集成了目前最新的、最常用的微软运行库,一键安装,方便操作,是大家装机必备神器!

+
+
微软常用运行库合集 2020.03.25
+

这个可以等你遇到缺少运行库的相关提示时再安装,信不过整合版的可以去微软官方网站自行安装。

+

2.6.4 Unlocker - 系统清理

+
+

Unlocker 允许您删除被其他应用程序或进程阻止的顽固文件

+
+

功能很纯粹,有的时候想删除一个文件。

+

弹出该文件被另一个应用程序使用,无法删除(然后也不告诉我是谁在占用)。甚至重启之后删除时依旧会有这个提醒出现(经常是某些毒瘤弹窗程序)。

+

此时 Unlocker 就派上用场了,它可以解除程序对于文件的占用,进而删除文件。即使暂时删不掉,也会把删除的命令写到启动里面,下次开机时没等程序占用就将其删除。

+
Unlocker 界面(有中文)
+

关于清理恶意弹窗中 Unlocker 的作用可以参考这篇文章

+

2.6.5 TaskbarControl - 任务栏管理

+

也是一款小工具——利用快捷键快速隐藏/取消隐藏 Windows 下方的任务栏。

+
隐藏任务栏的桌面
+

有时隐藏任务栏可以让自己更专注,避免图标变化带来的打扰。

+

虽然 Windows 本身可以设置隐藏任务栏,但是菜单藏得很深,切换时非常不方便。

+

使用这款小工具,Ctrl+Shift+I 就可以快速隐藏/取消隐藏任务栏,帮助你高效工作。

+

2.7 装机软件$通用工具箱类

+

2.7.1 Listary - 快速启动器

+
    +
  • 快速搜索定位文件
  • +
  • 用快捷键快速启动程序
  • +
  • 关键词快速搜索 Web
  • +
  • ..
  • +
+
键入关键词马上就能找到
+
快速启动程序
+
网络检索打开网站
+

同类的应用还有 Everything,挑一个适合自己的就好。

+

2.7.2 快贴 - 剪贴板同步

+

iOS 的剪贴板接力实在是方便,可我平时除了 iOS、还要使用 Windows 和 Android,需要找到一个支持全平台的剪贴板同步应用。

+

考虑稳定性、速度等多方面因素,最终还是选择了快贴,日常使用的确省了不少功夫。

+
快贴 - 真正的云剪贴板工具
+

当然,由于国内安卓经常杀后台,体验上可能会略打折扣。但即便如此,也还是比发送到微信方便太多了。

+

2.7.3 DeskPins - 窗口增强

+

这款小工具只有一个功能——让某个窗口置于最前端显示。

+
可以类比微信的置顶功能
+

有时进行输入工作时,希望输入的窗口能保持在最前端显示,减少来回切换的不便。

+

2.7.4 Quicker - 自动化神器

+

Quicker| Win 上的效率神器,这是一年前的安利。一年过去了,Quicker 更强大了。

+

Quicker 是一个可以帮你把常用的操作抽象出来,让你从重复性劳动里解放的一款效率神器。

+

用语言描述 Quicker 是无力的,直接上动图和视频。

+
批量填写数据到表单 作者: 咿呀杀杀
+
快速保存微信图片
+

快速保存大量微信图片视频演示地址

+

这个软件我建议你一定要下载体验一下,是那种用了就回不去的体验

+
Quicker 动作库-Excel 分区
+

而且 Quicker 动作库里面本身有很多网友已经写好的动作,多数情况你只需要复制粘贴就可以开始一段超神之旅了。

+

Quicker 有免费版和专业版之分,如果你觉得需要购买专业版,可以填写我的推荐码 2923-4897 ,这样你可以多增加三个月的订阅时间,我也能得到奖励。

+

2.7.5 RescueTime - 时间管理

+

因为每天有写日报的习惯,但是人老了记忆衰退的厉害,有时候就忘记今天干过什么事情了。。。

+

Rescue Time 可以帮助你统计各个程序、网页的使用时间,形成报表,直观地显示今天你干了啥。

+

全平台支持,方便你汇总统计。

+
RescueTime-我的日统计
+

2.7.6 sandboxie - 沙盒

+

在国产各路流氓应用斗智斗勇的过程中,尽管积累了一些经验。但有时还会防不胜防。

+

同时也会有一些不得不安装的应用或者是一些不太放心的小工具。

+

这时候沙盒能帮我们很好的解决这个问题,软件运行在沙盒里,丝毫不影响正常的系统运行。应对流氓应用的一大利器。

+
sandboxie 目前已免费
+

具体介绍你可以参考这篇文章:给毒瘤应用找个好去处,轻量、易用的 Windows 沙盒工具:Sandboxie

+

2.7.7 网易云音乐 - 音乐

+

总还是要听音乐的,挑自己喜欢的平台就是了。至于网易曲库不足的问题,你可以参照这个UnblockNeteaseMusic 项目配置解决。

+
网易云音乐
+

2.8 装机软件$文件同步/下载类

+

2.8.1 坚果云 - 云盘

+

我的主力云盘,国内多设备同步做得最好的网盘。

+
这几个特性的确很好用
+

如果你有多设备之间同步文件的需求,在国内坚果云绝对是你的首选。当然,如果没有刚需的话,OneDrive 其实够用。

+

坚果云免费用户每月 1G 上传流量,3G 下载流量。专业版用户无限制,年费 199 元。

+

多说一句,如果你有 iPad 和 Windows 之间互传/同步文件的需求,可以看看这篇文章:iPad OS 文件管理入门

+

2.8.2 FileZilla - FTP 管理

+

在日常使用场景里面,FTP 协议可以让你的手机平板更方便地访问电脑中的文件。

+

尽管 Win10 自带 FTP 功能,但是管理和使用都不如 FileZilla 方便。如果你有这方面的需求,不妨试试 FileZilla 。

+
手机访问电脑
+

2.8.3 GoodSync/AirExplorer - 云盘管理

+

GoodSyncAirExplorer 功能差不多,都是用来做文件夹同步的。可以是『本地同步本地』,也可以是『本地同步云端』,或者『云端-本地-云端』。

+
GoodSync 支持的云盘和协议
+

常见的云盘和协议都支持,也是一种文件备份/同步的选择,可以设置周期备份/同步任务实现自动化操作。

+

GoodSync 每年都会有限免期,不着急的朋友可以做个等等党。

+

2.8.4 QbitTorrent - 磁力下载

+

磁力下载工具,是一次不错的替代迅雷的选择。一般的资源则更推荐你使用百度网盘的离线下载功能,更方便一些。

+
qBittorrent 界面
+

当然,磁力下载离不开好的 Tracker,你可以从这里添加 Tracker

+

更多:别再问我什么是 BT 种子

+

2.8.5 IDM - 非磁下载

+

应该是 Windows 上必备的下载神器吧。

+
跑满带宽的 IDM
+
    +
  • 多线程加速
  • +
  • 断点续传
  • +
  • 批量下载
  • +
  • 网页嗅探
  • +
  • ..
  • +
+

用了 IDM,能限制住你的除了服务器就只剩下你的网络带宽了。

+

关于 IDM 的具体介绍,你可以参考奶酪的这篇文章

+

2.9 装机软件$创意工具箱

+

2.9.1 Adobe 套件 - 剪辑

+
Adobe 全家桶
+

元素周期表总得来一套。

+

2.9.2 Eagle - 素材管理

+
没有 Eagle 怎么管理这么多熊猫呢
+

公众号、网站、视频、小程序,项目一多素材就整理不过来了,搜索也不方便。Eagle 就是专门来帮助你高效整理素材的。

+
Eagle - 功能特性
+

关于它更详尽的说明:Eagle:图片管理中的「印象笔记」,帮你更好地收集灵感、整理素材

+

日常价 199 元,团体购买 149 元。

+

2.9.3 PicGo - 图床

+

Windows 下写 Markdown 文字部分可以用 Typora 解决,图床部分配合 PicGo 就能实现 Typora 插入图片自动上传到图床,极大地提升了 Markdown 的输入体验。

+

默认支持微博图床、七牛图床、腾讯云COS、又拍云、GitHub、SM.MS、阿里云OSS、Imgur。方便不同图床的上传需求。2.0版本开始更可以自己开发插件实现其他图床的上传需求。

+
PicGo
+

2.9.4 XnConvert - 图片批量操作

+

XnConvert 能够帮助你批量对图片进行操作,包括但不限于:旋转、转换格式、压缩、裁剪、色彩调整。支持多种图片格式,批量化配置可保存复用。

+
XnConvert 界面,中文可选
+

2.9.5 Riot - 图片压缩

+

公众号后台对于图片、动图都有大小限制,在线服务要么效果感人,要么收费。不如试试 Riot 这款免费小工具。

+
可以即时查看压缩后图片的大小
+

最后再次提醒:文中涉及软件你可以通过官网链接下载,也可以在公众号 杂谈by立行 回复『重装系统』获取整理好的70+软件集合包

+

三 日常使用

+

3.1 软件新装

+

3.1.0 下载

+

文章开头提过,这里再强调一遍。

+
    +
  • 尽量去官网或者 GitHub 下载,遇上流氓的概率会小很多。
  • +
  • 建议如果空间足够的话,下载的安装包不要删除,直接移入“重装系统备份”文件夹。重装的时候能减少很多麻烦。
  • +
  • 小众软件、小工具记得做好安装包备份
  • +
  • 大型软件最好本地留也留有备份,不然几个 G 的文件再从网上拉下来可能会很耗时。
  • +
+

3.1.1 安装

+
    +
  • 所有国产软件,请不要选择『快速安装』、『一键安装』这类选项,请一步一步检查。
  • +
  • 安装位置最好可以统一管理,具体可以参考奶酪的这篇文章:大道至简,如何高效使用 Windows?。当然,懒得管理的话选择默认位置也没关系。
  • +
  • 安装过后记得去自启动管理检查一下,不要相信软件自身的自启动选项。
  • +
  • 可以利用开始菜单作为软件入口,为软件进行分类管理。
  • +
+

3.2 文件备份

+

电脑丢了,无非就是损失一点金钱,日后也能赚回来。但数据要是丢了,你花再多的钱也找不回来了

+

再怎么重视数据安全也不为过,这方面展开讲也可以单开一个栏目,限于主题就简单提几嘴网络备份的选择。

+

普通 Windows 用户其实用好 OneDrive 做备份就足够了,5G 的空间不够的话可以拼车 Microsoft 365 家庭版,一年 50 多元,1T 空间可用。 当然,也可以直接购买 Microsoft 365 个人版,省去很多麻烦。

+

这里的 Microsoft 365 不光是 OneDrive 的 1T 空间,还包括 Word、Excel、PowerPoint 三件套的多平台使用权。

+
Office 产品对比
+

非常不建议你使用淘宝几块钱 5T 的 OneDrive 账号进行文件备份,这种账号是虚假注册的,随时可能被微软封号。而且账号里的文件可以被系统管理员随时查看和删除,毫无隐私性可言。

+

至于百度网盘,如果你是会员的话,Windows 倒也支持最多 5 个本地文件备份,这也不失为一种选择。

+

而坚果云,上面也提到过,如果有多设备同步的需求,它在国内会是首选。如果没有这方面的需求,也可以下载尝试一下,免费用户不限制空间、速度,只限制容量。(坚果云看到请给我续费打折,谢谢)

+

关于数据安全的更多知识,你可以参考这些文章:

+

不想被勒索软件毁掉数据,就按照「3-2-1 原则」来备份文件

+

适用于个人用户的最佳数据备份方案有哪些?

+

3.3 系统安全

+

虽然大家都劝说微软自身的『Windows 安全中心』足够维持系统安全,没必要安装第三方安全软件。

+

但如果你对电脑了解不是很多,或者面对流氓弹窗束手无策,我还是建议你安装第三方安全软件。『Windows 安全中心』防得住病毒,防不住流氓

+

不过我也不建议你安装流氓头子 36o 或者各路 XX 电脑管家/大师,安一个火绒就好。干净省心省事,也能够解决绝大多数流氓。

+
火绒个人版5.0
+

3.4 发现并解决工作流上的痛点

+

尽管上面推荐了 70+ 的软件,但是其实本文价值最高的部分藏在下面的几段话里面。

+

太阳底下无新鲜事,其实我们在操作电脑时遇到的问题里面 80% 前人都遇到过,并且可能给出了软件或者解决方案。

+

你需要做的其实就是:

+
    +
  • 不断发现工作流中的痛点、可优化点
  • +
  • 以合适的方式进行搜索、提问
  • +
  • 找到/创造解决方案并记录(印象笔记剪藏或者打印成 PDF)
  • +
+

比如说,我觉得快捷方式图标里的小箭头很难看。我就会搜索“删除 快捷方式小箭头”,果然一大堆解决方案。

+
删除 快捷方式小箭头 - Google 搜索
+

这样的例子还有很多,以终为始,让时间一点点打磨你的工作流,慢慢的,你的 PC 就会变成你的一件『利器』

+
+

『都看到这里了,还不点个赞么?』

+
熊猫头无白底表情包
+

另外,由于本文发布在多个平台,为了避免有些问题被重复提问回答,我整理了一份 FAQ 供大家查看,你也可以填写此问卷为 FAQ 添加问题。

+

点我查看 FAQ 文档

+

点我提问

+

四 外在环境

+

当代人的工作很难离开电脑,一天中的多数时间可能都是在电脑前面度过的。

+

如果你像我一样,在电脑前面久坐导致腰椎、手腕还有臀部都经常酸痛,可以看一下我摸索出来的这套不到 500 元的装备,极大的缓解了这些问题。

+

什么椅子更适合长时间工作/游戏,衡量标准又是什么?

+

肩颈实在受不住,怎么缓解

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/2020-10-12239/index.html b/post/2020-10-12239/index.html new file mode 100644 index 0000000..e505f01 --- /dev/null +++ b/post/2020-10-12239/index.html @@ -0,0 +1,878 @@ + + + + + + +Tasker××,Android 自动化实例 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ Tasker××,Android 自动化实例 +

+ +
+
2020-10-12 · 26 min read
+ + + + Android + + + + + Tasker + + + + + 自动化 + + +
+
+

引言

+

前些天,几个月前看到了 从通知实现钱迹 Tasker 自动化记账 - 少数派,想起来了之前购买即遗忘于角落的 Tasker...心有戚戚焉。加之自动化记账这件事确实 get 到我了,于是籍此开始折腾 Tasker 的自动化之路。

+

经过几周的折腾,混迹于各论坛,参考各种文章后魔改,目前实现的部分功能如下:

+
    +
  • 通话后自动同步录音到坚果云、fooview 截图后自动同步到电脑桌面
  • +
  • 地图应用开启关闭与 GPS 同步
  • +
  • 视频应用开启关闭与自动锁定同步
  • +
  • 息屏下连接特定耳机自动播放微信通知
  • +
  • 除特定应用连接耳机后自动播放听力
  • +
  • 钱迹自动化记账(带备注、可选账本、延后记账、免密支付自动记账)
  • +
  • 点击手环、摇动手机、Quicker 实现管理智能家居
  • +
  • 手机充电至 95% ,手环提醒
  • +
  • Keep 开始运动后,小米手环自动开始记录
  • +
  • 控制另一部手机实现通知转发、播放控制等功能
  • +
  • 利用小爱同学执行 Tasker 任务
  • +
  • 扫描特定 NFC 卡片,打开体重秤连接界面
  • +
  • ...
  • +
+

下面会介绍这些自动化的使用场景和配置思路,部分复杂的配置会提供导入,希望对你有所帮助。

+

一 Tasker + FolderSync

+ +

1.1 通话录音自动同步到云盘

+

功能描述

+

为了防备不时之需,我希望我的录音至少可以同步到云盘,最好后面还可以同步到其他设备分享给家人。小米自带的云服务其实是可以将通话录音同步到小米云服务里面的,但是小米云服务毕竟不是专业做网盘的,多设备同步和分享控制相对不如 Dropbox/ 坚果云这类网盘专业。

+

所以我需要找到一个桥梁,将手机本地的录音文件夹和云盘建立链接,实现双向同步。

+

FolderSync 就是这样一款用于云盘、本地间同步的应用,支持 Google Drive、Dropbox、OneDrive、MEGA 等常见网盘,也支持通过 FTP、SMB、WebDAV 等协议连接到其他存储空间。

+

最后我选择利用 FolderSync 通过 WebDAV 协议将本地文件夹和坚果云文件夹链接在一起,然后坚果云的通话录音文件夹可以同步到多个设备上,并且它的分享权限控制也相对完善。

+

这样通话结束后,录音会自动同步到坚果云上,然后坚果云也会将文件同步到电脑上。

+

配置思路

+

在 FolderSync 中配置好某个同步项目后,在 Tasker 中进行以下设置。

+
if (监测到通话结束):
+	调用 Tasker 中 FolderSync 插件同步特定项目
+Endif
+
+

依赖配置

+
    +
  • 无需 Root、adb
  • +
  • 下载 FolderSync 需 kx 网络(Google Play)
  • +
  • 若网盘为 Google Drive、Dropbox 等国外产品,则需 kx 网络
  • +
+

1.2 FV 悬浮球截图后自动同步到电脑桌面

+

FV悬浮球-fooView(com.fooview.android.fooview) - 1.4.4.1 - 应用 - 酷安网

+

FV悬浮球 - fooView,文件浏览,手势截图 - Google Play 上的应用

+

功能描述

+

写这些手机上的教程免不了做截图演示,『截图-分享到电脑-电脑保存』这个流程上还是有些繁琐。我希望能够尽量简化截图上传至电脑的流程。

+

所以我将手机截图保存的文件夹和电脑上的目标文件夹通过坚果云和 FolderSync 建立了双向同步,一旦监测到有新截图生成,FolderSync 同步本地文件夹到坚果云,坚果云再同步该文件夹到电脑。最终流程就可以被简化到『截图-电脑自动出现结果』。

+

那怎么监测什么时候有新截图产生呢?

+

这就要用到 Tasker 的 Logcat Entry 功能,关于它的具体说明可以查看Logcat Entry 官方文档。简单讲就是应用完成不同的操作时会留下不同的痕迹,Tasker 可以监测这些痕迹来反推应用完成了什么操作。

+

至此,只要在 FolderSync 里面配置好一个新的同步项目,这个动作就算是完成了。

+

配置思路

+
if (通过 Logcat Entry 监测到 fooview 保存了截图):
+	调用 Tasker 中 FolerSync 插件同步特定项目
+Endif
+
+# 我的 Logcat Entry 设置-Mi10-MIUI12,仅供参考。此部分配置会因为设备、默认保存文件夹不同而不同
+Component:MiuiGallery2_SaveToCloudUtil
+Filter:[thread-pool-0] insert /storage/emulated/0/Pictures/Screenshots/
+
+

依赖配置

+
    +
  • 无需 Root,但 Logcat Entry 功能需要 adb 授权(当你添加这个功能的时候,Tasker 会告诉你怎么做)
  • +
  • 下载 FolderSync 需 kx 网络(Google Play)
  • +
  • 网盘推荐使用坚果云,不过 Windows 使用 OneDrive 也能有相同的效果;如果不使用网盘,局域网下也可直接通过 FTP、SMB 协议同步到电脑。
  • +
+

二 Tasker + Notify&Fitness for Mi Band

+

2.1 充电至 95% 手环发送电量充满提醒

+

Notify & Fitness for Mi Band - Google Play 上的应用

+

NF for Mi Band 是小米手环的一款第三方客户端,相较于官方的小米运动,NF 会干净、可玩性也会更高。关于 NF 的具体介绍,可以查看告别广告,让小米手环在 Android 上更好用:Notify & Fitness - 少数派

+

功能描述

+

为了手机电池的长久健康,我平时会尽量避免将电池充满。

+

当手机充电电量到达 95% 时,一种思路是通过控制智能插座实现断电,不过问题在于不知道通过什么触发给插座发指令恢复供电,不然可能插上去半天才发现插座忘记打开了。

+

另外一种思路就是此时给手环发通知,手动拔掉充电器...

+

最初是通过 Tasker 来配置的,但后来发现 NF 也自带了电量充满提醒。Anyway,这个动作的意义在于你现在可以通过 Tasker 将手机和手环连接起来了,手环的玩法也籍此变得更为丰富。

+

配置思路

+
if (电池电量=95) And (在充电):
+	手环发送通知
+Endif
+
+

依赖配置

+
    +
  • 无需 Root、adb
  • +
  • 需要安装第三方小米手环应用 Notify&Fitness for MiBand,如果从 Google Play 下载需要 kx 网络和 Google 套件,利用Notify & Fitness for Mi Band APKs - APKMirror或可避开 Google 套件
  • +
+

三 Tasker+ 钱迹

+

功能描述

+

这个自动化主要是受 从通知实现钱迹 Tasker 自动化记账 - 少数派 这篇文章影响,之前尝试了很多方式,但还是经常忘记记账。而通过 Tasker 和钱迹的联动,则可以付款后立即快速记账,并且支持这些功能:

+
    +
  • 有通知(有金额)可以从通知捕获金额
  • +
  • 支持添加备注
  • +
  • 支持选择账户
  • +
  • 支持延迟记账(会在通知栏中创建一条不会被误清除的通知)
  • +
  • 支付宝免密支付项目可以自动记账
  • +
+

具体可以参照这条演示视频:

+

[B 站演示视频]

+

美中不足的一点是还没找到怎么用 Tasker 直接唤起输入法的数字输入模式,在输入小数点的时候多一步感觉不太方便。如果有知道的朋友,还望在评论区指出,感谢。

+

配置思路

+
# 两个 Profiles、两个 Scenes、16 个 Tasks
+
+#变量说明
+%ACCOUNTNAME #记录存入账户
+%Accountname1 #银行卡账户1
+%Accountname2 #银行卡账户2
+%Accountname_hb	#花呗在钱迹中的名称,默认『花呗』
+%Accountname_wechat #微信余额在钱迹中的名称,默认『微信』
+%Accountname_yeb	#余额宝在钱迹中的名称
+
+%Choice	#记录是支付宝系(余额宝、花呗、银行卡们)还是微信系(微信钱包、银行卡们),1支付宝2微信
+%Evtprm #因为%evtprm()是局部变量,存储通知文本在不同 task 之间传递
+%If_have_unrecord_bills #记录是否有需要延后记录的账单(0无1有)
+%Notification_to_cancel #记录要清除的延后通知文本
+%QJURL 	#钱迹记账的 Link
+%Tag	#记录是否选择了账本,未选择账本则取消记账
+
+
Tasker+钱迹记账思路
+

依赖配置

+
    +
  • 无需 Root、无需 adb
  • +
  • 需安装钱迹
  • +
+

参考信息

+

从通知实现钱迹 Tasker 自动化记账 - 少数派

+

自动化记账接口 · 钱迹用户指南

+

导入说明

+
    +
  1. 长按左下角小房子图标,导入项目
  2. +
  3. 在『支付记账』项目中切换到『任务』界面,点击进入『初始化命令』
  4. +
  5. 根据自己钱迹账本中账户的名称修改对应的账户名称
  6. +
  7. 点击左下角,运行此任务
  8. +
  9. (可选)到Iconfont-阿里巴巴矢量图标库搜索对应账户的图标,在『场景』中修改对应账户的图标和背景
  10. +
  11. 支付宝免密支付的通知需要自行修改记账账户、通知文本清理、消费类别等设置
  12. +
+

PS:华为手机需 EMUI 10 或 Magic UI 3.0 以上才能使用钱迹的自动化记账接口,目前还不清楚低版本系统有无解决方案。

+

四 Tasker + HomeAssistant

+

尽管米家 App 其实通过一直在努力通过快捷方式、Widget、锁屏划入、通知栏控制等方式简化智能设备的操作流程,但一来我是真的懒,这些方式我还得动脑找设备;二来,米家 App 也没办法利用手机更多样的传感器玩联动,差了点意思。但这些设备接入 HA 后,那真就是人有多大胆,地就有多大产了。

+

另外,尽管小爱同学控制家电也是一句话的事,但如果有其他人在场,我总觉得喊小爱同学好羞耻..

+

基于这两个原因,我选择将智能家居接入 HA,多一个控制渠道,多一些场景玩法。

+

4.0 安装 HomeAssistant 与接入米家设备

+

安装 Home Assistant

+
+

Home Assistant 是一个免费的开源家庭自动化软件,用 Python 编写,重点关注本地控制和隐私。它有非常广泛的设备支持,截至 2020 年 5 月,它支持超过 1600 个模块化插件或附加组件与不同的物联网技术的系统集成,系统和服务作为「集成组件」可用。通过自动,语音命令,移动应用或 Home Assistant 基于 Web 的前端用户界面上的控件来触发诸如打开/关闭灯之类的操作。

+

Home Assistant - Wikipedia

+
+

Home Assistant 作为智能家居的中控中心需要 24 小时运行,所以通常会被安装在功耗比较小的树莓派

+

但我手里面并没有树莓派,所以我先后尝试过安装在 Windows 和 Android 手机上,都能使用。如果没有树莓派、Nas 等设施的话,推荐安装在老旧 Android 手机上。

+

Windows 安装 HA

+

教程:homeassistant安装与启动 - HAChina 中文网

+

几个避坑的点如下:

+
    +
  • 截止至 2020.8.12,HA 需要 Python 版本大于等于 3.7
  • +
  • 因为有些pip3工具下载的库是源码形式的,在pip3工具执行安装的过程中会需要调用本机的C++编译器,所以需要安装MicrosoftVisual C++Build Tools
  • +
  • 如果遇到了 Stuck at INFO:homeassistant.core:Timer:starting ,可以通过pip install home-assistant-fronted解决
  • +
  • 如果想设置 Home Assistant 开机自启动,可以制作 .bat 脚本后添加到自启动,以下代码可供参考(无黑窗口常驻)
  • +
+
@echo off
+if "%1" == "h" goto begin
+mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
+:begin
+REM
+
+hass
+
+

Android 安装 HA

+

先后在 红米 Note 4x (已 Root,MIUI11-9.10.10,Android 7)和华为 Nova 2s(未 Root,EMUI8.0,Android 8) 成功安装了 HA,不过两者安装时遇到的问题并不相同,命令仅供参考。

+

以下操作需要设备安装 Termux 后完成,Termux 是 Android 上的一个终端模拟器,开源并且无需 Root。关于它的具体教程,可以参考Termux 高级终端安装使用配置教程 | 国光

+

这里也假定你有一定的命令行基础并且擅于搜索,其实核心思想基本可以总结为四个字:缺啥装啥

+

Root 的设备可以直接进入文件夹编辑文件;未 Root 的设备则需使用 Vim 这种编辑器来编辑相关配置,此处请自行搜索 Vim 的相关用法。

+

参考的教程:

+

在 Andorid 使用 Termux 安装 HomeAssistant 以作为家庭的 HomeKit 中枢

+

闲置Android手机变身Homeassistant家庭助理 HAChina 中文网

+

Androidr手机或盒子通过Termux 安装Home assistant+homekit+MQTT+Node-red - 『HomeAssistant』

+

踩坑信息:

+
    +
  1. 根据 No more -dev packages - Termux Wiki 所言,Termux 从 2019.7.28 起停止支持 xx-dev 的包,所以以上教程中的 python-dev、openssl-dev 等包都不必安装了。
  2. +
  3. 可能需要补充的安装包的命令有 pip install Pillow pip install aiohttp_corspip install home-assistant-fronted
  4. +
+

接入米家设备

+
+

以小米智能插座 WIFI 版为例

+
+
    +
  • 最好有已 Root 的安卓设备
  • +
  • 米家 app 5.0.19 前版本
  • +
  • 最好安装 Google Play
  • +
+

获取小米 WIFI 设备 token 方法

+

注意 yaml 配置文件所有的 : 后面都应该跟一个空格

+
switch:
+  - platform: xiaomi_miio
+    name: Original Xiaomi Mi Smart WiFi Socket #给你的插座起个名字
+    host: # 插座的 ip 地址
+    token:	# 你获取的token
+    model: chuangmi.plug.m3
+
+

为hass添加小米的智能插座基础版

+

ha接入小米wifi插座,附miio安装

+

可能会漏掉的命令:

+

pip3 install python-mirobo

+

npm install miio

+

参考信息

+

Home Assistant 中文文档

+

Documentation - Home Assistant

+

Xiaomi Smart WiFi Socket and Smart Power Strip - Home Assistant

+

REST API | Home Assistant Developer Documentation

+

4.1 特定位置摇晃手机开关灯

+

功能描述

+

这里只是举个例子来说明你可以利用手机的传感器作为触发条件控制智能家居。

+
    +
  • 手机在特定角度摇晃一定时间,小米插座会打开/关闭。
  • +
  • 当你手机放到无线充电座,姿势传感器维持 5 秒不变,打开无线充电插座。
  • +
  • 手机放到某支架 5 秒以上/扫描到支架上 NFC,蓝牙连接音响,关灯进入影院模式 。
  • +
+

配置思路

+

Tasker 更新至 5.9.3 后,新增了 Any Sensor功能,意味着 Tasker 可以使用你手机上很多没列出的传感器了。可以参考这个 Live Creations #42 - New Sensor State, Event and Actions - YouTube 演示视频。

+
if (左右摇晃,低敏感,长时间) And (gravity 传感器在特定区间内):
+	向 HA 发送开关灯的命令
+Endif
+
+

至于怎么利用 Tasker 向 HA 发送请求,可以参考⚙️ Using Tasker with Home Assistant (V2) - Share your Projects! - Home Assistant Community这篇文章,说得非常清楚。

+

我仍然以小米智能插座 WIFI 版为例展示我的配置(需提前导入 HA call-service 这个任务):

+
# 关闭小米智能插座
+Tasker 选择『执行任务』,具体参数如下
+Name: HA call-service
+Priority: %priority
+Parameter1(%par1): switch.turn_off
+Parameter2(%par2):{"entity_id":"我设置的小米插座名字"}
+
+

4.2 手环单击开关灯

+

功能描述

+

这个例子用于说明手环也可以作为触发条件控制智能家居。

+
    +
  • 晚上不拿手机上床,通过手环关闭所有灯光:在小米手环心率界面,长按震动后单击,小米智能插座会打开/关闭。
  • +
  • 进入浴室后通过手环控制手机连接浴室的音箱,播放/暂停音乐。
  • +
+

配置思路

+

这部分实际上是 Tasker + Notify&Fitness For Mi Band 的进一步应用。

+
If 接收到 intent(com.mc.miband.buttonPressed1):
+	向 HA 发送开关灯的命令
+Endif
+
+

当然,NF for Mi Band 还可以接收/发送更多的 Intent,你可以在Notify&Fitness for MiBand ,intent 参考文档找到具体的参考说明。

+

4.3 Quicker 管理 HA 家居

+

功能描述

+

这部分其实有点跑题..不过这确实是我折腾 HA 的初衷之一——实现在电脑上操控智能家居。之前开关灯、空调还需要拿起手机-解锁-点击桌面快捷方式,这样的步骤对于我这样一个懒人实在是太麻烦了。。

+

现在在 Windows 上直接唤起 Quicker 面板,鼠标点击就可以开关灯、空调设置温度,全程无手机介入,非常舒服。

+

比如『我出门了』这个命令,运行后台灯、饮水机、空调会自动关闭,电脑也会锁屏并息屏。

+
Quicker 智能家居管理面板
+

配置思路

+

本质上就是通过 Quicker 向 HA 发 Post 请求实现相关操作,具体的细节需要参考REST API | Home Assistant Developer Documentation这个官方文档。

+

我同样以小米智能插座 WIFI 版本展示 Quicker 发 HTTP 请求关闭插座的相关配置:

+
    +
  • 网址:http://IP_ADDRESS:8123/api/services/switch/turn_off
  • +
  • 方法:POST
  • +
  • 请求头:Authorization: Bearer {你生成的 token}
  • +
  • 请求体类型:JSON
  • +
  • 请求体:{"entity_id":"在‘服务中’找"}
  • +
+

其他可供参考的 API:

+
    +
  • 米家台灯一代开关灯:http://{IP}:8123/api/services/light/toggle
  • +
  • 米家空调伴侣 2 代设定温度:http://{IP}:8123/api/services/climate/set_temperature
  • +
+

参考信息

+

小米空调伴侣2 插件接入HA

+

4.4 手机自动保持电量在 40%-80%

+

功能描述

+

上文提到的两台手机都是常年放在家里面,兼具短信转发和 HA 中心的功能。为了尽量保证电池的健康和安全,两台手机充电到 80% 会自动断开充电插座,电量降到 40% 会自动打开充电插座。

+

PS:iOS 其实也可以利用『自动化』和米家场景实现同样的效果。

+

配置思路

+
if (电量到达 40/80 %):
+	打开/关闭 充电插座
+Endif
+
+

五 Tasker + Join

+

Join 是 Tasker 作者的另一款产品,用于将 Windows、Android、浏览器、IFTTT 打通的一款工具。

+

我比较喜欢的几点功能如下:

+
    +
  • Win10 上 Chrome 打开的网页可以直接投在手机上打开,反之手机打开的网页也可以直接分享到 Chrome 上打开
  • +
  • 剪贴板自动同步
  • +
  • 多设备之间互相发送通知+Tasker 联动
  • +
+

当然,Join 还有更多的功能,比如电脑控制手机截屏到电脑、录屏到电脑、定位手机、让手机响铃...

+

不过,Join 很大的一个问题是它借助 FCM 实现推送,所以你需要有稳定的 kx 网络才能获得比较好的使用体验。

+

此部分无需 Root,adb。

+

5.1 控制另一台手机播放/暂停音乐、调整音量

+

功能描述

+

最近在根据人人都能用英语-语音篇尝试重建自己的语音过滤系统,所以需要听很多英语材料。可手头又没个音箱外放,于是我把目光投向了我闲置已久的短信转发手机——红米 Note 4x。

+

因为它平时所在的位置比较奇怪,拿起来操作不太方便,所以我希望它除了能够长久播放,还可以通过另一台手机远程控制播放暂停音量。甚至进一步可以实现主力手机有电话进来,它自动停止播放;电话挂掉,它恢复播放这种功能。

+

在红米上安装完 Tasker 之后,我找到了Poweramp – Music Player for Android 这款本地音乐播放器支持通过 Intent 控制播放/暂停、上一曲、下一曲等操作。所以此部分实际上是 Tasker+Join+Poweramp 。

+

配置思路

+
    +
  • 在 Mi10 上的 Tasker 创建一个任务,通过 Join 在 Tasker 上的插件向红米上的 Join 发送一条特定文本
  • +
  • 红米上的 Tasker 通过 Join 的插件检测到接收到特定文本,通过 Intent 执行命令以控制 Poweramp 播放
  • +
+

值得注意的一点是,如果你是通过参考文档中 Reddit 网友提供的链接下载的 Poweramp(intents) v1.1 这个『任务』,它默认的 Intent 的 TargetService,如果测试控制不成功的话,可能需要将其改成Activity才能正常使用。你也可以在后面导入我修改好的『任务』。

+

参考文档

+

[PROJECT SHARE] PowerAmp control panel to control media function 😃 : tasker

+

powerampapi/PowerampAPI.java at master · maxmpz/powerampapi

+

5.2 另一台手机接收的短信通过 Join 直接转发

+

功能描述

+

其实这台手机本身已经配置了通过 IFTTT 转发到 TG 了,添加这个 Tasker Profile 算是多一重保险吧。

+

如标题所言,红米接收的短信会通过 Join 直接转发到我的 Mi10 上。

+

不过后来发现,对于经常使用电脑的人而言,还是将短信转发到微信上更方便一些..

+

配置思路

+
    +
  • Tasker 检测到短信,通过 Join 将短信内容、发信人、发信时间发送到 Mi10 上
  • +
+

其中可能会用到的变量名称及含义如下

+
    +
  • %SMSRB:短信文本
  • +
  • %SMSRF:发信人
  • +
  • %SMSRD:发送日期
  • +
  • %SMSRT:发送时间
  • +
+

参考信息

+

用Tasker实现收到Android手机短信自动转发到微信-Tasker配置教程站

+

六 Tasker + Keep

+

6.1 Keep 开始运动后小米手环开始记录

+

功能描述

+

因为 Keep 并不支持连接小米手环,所以手环上的很多传感器在 Keep 的运动场景上毫无用武之地。每次想在 Keep 记录运动时,还需要手动打开 NF for Mi Band 创建运动,然后再切回 Keep,非常麻烦。

+

设置 Tasker 之后可以实现在 Keep 点击『开始运动』后,小米手环自动以『跑步』模式创建运动开始监测数据。

+

同样这里也用到了 Tasker 的 Logcat Entry 功能作为监测条件。

+

配置思路

+
if (Logcat Entry 捕捉到 Keep 开始运动的日志):
+	通过 NF for Mi Band 的 Tasker 插件创建某一模式的运动
+Endif
+
+# 参考的 Logcat Entry 配置
+Component: ActivityTaskerManager
+Filter: START u0 {cmp=com.gotokeep.keep/.tc.business.training.core.activity.TrainingActivity (has extras)} from uid 10086
+
+

依赖配置

+
    +
  • 需要安装 Notify&Fitness for Mi Band
  • +
  • 无需 Root,但开启 Logcat Entry 功能需要 adb 授权
  • +
+

七 其他

+

7.1 息屏下连接 Airpods 时自动朗读微信通知

+

功能描述

+

见名达意,还可以把 Airpods 换成车载蓝牙,也算变相地实现了微信收消息的车载模式吧。

+

比如开车、骑车这类场景不方便打开手机看消息、看手环也会影响注意力,利用耳朵则是一个很好的方法。

+

简单实现的功能如下:

+
    +
  • 同一个人多次发送消息只会说一次姓名
  • +
  • 多条消息的“[n条]”不会被播报
  • +
  • 群聊中的『@微信名』会被替换为『@我』
  • +
+

推荐更进一步的操作:Tasker 一个配置实现微信朗读,微信消息播报+基础版的防撤回-CSDN博客_tasker 获取通知内容

+

配置思路

+

主要介绍一下通知文本的处理过程(Mi10 调用的小爱同学发音引擎,其他型号手机需要自行设置)

+
# 变量说明
+%Wechat_sender #存储微信发信人,由 %evtprm2 赋值
+%say_text #存储通知文本,由 %evtprm3 赋值
+
+If (两次发信人不相同):
+	存储发信人姓名到 %Wechat_sender
+	文字转语音:『%Wechat_sender 说』
+Endif
+存储通知文本到 %say_text
+正则搜索替换『.*:』,去除多条信息的 "[n条]:"
+If(通知文本中有 『@微信名』)
+	搜索『@微信名』为『@我』
+	文字转语音:『@我』
+Endif
+文字转语音:『%say_text』
+
+

7.2 连接 Airpods 后且前台非音视频应用自动播放听力

+

功能描述

+

和 5.1 一脉相承,同样是为了磨耳朵,主要用于出门在外的场景。

+

连接 Airpods 后,只要前台不是电话和音视频应用,就自动控制 Poweramp 开始播放,反之停止播放。

+

配置思路

+
If (连接了 Airpods) And (前台不是某些应用):
+	Poweramp 开始播放
+Else:
+	停止播放
+Endif
+
+

依赖配置

+
    +
  • 需要安装 Poweramp,地址参考 5.1
  • +
+

7.3 通过小爱同学执行 Tasker 命令

+

功能描述

+

因为手机上的小爱同学进行理解时,可以通过 Logcat Entry 功能监测到语音生成的文本。所以,我们可以向手机的小爱同学说特定文本,执行 Tasker 某条『任务』。

+

配置思路

+

以下配置基于 Mi10,MIUI12,其他手机或需要另行修改。同时建议给小爱添加自定义回复,避免小爱回复『听不懂,请重说一遍』。

+

通过 Logcat Entry 检测小爱同学转换的文本

+
    +
  • Component:XmodeTextView
  • +
  • Filter:setTextWithAnimation{要转换的文本}
  • +
+

依赖配置

+
    +
  • 无需 Root,但 Logcat Entry 需要 adb 开启
  • +
+

7.4 扫描特定 NFC 卡片打开体重秤连接界面

+

功能描述

+

每天早上我会测量记录体重体脂状况,而每次『打开手机-找到NF-切换 Tab-点击体重 』实在是太麻烦了...

+

利用 Tasker 则可以极大地简化这个流程,起床后把手机放在桌面特定的位置(下面有 NFC Tag),然后站到体重秤上,体重体脂数据就会自动同步到手机。

+

NF For Mi Band 支持的体重秤版本如下:

+
+

Since 7.3.6 Notify app version these scales are supported

+

Please notice, if you are using also the official app of the scale there could be some conflicts. We suggest use only one app (notify or the official app)

+

Xiaomi Mi Scale 1
+Full support

+

Xiaomi Mi Scale 2
+Full support
+Body values (fat, water, ...) are calculated by cloud notify server. We never save / redistribute any user data on cloud server.

+

Yunmai Scale Mini
+Does not support offline data sync. Can measure values only when is connected.

+

Yunmai Scale SE
+Does not support offline data sync. Can measure values only when is connected.

+

Beurer BF700 & BF800
+Full support

+

Beurer BF710
+Full support

+

Runtastic Libra
+Full support

+

Sanitas SBF70
+Full support

+

SilverCrest SBF75
+Full support

+
+

配置思路

+
# 类别是 Send Intent,下面是具体参数设置
+Package: com.mc.miband1 # NF 的包名
+Class: com.mc.miband1.ui.main10.health.WeightActivity # NF 里面体重秤的 Activity
+Target:Activity
+
+

包名、当前页面的 Activity 都可以通过开发者助手(com.toshiba_dealin.developerhelper) - 1.2.1 - 应用 - 酷安网获取。

+

依赖配置

+
    +
  • 手机支持 NFC(或者你采用其他触发条件也行)
  • +
  • 需要安装 Notify&Fitness for Mi Band,并且自己有支持的体重秤
  • +
+
+

结语

+

我曾经在知乎搜索过『Tasker 有什么有趣的玩法』这个问题,不过下面的回答多是 2015、2016 年的,时效性大打折扣。

+

在国内平台上,受制于 Google 套件和 kx 网络,Tasker 的相关资料比较少,这里要特别感谢少数派@Fairyex 等几位作者写的 Tasker 分享,比较受启发;在国外的平台上,则要感谢 Reddit 上的作者和热心网友了,提供了很多资料与思路。

+

随着 Tasker 自身的更新和第三方应用的完善,相信 Tasker 会有更多的可能。非常希望大家能够在评论区分享出自己的玩法,供更多朋友参考!

+

配置链接:https://www.jianguoyun.com/p/Ddu1CC8QyODhBxiB1sID

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/220504-Start/index.html b/post/220504-Start/index.html new file mode 100644 index 0000000..4703305 --- /dev/null +++ b/post/220504-Start/index.html @@ -0,0 +1,288 @@ + + + + + + +写在迁移之前 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 写在迁移之前 +

+ + 写在迁移之前 + +
+
2022-05-04 · 2 min read
+ + + + 杂记 + + +
+
+

大学时我曾经有一个搭在阿里云上的 WordPress 站点存放着历史的文章,一年一百多的价格也还可以接受。但毕业之后,一方面折腾的心思变少了,一年也更新不了几篇文章;另一方面,续费的价格直接升到了 1300 左右,想想这个投入产出比,遂将老站关停。

+

编程和写作是我们这个时代普通人最容易接触的杠杆,所以——还是应该尝试努力输出。

+

作为一个懒人,让我能坚持做一件事的前置条件是我可以把这件事的门槛放到很低。Hexo 虽好,但对我一个偶尔写代码的人而言还是有点复杂了,挫伤了输出的积极性。

+

选择 Gridea 就是因为它足够简单,有个客户端可以直接开始写。不过也不是没有顾虑,看作者上一次更新还是在 2020.10,比较担心后续没有人维护。

+

但,Anyway,先写了再说。

+

这个博客还是打算放一些和工作无关的折腾的内容,之前历史的文章也会逐步迁移过来。

+
+

好风凭借力,送你上青云。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ +
+
+
+ +
+
+
+ +
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/about/index.html b/post/about/index.html new file mode 100644 index 0000000..3cf5ab1 --- /dev/null +++ b/post/about/index.html @@ -0,0 +1,327 @@ + + + + + + +关于 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 关于 +

+ +
+
2022-05-04 · 1 min read
+ +
+
+
+

欢迎来到我的小站呀,很高兴遇见你!🤝

+
+

🏠 关于本站

+
    +
  • 擅长多平台各种自动化工具(捷径、Quicker、Tasker、RPA..)的一个懒人。
  • +
  • 生命的第一目标是有更多姿的体验。
  • +
+

👨‍💻 博主是谁

+

⛹ 兴趣爱好

+

📬 联系我呀

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/bei-fen-shou-ji-wei-xin-liao-tian-ji-lu-dao-dian-nao-jie-jue-ti-shi-wen-ti-dang-qian-wang-luo-huan-jing-fu-za-qing-chang-shi-shi-yong-qi-ta-wang-luo/index.html b/post/bei-fen-shou-ji-wei-xin-liao-tian-ji-lu-dao-dian-nao-jie-jue-ti-shi-wen-ti-dang-qian-wang-luo-huan-jing-fu-za-qing-chang-shi-shi-yong-qi-ta-wang-luo/index.html new file mode 100644 index 0000000..f20bcb4 --- /dev/null +++ b/post/bei-fen-shou-ji-wei-xin-liao-tian-ji-lu-dao-dian-nao-jie-jue-ti-shi-wen-ti-dang-qian-wang-luo-huan-jing-fu-za-qing-chang-shi-shi-yong-qi-ta-wang-luo/index.html @@ -0,0 +1,360 @@ + + + + + + +备份手机微信聊天记录到电脑,解决提示问题"当前网络环境复杂,请尝试使用其他网络" - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 备份手机微信聊天记录到电脑,解决提示问题"当前网络环境复杂,请尝试使用其他网络" +

+ +
+
2023-04-09 · 2 min read
+ + + + 雕虫小技 + + + + + 杂记 + + +
+
+

测试设备

+
    +
  • Windows 微信 3.7.6.44
  • +
  • Android 微信 8.0.34
  • +
  • 红米 K50,MIUI 13
  • +
+

背景

+

我有一个持续了三年的习惯——每周备份当周的微信聊天记录。但微信的备份功能做得实在是很烂,经常遇到网络问题:

+
    +
  • 当前网络状况复杂,请尝试使用其他网络
  • +
  • 提示手机和电脑的网络不一致( 明明都在同一个 WIFI 下,备份界面显示的网络名字也一致)
  • +
  • ...
  • +
+

在互联网上搜了一下,解决方案也无非是:

+
    +
  • 重启微信/手机
  • +
  • 给予地理位置权限(Android)/给予 Local Network 权限(iOS)
  • +
+

但实操下来不能百分百解决问题。

+

真正的解决方案

+

按照下面的步骤来操作,我这里从未失败过。

+

前提

+
    +
  1. 手机和电脑在同一个 WIFI 下面(2.4G 和 5G 最好区分开)
  2. +
  3. Android 给予了微信定位权限(因为定位权限里包含部分 WIFI 的信息),iOS 给予了微信 Local Network Access 权限
  4. +
  5. Android 的定位开关为开启状态。
  6. +
+

遇到网络问题,提示无法备份

+
    +
  1. Kill 掉微信的进程,要到应用信息页面『结束进程』,在 MIUI 上是『长按图标』=>『应用信息』=>『结束运行』
  2. +
  3. 微信 PC 版本点击『迁移与备份』=>『迁移』(没错,先使用迁移,而不是备份)。
  4. +
  5. 迁移一个体积很小的聊天记录,让手机和电脑之间完成通信过程。
  6. +
  7. 等待迁移成功后,点击『备份』,通常这时就不会有网络问题了。
  8. +
+
+

如果还是无法解决?建议重新检查上面的步骤。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/duo-ping-tai-wei-xin-shi-pin-hao-zhi-bo-xia-zai-fang-fa/index.html b/post/duo-ping-tai-wei-xin-shi-pin-hao-zhi-bo-xia-zai-fang-fa/index.html new file mode 100644 index 0000000..8db1abe --- /dev/null +++ b/post/duo-ping-tai-wei-xin-shi-pin-hao-zhi-bo-xia-zai-fang-fa/index.html @@ -0,0 +1,351 @@ + + + + + + +多平台微信视频号直播下载方法 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 多平台微信视频号直播下载方法 +

+ +
+
2022-05-15 · 4 min read
+ +
+
+

昨日晚上在外面吃饭时发现有两个比较感兴趣的老师都在视频号做直播,两边的内容都想听,但无奈只有一台手机,也没办法确定之后是否有回放,遂生下载微信视频号直播随后观看的想法。

+

下载微信视频号直播大体可以分成三步:

+
    +
  • 抓包获取视频号直播推流地址
  • +
  • 调用下载器下载,最后生成一个 flv 文件
  • +
  • 将 flv 转码成 mp4 文件
  • +
+

抓包获取视频号推流地址

+

核心是在各个平台上设置 https 抓包,推流的 URL Host 为 http://voipfinderliveplay.wxqcloud.qq.com,按这个地址过滤就可以直接找到可以下载直播视频流的 Url。

+

Windows 平台

+

Fiddler配合Proxifier抓包PC客户端HTTPS明文数据 - 飘易博客

+

在电脑上打开直播的视频号,使用 Fidder 抓包。

+
可以用 '@voip' 过滤
+

Android

+

Android 7.0 + 抓包比较麻烦,要么需要 Root 迁入证书,要么使用平行空间等创建一个虚拟环境来抓包。我自身手机是 Root 过的,就直接将 http canary 的证书迁入系统即可。

+

安卓11 httpcanary小黄鸟系统证书的安装_哔哩哔哩_bilibili

+

http canary 安装完毕后,针对微信抓包即可。

+

iOS

+

iOS 上抓包 https 相对来说非常简单,我是使用 Stream 来完成的。

+

IOS抓包工具Stream——让移动端的抓包变得轻而易举 - 温一壶清酒 - 博客园

+

调用下载器下载 flv 文件

+

原则上在什么设备上拿到了视频号地址,那可以直接在对应的设备上使用下载器下载。

+

但手机的网络不太稳定,所以我更倾向于统一用电脑下载,在电脑上我使用的下载器是 IDM。

+

使用IDM下载直播视频-IDM中文网站

+

利用 Quicker 的长链接功能实现手机远程调用电脑上的 IDM 完成下载。

+

动动嘴就能下载文件,我用快捷指令 + Quicker 实现远程操作 - 少数派

+
Quicker 长链接调用 IDM 下载
+

创建下载任务成功的通知我没有使用 Bark App,而是发送到了企业微信的应用,这样我的多台设备都可以收到通知。

+

用 Tasker 实现收到 Android 手机短信自动转发到微信 | Tasker 配置教程站

+

然后 Android 上通过 FV 悬浮球调用,iOS 上通过捷径调用。

+

利用长连接实现手机与电脑的剪贴板文本交换【fooView】【仅限文本】 - Quicker
+同步剪贴板 - 动作信息 - Quicker

+

将 flv 转码为 mp4

+

想要得到视频号直播的 flv 文件,通常有两种方法:

+
    +
  • 等待视频号直播结束,则下载也会自动结束。
  • +
  • 提前结束 IDM 的下载,到缓存文件夹找到下载内容,重命名后缀为 .flv
  • +
+

但不论是哪种 flv 文件,用普通的播放器播放时进度条基本失去了作用,这主要是因为:

+

如何录制木有弹幕木有水印的直播? - freejishu的美丽世界

+
+

这个时候,使用大多数播放器就可以播放了,原汁原味的流,味道怎样?

+

不过,我们发现在播放器内快进快退、播放条等和时间有关的功能失去了作用。原因很简单,就是这种flv流的时间帧数据并不是从0分0秒000开始的(你总不可能主播一开播你就开始录制,而且直播平台大概率会吃掉前1-2秒的流)。我们还需要做一些处理。

+

6、处理录制文件

+

MediaCoder这个时候就要排上用场了。MediaCoder不仅支持CUDA编码加速,而且可以复制流,乃处理这种flv的神器了。

+

我们把待处理的flv拖进去,找到下面视频选项卡,勾中“复制视频流”,再找到音频选项卡,选择“复制音频流”。其他设定随意,别忘了改一改保存地址,然后Start就可以了。

+
+

可以用 Mediacoder 处理,或者是小丸工具箱。

+

如果你需要将视频转成文字版快速浏览,可以省去转码这一步,直接上传 flv 文件到飞书妙记,照样可以识别文字、音视频也可以正常播放。

+

年度征文 | 节时提效,用飞书妙记提升学习体验 - 少数派

+
+

以上。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu/index.html b/post/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu/index.html new file mode 100644 index 0000000..8c43a49 --- /dev/null +++ b/post/liao-liao-gao-jing-du-yin-shi-pin-zhuan-wen-zi-gong-zuo-liu/index.html @@ -0,0 +1,588 @@ + + + + + + +精准转写:利用 Whisper 处理音视频转文字-不完全指南 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 精准转写:利用 Whisper 处理音视频转文字-不完全指南 +

+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +
+
2023-10-15 · 19 min read
+ + + + 雕虫小技 + + + + + 杂记 + + +
+
+

背景

+

前阵子女朋友去读研,授课是全英的,加之又有很多专业名词,有时就会出现理解能力跟不上讲课速度的情况。

+

因此借助课堂回放/录音复习也变成了一项每周必做的工作,但是完全回看一个三小时长的课程显然是不现实的,所以,音视频转文字就成了必选项。

+

方案选择

+

商用 ASR 服务大多难以实现高精度转写

+

我是飞书妙记的会员,所以遇到了这个需求,我马上想到先用妙记试试。

+

然而,尝试转录的结果表明,妙记在专业课程上的转录准确度相当差,无法满足通过文字转录来提高复习速度的需求。

+
妙记转录结果:词汇未转录、转录错误问题频发
+

其他商用服务(如通义听悟、讯飞听见、Notta 等)的转录效果和飞书妙记差不太多,大体原因有三点:

+
    +
  1. 手机远距离收音比较差,音频文件质量不高。
  2. +
  3. 一般的商业自动语音识别(ASR-Automatic Speech Recognition) 服务主要面对会议等日常场景。但若音频内容含有过多的专业词汇,此类 ASR 服务则有点力不从心了。
  4. +
  5. 商业 ASR 服务需在速度、准确性和成本之间取得平衡,高准确度通常需要以成本变高、速度变慢作为代价。
  6. +
+

基于问题 2 和 3 ,我放弃了继续寻找其他商业 ASR 服务的想法。

+

Whisper 的惊艳效果

+

因为平时业务里我自己基于 OpenAI 发布的 Whisper API 写了不少工作流,所以我又试了试 Whisper(Large-v2)的转录效果。——非常惊艳,甚至连符号的写法(theta_i^t)它都转写了出来。

+
Whipser LargeV2 转录结果:精度高到甚至照顾到了符号写法
+

这里简要介绍一下 Whisper,Whisper 是 OpenAI (没错,还是 chatGPT 背后的公司)在 2022 年 9 月开源的音频转文本的模型,它的转写精确度非常高。

+

但想使用 Whisper 进行转写也并非易事。它有两种实现方式:云端 Or 本地。

+

云端转写的优势在于不会受到本地机器性能的限制,且速度相对较快。但它存在两个问题:

+
    +
  1. 项目处理流程复杂:OpenAI 的 Whisper API 限制单次请求的音频大小为 25Mb,而一节 3h 的音频通常都会有大几十 MB。这就需要对音频先做分段处理,再请求结果,最后合并结果。如果是 mp4 文件则还需要从中抽取音频文件,这个过程里没少踩坑。
  2. +
  3. 成本问题:OpenAI 的 Whisper 模型 1min 收费 0.006 美元,1h 的音频按照 7.3 的汇率需要收费 2.7 元。坦白讲,Whisper 的 API 价格非常便宜了,几乎只是 Google Speech2Text API 的四分之一。但是,如果我们假设有 5 门课程,每堂课长 3小时,每周有一次课,那么每个月的转写成本 = 5 x 3 x 4 x 2.7 = 162 元,这个价格还是有点肉疼。
  4. +
+

本地转写的话倒是没有上述两个问题,但本地转写的麻烦之处在于:

+
    +
  1. 笔记本上缺乏好的硬件:纯 CPU 模式跑 Whisper 速度非常慢,3 小时的音频可能需要十几个小时才能转写完毕。如果想用 GPU 加速,根据Whisper 模型显存需求表格,官方的 Whisper-large 模型需要 10G 显存,我这台核显本实在是力不从心。后续的 Whisper cpp 项目 倒是大幅降低了内存需求,但这也引出了第二个问题。
  2. +
  3. 环境部署复杂:OpenAI 开放的毕竟是项目代码,自己写代码适配的成本还是有点高。Whisper 的 GUI 客户端在 Mac 上不少(Whisper Transcription、MacWhisper..),Windows 上也有 Buzz ,然而要找到一个支持 GPU 加速的客户端依然十分困难。
  4. +
+

且不论是云端转还是本地转,上述方案只是实现了音频转文字的过程,但却少了一个直观的用户界面,帮助我们快速通过文字理解音频内容。

+

一个理想的转文字结果页面可以借鉴妙记的设计:

+
    +
  • 左侧是音视频播放,而右侧是完整的字幕方便阅读。
  • +
  • 在点击字幕时,能立刻跳转到对应的音频位置进行播放。
  • +
+

Potplayer 的字幕浏览器倒是能变相实现这个效果,但它文本一长就被截断了,也就是勉强能用的程度。

+
PotPlayer 自带的字幕浏览器 Alt+E
+

Memo,可能是目前最好用的 Whisper 客户端

+

后来某天逛小众软件的时候发现了 Memo AI 的内测,它的功能刚好能满足我的需求。

+
    +
  • 不论 Mac 还是 Windows,调用 Whisper 都支持 GPU 加速。哪怕核显本也能有不错的速度。
  • +
  • 结果页面既可以快速浏览全部转写内容,也可以点击字幕跳转播放。
  • +
  • 字幕支持一键翻译,双语对照更方便。
  • +
  • 进一步做了批量转写、AI 对话等功能。
  • +
+
Memo 页面截图
+

这可真是刚想瞌睡就有人送枕头。有了 Memo 之后,下面就可以介绍我们整个转录工作的流程了。

+

操作流程

+

音视频文件来源

+

音视频文件主要有两种来源:学校提供的课程视频回放、手机/录音笔的录音结果。

+

课程视频回放下载

+

某些课程在 Canvas LMS 平台上提供了视频回放的功能,但却没有视频下载的选项。

+

不过网站视频的下载也并不困难,视频是基于 m3u8 的,并且没有加密。只需要获取到 m3u8 地址,随后使用 m3u8下载器就能把视频下载到本机。

+

至于提取视频url的工具,我推荐使用 xifangczy/cat-catch: 猫抓 chrome资源嗅探扩展。通过使用“猫抓”,可解决大约 80% 的网页视频下载问题。

+

m3u8 下载器则推荐 N_m3u8DL-CLI,一键搞定。

+

录音

+

没有提供视频回放的课程只能通过自己录音来解决。设备不外乎两种:手机或者录音笔。

+

至于具体选什么设备,这里得根据自己的情况来确定。

+

通常,手机的远距离收音效果比较一般。在课堂这样的场合,如果不能坐在前排,老师的声音往往会被其他噪音掩盖。

+

录音笔的效果通常会比手机更好,一般 100-200 元的价格就可以满足需求。

+

如果是部分留学&专业课程场景,不建议为了实时语音转文字功能而选择某些录音笔,可能会有三个比较大的问题:

+
    +
  1. 实时转写准确度很差:从理论上讲,实时转写的难度更大,而非实时的商用 ASR 服务转写的准确度已经是那个德性了,那么在专业课场景下,实时转写几乎毫无用处。
  2. +
  3. 人在境外可能会有网络问题:实时转写实际上是把录到的音频发送到制造商的服务器,服务器再把转译结果发送回来。但很多厂家的服务器都在国内,如果人在国外,可能经常会遇到网络中断的问题。
  4. +
  5. App 的维护差:目前,主打免费实时语音转文字的录音笔通常都配有相应的客户端,但这些客户端的长期稳定性很难让人放心。像讯飞的录音笔就硬生生地拆出了三个独立的手机应用(极智、听见、语记),不同的录音笔只能连接特定的应用,而有的应用在 iOS 上已经下架一年多了。。
  6. +
+

文件前置处理(可选)

+

降噪&响度均衡&人声增强

+

有时, 录音效果可能比较尴尬。这可能是由于手机的收音能力较弱,或者是录音位置与声源之间的距离过大。这种情况下,我们可能会遇到以下问题:

+
    +
  • 在录音中,目标声源的音量过小,以至于无法听清楚。
  • +
  • 录音中存在大量噪声。
  • +
  • 录音中前后两部分的声音音量存在很大差异,导致播放时声音大小起伏不定。
  • +
+

因此,在进行转录前,最好先对音频进行一些处理,这可以有效提升 Whisper 转录的效果。我主要做三个操作:人声增强、降噪、响度均衡。

+

具体的软件在 Windows 上我使用 Pr,在 Mac 上我使用 Final Cut Pro。

+
Pr2020,选项和数值仅供参考。
+
Final Cut Pro, 选项和数值仅供参考。
+

去除大段空白

+

下载的课程回放视频通常都包含 20 至 30 分钟的课间休息时间,我通常会选择把这部分片段从视频里切掉。这么做有两个目的:

+
    +
  1. +

    减小文件体积:一个 3 小时的回放视频大约占据 1.5G 的空间,移除 30 分钟的视频可以节省约 200M 的存储空间。

    +
  2. +
  3. +

    降低 Whisper 出现幻觉的可能:虽然 Whisper 的转写精度相当高,但它偶尔也会出现幻觉——即从某一时间点开始,转录文本会不断重复某句话。而大量的空白时间可能会触发这种幻觉。

    +

    手动删除空白时间段内容是一种很糙的解决方案,更优雅的方案是结合声音活动检测(VAD, Voice Activity Detection) 来做转写,自动忽略掉空白时间段。(开发者说 Memo 的后续版本会接入 VAD)

    +
  4. +
+

至于切视频,可以使用 Pr/FCP 等剪辑软件,但这种方式需要重新编码处理后的视频,比较耗时间。愿意折腾一下的话此处建议使用 ffmpeg 通过复制流的方式来做,通常 3 小时的视频文件切掉空白只需几秒钟。

+

核心的命令为两个:

+

从视频里提取特定时间段

+
$$ffmpeg -i "{OriFileLoc}" -ss {RangeTimeStart} -to {RangeTimeEnd} -c:v copy -c:a copy "{OriFileParDir}\temp\temp_video_{temp_video_index}{OriFileExtension}"
+
+

利用 concat 衔接多个视频(格式一致)

+
$$ffmpeg -y -hide_banner -vsync 0 -safe 0 -f concat -i "{OriFileParDir}\temp\fileList.txt" -c copy "{OriFileParDir}\RmBlank_{OriFileName}{OriFileExtension}"
+
+

你可以把本地文件地址丢给 chatGPT 让他直接给你生成最终的命令,抑或使用 QuickCut: Your most handy video processing software 或者我编写的 Quicker 动作

+

确定 Prompt

+
Memo 里 Whisper 的转写选项
+

Whisper 的 Prompt 和 chatGPT 的 Prompt 是两种东西

+

与传统的 ASR 模型不同,Whisper 在某些情况下可以借助 Prompt 提升音频转文字的准确度。

+

虽然同属于 OpenAI,但 Whisper 和 chatGPT 的 Prompt 差别非常大。

+

如果 Whisper 的 Prompt 是 "请尽力保持每句话的完整 并给每句话都添加标点符号",你会发现这句 Prompt 没有任何作用,Whisper 的转录结果里可能还是会出现大量中断的句子,或者转录结果无标点。

+

这是因为 Whisper 是在尝试学习 Prompt 里的“风格(style)”,而非具体的指令。

+

那什么是 Prompt 的“风格”?

+

根据 Whisper 的 cookbookWhisper prompt 的 issues 和我的实际体验,Prompt 的风格可以表现在下面几个方面:

+

风格 1:Prompt 里是否包含标点符号。

+

Whisper 的转录结果有时会缺乏标点符号,这个时候你可以使用带标点符号的 Prompt 的来引导 Whisper 添加标点。

+
    +
  1. “生于忧患,死于安乐。岂不快哉?”
  2. +
  3. “请为转写的文本添加标点符号”
  4. +
+

Prompt 1 是有意义的,Prompt 2 是无意义的。

+

不过 Whisper 也不是能每一次都学会 Prompt 的风格添加标点符号。实测在 Whisper-large v2 模型下,通常英文内容使用 prompt 可以为结果添加标点,中文内容则要看运气。

+

风格2:一些容易拼写错误的人名、产品名、公司名

+

这里比较好理解,不同的词汇可能会有同一个发音。你可以在 Prompt 里指定你希望的拼写格式。

+

比如一段对话里提到了张三和李四,而“张三”的音同“章三”、“樟叁”...

+

那 Prompt 里就可以包含 “张三,李四。”

+

风格3:是否包含一些填充词(filler words)

+

这里直接引用官方的说法来解释,翻译成中文会有点怪异。

+
+

The model may also leave out common filler words in the audio. If you want to keep the filler words in your transcript, you can use a prompt that contains them: "Umm, let me think like, hmm... Okay, here's what I'm, like, thinking."

+
+

风格4:简体中文和繁体中文

+

因为中文有两种,有的时候 Whisper 会把音频以繁体中文的形式转录。此时用简体中文来陈述 Prompt 大概率可以解决此问题。

+

一般建议 Whisper 的 Prompt 语言和转录的音频语言一致。即英文音频用英语 Prompt,中文音频用简中/繁中 Prompt。

+

风格5:通过对话风格的 Prompt 变相实现转录结果区分说话人

+

这个技巧来自于 prompt vs prefix in DecodingOptions ,有的时候会有效果。

+

单纯的 Whisper 模型并不能在转录结果里区分出说话人,想要区分说话人,一般会配合 Pyannote 来做。但在某些场景下,我们可以通过 Prompt 来变相实现区分说话人——每一句的转录结果都属于单个说话人,不会出现某一句的转录结果属于多个说话人的情况。

+

方法就是用一个对话式的 Prompt:

+
    +
  • “- How are you? - I'm fine, thank you.”
  • +
  • “- 吃了没?- 吃了。”
  • +
+

播客这种场景可以试试。

+

Whisper Prompt 的其他 Tips

+
    +
  • +

    Whisper 的 Prompt 应该尽可能长一些,太短的 prompt 的风格难以学习。

    +
  • +
  • +

    Whisper 的 Prompt 只会使用 224 个 token,如果超过 224 个 token 则会默认使用最后 224 个 token。token 的概念可以参考这篇文章,但 Memo 的 Prompt 直接限制了字符串长度,这里就不用在乎 token 长度了,只需要尽量让自己的 prompt 完整输入到 Memo 输入框里就行。

    +
  • +
  • +

    Whisper 的 Prompt 最好和音频的源语言一致。

    +
  • +
+

怎样快速生成 Prompt?

+

因为我主要转录的是课程内容,所以我的 Whisper Prompt 通常会使用这节课的关键词列表。如果课程有讲义 pdf 文件,我会直接把它丢给 Claude,然后:

+
summarize the file, response me with format like :"keyword1, keyword2, keyword3,keyword4.."
+
+

如果课程没有讲义,我会手动输入几个关键词,或者直接从课本里随便挑一段话作为 prompt。

+

转写

+

模型选择

+

Whisper 转写需要指定模型。模型越大,转写越精准,转写速度越慢。

+
Whisper 模型与说明
+

GPU 加速

+

Memo 在 Windows 和 Mac 上都实现了 GPU 加速。

+

Windows

+

Windows 电脑如果是独显机器大部分应该没什么问题,部分显卡的测试转录速度如下:

+
+
    +
  • RTX4090 显卡在 Large 模型下转录 1.2 小时音频时间为 7 分钟
  • +
  • RTX3080Ti 显卡在 Large 模型下转录 1.2 小时音频时间为 8 分钟
  • +
  • RTX3080Ti 显卡在 Large 模型下转录 0.4 小时日漫时间为 2 分钟
  • +
  • RTX3060 laptop 显卡在 Large 模型下转录 1.2 小时音频时间为 20 分钟
  • +
  • RTX3060 在 Large 模型下转录 1.2 小时音频时间为 12 分钟
  • +
  • 6600XT 显卡在 Large 模型下转录 1.2 小时音频时间为 11 分钟
  • +
  • 5700XT 显卡在 Large 模型下转录 1.2 小时音频时间为 15 分钟
  • +
+
+

如果你的电脑只有核显,那可能会遇到显存不足的问题。

+

但这里如果是 AMD 的核显,你可以尝试在 Bios 里调整显存大小。(高风险行为,谨慎操作)

+

游戏爆显存?显示器黑屏花屏?BIOS没有调整选项?AMD核显显存大小调整教程(UniversalAMDFormBrowser
+AMD台式及笔记本改核显显存教程,核显还只有512M?

+

我手里的笔记本是 R7-6800H,32G 内存,出厂分配 4G 作为 GPU 显存。在 Large 模型下,开启 GPU 加速后显存会占满,转录时长:音频时长大概等于 1:2 。

+

我尝试把显存开到 8G,跑 Whisper 时大概会占用 6G 显存,但速度相较于 4G 显存无提升。所以如果调整 Bios 的显存大小,通常调整到 4G 就足够使用了。

+

Mac

+

Intel 的机器我手上没有,主要分享一下 M 系列的机器速度。

+

M 系列的 GPU 加速倍数近似和 GPU 核心数成正比:

+
    +
  • M1 Max 32 gpu core ,转录时长:音频时长 = 1:12
  • +
  • M2 Pro 16 gpu core,转录时长:音频时长 = 1:6
  • +
+

Mac GPU 核心数对比可参考 Mac processor comparison: M1 & M2 vs Intel | Macworld

+

使用 Whisper GPU 加速时,除了消耗 GPU,同时也会消耗大量内存。我用 Large 模型时 Memo 占用 6.4 G 内存。

+
Whisper Large GPU 加速时内存占用 6.4G
+

转写结果优化处理

+
Whisper 原始转录结果
+

如果是在为视频创建简易的字幕文件,那到这里基本可以收工了。但如果是在为需要快速阅读全文的课程或会议等场景进行操作,那么此处可以对转写结果做一些优化,主要解决两个问题:

+
    +
  1. 有的句子被拆分成了两行,调用翻译的时候不方便。(比如 00:15-00:19)
  2. +
  3. 每行的字数太短,读起来很累。最好是有个段落模式,每个时间点的内容多一些。
  4. +
+

开发者说这两个功能未来的版本都会实现,但在没实现之前只能靠我们自己来处理了。我写了一段 Python 的脚本将原始的字幕转换成段落模式的字幕:Adjust_SubTitle: 调节 Whisper 转录生成的 srt 文件,避免一句话被分成两行,避免一句话过短。

+

你可以导出原始转录的 srt 文件,然后修改 AdjustSrt.py 里的 srt 文件路径,运行脚本后会自动在原始路径下生成段落模式的 srt 的字幕。最后只需重新创建 Memo 任务,同时指定需导入的音频和字幕文件即可。

+
合并句子成段落
+

因为段落模式的实现逻辑是基于原始转录结果里的标点符号,所以运行脚本的前置条件是 Whisper 生成的字幕里有标点

+

除此之外,基于标点符号的段落模式只能用于只有一个说话人的情况。否则可能会导致一句话里出现了多个说话人,容易造成误解。

+

潜在问题与更多场景

+

Whisper 的不足

+

虽然 Whisper 结合上下文的能力很强,转写准确度非常高。但 Whisper 也有两个比较麻烦的问题:

+

令人头疼的幻觉问题

+

所谓“幻觉”是指 Whisper 转录的文本和音频不相关,而是在不断重复之前的转录结果。

+
Whisper 幻觉:重复某一句话
+

我体验下来目前主要是两种情况会造成幻觉:

+
    +
  1. 大段的空白内容。
  2. +
  3. 低录音质量,有比较大的噪音。
  4. +
+

1 比较好处理,Memo 之后会引入 VAD 自动过滤空白内容。

+

同时根据 Ignore repeated prompt by heimoshuiyu · Pull Request #1253 · openai/whisper 这个 issue,设定 --condition_on_previous_text False ,也就是不让 Whisper 用前文的转写结果转录后面的音频,也能降低空白引起幻觉的概率,但代价是丧失了 Whisper 在上下文理解上的优势。(开发者说后续会开放此参数。)

+

但 2 目前还没找到比较好的解决方案,只能是再尝试对音频调整降噪、人声增强的强度试试..

+

薛定谔的标点符号

+

从天梯榜上看,Whisper 的英语转录效果名列前茅,而对于中文的转录效果在中等水平。

+

上文提到过,如果是英文音频,那合适的 Prompt 大概率可以给转写结果添加标点,但中文音频则有概率无法添加标点。此时就比较尴尬了,我也没有找到比较好的解决方案,如果有朋友知道怎么解决,欢迎评论区里分享。

+

我曾经尝试利用 gpt 3.5 来给生成的文本添加标点符号,但由于 gpt 也存在幻觉,它经常直接将文本合并,然后时间戳和文本就对不上了。。如果用 4 的话成本则有点高。

+
Whisper 在不同语言的转写效果,数值越低越好。
+

适合使用 Whisper 的人群

+
    +
  • 对音频转文字有强需求,同时愿意用更长的时间换更高的转写精度。
  • +
  • 对隐私敏感,音频不能传到互联网的场景。
  • +
  • 手里有不错的电脑设备(16G 内存+,能开启 GPU 加速)。
  • +
+
+

希望这篇分享对你有所帮助,以上。

+
+

同步首发于 精准转写:利用 Whisper 处理音视频转文字不完全指南 - 少数派,沟通交流可以移步少数派方便点。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/man-bu-zhe-yin-xiang-hong-wai-jie-ru-home-assistant-ji-lu/index.html b/post/man-bu-zhe-yin-xiang-hong-wai-jie-ru-home-assistant-ji-lu/index.html new file mode 100644 index 0000000..e303082 --- /dev/null +++ b/post/man-bu-zhe-yin-xiang-hong-wai-jie-ru-home-assistant-ji-lu/index.html @@ -0,0 +1,342 @@ + + + + + + +漫步者音箱红外接入 Home Assistant记录 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 漫步者音箱红外接入 Home Assistant记录 +

+ +
+
2022-05-08 · 5 min read
+ +
+
+

背景

+

最近买了一对漫步者 RT-1700 作为桌面音箱,该音箱可以通过有线和蓝牙接入,但想切换需要使用自带的红外遥控器。

+

这对于一个懒人而言,实在是太不方便了。

+

很自然地想着可以通过模拟红外信号将其接入到米家中。正好家里有一个小米空调伴侣 2 代,所以通过米家的『自定义遥控』的功能实现了模拟音箱遥控器的所有功能。

+

虽然通过接入米家的方式实现了音箱的在线控制,但不论是通过手机还是小爱音箱控制,这个过程于我而言还是有点麻烦了。我日常都是在电脑前工作,手机其实很少使用,所以家里的多数设备都是在 Quicker 使用 Home Assistant 的 API 来进行控制的。

+

那,怎么才能把音箱接入到 Home Assistant 中通过 API 来控制呢?

+

思路

+

这个问题核心是在 HA 中怎样控制红外设备

+

目前我的 HA 中有一个小米空调伴侣 2 代,而它在米家上是支持学习自定义的红外信号的,所以很自然的想法是在 HA 中让空调伴侣也学习音箱控制的红外码。

+

幸运的是,找到了一些空调伴侣接入 HA 并学习红外码的参考资料:

+

Home Assistant 通过空调伴侣学习红外指令 - 博客 - binsite
+小米空调伴侣2 插件接入HA - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz!
+小米空调伴侣2Pro学习/复制的红外遥控怎么加入HA - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz!

+

但不幸的是,我的空调伴侣2在 HA 中安装的『支持 MCN02 的 miio 』插件总是失败,通过米家云端设备的接入的『自定义遥控』也是空有实体但无法控制的状态。

+

于是只能另寻思路,一番搜索发现:HA 中可以通过 Xiaomi Miot Auto 插件调用小爱同学,静默执行语音指令来变相实现通过 HA 发射红外码。

+

然后可以使用 Quicker、FV 悬浮球、Tasker、捷径等自动化应用调用 HA 的 API 实现音箱遥控的功能

+

那现在如果我想要控制音箱进行切换源等操作,我可以:

+
    +
  • 通过小爱音箱控制。
  • +
  • 在 Windows 上唤起 Quicker 面板,点击对应动作。
  • +
  • 在 Android 上唤起 FV 悬浮球面板,点击自定义的动作。
  • +
  • 在 iOS 上划出通知栏,点击对应捷径控制。
  • +
  • 通过米家 App 内控件控制。
  • +
+

基本满足了我这个懒人的需求。

+

全流程

+

1 在米家中添加自定义遥控

+

如果目前米家中有可以发射红外信号的设备(比如空调伴侣、万能遥控),则可以在米家首页点击➕号,搜索『自定义遥控』,逐个录入不同按键对应的红外码。

+

录完后可以给这个遥控自定义命名,之后它会作为一个独立的设备显示在米家中。比较遗憾的是,界面很丑并且不支持后期修改、增加按键,所以建议一次搞定。

+

2 在米家中设定自定义场景控制音箱

+

有几个按键,就需要有几个自定义的场景,注意要勾选『使用小爱进行控制』,还可以给它添加其他的文字作为语音唤醒的指令。

+

3 将小爱音箱接入到 HA 中

+

可以通过 hass-xiaomi-miot 项目将米家中的小爱同学接入到 Home Assistant 中,接入一个就可以了。

+

4 在不同的应用中配置通过 HA 的 API 执行命令的动作

+

在 HA 中的『开发者工具-服务』 里,可以通过以下配置尝试调用小爱音箱执行自定义的指令。

+
service: xiaomi_miot.intelligent_speaker
+data:
+  entity_id: media_player.xiaomi_lx04_7740_play_control
+  text: 音箱切换有线
+  execute: true
+  silent: true
+
+

而如果想通过 HA 的 API 来控制,需要做一定的转换。

+
比如在 Quicker 中的配置
+

在 FV 悬浮球和捷径中也是类似的请求。

+
+

多说一句,在 HA 通过调用小爱音箱静默执行命令原则上可以将米家的任意设备、任意场景都接入到 HA 中,布置起来相对简单,只是这样无法实时反映设备的状态,只能用于执行命令。

+

希望对你有所帮助,以上。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/windows-wen-jian-guan-li-qi-he-h265/index.html b/post/windows-wen-jian-guan-li-qi-he-h265/index.html new file mode 100644 index 0000000..91243c9 --- /dev/null +++ b/post/windows-wen-jian-guan-li-qi-he-h265/index.html @@ -0,0 +1,295 @@ + + + + + + +Windows 文件管理器和 H265 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ Windows 文件管理器和 H265 +

+ +
+
2022-07-14 · 2 min read
+ +
+
+

很早之前在 Win10 遇到的和 H265 相关的问题是不显示缩略图,解决方法往上比较成熟,安装Download K-Lite Codec Pack 即可。

+

最近业务需要,通过『要你命三千』从抖音/快手上下载了很多无水印的视频,其中一部分是 H264 编码,另一部分则是 H265 编码,在 Win10 文件管理器中预览不成问题。
+但好死不死的,我需要把它们统一拖进 Eagle 进行管理,Eagle 目前只能支持 H265 的收藏,但是不支持 Eagle 预览播放==...
+所以我需要把 H265 的视频转换成 H264,转换倒也不复杂,使用 HandBrake: Open Source Video Transcoder 就行。
+但问题是,怎么从 H264 和 H265 混合的视频文件夹里找出 H265 的视频文件呢?不然视频数量一多,H264 相当于白白浪费转换时间。

+

Finding which videos in a directory of various videos are H.265? - Page 2 - Windows 10 Forums
+英文搜索倒是找到了相似的问题,可惜当时没有解答。

+

几经尝试,最后还真找出了解决方案:

+
    +
  1. 安装 Icaros 3.3.0 Beta 3
  2. +
  3. 在文件管理器中勾选『Video tracks』列
    +Snipaste_2022-07-14_00-08-21
  4. +
+

以上。

+

参考文档

+

Eagle 支持哪些文件格式呢? - 知识库 | Eagle

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ +
+
+
+ +
+
+
+ + +
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/wordpress-qian-yi-gridea-ji-lu/index.html b/post/wordpress-qian-yi-gridea-ji-lu/index.html new file mode 100644 index 0000000..e337d7e --- /dev/null +++ b/post/wordpress-qian-yi-gridea-ji-lu/index.html @@ -0,0 +1,357 @@ + + + + + + +WordPress 迁移 Gridea 记录 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ WordPress 迁移 Gridea 记录 +

+ +
+
2022-05-06 · 6 min read
+ +
+
+

五一假期花了大概一天把之前放在 WordPress 上的历史文章迁移到 Gridea 上面,里面还是存了不少坑,这里做个记录。

+

基本流程

+

全套流程大概可以有以下几步:

+
    +
  1. 配置 Gridea 在 Github 的仓库和本地同步网络环境。
  2. +
  3. 导出 WordPress 中文章成 Markdown 系列。
  4. +
  5. 导入历史文章到 Gridea,并根据历史 URL 修改新 URL。
  6. +
  7. 给 404 页面添加 JS 脚本变相实现 301(重定向)。
  8. +
+

因为多数流程都可以在网络上找到,所以我只记录一些容易出现坑的地方。

+

配置 Gridea 云端仓库和本地同步网络环境

+

🤗 快速上手 | Gridea,安装的过程并不复杂,也有比较多的资料可供查询。

+

主要的问题在于 Gridea 本地同步经常提示 🙁 同步遇到了错误,请查阅 FAQ 或 Issues 来寻找解决方案

+

Github 在部分网络条件下是被墙了,连接非常不稳,想要流畅访问 Github 通常都需要挂代理。自然,Gridea 如果部署在 Github Page 上,想要稳定连接,最好还是走代理。

+

按照 0.9.2 版本的更新内容,Gridea 原则上支持直接使用系统代理,但实测结果是开着代理的条件下,完全抓不到 Gridea 同步时的包,『Gridea 使用系统代理』多少有点玄学了。

+

这里略微解释一下为什么会出现这个问题。

+

放在 Github 仓库的博客在本地是通过 Git 来同步的,而 Git 这种处于网络层的应用无法被上层类似于 Clash 这种代理软件管理网络流量,需要单独通过命令设置代理。(更多可以参考 git clone 网速过慢问题的两种解决方案 | CaryC Blog)

+

Gridea 对 Git 应该是做了一层封装,但是没有针对 Git 做网络代理配置。这就导致了在开启 Clash 等代理软件情况下,Gridea 的同步系统(Git)的网络流量实际上并没有被 Clash 接管,而是直接尝试连接 Github,自然同步也会经常出问题。

+

知道了原因,解决方案也就出来了,两个方向:

+
    +
  • 使代理软件接管更底层的网络流量,比如 Clash 的 Tun 模式(但 Issue 区也有反馈依旧失败的)。
  • +
  • 通过 proxifier 给 Gridea 单独设置网络代理
  • +
+

我自己是采用第二种方式的,缺点是想要同步时还需要把 Proxifier 提前打开。

+

当然,思路一还可以演化为使用路由器代理,直接接管电脑上的所有流量,不过这个显然门槛就更高了。

+

除此之外,还看到一个思路利用 Github Desktop 客户端来完成同步的,也是一种思路。

+

导出 WordPress 中文章成 Markdown 系列

+

WordPress文章导出迁移到Gridea | 孙建博的小站

+

我主要使用这篇文章中的方案将历史文章导出成 Markdown,麻烦的地方在于由于在 WP 使用了目录插件将文章可折叠的目录插入到了正文,文章导出后包含了部分 HTML 的内容,且格式混乱。

+
混入了部分 HTML 的内容
+

这个问题我没啥一键处理的方案,都是单个文件逐步处理。删一些文章,然后从原稿中粘贴过来。

+

实际上导出的 Markdown 里 Gridea 能识别的文档属性都在开头,所以其实过程就是保留开头,删除剩余,粘贴原稿。

+
文章信息
+

修改导入 Gridea 文章的 URL

+

因为历史文章的 URL 可能在多个地方已经被使用了,为了让这些导入的文章还能通过旧的 URL 访问,我们还需要花一定的功夫。

+

最理想的方法显然是在 Gridea 中直接使用旧的 URL。在 WP 中的文章 URL 我设置的是 https://zj1123581321.com/2020-10-12/239/ 这种形式,但 Gridea 中文章的默认设置是 https://zj1123581321.com/post/xxx,其中 xxx 为自定义的内容,不能包含『/』,所以这条路被堵死了。

+

这条路走不通,很自然地想到设置 301 跳转。可惜 301 跳转要么在服务器上做,要么在域名提供商处做。修改 Github 的服务器显然不现实,而国内阿里云也没有提供设置 URL 跳转的功能,所以这条路也是走不通的。

+

找了找资料,发现比较可行的方式是通过 404 页面的 JS 代码来实现变相访问,即判断如果用户是通过历史文章的 URL 进来的,通过 JS 使用户跳到文章现在的网址上。

+

所以我把导入 Gridea 的文章 URL 设置成 https://zj1123581321.com/post/2020-10-12239/,然后在 Gridea 文档路径/static/404.html中新增一段 JS 代码完成规则跳转。

+
  <script>
+  var url = window.location.href;
+  var OldWpUrlReg = /.*zj1123581321\.com\/\d{4}-\d{2}-\d{2}\/\d.*/i;
+  if (OldWpUrlReg.test(url)) {
+      console.log('检测到是历史 WordPress Url');
+      var new_url = url.replace('.com/', '.com/post/');
+      console.log(new_url);
+      var new_url = new_url.replace('https://zj1123581321.com/post/','JustForTemp');
+      console.log(new_url);
+      var new_url = new_url.replace(/\//g,'');
+      console.log(new_url);
+      var new_url = new_url.replace('JustForTemp','https://zj1123581321.com/post/');
+      console.log('跳转 url:' + new_url);
+      window.location.replace(new_url); 
+  }  
+  </script>
+
+

如今访问 https://zj1123581321.com/2020-10-12/239/ 就可以通过 404 页面中转一次,然后跳转到新的 URL 了。

+
+

希望对你有帮助,以上。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/zen-me-zai-win10-shang-jiang-xiao-nuo-ti-huan-wei-xiao-ai-tong-xue/index.html b/post/zen-me-zai-win10-shang-jiang-xiao-nuo-ti-huan-wei-xiao-ai-tong-xue/index.html new file mode 100644 index 0000000..c3fe436 --- /dev/null +++ b/post/zen-me-zai-win10-shang-jiang-xiao-nuo-ti-huan-wei-xiao-ai-tong-xue/index.html @@ -0,0 +1,295 @@ + + + + + + +怎么在 Win10 上将小娜替换为小爱同学? - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 怎么在 Win10 上将小娜替换为小爱同学? +

+ +
+
2022-05-14 · 2 min read
+ +
+
+

最近入手了一台米物 Art 键盘,上面有一个语音唤醒键。但是在 Win10 上,它默认唤醒的是小娜(Cortana),众所周知小娜在 Win10 上基本没用,所以自然产生一个想法:怎么把唤醒的小娜替换为小爱同学?

+

首先通过键位监测发现,键盘的语音键实际上是模拟了 Win+C 的命令实现调用小娜,那问题就转变成:如何使 Win+C 唤醒的是小爱同学?

+

自定义快捷键的应用我一直使用的是 HotKeyP,本来想直接添加一个命令行打开小爱同学的命令,但尴尬地发现小爱同学是 UWP 应用,没有 .exe 的文件,也没办法通过快捷方式调用。

+

所以问题又转换成了:如何通过命令行唤醒 UWP 的小爱同学?

+

How to open UWP apps from the command line on Windows 10

+

搜寻一番,通过上述文档找到了解决办法。

+
explorer.exe shell:appsFolder\8497DDF3.639A2791C9AB_kf545nqv09rxe!App
+
+

但往 HotKeyP 中添加热键的时候又出现了新的问题:

+
没找到直接调用命令行的方法
+

问题又转变成:如何使 HotKeyP 可以直接执行命令行?

+

方法也很自然,将命令写成 .bat 脚本存放在磁盘里,用 HotKeyP 调用此脚本。

+

但实验起来发现执行 .bat 脚本时会有一个黑色的控制台闪过,非常不爽。搜了一下怎样让 .bat 隐身运行。

+

全网最详细,bat不弹黑框/不显示控制台方法_时过境迁一样美的博客-CSDN博客_如何运行bat文件不弹出黑框

+

所以再使用 .vbs 命令执行 .bat 脚本就可以避免黑框。

+

所以最终用小爱同学替换小娜的路径就明确了:

+

用 HotKeyP 给 Win+C 快捷键绑定上执行 .vbs 命令的脚本,.vbs 脚本无控制台调用 .bat 脚本唤醒小爱同学 UWP 应用。

+

美中不足的是用命令行调用小爱同学大概需要等待 3s,这个暂时没有找到解决办法。

+

以上。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ +
+
+
+ +
+
+
+ +
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/post/zen-yang-gei-electron-ying-yong-zhua-bao/index.html b/post/zen-yang-gei-electron-ying-yong-zhua-bao/index.html new file mode 100644 index 0000000..4b3a0aa --- /dev/null +++ b/post/zen-yang-gei-electron-ying-yong-zhua-bao/index.html @@ -0,0 +1,302 @@ + + + + + + +怎样给 Electron 应用抓包 - 杂谈by立行 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 杂谈by立行 + +
+
+

+ 怎样给 Electron 应用抓包 +

+ +
+
2023-10-17 · 2 min read
+ + + + 雕虫小技 + + +
+
+

今天测试 Memo 的翻译服务,发现经常失败,于是想抓包看看失败原因。

+

很自然的打开了电脑上的 Fidder,但出乎意料的是完全抓不到 Memo 的任何 Http 请求...(已开启 https 抓包,其他软件测试正常)

+

搜了一下,发现可能是由于 Electron 的缘故。

+

于是又参考 抓包经验总结(一) - 知乎 尝试使用 wireshark 来抓包,但无奈 wireshark 里面信息太多了,我光通过 ip 和协议过滤还是有大量请求...遂放弃。

+

后来搜到了 Electron应用抓包_electron 程序 抓包-CSDN博客 这篇文章。

+
code.exe --args --proxy-server=localhost:8888 --ignore-certificate-errors
+
+

我拿 Fidder 测试了一下,发现可以抓取到 Memo 检测更新的请求,但是依旧抓取不到翻译的请求。。

+

接着按照 Electron抓包体验-CSDN博客 的思路,在 Chrome 里调试 Electron 应用。

+
Memo.exe -remote-debugging-port=9222
+
+

然后用 Chrome 打开 chrome://inspect/#devices

+
Console 里有输出,network 里没有
+

尴尬的是,能看到 Console 里输出了翻译的记录,但在 Network 里没有发现任何 http 请求。。

+

最后用英文搜了一下,最终找到了解决方案。

+

Download HTTP Toolkit for Windows

+
HTTP Toolkit 抓取 Electron 应用
+

免费版本的足够了。

+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+ + + +
+ + +
+ +
+ +
+
+
+ +
+
+
+ +
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/styles/main.css b/styles/main.css new file mode 100644 index 0000000..7b00dc6 --- /dev/null +++ b/styles/main.css @@ -0,0 +1,122 @@ +@import url('https://rsms.me/inter/inter.css'); +body { + font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + color: #333; + background-color: #faf9f7; +} +@supports (font-variation-settings: normal) { + body { + font-family: 'Inter var', Inter, Rubik, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + } +} +a:not([class]) { + border-bottom-style: solid; + border-bottom-width: 0.2rem; + color: #0f61ff; + text-decoration: none; + transition: all 0.3s ease 0s; + border-color: rgba(15, 97, 255, 0.1); +} +a:not([class]):hover { + border-color: rgba(15, 97, 255, 0.5); +} +@media (prefers-color-scheme: dark) { + a:not([class]) { + color: #81a5f8; + } +} +@media (prefers-color-scheme: dark) { + body { + background: #333; + color: #999; + } +} +.yellow-btn { + box-shadow: rgba(255, 214, 2, 0.6) 0px 6px 12px 0px; +} +.yellow-btn:hover { + box-shadow: rgba(255, 214, 2, 0.6) 0px 2px 4px 0px; +} +@media (prefers-color-scheme: dark) { + .yellow-btn { + box-shadow: none; + } +} +.wechat img { + display: none; +} +.wechat:hover img { + display: inline-block; +} +.s3-round { + border-radius: 100px; +} +.s3-hover:hover { + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + animation: s3-rotate 5s infinite linear, s3-opacity 5s infinite; +} +.s3-transition { + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; +} +@-webkit-keyframes s3-rotate { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(359deg); + } +} +@keyframes s3-opacity { + 0% { + opacity: 1; + } + 25% { + opacity: 0.2; + } + 50% { + opacity: 0.5; + } + 75% { + opacity: 0.7; + } + 100% { + opacity: 0.1; + } +} +.s3-dotted { + border-radius: 100px; +} +.s3-dotted:hover { + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + animation: s3-rotate 5s infinite linear, s3-opacity 5s infinite; +} +.s3-dashed { + border-radius: 100px; +} +.s3-dashed:hover { + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + animation: s3-rotate 5s infinite linear, s3-opacity 5s infinite; +} + + body { + font-family: Inter, Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + } + + @supports (font-variation-settings: normal) { + body { + font-family: Inter, 'Inter var', Inter, Rubik, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + } + } + \ No newline at end of file diff --git a/tag/9IiCCSb34H/index.html b/tag/9IiCCSb34H/index.html new file mode 100644 index 0000000..d4cd517 --- /dev/null +++ b/tag/9IiCCSb34H/index.html @@ -0,0 +1,136 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 搜索 +

+
+ +
+ +
+

+ + 一般性书籍怎么找——玩转PDF系列03 + +

+
2019-07-20
+
+ 思路 +相较于格式多为 PDF、来源相对固定的教材类书籍,一般的书籍不论是格式还是来源都要丰富得多。 +但各家站点的书籍种类多有不全,所谓寻找一般的书籍,其实也就是在多个网站之间切换搜索,尽快找到目标书籍。所以影响快速找书结果的因素不外乎两个:... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 英文教材怎么找——玩转PDF系列02 + +

+
2019-04-13
+
+ 心心念念的 “玩转PDF系列教程”终于等到了第二期(原谅我最近实在是太忙了,拖了这么久才发)。 +上一期我们谈了怎么找中文教材,并且推出了“电子教材计划”。后台的反馈挺好的,但是收藏率远远高于分享率...你们不知道好东西值得分享嘛🙄🙄🙄... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 中文教材怎么找——玩转PDF系列01 + +

+
2019-03-24
+
+ 0 引子 +我在公众号的菜单里面创建了一个“教材库”,放了一些计算机和数学的教材。原意只是想方便需要的人寻找,尽量节省诸位的时间。不过随着粉丝量的增多,后台催促我出教程的声音日益频繁,也对,授人以鱼不如授人以渔。📚 +毕竟相较于音频、视频课程... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/AymDRTYqp_/index.html b/tag/AymDRTYqp_/index.html new file mode 100644 index 0000000..6376a31 --- /dev/null +++ b/tag/AymDRTYqp_/index.html @@ -0,0 +1,95 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 自动化 +

+
+ +
+ +
+

+ + Tasker××,Android 自动化实例 + +

+
2020-10-12
+
+ 引言 +前些天,几个月前看到了 从通知实现钱迹 Tasker 自动化记账 - 少数派,想起来了之前购买即遗忘于角落的 Tasker...心有戚戚焉。加之自动化记账这件事确实 get 到我了,于是籍此开始折腾 Tasker 的自动化之路。 +经过... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/E8ohIaonIA/index.html b/tag/E8ohIaonIA/index.html new file mode 100644 index 0000000..896619f --- /dev/null +++ b/tag/E8ohIaonIA/index.html @@ -0,0 +1,95 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + Tasker +

+
+ +
+ +
+

+ + Tasker××,Android 自动化实例 + +

+
2020-10-12
+
+ 引言 +前些天,几个月前看到了 从通知实现钱迹 Tasker 自动化记账 - 少数派,想起来了之前购买即遗忘于角落的 Tasker...心有戚戚焉。加之自动化记账这件事确实 get 到我了,于是籍此开始折腾 Tasker 的自动化之路。 +经过... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/GLpjGZzyRe/index.html b/tag/GLpjGZzyRe/index.html new file mode 100644 index 0000000..428aaff --- /dev/null +++ b/tag/GLpjGZzyRe/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + FTP +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/Q79rtqQwX0/index.html b/tag/Q79rtqQwX0/index.html new file mode 100644 index 0000000..d59363a --- /dev/null +++ b/tag/Q79rtqQwX0/index.html @@ -0,0 +1,95 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 总结 +

+
+ +
+ +
+

+ + 谈谈我的 2019 和 2020 + +

+
2020-01-16
+
+ 1 说说废话 +本来脑海里构思 2019 总结的时候有一大堆话想说,但真正要写下来的时候,又不知道从何说起。 +算了,那还是先从公众号开始吧,很抱歉 2019 年最后几个月公众号基本没更新。原因其实就两个,第一确实是忙,下半年很多事情赶到一块了... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/RTwmXllfEo/index.html b/tag/RTwmXllfEo/index.html new file mode 100644 index 0000000..7bbc527 --- /dev/null +++ b/tag/RTwmXllfEo/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + OneDrive +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/W1USKO4nt/index.html b/tag/W1USKO4nt/index.html new file mode 100644 index 0000000..5fd510c --- /dev/null +++ b/tag/W1USKO4nt/index.html @@ -0,0 +1,172 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 杂记 +

+
+ +
+ +
+

+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +

+
2023-10-15
+
+ 背景 +前阵子女朋友去读研,授课是全英的,加之又有很多专业名词,有时就会出现理解能力跟不上讲课速度的情况。 +因此借助课堂回放/录音复习也变成了一项每周必做的工作,但是完全回看一个三小时长的课程显然是不现实的,所以,音视频转文字就成了必选项。 +... +
+ + Read more + +
+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +
+ +
+ +
+

+ + 备份手机微信聊天记录到电脑,解决提示问题"当前网络环境复杂,请尝试使用其他网络" + +

+
2023-04-09
+
+ 测试设备 + +Windows 微信 3.7.6.44 +Android 微信 8.0.34 +红米 K50,MIUI 13 + +背景 +我有一个持续了三年的习惯——每周备份当周的微信聊天记录。但微信的备份功能做得实在是很烂,经常遇到网络问题: + +当前... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 写在迁移之前 + +

+
2022-05-04
+
+ 大学时我曾经有一个搭在阿里云上的 WordPress 站点存放着历史的文章,一年一百多的价格也还可以接受。但毕业之后,一方面折腾的心思变少了,一年也更新不了几篇文章;另一方面,续费的价格直接升到了 1300 左右,想想这个投入产出比,遂将老... +
+ + Read more + +
+ + 写在迁移之前 + +
+ +
+ +
+

+ + B 站?Why&How? + +

+
2020-01-30
+
+ B 站?Why&How? +大概是在 2019 年下半年,我的信息源里面开始频繁出现 B 站的相关消息。 + +B 站 UP 主“独立菌”给曹大引了数千粉丝 +半佛仙人、巫师经济学在 B 站的迅速崛起 +视频战争 2019 +身边朋友有的一天看... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/YJMhtjfr0u/index.html b/tag/YJMhtjfr0u/index.html new file mode 100644 index 0000000..8a10e4d --- /dev/null +++ b/tag/YJMhtjfr0u/index.html @@ -0,0 +1,136 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 找书 +

+
+ +
+ +
+

+ + 一般性书籍怎么找——玩转PDF系列03 + +

+
2019-07-20
+
+ 思路 +相较于格式多为 PDF、来源相对固定的教材类书籍,一般的书籍不论是格式还是来源都要丰富得多。 +但各家站点的书籍种类多有不全,所谓寻找一般的书籍,其实也就是在多个网站之间切换搜索,尽快找到目标书籍。所以影响快速找书结果的因素不外乎两个:... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 英文教材怎么找——玩转PDF系列02 + +

+
2019-04-13
+
+ 心心念念的 “玩转PDF系列教程”终于等到了第二期(原谅我最近实在是太忙了,拖了这么久才发)。 +上一期我们谈了怎么找中文教材,并且推出了“电子教材计划”。后台的反馈挺好的,但是收藏率远远高于分享率...你们不知道好东西值得分享嘛🙄🙄🙄... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 中文教材怎么找——玩转PDF系列01 + +

+
2019-03-24
+
+ 0 引子 +我在公众号的菜单里面创建了一个“教材库”,放了一些计算机和数学的教材。原意只是想方便需要的人寻找,尽量节省诸位的时间。不过随着粉丝量的增多,后台催促我出教程的声音日益频繁,也对,授人以鱼不如授人以渔。📚 +毕竟相较于音频、视频课程... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/ah-VVfWyuD/index.html b/tag/ah-VVfWyuD/index.html new file mode 100644 index 0000000..b5bedcc --- /dev/null +++ b/tag/ah-VVfWyuD/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + iOS +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/fryjhqkpJ/index.html b/tag/fryjhqkpJ/index.html new file mode 100644 index 0000000..14d6d5d --- /dev/null +++ b/tag/fryjhqkpJ/index.html @@ -0,0 +1,192 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 雕虫小技 +

+
+ +
+ +
+

+ + 怎样给 Electron 应用抓包 + +

+
2023-10-17
+
+ 今天测试 Memo 的翻译服务,发现经常失败,于是想抓包看看失败原因。 +很自然的打开了电脑上的 Fidder,但出乎意料的是完全抓不到 Memo 的任何 Http 请求...(已开启 https 抓包,其他软件测试正常) +搜了一下,发现可能... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +

+
2023-10-15
+
+ 背景 +前阵子女朋友去读研,授课是全英的,加之又有很多专业名词,有时就会出现理解能力跟不上讲课速度的情况。 +因此借助课堂回放/录音复习也变成了一项每周必做的工作,但是完全回看一个三小时长的课程显然是不现实的,所以,音视频转文字就成了必选项。 +... +
+ + Read more + +
+ + 精准转写:利用 Whisper 处理音视频转文字-不完全指南 + +
+ +
+ +
+

+ + 备份手机微信聊天记录到电脑,解决提示问题"当前网络环境复杂,请尝试使用其他网络" + +

+
2023-04-09
+
+ 测试设备 + +Windows 微信 3.7.6.44 +Android 微信 8.0.34 +红米 K50,MIUI 13 + +背景 +我有一个持续了三年的习惯——每周备份当周的微信聊天记录。但微信的备份功能做得实在是很烂,经常遇到网络问题: + +当前... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 怎么查看并保存被微信屏蔽的文章? + +

+
2019-05-16
+
+ 微信最近发布了 2018 数据报告。报告指出,截至2018年9月,微信月活用户达到 10.82 亿。 +尽管微信公众号近年来的打开率不断下降,但不可否认的是,微信庞大用户基数使得绝大多数内容生产者都不能舍弃这块战场。 +根据《2017 年微信经... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 图床使用及迁移:写在新浪图床失效之后 + +

+
2019-04-28
+
+ 新浪微博图床在近期已经逐渐开启了防盗链,导致不少曾经依赖新浪微博图床的博客图片均无法显示。 +本文总结了在迁移图床、重新选择工具上面的一些经验。希望对你有所帮助。 +一 迁移 +1.1 一键迁移至阿里云OSS +1.2 数据库替换链接 +1.3 批量... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/iATDEgY6Ut/index.html b/tag/iATDEgY6Ut/index.html new file mode 100644 index 0000000..81414f3 --- /dev/null +++ b/tag/iATDEgY6Ut/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 网盘 +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/lZeaGu9Kc/index.html b/tag/lZeaGu9Kc/index.html new file mode 100644 index 0000000..b02536c --- /dev/null +++ b/tag/lZeaGu9Kc/index.html @@ -0,0 +1,95 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + Android +

+
+ +
+ +
+

+ + Tasker××,Android 自动化实例 + +

+
2020-10-12
+
+ 引言 +前些天,几个月前看到了 从通知实现钱迹 Tasker 自动化记账 - 少数派,想起来了之前购买即遗忘于角落的 Tasker...心有戚戚焉。加之自动化记账这件事确实 get 到我了,于是籍此开始折腾 Tasker 的自动化之路。 +经过... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/paANk9gHjp/index.html b/tag/paANk9gHjp/index.html new file mode 100644 index 0000000..fdbc5b5 --- /dev/null +++ b/tag/paANk9gHjp/index.html @@ -0,0 +1,136 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + 书籍 +

+
+ +
+ +
+

+ + 一般性书籍怎么找——玩转PDF系列03 + +

+
2019-07-20
+
+ 思路 +相较于格式多为 PDF、来源相对固定的教材类书籍,一般的书籍不论是格式还是来源都要丰富得多。 +但各家站点的书籍种类多有不全,所谓寻找一般的书籍,其实也就是在多个网站之间切换搜索,尽快找到目标书籍。所以影响快速找书结果的因素不外乎两个:... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 英文教材怎么找——玩转PDF系列02 + +

+
2019-04-13
+
+ 心心念念的 “玩转PDF系列教程”终于等到了第二期(原谅我最近实在是太忙了,拖了这么久才发)。 +上一期我们谈了怎么找中文教材,并且推出了“电子教材计划”。后台的反馈挺好的,但是收藏率远远高于分享率...你们不知道好东西值得分享嘛🙄🙄🙄... +
+ + Read more + +
+ +
+ +
+ +
+

+ + 中文教材怎么找——玩转PDF系列01 + +

+
2019-03-24
+
+ 0 引子 +我在公众号的菜单里面创建了一个“教材库”,放了一些计算机和数学的教材。原意只是想方便需要的人寻找,尽量节省诸位的时间。不过随着粉丝量的增多,后台催促我出教程的声音日益频繁,也对,授人以鱼不如授人以渔。📚 +毕竟相较于音频、视频课程... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/rYM9voEMk_/index.html b/tag/rYM9voEMk_/index.html new file mode 100644 index 0000000..bff9475 --- /dev/null +++ b/tag/rYM9voEMk_/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + iCloud +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/tBV4n_IAYJ/index.html b/tag/tBV4n_IAYJ/index.html new file mode 100644 index 0000000..5124b72 --- /dev/null +++ b/tag/tBV4n_IAYJ/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + iPad +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tag/w2bKY3zLRN/index.html b/tag/w2bKY3zLRN/index.html new file mode 100644 index 0000000..82fa440 --- /dev/null +++ b/tag/w2bKY3zLRN/index.html @@ -0,0 +1,98 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + +
+ + + +
+

+ + smb +

+
+ +
+ +
+

+ + iPad OS 文件管理入门 + +

+
2020-01-31
+
+ iPad OS 文件管理入门 + +注:下文 iOS 和 iPad OS 不做区分。 + +本文主要面向经常需要在电脑和 iPhone、iPad 之间频繁互传/同步文件的朋友,Windows 用户为主,Mac 用户亦有参考价值。 +入手 iPad 之... +
+ + Read more + +
+ +
+ +
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..e69ea98 --- /dev/null +++ b/tags/index.html @@ -0,0 +1,177 @@ + + + + + +杂谈by立行 + + + + + + + + + + + + + + + + + + \ No newline at end of file