├── CNAME ├── favicon.ico ├── update ├── dxgi.zip ├── config.zip ├── RobloxRPC2.png ├── dependencies.zip ├── RobloxRPCAsset.png ├── ansel-presets.zip ├── extravi-reshade.ico ├── reshade-presets.zip ├── bloxshade-bloomy.zip ├── ansel-presets-dark.zip ├── version.json ├── nvapp.json ├── reshade_checksums.json └── presets.json ├── bloxshade ├── unknown.png ├── unknown0.png ├── unknown1.png ├── unknown10.png ├── unknown11.png ├── unknown12.png ├── unknown13.png ├── unknown14.png ├── unknown15.png ├── unknown2.png ├── unknown3.png ├── unknown4.png ├── unknown5.png ├── unknown6.png ├── unknown7.png ├── unknown8.png ├── unknown9.png └── index.html ├── images ├── docs-img.png ├── docs-img-1.webp ├── GitHub-Mark-Light-120px-plus.png └── priyanuch-konkaew-JaR_cKU3J_Y-unsplash.webp ├── README.md ├── script.js ├── index.html ├── prism.css ├── SmoothScroll.min.js ├── araa └── index.html ├── style.css └── prism.js /CNAME: -------------------------------------------------------------------------------- 1 | extravi.dev -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/favicon.ico -------------------------------------------------------------------------------- /update/dxgi.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/dxgi.zip -------------------------------------------------------------------------------- /update/config.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/config.zip -------------------------------------------------------------------------------- /bloxshade/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown.png -------------------------------------------------------------------------------- /images/docs-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/images/docs-img.png -------------------------------------------------------------------------------- /update/RobloxRPC2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/RobloxRPC2.png -------------------------------------------------------------------------------- /bloxshade/unknown0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown0.png -------------------------------------------------------------------------------- /bloxshade/unknown1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown1.png -------------------------------------------------------------------------------- /bloxshade/unknown10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown10.png -------------------------------------------------------------------------------- /bloxshade/unknown11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown11.png -------------------------------------------------------------------------------- /bloxshade/unknown12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown12.png -------------------------------------------------------------------------------- /bloxshade/unknown13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown13.png -------------------------------------------------------------------------------- /bloxshade/unknown14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown14.png -------------------------------------------------------------------------------- /bloxshade/unknown15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown15.png -------------------------------------------------------------------------------- /bloxshade/unknown2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown2.png -------------------------------------------------------------------------------- /bloxshade/unknown3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown3.png -------------------------------------------------------------------------------- /bloxshade/unknown4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown4.png -------------------------------------------------------------------------------- /bloxshade/unknown5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown5.png -------------------------------------------------------------------------------- /bloxshade/unknown6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown6.png -------------------------------------------------------------------------------- /bloxshade/unknown7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown7.png -------------------------------------------------------------------------------- /bloxshade/unknown8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown8.png -------------------------------------------------------------------------------- /bloxshade/unknown9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/bloxshade/unknown9.png -------------------------------------------------------------------------------- /images/docs-img-1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/images/docs-img-1.webp -------------------------------------------------------------------------------- /update/dependencies.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/dependencies.zip -------------------------------------------------------------------------------- /update/RobloxRPCAsset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/RobloxRPCAsset.png -------------------------------------------------------------------------------- /update/ansel-presets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/ansel-presets.zip -------------------------------------------------------------------------------- /update/extravi-reshade.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/extravi-reshade.ico -------------------------------------------------------------------------------- /update/reshade-presets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/reshade-presets.zip -------------------------------------------------------------------------------- /update/bloxshade-bloomy.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/bloxshade-bloomy.zip -------------------------------------------------------------------------------- /update/ansel-presets-dark.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/ansel-presets-dark.zip -------------------------------------------------------------------------------- /update/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReShade": "5.8.0", 3 | "Presets": "01-15-2023", 4 | "ConfigFile": "01-15-2023" 5 | } 6 | -------------------------------------------------------------------------------- /images/GitHub-Mark-Light-120px-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/images/GitHub-Mark-Light-120px-plus.png -------------------------------------------------------------------------------- /images/priyanuch-konkaew-JaR_cKU3J_Y-unsplash.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Extravi/extravi.github.io/main/images/priyanuch-konkaew-JaR_cKU3J_Y-unsplash.webp -------------------------------------------------------------------------------- /update/nvapp.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": "https://us.download.nvidia.com/nvapp/client/11.0.1.189/NVIDIA_app_v11.0.1.189.exe", 3 | "profile": "https://raw.githubusercontent.com/Extravi/nv-profile/main/component_profiles.json", 4 | "7za": "https://github.com/Extravi/nv-profile/raw/main/7za.exe", 5 | "filename": "NVIDIA_app_v11.0.1.189.exe" 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

extravi.dev

2 | 3 |

4 | 5 | 6 |

7 | 8 |

My personal website for project documentation and other things.

9 | -------------------------------------------------------------------------------- /update/reshade_checksums.json: -------------------------------------------------------------------------------- 1 | { 2 | "file_name": "dxgi.dll", 3 | "version": "5.8.0", 4 | "checksums": { 5 | "MD5": "1c13acff4c8f64d62554559d8a5ada52", 6 | "SHA1": "54c4ce05bcf18d334a89867087c2cbc50aaa11a6", 7 | "SHA256": "354c404100965f90127ff488d59487eb88a60610aad61ed97c9e87262c0fec3e", 8 | "SHA512": "3d84571acb67b052f8177a90dfae43486241614bfd3b90e6b27dd8c9a3b7c0924cbc6ba5f25fab79c3da511a9cff99e9c6a20da409e33afed6ea492671411747" 9 | }, 10 | "download_url": "https://extravi.dev/update/dxgi.zip" 11 | } 12 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | const apiUrl1 = 'https://api.github.com/repos/Extravi/Installer/releases'; 2 | const apiUrl2 = 'https://api.github.com/repos/Extravi/Bloxshade/releases'; 3 | const apiUrl3 = 'https://api.github.com/repos/Extravi/bloxshade-args/releases'; 4 | 5 | async function fetchData(url) { 6 | const response = await fetch(url); 7 | if (!response.ok) { 8 | throw new Error(`Error fetching data: ${response.statusText}`); 9 | } 10 | return await response.json(); 11 | } 12 | 13 | async function calculateTotalDownloadCount() { 14 | try { 15 | const [releases1, releases2, releases3] = await Promise.all([ 16 | fetchData(apiUrl1), 17 | fetchData(apiUrl2), 18 | fetchData(apiUrl3) 19 | ]); 20 | 21 | let totalDownloadCount = 0; 22 | for (const release of releases1.concat(releases2, releases3)) { 23 | totalDownloadCount += release.assets.reduce( 24 | (acc, asset) => acc + asset.download_count, 25 | 0 26 | ); 27 | } 28 | 29 | const formattedTotal = `- ${totalDownloadCount.toLocaleString()} downloads`; 30 | const downloadsCountElement = document.querySelector('.downloads-count'); 31 | downloadsCountElement.textContent = formattedTotal; 32 | } catch (error) { 33 | console.error('Error:', error); 34 | } 35 | } 36 | 37 | calculateTotalDownloadCount(); 38 | -------------------------------------------------------------------------------- /bloxshade/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Extravi - Bloxshade docs 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 34 |
35 | 36 | 37 |
38 |
39 |
40 |

Bloxshade

41 |

Documentation

42 |
43 |
44 |
45 |
46 |

If you want to uninstall Bloxshade from Roblox, follow the steps listed below.

47 |

Lookup "Control Panel" in Windows Search.

48 |
png
49 |

Select "Programs."

50 |
png
51 |

Select "Programs and Features."

52 |
png
53 |

Search for "Roblox" right click and uninstall.

54 |
png
55 |

Please wait for Roblox to uninstall, and then reinstall Roblox afterwards.

56 |
png
57 |
58 |
59 |
60 |
61 |

If you are not seeing User Account Control pop-ups, follow the steps listed below.

62 |

An example of a User Account Control pop-up.

63 |
png
64 |

Lookup "UAC" in Windows Search.

65 |
png
66 |

Make sure you have the same settings as me/default settings.

67 |
png
68 |

Click "OK" when you're finished. It might ask you to reboot.

69 |
png
70 |

Try the installation again.

71 |
png
72 |

It should work now.

73 |
png
74 |
75 |
76 | 86 |
87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Extravi - Open Source 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 34 |
35 | 36 | 37 |
38 |
39 |
40 |

Extravi

41 |

Open Source

42 |
43 |
44 |
45 |
46 |
47 |

Documentation

48 |

If you're looking for documentation for any of my projects, you can find it below.

50 |
51 |
52 |
53 | 67 |
68 |
69 |
70 |

A few of my projects

71 | 72 | svg 74 | 75 | 76 | svg 78 | 79 | 80 | svg 82 | 83 | 84 | svg 86 | 87 |
88 |
89 | 99 |
100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /prism.css: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.29.0 2 | https://prismjs.com/download.html#themes=prism-twilight&languages=markup+css+clike+javascript+bash+git+http+nginx+nsis+python+shell-session+sql+vim&plugins=jsonp-highlight+toolbar+copy-to-clipboard */ 3 | code[class*=language-], 4 | pre[class*=language-] { 5 | color: #fff; 6 | background: 0 0; 7 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 8 | font-size: 1em; 9 | text-align: left; 10 | text-shadow: 0 -.1em .2em #000; 11 | white-space: pre; 12 | word-spacing: normal; 13 | word-break: normal; 14 | word-wrap: normal; 15 | line-height: 1.5; 16 | -moz-tab-size: 4; 17 | -o-tab-size: 4; 18 | tab-size: 4; 19 | -webkit-hyphens: none; 20 | -moz-hyphens: none; 21 | -ms-hyphens: none; 22 | hyphens: none 23 | } 24 | 25 | :not(pre)>code[class*=language-], 26 | pre[class*=language-] { 27 | background: #111111; 28 | } 29 | 30 | pre[class*=language-] { 31 | border-radius: .5em; 32 | border: 1px solid #363a3c; 33 | margin: .5em 0; 34 | overflow: auto; 35 | padding: 1em 36 | } 37 | 38 | pre[class*=language-]::-moz-selection { 39 | background: #27292a 40 | } 41 | 42 | pre[class*=language-]::selection { 43 | background: #27292a 44 | } 45 | 46 | code[class*=language-] ::-moz-selection, 47 | code[class*=language-]::-moz-selection, 48 | pre[class*=language-] ::-moz-selection, 49 | pre[class*=language-]::-moz-selection { 50 | text-shadow: none; 51 | background: hsla(0, 0%, 93%, .15) 52 | } 53 | 54 | code[class*=language-] ::selection, 55 | code[class*=language-]::selection, 56 | pre[class*=language-] ::selection, 57 | pre[class*=language-]::selection { 58 | text-shadow: none; 59 | background: hsla(0, 0%, 93%, .15) 60 | } 61 | 62 | :not(pre)>code[class*=language-] { 63 | border-radius: .3em; 64 | border: .13em solid #545454; 65 | box-shadow: 1px 1px .3em -.1em #000 inset; 66 | padding: .15em .2em .05em; 67 | white-space: normal 68 | } 69 | 70 | .token.cdata, 71 | .token.comment, 72 | .token.doctype, 73 | .token.prolog { 74 | color: #777 75 | } 76 | 77 | .token.punctuation { 78 | opacity: .7 79 | } 80 | 81 | .token.namespace { 82 | opacity: .7 83 | } 84 | 85 | .token.boolean, 86 | .token.deleted, 87 | .token.number, 88 | .token.tag { 89 | color: #ce6849 90 | } 91 | 92 | .token.builtin, 93 | .token.constant, 94 | .token.keyword, 95 | .token.property, 96 | .token.selector, 97 | .token.symbol { 98 | color: #f9ed99 99 | } 100 | 101 | .language-css .token.string, 102 | .style .token.string, 103 | .token.attr-name, 104 | .token.attr-value, 105 | .token.char, 106 | .token.entity, 107 | .token.inserted, 108 | .token.operator, 109 | .token.string, 110 | .token.url, 111 | .token.variable { 112 | color: #909e6a 113 | } 114 | 115 | .token.atrule { 116 | color: #7385a5 117 | } 118 | 119 | .token.important, 120 | .token.regex { 121 | color: #e8c062 122 | } 123 | 124 | .token.bold, 125 | .token.important { 126 | font-weight: 700 127 | } 128 | 129 | .token.italic { 130 | font-style: italic 131 | } 132 | 133 | .token.entity { 134 | cursor: help 135 | } 136 | 137 | .language-markup .token.attr-name, 138 | .language-markup .token.punctuation, 139 | .language-markup .token.tag { 140 | color: #ac885c 141 | } 142 | 143 | .token { 144 | position: relative; 145 | z-index: 1 146 | } 147 | 148 | .line-highlight.line-highlight { 149 | background: hsla(0, 0%, 33%, .25); 150 | background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); 151 | border-bottom: 1px dashed #545454; 152 | border-top: 1px dashed #545454; 153 | margin-top: .75em; 154 | z-index: 0 155 | } 156 | 157 | .line-highlight.line-highlight:before, 158 | .line-highlight.line-highlight[data-end]:after { 159 | background-color: #8693a6; 160 | color: #f4f1ef 161 | } 162 | 163 | div.code-toolbar { 164 | position: relative 165 | } 166 | 167 | div.code-toolbar>.toolbar { 168 | position: absolute; 169 | z-index: 10; 170 | top: .3em; 171 | right: .2em; 172 | transition: opacity .3s ease-in-out; 173 | opacity: 0 174 | } 175 | 176 | div.code-toolbar:hover>.toolbar { 177 | opacity: 1 178 | } 179 | 180 | div.code-toolbar:focus-within>.toolbar { 181 | opacity: 1 182 | } 183 | 184 | div.code-toolbar>.toolbar>.toolbar-item { 185 | display: inline-block 186 | } 187 | 188 | div.code-toolbar>.toolbar>.toolbar-item>a { 189 | cursor: pointer 190 | } 191 | 192 | div.code-toolbar>.toolbar>.toolbar-item>button { 193 | background: 0 0; 194 | border: 0; 195 | color: inherit; 196 | font: inherit; 197 | line-height: normal; 198 | overflow: visible; 199 | padding: 0; 200 | -webkit-user-select: none; 201 | -moz-user-select: none; 202 | -ms-user-select: none 203 | } 204 | 205 | div.code-toolbar>.toolbar>.toolbar-item>a, 206 | div.code-toolbar>.toolbar>.toolbar-item>button, 207 | div.code-toolbar>.toolbar>.toolbar-item>span { 208 | color: #bbb; 209 | font-size: .8em; 210 | padding: 0 .5em; 211 | background: #f5f2f0; 212 | background: rgba(224, 224, 224, .2); 213 | box-shadow: 0 2px 0 0 rgba(0, 0, 0, .2); 214 | border-radius: .5em 215 | } 216 | 217 | div.code-toolbar>.toolbar>.toolbar-item>a:focus, 218 | div.code-toolbar>.toolbar>.toolbar-item>a:hover, 219 | div.code-toolbar>.toolbar>.toolbar-item>button:focus, 220 | div.code-toolbar>.toolbar>.toolbar-item>button:hover, 221 | div.code-toolbar>.toolbar>.toolbar-item>span:focus, 222 | div.code-toolbar>.toolbar>.toolbar-item>span:hover { 223 | color: inherit; 224 | text-decoration: none 225 | } -------------------------------------------------------------------------------- /SmoothScroll.min.js: -------------------------------------------------------------------------------- 1 | !function(){var s,i,c,a,o={frameRate:150,animationTime:400,stepSize:100,pulseAlgorithm:!0,pulseScale:4,pulseNormalize:1,accelerationDelta:50,accelerationMax:3,keyboardSupport:!0,arrowScroll:50,fixedBackground:!0,excluded:""},p=o,u=!1,d=!1,n={x:0,y:0},f=!1,m=document.documentElement,l=[],h=/^Mac/.test(navigator.platform),w={left:37,up:38,right:39,down:40,spacebar:32,pageup:33,pagedown:34,end:35,home:36},v={37:1,38:1,39:1,40:1};function y(){if(!f&&document.body){f=!0;var e=document.body,t=document.documentElement,o=window.innerHeight,n=e.scrollHeight;if(m=0<=document.compatMode.indexOf("CSS")?t:e,s=e,p.keyboardSupport&&Y("keydown",x),top!=self)d=!0;else if(Q&&o=p.animationTime,c=i?1:l/p.animationTime;p.pulseAlgorithm&&(c=F(c));var s=a.x*c-a.lastX>>0,u=a.y*c-a.lastY>>0;o+=s,n+=u,a.lastX+=s,a.lastY+=u,i&&(b.splice(r,1),r--)}h?window.scrollBy(o,n):(o&&(d.scrollLeft+=o),n&&(d.scrollTop+=n)),f||m||(b=[]),b.length?j(w,d,1e3/p.frameRate+1):(g=!1,null!=d.$scrollBehavior&&(d.style.scrollBehavior=d.$scrollBehavior,d.$scrollBehavior=null))};j(w,d,0),g=!0}}function e(e){f||y();var t=e.target;if(e.defaultPrevented||e.ctrlKey)return!0;if(N(s,"embed")||N(t,"embed")&&/\.pdf/i.test(t.src)||N(s,"object")||t.shadowRoot)return!0;var o=-e.wheelDeltaX||e.deltaX||0,n=-e.wheelDeltaY||e.deltaY||0;h&&(e.wheelDeltaX&&K(e.wheelDeltaX,120)&&(o=e.wheelDeltaX/Math.abs(e.wheelDeltaX)*-120),e.wheelDeltaY&&K(e.wheelDeltaY,120)&&(n=e.wheelDeltaY/Math.abs(e.wheelDeltaY)*-120)),o||n||(n=-e.wheelDelta||0),1===e.deltaMode&&(o*=40,n*=40);var r=z(t);return r?!!function(e){if(!e)return;l.length||(l=[e,e,e]);e=Math.abs(e),l.push(e),l.shift(),clearTimeout(a),a=setTimeout(function(){try{localStorage.SS_deltaBuffer=l.join(",")}catch(e){}},1e3);var t=120 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Extravi - Araa docs 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 35 |
36 | 37 | 38 |
39 |
40 |
41 |

Araa

42 |

Documentation

43 |
44 |
45 |
46 |
47 |

Araa installation guide

48 |

To write this guide, I was using Ubuntu Server 22.04 LTS. This guide assumes you're 49 | using sudo or root.

50 |


Install required packages:

51 |
apt install nginx nginx-extras python3-pip certbot python3-certbot-nginx gunicorn
52 |

Clone Araa:

53 |
git clone https://github.com/Extravi/araa-search.git
54 |

Configure opensearch.xml by replacing http://127.0.0.1:5000/ with 55 | https://araa.yourdomain.com/ make sure to replace http:// with https://:

56 |
cd araa-search/
 57 | cd static/
 58 | mv opensearch.xml.example opensearch.xml
 59 | nano opensearch.xml
60 |

Once you've done that, cd back into the Araa directory and install the required 61 | packages:

62 |
cd ~/araa-search
 63 | pip install flask lxml bs4
64 |

Configure nginx by replacing araa.yourdomain.com with your own domain:

65 |
cd /etc/nginx/sites-enabled/
 66 | rm default
 67 | wget -O araa https://raw.githubusercontent.com/Extravi/araa-docs/main/config/araa
 68 | nano araa
69 |

Now cd into /etc/nginx/ and replace nginx.conf; this will disable logging and improve 70 | server security:

71 |
cd /etc/nginx/
 72 | rm nginx.conf
 73 | wget -O nginx.conf https://raw.githubusercontent.com/Extravi/araa-docs/main/config/nginx.conf
 74 | nginx -t && nginx -s reload
75 |

Expected output:

76 |
root@ubuntu-s-1vcpu-1gb-tor1-01:/etc/nginx# nginx -t && nginx -s reload
 77 | nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 78 | nginx: configuration file /etc/nginx/nginx.conf test is successful
 79 | root@ubuntu-s-1vcpu-1gb-tor1-01:/etc/nginx# 
80 |

Obtain an SSL/TLS certificate, but before doing so, make sure you have an A record 81 | pointed to your server for that domain:

82 |
certbot --nginx -d araa.yourdomain.com
83 |

Once you've done that, open the crontab file:

84 |
crontab -e
85 |

Then paste this at the bottom of the crontab file. This will automatically renew your 86 | Let’s Encrypt certificate:

87 |
0 12 * * * /usr/bin/certbot renew --quiet
88 |

Setup a firewall with UFW:

89 |
ufw default deny
 90 | ufw allow ssh
 91 | ufw allow https
 92 | ufw allow http
 93 | ufw enable
94 |

Run the status command:

95 |
ufw status verbose
96 |

You should see an output like this:

97 |
root@ubuntu-s-1vcpu-1gb-tor1-01:~/araa-search# ufw status verbose
 98 | Status: active
 99 | Logging: on (low)
100 | Default: deny (incoming), allow (outgoing), disabled (routed)
101 | New profiles: skip
102 |                     
103 | To                         Action      From
104 | --                         ------      ----
105 | 22/tcp                     ALLOW IN    Anywhere                  
106 | 443                        ALLOW IN    Anywhere                  
107 | 80/tcp                     ALLOW IN    Anywhere                  
108 | 22/tcp (v6)                ALLOW IN    Anywhere (v6)             
109 | 443 (v6)                   ALLOW IN    Anywhere (v6)             
110 | 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
111 |                     
112 | root@ubuntu-s-1vcpu-1gb-tor1-01:~/araa-search# 
113 |

Now we need to disable IPv6 because many websites, like Google, are more likely to 114 | block IPv6:

115 |
bash -c 'cat <> /etc/sysctl.conf
116 | net.ipv6.conf.all.disable_ipv6 = 1
117 | net.ipv6.conf.default.disable_ipv6 = 1
118 | net.ipv6.conf.lo.disable_ipv6 = 1
119 | EOF'
120 |

Now you need to configure your SSH daemon to only listen over IPv4:

121 |
echo 'AddressFamily inet' | sudo tee -a /etc/ssh/sshd_config
122 |

Now cd back into the Araa directory:

123 |
cd ~/araa-search
124 |

Run this command to start Araa:

125 |
gunicorn -w 4 __init__:app
126 |
127 |
128 | 138 |
139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /update/presets.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | { 4 | "title": "Bloxshade Hallows Eve 🎃", 5 | "description": "Spook up your game with these jaw-dropping presets.", 6 | "author": "Bloxshade", 7 | "source": "https://github.com/Extravi/ansel-presets/raw/refs/heads/main/presets/Bloxshade/bloxshade-hallows-eve.zip" 8 | }, 9 | { 10 | "title": "Socks V2", 11 | "description": "The perfect pair.", 12 | "author": "Ax", 13 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Ax/3489585829.zip" 14 | }, 15 | { 16 | "title": "Kiwi's RTX Graphics Preset", 17 | "description": "Level Up Your Game Graphics.", 18 | "author": "kjwl", 19 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/kjwl/247792373234.zip" 20 | }, 21 | { 22 | "title": "LunarGraphicsV4", 23 | "description": "This preset focuses on improving lighting.", 24 | "author": "TheLunar", 25 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/TheLunar/4238472423.zip" 26 | }, 27 | { 28 | "title": "princxssofhyrule's heavenly rays preset", 29 | "description": "perfect for royale high + astro !", 30 | "author": "princxssofhyrule", 31 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/princxssofhyrule/23429842342.zip" 32 | }, 33 | { 34 | "title": "Bluecoolman's preset V9", 35 | "description": "CRTs? Bloomy shaders? You got it.", 36 | "author": "bluecoolman280", 37 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/bluecoolman280/16482749.zip" 38 | }, 39 | { 40 | "title": "BloxPR ⭐", 41 | "description": "PhotoRealism version of BloxRT.", 42 | "author": "Mati", 43 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Mati/bloxpr-presets.zip" 44 | }, 45 | { 46 | "title": "Rapid Minimal V1", 47 | "description": "Just for all of your fast paced games.", 48 | "author": "Pkp10738", 49 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Pkp10738/328945748.zip" 50 | }, 51 | { 52 | "title": "So Sigma Shaders", 53 | "description": "sometimes for tiktok editing.", 54 | "author": "Duck", 55 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Duck/345347822.zip" 56 | }, 57 | { 58 | "title": "Azphrinx's Realism Shaders", 59 | "description": "Ultra-Realistic: Lighting & Color.", 60 | "author": "Azphrinx", 61 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Azphrinx/4378597525.zip" 62 | }, 63 | { 64 | "title": "TVARetroV3", 65 | "description": "To make Roblox look found footage-like.", 66 | "author": "TVA", 67 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/TVA/34723472974.zip" 68 | }, 69 | { 70 | "title": "Scalf's ER:LC Configuration V1.0", 71 | "description": "ER:LC: Simple & Stunning Shaders.", 72 | "author": "scalfss", 73 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/scalfss/4857325785.zip" 74 | }, 75 | { 76 | "title": "SubtleRT V3", 77 | "description": "Roblox Reimagined: Vanilla Shaders.", 78 | "author": "Science6uru", 79 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Science6uru/842308432345.zip" 80 | }, 81 | { 82 | "title": "Corty’s RTX ⭐", 83 | "description": "A large variety of customizations in presets.", 84 | "author": "caracalofrequiem", 85 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/caracalofrequiem/34478238947.zip" 86 | }, 87 | { 88 | "title": "Bloxshade Ultra Dark ⭐", 89 | "description": "Darker version of Bloxshade Ultra.", 90 | "author": "Bloxshade", 91 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Bloxshade/bloxshade-dark.zip" 92 | }, 93 | { 94 | "title": "Bloxshade bloomy ⭐", 95 | "description": "Bloomy presets.", 96 | "author": "Bloxshade", 97 | "source": "https://github.com/Extravi/extravi.github.io/raw/main/update/bloxshade-bloomy.zip" 98 | }, 99 | { 100 | "title": "Bloxshade legacy ⭐", 101 | "description": "Legacy presets.", 102 | "author": "Bloxshade", 103 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Bloxshade/ansel-presets.zip" 104 | }, 105 | { 106 | "title": "Lunar Realism", 107 | "description": "Good for realistic games.", 108 | "author": "TheLunar", 109 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/TheLunar/170272820.zip" 110 | }, 111 | { 112 | "title": "Nstemi's Enhance", 113 | "description": "Realistic enhancement.", 114 | "author": "Nstemi", 115 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Nstemi/462078817.zip" 116 | }, 117 | { 118 | "title": "FPS Frendly Shader ⭐", 119 | "description": "FPS Frendly.", 120 | "author": "Vxamps", 121 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Vxamps/1797412998.zip" 122 | }, 123 | { 124 | "title": "qzx 9820", 125 | "description": "Rodoom and qzx shaders remade.", 126 | "author": "qzx9820", 127 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/qzx9820/42133800546.zip" 128 | }, 129 | { 130 | "title": "Crimson's PhotoRealisim Shaders ⭐", 131 | "description": "Max Graphics!", 132 | "author": "Crimson", 133 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Crimson/47308154282.zip" 134 | }, 135 | { 136 | "title": "Ziplipp's Colorful World", 137 | "description": "Glossy fun! A world of color!", 138 | "author": "ryememorize", 139 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/ryememorize/ansel-presets.zip" 140 | }, 141 | { 142 | "title": "Drive World Sunset Yellow ", 143 | "description": "Max graphic sunsets in Drive World.", 144 | "author": "pat_3", 145 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/pat_3/ansel-presets.zip" 146 | }, 147 | { 148 | "title": "Tiktok Editing Shaders ⭐", 149 | "description": "TTD3 Shaders: Viral & Explore!", 150 | "author": "ScarletBenj", 151 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/ScarletBenj/ansel-presets.zip" 152 | }, 153 | { 154 | "title": "Parkour reborn shaders", 155 | "description": "Glossy with a bit of color and bloom.", 156 | "author": "Madskizi", 157 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Madskizi/ansel-presets.zip" 158 | }, 159 | { 160 | "title": "BloxRT ⭐", 161 | "description": "BloxRT combines realism with looks.", 162 | "author": "Mati", 163 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Mati/ansel-presets.zip" 164 | }, 165 | { 166 | "title": "Marko's Ray Tracing / Photorealism Shaders", 167 | "description": "Eye candy: Graphics on fire!", 168 | "author": "TurboBoost911", 169 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/TurboBoost911/ansel-presets.zip" 170 | }, 171 | { 172 | "title": "RoShine", 173 | "description": "RT shaders.", 174 | "author": "alexplays", 175 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/alexplays/ansel-presets.zip" 176 | }, 177 | { 178 | "title": "Influencer Preset ⭐", 179 | "description": "Make it look like the big stars.", 180 | "author": "Zamgion", 181 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Zamgion/ansel-presets.zip" 182 | }, 183 | { 184 | "title": "Bluecoolman's Preset V8", 185 | "description": "CRTs? Bloomy shaders? You got it.", 186 | "author": "bluecoolman280", 187 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/bluecoolman280/ansel-presets.zip" 188 | }, 189 | { 190 | "title": "Rodoom's Presets ⭐", 191 | "description": "Push your graphics to the limit!", 192 | "author": "Rodoom", 193 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Rodoom/ansel-presets.zip" 194 | }, 195 | { 196 | "title": "Blocky Company", 197 | "description": "Lethal vibes in Roblox!", 198 | "author": "Person123", 199 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Person123/ansel-presets.zip" 200 | }, 201 | { 202 | "title": "Kshade", 203 | "description": "Subtly shine, darkens theme for depth.", 204 | "author": "Kelly_lovescatss", 205 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Kelly_lovescatss/ansel-presets.zip" 206 | }, 207 | { 208 | "title": "RobloxTX", 209 | "description": "Ray tracing with quality and performance.", 210 | "author": "Ax", 211 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Ax/ansel-presets-0.zip" 212 | }, 213 | { 214 | "title": "Ax's Extra Presets", 215 | "description": "Presets galore! (TikTok, Oldskool).", 216 | "author": "Ax", 217 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Ax/ansel-presets.zip" 218 | }, 219 | { 220 | "title": "Socks", 221 | "description": "The perfect pair.", 222 | "author": "Ax", 223 | "source": "https://github.com/Extravi/ansel-presets/raw/main/presets/Ax/254569684.zip" 224 | } 225 | ] 226 | } 227 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Caveat:wght@700&family=Inter:wght@400;700&family=Lato:wght@100;400&family=Nunito+Sans:opsz,wght@6..12,300;6..12,400;6..12,600;6..12,700&display=swap'); 2 | 3 | * { 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | margin: 0; 9 | } 10 | 11 | html { 12 | background-color: #111111; 13 | font-family: "Nunito Sans", Arial, Helvetica, sans-serif; 14 | font-size: 16px; 15 | scroll-behavior: smooth; 16 | } 17 | 18 | .X { 19 | color: #8ab4f8; 20 | } 21 | 22 | body { 23 | scroll-behavior: smooth; 24 | } 25 | 26 | * { 27 | margin: 0; 28 | padding: 0; 29 | } 30 | 31 | :root { 32 | color-scheme: dark; 33 | } 34 | 35 | .wrapper { 36 | width: 100%; 37 | position: fixed; 38 | top: 0; 39 | left: 0; 40 | z-index: 100; 41 | background: rgba(17, 17, 17, 0.7); 42 | -webkit-backdrop-filter: blur(20px); 43 | backdrop-filter: blur(20px); 44 | box-shadow: 0 4px 8px rgba(0, 0, 0, .2); 45 | border-bottom: 1px solid #282828; 46 | } 47 | 48 | .section-content { 49 | align-items: center; 50 | } 51 | 52 | .navbar { 53 | position: center; 54 | color: #9ca3af; 55 | padding: 0 20px; 56 | height: 50px; 57 | } 58 | 59 | .logo { 60 | line-height: 50px; 61 | float: left; 62 | } 63 | 64 | .logo a { 65 | color: #9ca3af; 66 | text-decoration: none; 67 | font-family: 'Caveat', cursive; 68 | font-size: 27px; 69 | transition: all 0.3s ease; 70 | font-weight: bold; 71 | text-decoration: none; 72 | } 73 | 74 | .menu { 75 | float: right; 76 | line-height: 50px; 77 | } 78 | 79 | .menu a { 80 | color: #9ca3af; 81 | transition: all 0.3s ease; 82 | font-family: 'Lato', sans-serif; 83 | font-size: 16px; 84 | text-decoration: none; 85 | padding: 0 10px; 86 | } 87 | 88 | a:hover { 89 | color: lightgrey; 90 | text-decoration: none; 91 | } 92 | 93 | .bg-image { 94 | position: relative; 95 | margin: 54px auto; 96 | width: 100%; 97 | height: calc(22vh + 5px); 98 | overflow: hidden; 99 | margin-bottom: 0px; 100 | } 101 | 102 | .bg-image::before { 103 | content: ""; 104 | position: absolute; 105 | background: url("/images/priyanuch-konkaew-JaR_cKU3J_Y-unsplash.webp") no-repeat center; 106 | top: -10px; 107 | left: -10px; 108 | width: calc(100% + 20px); 109 | height: calc(100% + 20px); 110 | background-size: cover; 111 | filter: blur(5px); 112 | z-index: -1; 113 | } 114 | 115 | .overlay { 116 | display: flex; 117 | justify-content: center; 118 | align-items: center; 119 | flex-direction: column; 120 | position: absolute; 121 | top: 0; 122 | left: 0; 123 | width: 100%; 124 | height: 100%; 125 | background-color: rgba(0, 0, 0, 0.3); 126 | } 127 | 128 | .docs-div { 129 | height: 200px; 130 | width: 400px; 131 | border-radius: 8px; 132 | border: 1px solid #363a3c; 133 | padding-top: 0px; 134 | } 135 | 136 | .card { 137 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); 138 | transition: all 0.3s cubic-bezier(.25, .8, .25, 1); 139 | border-radius: 2px; 140 | display: inline-block; 141 | margin: 1rem; 142 | position: relative; 143 | width: 400px; 144 | } 145 | 146 | .card:hover { 147 | box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); 148 | } 149 | 150 | @media (max-width: 43.75em) { 151 | .card { 152 | width: 300px; 153 | } 154 | } 155 | 156 | img { 157 | max-width: 100%; 158 | } 159 | 160 | .p-reset { 161 | max-width: 1000px !important; 162 | padding-left: 0px !important; 163 | padding-right: 0px !important; 164 | margin-bottom: 0px !important; 165 | } 166 | 167 | .docs-section { 168 | text-align: center !important; 169 | background-color: #111111 !important; 170 | } 171 | 172 | .docs-section-1 { 173 | text-align: center !important; 174 | background-color: #151515 !important; 175 | } 176 | 177 | .underline:visited { 178 | color: #8AB4F8; 179 | } 180 | 181 | .underline { 182 | color: #8AB4F8 !important; 183 | } 184 | 185 | .docs-img { 186 | width: 100%; 187 | height: 140px; 188 | border-top-left-radius: 8px; 189 | border-top-right-radius: 8px; 190 | border-bottom: 1px solid #363a3c; 191 | margin-bottom: 15px; 192 | background: url("/images/docs-img.png") no-repeat center; 193 | top: 0; 194 | } 195 | 196 | .docs-img-1 { 197 | width: 100%; 198 | height: 140px; 199 | border-top-left-radius: 8px; 200 | border-top-right-radius: 8px; 201 | border-bottom: 1px solid #363a3c; 202 | margin-bottom: 15px; 203 | background: url("/images/docs-img-1.webp") no-repeat center; 204 | top: 0; 205 | } 206 | 207 | .underline-1 { 208 | font-size: 20px; 209 | } 210 | 211 | .docs-div a { 212 | padding: 0px !important; 213 | } 214 | 215 | .section-content-3 { 216 | margin: 0 auto; 217 | width: 90%; 218 | max-width: 850px; 219 | display: flex; 220 | } 221 | 222 | .section { 223 | z-index: 2; 224 | background-color: #151515 !important; 225 | padding: 3.5rem 0; 226 | display: flex; 227 | justify-content: center; 228 | align-items: center; 229 | text-align: left; 230 | } 231 | 232 | .section-2 { 233 | text-align: center !important; 234 | background: #151515 !important; 235 | } 236 | 237 | .docs-section { 238 | background-color: #111111 !important; 239 | } 240 | 241 | .section-3 { 242 | text-align: center !important; 243 | background: #111111 !important; 244 | } 245 | 246 | .section h3 { 247 | font-size: 2rem; 248 | font-weight: 300; 249 | margin: 0 0 1rem; 250 | color: #dae5ec; 251 | font-family: 'Nunito Sans', sans-serif; 252 | padding-left: 25px; 253 | padding-right: 25x; 254 | } 255 | 256 | .section p { 257 | font-size: 1.2rem; 258 | font-weight: 300; 259 | max-width: 620px; 260 | margin: 0 0 1rem; 261 | color: #dae5ec; 262 | font-family: 'Nunito Sans', sans-serif; 263 | padding-left: 25px; 264 | padding-right: 25px; 265 | } 266 | 267 | a { 268 | text-decoration: none; 269 | } 270 | 271 | p>a { 272 | color: #8AB4F8; 273 | } 274 | 275 | a:hover { 276 | text-decoration: none; 277 | } 278 | 279 | .underline:hover { 280 | text-decoration: underline; 281 | } 282 | 283 | .underline { 284 | padding: 0px !important; 285 | } 286 | 287 | .img-0 { 288 | background-image: url("/images/GitHub-Mark-Light-120px-plus.png"); 289 | } 290 | 291 | .section { 292 | z-index: 2; 293 | background-color: #111111; 294 | padding: 1.7rem 0; 295 | display: flex; 296 | align-items: center; 297 | flex-wrap: wrap; 298 | } 299 | 300 | .section a { 301 | padding: 8px; 302 | } 303 | 304 | .add-height { 305 | height: 600px; 306 | } 307 | 308 | #section-2 { 309 | background-color: #151515; 310 | } 311 | 312 | .section-img { 313 | background-size: cover; 314 | background-position: center; 315 | background-repeat: no-repeat; 316 | width: 120px; 317 | height: 120px; 318 | border-radius: 10px; 319 | margin-right: 2%; 320 | margin-left: 3%; 321 | margin-bottom: 1%; 322 | } 323 | 324 | 325 | .div-wid { 326 | width: 29%; 327 | } 328 | 329 | .overlay h1 { 330 | font-size: 3rem; 331 | color: #dae5ec; 332 | font-family: 'Inter', sans-serif; 333 | margin: 0 0 1rem; 334 | } 335 | 336 | .overlay h2 { 337 | font-weight: 300; 338 | font-size: 1.5rem; 339 | margin: 0 0 1rem; 340 | color: #9ca3af; 341 | font-family: 'Inter', sans-serif; 342 | } 343 | 344 | .divider { 345 | padding: 20px; 346 | color: rgba(255, 255, 255, 0.4); 347 | } 348 | 349 | .icon-text-container { 350 | display: flex; 351 | align-items: center; 352 | justify-content: center; 353 | } 354 | 355 | .icon-text-container h2 { 356 | display: flex; 357 | align-items: center; 358 | gap: 10px; 359 | } 360 | 361 | .btn { 362 | display: inline-block; 363 | padding: 15px 25px; 364 | font-size: 16px; 365 | text-decoration: none; 366 | background: rgba(21, 21, 21, .7); 367 | -webkit-backdrop-filter: blur(20px); 368 | backdrop-filter: blur(20px); 369 | box-shadow: 0 4px 8px rgba(0, 0, 0, .2); 370 | color: #dae5ec; 371 | border: none; 372 | border-radius: 30px; 373 | cursor: pointer; 374 | } 375 | 376 | .btn:hover { 377 | color: lightgrey; 378 | text-decoration: none; 379 | box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); 380 | } 381 | 382 | .btn:active { 383 | color: lightgrey; 384 | text-decoration: none; 385 | } 386 | 387 | .btn-wrapper { 388 | display: flex; 389 | justify-content: center; 390 | } 391 | 392 | .btn { 393 | margin: 0 5px; 394 | } 395 | 396 | #section-3 { 397 | justify-content: center; 398 | text-align: center; 399 | align-items: center; 400 | background-color: #111111; 401 | } 402 | 403 | #section-1 { 404 | background-color: #151515; 405 | } 406 | 407 | #footer { 408 | justify-content: center; 409 | text-align: center; 410 | align-items: center; 411 | padding-bottom: 0px; 412 | font-size: 0.8rem; 413 | color: #999da2; 414 | padding: 1.7rem 0; 415 | } 416 | 417 | .footer-docs { 418 | background-color: #111111 !important; 419 | } 420 | 421 | .footer-main { 422 | background-color: #111111 !important; 423 | } 424 | 425 | .section-content-2 h3 { 426 | padding-left: 0px; 427 | padding-right: 0x; 428 | } 429 | 430 | #footer p { 431 | font-size: 0.8rem; 432 | color: #999da2; 433 | } 434 | 435 | #footer ul { 436 | margin: 0; 437 | padding: 0; 438 | list-style: none; 439 | } 440 | 441 | #footer ul li a { 442 | display: block; 443 | padding: 0.4rem 0.7rem; 444 | font-size: 0.9rem; 445 | text-decoration: none; 446 | color: #999da2; 447 | } 448 | 449 | #footer ul li { 450 | display: inline-block; 451 | } 452 | 453 | #section-4 { 454 | justify-content: center; 455 | text-align: center; 456 | align-items: center; 457 | background-color: #111111; 458 | } 459 | 460 | #image-bg { 461 | margin: 10px; 462 | } 463 | 464 | #section-content-1 { 465 | display: flex; 466 | flex-wrap: wrap; 467 | margin-top: -1.7rem; 468 | max-width: 880px; 469 | } 470 | 471 | .section-content-2 { 472 | margin: 0 auto; 473 | width: 90%; 474 | max-width: 900px; 475 | } 476 | 477 | .underline-2 { 478 | display: initial !important; 479 | justify-content: initial !important; 480 | align-items: initial !important; 481 | } 482 | 483 | .github { 484 | padding-bottom: 16px; 485 | } 486 | 487 | @media only screen and (max-width: 940px) { 488 | .github { 489 | max-width: 47% !important 490 | } 491 | } 492 | 493 | #footer a { 494 | transition: all 0.3s ease; 495 | } 496 | 497 | #footer a:hover { 498 | color: lightgrey; 499 | text-decoration: none; 500 | } 501 | 502 | @media only screen and (max-width: 820px) { 503 | .github { 504 | max-width: 100% !important 505 | } 506 | 507 | .section a { 508 | padding: 0px !important; 509 | justify-content: center; 510 | align-items: center; 511 | } 512 | 513 | #footer ul li a { 514 | padding-right: 5px !important; 515 | padding-left: 5px !important; 516 | } 517 | 518 | .docs-div-mobile { 519 | margin-bottom: 15px; 520 | } 521 | 522 | .docs-mobile { 523 | display: flex; 524 | flex-direction: column; 525 | } 526 | 527 | .docs-padding { 528 | padding-bottom: 20px; 529 | } 530 | } 531 | 532 | /* mobile view */ 533 | 534 | @media only screen and (max-width: 750px) { 535 | .overlay h2 { 536 | font-size: 1.2rem; 537 | } 538 | 539 | .overlay-h2 { 540 | font-size: 1.1rem !important; 541 | } 542 | 543 | .overlay-h2-1 { 544 | font-size: 1rem !important; 545 | } 546 | 547 | .docs-div { 548 | max-width: 100%; 549 | } 550 | 551 | .overlay h1 { 552 | font-size: 2.4rem; 553 | } 554 | 555 | .mobile { 556 | display: none; 557 | } 558 | 559 | .menu a { 560 | font-size: 14px; 561 | padding: 0 5px; 562 | } 563 | 564 | .navbar { 565 | padding: 0 20px; 566 | } 567 | 568 | .underline-2 { 569 | font-size: 1rem !important; 570 | } 571 | 572 | .logo a { 573 | font-size: 24px; 574 | padding: 0px; 575 | } 576 | 577 | .divider { 578 | padding: 5px; 579 | } 580 | 581 | #footer ul li a { 582 | padding-right: 5px !important; 583 | padding-left: 5px !important; 584 | } 585 | 586 | .h2-width { 587 | max-width: 340px; 588 | } 589 | 590 | .section-a a { 591 | padding: 0px; 592 | } 593 | 594 | .btn { 595 | padding: 10px 20px; 596 | font-size: 14px; 597 | } 598 | 599 | .section p { 600 | font-size: 1rem; 601 | } 602 | 603 | .section a { 604 | padding: 0px !important; 605 | font-size: 18px; 606 | } 607 | 608 | .section h3 { 609 | font-size: 1.4rem; 610 | } 611 | 612 | .section { 613 | padding: 1.4rem 0; 614 | } 615 | 616 | .section-img { 617 | width: 120px; 618 | height: 120px; 619 | border-radius: 10px; 620 | } 621 | 622 | iframe { 623 | max-width: 320px; 624 | max-height: 180px; 625 | } 626 | 627 | #section-content-1 { 628 | padding-left: 7px 629 | } 630 | 631 | .img-0 { 632 | display: none; 633 | } 634 | } -------------------------------------------------------------------------------- /prism.js: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.29.0 2 | https://prismjs.com/download.html#themes=prism-twilight&languages=markup+css+clike+javascript+bash+git+http+nginx+nsis+python+shell-session+sql+vim&plugins=jsonp-highlight+toolbar+copy-to-clipboard */ 3 | var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); 4 | Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,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 t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; 5 | !function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); 6 | Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; 7 | Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\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]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; 8 | !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",a={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},n={bash:a,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i=?|==?=?|&&?|\|\|?|[?*\/~^%]/,punctuation:/[{}[\];(),.:]/,important:{pattern:/(^[\t ]*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\b/im,lookbehind:!0}}; 13 | Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; 14 | !function(s){var n=['"(?:\\\\[^]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^"\\\\`$])*"',"'[^']*'","\\$'(?:[^'\\\\]|\\\\[^])*'","<<-?\\s*([\"']?)(\\w+)\\1\\s[^]*?[\r\n]\\2"].join("|");s.languages["shell-session"]={command:{pattern:RegExp('^(?:[^\\s@:$#%*!/\\\\]+@[^\r\n@:$#%*!/\\\\]+(?::[^\0-\\x1F$#%*?"<>:;|]+)?|[/~.][^\0-\\x1F$#%*?"<>@:;|]*)?[$#%](?=\\s)'+"(?:[^\\\\\r\n \t'\"<$]|[ \t](?:(?!#)|#.*$)|\\\\(?:[^\r]|\r\n?)|\\$(?!')|<(?!<)|<>)+".replace(/<>/g,(function(){return n})),"m"),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:"punctuation",inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:"language-bash",inside:s.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:"important"}}},output:/.(?:.*(?:[\r\n]|.$))*/},s.languages["sh-session"]=s.languages.shellsession=s.languages["shell-session"]}(Prism); 15 | 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},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; 16 | Prism.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\b\w+(?=\()/,keyword:/\b(?:N|Next|P|Print|X|XMLent|XMLns|ab|abbreviate|abc|abclear|abo|aboveleft|al|all|ar|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|args|argu|argument|as|ascii|b|bN|bNext|ba|bad|badd|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bo|botright|bp|bprevious|br|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|brewind|bro|browse|bufdo|buffer|buffers|bun|bunload|bw|bwipeout|c|cN|cNext|cNfcNfile|ca|cabbrev|cabc|cabclear|cad|caddb|caddbuffer|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cg|cgetb|cgetbuffer|cgete|cgetexpr|cgetfile|change|changes|chd|chdir|che|checkpath|checkt|checktime|cl|cla|clast|clist|clo|close|cmapc|cmapclear|cn|cnew|cnewer|cnext|cnf|cnfile|cnorea|cnoreabbrev|co|col|colder|colo|colorscheme|comc|comclear|comp|compiler|con|conf|confirm|continue|cope|copen|copy|cp|cpf|cpfile|cprevious|cq|cquit|cr|crewind|cu|cuna|cunabbrev|cunmap|cw|cwindow|d|debugg|debuggreedy|delc|delcommand|delete|delf|delfunction|delm|delmarks|di|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|e|earlier|echoe|echoerr|echom|echomsg|echon|edit|el|else|elsei|elseif|em|emenu|en|endf|endfo|endfor|endfun|endfunction|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fin|fina|finally|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|foldd|folddoc|folddoclosed|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|h|ha|hardcopy|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|iu|iuna|iunabbrev|iunmap|j|join|ju|jumps|k|kee|keepalt|keepj|keepjumps|keepmarks|l|lN|lNext|lNf|lNfile|la|lad|laddb|laddbuffer|laddexpr|laddf|laddfile|lan|language|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|left|lefta|leftabove|let|lex|lexpr|lf|lfile|lfir|lfirst|lg|lgetb|lgetbuffer|lgete|lgetexpr|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|list|ll|lla|llast|lli|llist|lm|lmak|lmake|lmap|lmapc|lmapclear|ln|lne|lnew|lnewer|lnext|lnf|lnfile|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lp|lpf|lpfile|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|m|ma|mak|make|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkv|mkvie|mkview|mkvimrc|mod|mode|move|mz|mzf|mzfile|mzscheme|n|nbkey|new|next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|o|omapc|omapclear|on|only|open|opt|options|ou|ounmap|p|pc|pclose|pe|ped|pedit|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|print|prof|profd|profdel|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|ptN|ptNext|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|py|pyf|pyfile|python|q|qa|qall|quit|quita|quitall|r|read|rec|recover|red|redi|redir|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|ru|rub|ruby|rubyd|rubydo|rubyf|rubyfile|runtime|rv|rviminfo|sN|sNext|sa|sal|sall|san|sandbox|sargument|sav|saveas|sb|sbN|sbNext|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbp|sbprevious|sbr|sbrewind|sbuffer|scrip|scripte|scriptencoding|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sl|sla|slast|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|so|sor|sort|source|sp|spe|spelld|spelldump|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|split|spr|sprevious|sre|srewind|st|sta|stag|star|startg|startgreplace|startinsert|startr|startreplace|stj|stjump|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tN|tNext|ta|tab|tabN|tabNext|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabn|tabnew|tabnext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|u|una|unabbreviate|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|ve|verb|verbose|version|vert|vertical|vi|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|w|wN|wNext|wa|wall|wh|while|win|winc|wincmd|windo|winp|winpos|winsize|wn|wnext|wp|wprevious|wq|wqa|wqall|write|ws|wsverb|wv|wviminfo|x|xa|xall|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autocmd|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|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|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|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|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|t_AB|t_AF|t_AL|t_CS|t_CV|t_Ce|t_Co|t_Cs|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_IE|t_IS|t_K1|t_K3|t_K4|t_K5|t_K6|t_K7|t_K8|t_K9|t_KA|t_KB|t_KC|t_KD|t_KE|t_KF|t_KG|t_KH|t_KI|t_KJ|t_KK|t_KL|t_RI|t_RV|t_SI|t_Sb|t_Sf|t_WP|t_WS|t_ZH|t_ZR|t_al|t_bc|t_cd|t_ce|t_cl|t_cm|t_cs|t_da|t_db|t_dl|t_fs|t_k1|t_k2|t_k3|t_k4|t_k5|t_k6|t_k7|t_k8|t_k9|t_kB|t_kD|t_kI|t_kN|t_kP|t_kb|t_kd|t_ke|t_kh|t_kl|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_se|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_xs|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)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/}; 17 | !function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var t=[];o((function(t){if(t&&t.meta&&t.data){if(t.meta.status&&t.meta.status>=400)return"Error: "+(t.data.message||t.meta.status);if("string"==typeof t.data.content)return"function"==typeof atob?atob(t.data.content.replace(/\s/g,"")):"Your browser cannot decode base64"}return null}),"github"),o((function(t,e){if(t&&t.meta&&t.data&&t.data.files){if(t.meta.status&&t.meta.status>=400)return"Error: "+(t.data.message||t.meta.status);var n=t.data.files,a=e.getAttribute("data-filename");if(null==a)for(var r in n)if(n.hasOwnProperty(r)){a=r;break}return void 0!==n[a]?n[a].content:"Error: unknown or missing gist file "+a}return null}),"gist"),o((function(t){return t&&t.node&&"string"==typeof t.data?t.data:null}),"bitbucket");var e=0,n="data-jsonp-status",a="failed",r='pre[data-jsonp]:not([data-jsonp-status="loaded"]):not([data-jsonp-status="loading"])';Prism.hooks.add("before-highlightall",(function(t){t.selector+=", "+r})),Prism.hooks.add("before-sanity-check",(function(o){var i,u=o.element;if(u.matches(r)){o.code="",u.setAttribute(n,"loading");var s=u.appendChild(document.createElement("CODE"));s.textContent="Loading…";var d=o.language;s.className="language-"+d;var f=Prism.plugins.autoloader;f&&f.loadLanguages(d);var l=u.getAttribute("data-adapter"),c=null;if(l){if("function"!=typeof window[l])return u.setAttribute(n,a),void(s.textContent=(i=l,'✖ Error: JSONP adapter function "'+i+"\" doesn't exist"));c=window[l]}var p=u.getAttribute("data-jsonp");!function(r,o,i,d){var f="prismjsonp"+e++,l=document.createElement("a");l.href=r,l.href+=(l.search?"&":"?")+(o||"callback")+"="+f;var p=document.createElement("script");p.src=l.href,p.onerror=function(){g(),d()};var m=setTimeout((function(){g(),d()}),Prism.plugins.jsonphighlight.timeout);function g(){clearTimeout(m),document.head.removeChild(p),delete window[f]}window[f]=function(e){g(),function(e){var r=null;if(c)r=c(e,u);else for(var o=0,i=t.length;o=0&&t.splice(n,1)}},highlight:function(t){for(var e,n=(t||document).querySelectorAll(r),a=0;e=n[a++];)Prism.highlightElement(e)}}}function o(e,n){n=n||e.name,"function"!=typeof e||i(e)||i(n)||t.push({adapter:e,name:n})}function i(e){if("function"==typeof e){for(var n=0;a=t[n++];)if(a.adapter.valueOf()===e.valueOf())return a.adapter}else if("string"==typeof e){var a;for(n=0;a=t[n++];)if(a.name===e)return a.adapter}return null}}(); 18 | !function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){a.onClick.call(this,e)}))):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains("code-toolbar")){var o=document.createElement("div");o.classList.add("code-toolbar"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement("div");i.classList.add("toolbar");var l=e,d=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}})),Prism.hooks.add("complete",r)}}(); 19 | !function(){function t(t){var e=document.createElement("textarea");e.value=t.getText(),e.style.top="0",e.style.left="0",e.style.position="fixed",document.body.appendChild(e),e.focus(),e.select();try{var o=document.execCommand("copy");setTimeout((function(){o?t.success():t.error()}),1)}catch(e){setTimeout((function(){t.error(e)}),1)}document.body.removeChild(e)}"undefined"!=typeof Prism&&"undefined"!=typeof document&&(Prism.plugins.toolbar?Prism.plugins.toolbar.registerButton("copy-to-clipboard",(function(e){var o=e.element,n=function(t){var e={copy:"Copy","copy-error":"Press Ctrl+C to copy","copy-success":"Copied!","copy-timeout":5e3};for(var o in e){for(var n="data-prismjs-"+o,c=t;c&&!c.hasAttribute(n);)c=c.parentElement;c&&(e[o]=c.getAttribute(n))}return e}(o),c=document.createElement("button");c.className="copy-to-clipboard-button",c.setAttribute("type","button");var r=document.createElement("span");return c.appendChild(r),u("copy"),function(e,o){e.addEventListener("click",(function(){!function(e){navigator.clipboard?navigator.clipboard.writeText(e.getText()).then(e.success,(function(){t(e)})):t(e)}(o)}))}(c,{getText:function(){return o.textContent},success:function(){u("copy-success"),i()},error:function(){u("copy-error"),setTimeout((function(){!function(t){window.getSelection().selectAllChildren(t)}(o)}),1),i()}}),c;function i(){setTimeout((function(){u("copy")}),n["copy-timeout"])}function u(t){r.textContent=n[t],c.setAttribute("data-copy-state",t)}})):console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."))}(); 20 | --------------------------------------------------------------------------------