├── .github
└── workflows
│ └── notify.yml
├── .gitignore
├── LICENSE
├── README.md
├── app.js
├── favicon.ico
├── icon.png
├── index.html
├── style.css
├── touch-icon.png
└── vendor
├── balloon.css
├── eff-short-passphrase.js
├── highlight.min.css
├── highlight.min.js
├── jwt-decode.js
├── marked.min.js
├── mousetrap.min.js
├── prettier-parser-html.js
├── prettier.js
└── write-good.dist.js
/.github/workflows/notify.yml:
--------------------------------------------------------------------------------
1 | name: Trigger rebuild of parent repo
2 | on:
3 | push:
4 | branches: [ main ]
5 |
6 | workflow_dispatch:
7 |
8 | jobs:
9 | notify:
10 | runs-on: ubuntu-20.04
11 | container: alpine/httpie
12 | steps:
13 | - name: Notify parent repo
14 | run: http post https://api.github.com/repos/sesh/brntn.me/dispatches "Authorization:token ${{ secrets.NOTIFY_TOKEN }}" event_type=build --ignore-stdin
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2017 Brenton Cleeland
2 |
3 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
4 |
5 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [`scratchpad`](https://sesh.github.io/scratchpad/) is a place for temporary notes and quick text modifications.
2 | The notes are saved in your browser using local storage so they should be there when you come back.
3 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | let removeError = () => {
2 | let el = document.querySelector('#errors');
3 | el.parentNode.removeChild(el);
4 | }
5 |
6 | let displayError = (message) => {
7 | let el = document.createElement('div');
8 | el.id = "errors";
9 | el.innerText = message;
10 | el.onclick = removeError;
11 | document.querySelector('body').appendChild(el);
12 | };
13 |
14 | let getLineNumber = (textarea) => {
15 | return textarea.value.substr(0, textarea.selectionStart).split("\n").length - 1;
16 | };
17 |
18 | let replaceSelection = (textarea, value) => {
19 | var pos = textarea.selectionStart;
20 | textarea.value = textarea.value.slice(0, pos) + value + textarea.value.slice(textarea.selectionEnd);
21 | textarea.focus();
22 | textarea.setSelectionRange(pos + value.length, pos + value.length);
23 | }
24 |
25 | let loadFromLocalStorage = (scratchpad) => {
26 | // ensure we keep the same night / day mode
27 | if (localStorage.getItem("mode") == "night") {
28 | document.getElementsByTagName('body')[0].classList = 'night';
29 | }
30 |
31 | // load the scratchpad content if it's there
32 | if (localStorage.getItem("scratchpad")) {
33 | scratchpad.value = localStorage.getItem("scratchpad");
34 | }
35 | }
36 |
37 | let saveToLocalStorage = (scratchpad) => {
38 | localStorage.setItem("scratchpad", scratchpad.value);
39 |
40 | if (scratchpad.onsave) {
41 | scratchpad.onsave(scratchpad);
42 | }
43 | }
44 |
45 | let indentNewline = (scratchpad) => {
46 | let lines = scratchpad.value.split("\n");
47 | let current_line_number = getLineNumber(scratchpad)
48 | let prev_line = lines[current_line_number - 1];
49 |
50 | if (prev_line.trim().length > 0) {
51 | let indent = prev_line.length - prev_line.trimLeft().length;
52 | let pos = scratchpad.selectionStart;
53 | scratchpad.value = scratchpad.value.slice(0, pos) + " ".repeat(indent) + scratchpad.value.slice(pos);
54 | scratchpad.setSelectionRange(pos + indent, pos + indent);
55 | }
56 | }
57 |
58 | let continueListOnNewline = (scratchpad) => {
59 | let lines = scratchpad.value.split("\n");
60 | let current_line_number = getLineNumber(scratchpad)
61 |
62 | let prev_line = lines[current_line_number - 1];
63 | prev_line = prev_line.trimLeft();
64 |
65 | if (["-", "*"].indexOf(prev_line[0]) >= 0) {
66 | let pos = scratchpad.selectionStart;
67 | scratchpad.value = scratchpad.value.slice(0, pos) + prev_line[0] + " " + scratchpad.value.slice(pos);
68 | scratchpad.setSelectionRange(pos + 2, pos + 2);
69 | }
70 | }
71 |
72 | function shuffle(array) {
73 | var currentIndex = array.length, temporaryValue, randomIndex;
74 |
75 | // While there remain elements to shuffle...
76 | while (0 !== currentIndex) {
77 |
78 | // Pick a remaining element...
79 | randomIndex = Math.floor(Math.random() * currentIndex);
80 | currentIndex -= 1;
81 |
82 | // And swap it with the current element.
83 | temporaryValue = array[currentIndex];
84 | array[currentIndex] = array[randomIndex];
85 | array[randomIndex] = temporaryValue;
86 | }
87 |
88 | return array;
89 | }
90 |
91 | let sortLines = (scratchpad) => {
92 | let lines = scratchpad.value.split("\n");
93 | lines.sort()
94 | scratchpad.value = lines.join("\n");
95 | }
96 |
97 | let shuffleLines = (scratchpad) => {
98 | let lines = scratchpad.value.split("\n");
99 | lines = shuffle(lines);
100 | scratchpad.value = lines.join("\n");
101 | }
102 |
103 | let base64encode = (textarea) => {
104 | textarea.value = btoa(textarea.value);
105 | };
106 |
107 | let base64decode = (textarea) => {
108 | textarea.value = atob(textarea.value);
109 | }
110 |
111 | let jq = (scratchpad) => {
112 | try {
113 | var formatted = JSON.stringify(JSON.parse(scratchpad.value), null, 2);
114 | scratchpad.value = formatted;
115 | } catch (e) {
116 | displayError(e.message);
117 | }
118 | }
119 |
120 | let htmlFormat = (scratchpad) => {
121 | var formatted = prettier.format(scratchpad.value, {parser: 'html', plugins: prettierPlugins});
122 | scratchpad.value = formatted;
123 | }
124 |
125 | let jwt = (scratchpad) => {
126 | try {
127 | var token = jwt_decode(scratchpad.value);
128 | var decodedHeader = jwt_decode(scratchpad.value, { header: true });
129 | scratchpad.value = JSON.stringify(decodedHeader, null, 2) + "\n" + JSON.stringify(token, null, 2);
130 | } catch (e) {
131 | displayError(e.message);
132 | }
133 | }
134 |
135 | let uuid = (scratchpad) => {
136 | var uuid = ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
137 | (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
138 | );
139 |
140 | replaceSelection(scratchpad, uuid);
141 | }
142 |
143 | let dt = (scratchpad) => {
144 | replaceSelection(scratchpad, new Date().toISOString());
145 | }
146 |
147 | let passphrase = (scratchpad) => {
148 | replaceSelection(scratchpad, generatePassphrase());
149 | }
150 |
151 | let pw = (scratchpad) => {
152 | var passwordCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890%+-./:=@_"
153 | var result = "";
154 | while (result.length < 12) {
155 | result += passwordCharacters[Math.floor(Math.random() * passwordCharacters.length)];
156 | }
157 | replaceSelection(scratchpad, result);
158 | }
159 |
160 | let download = (scratchpad) => {
161 | var link = "data:application/octet-stream;charset=utf-16le;base64," + btoa(scratchpad.value);
162 | var el = document.createElement('a');
163 | el.setAttribute("href", link);
164 | el.setAttribute("download", new Date().toISOString().replaceAll(":", "") + "-scratchpad.txt");
165 | el.innerText = "dl";
166 | el.style.display = "none";
167 | document.body.appendChild(el);
168 | el.click();
169 | document.body.removeChild(el);
170 | }
171 |
172 | let darkMode = () => {
173 | let body = document.querySelector('body');
174 |
175 | if (body.classList.contains('night')) {
176 | body.classList = 'day';
177 | localStorage.setItem("mode", "day");
178 | } else {
179 | body.classList = 'night';
180 | localStorage.setItem("mode", "night");
181 | }
182 | }
183 |
184 | let indentCurrentLine = (scratchpad) => {
185 | let pos = scratchpad.selectionStart;
186 | let lines = scratchpad.value.split("\n");
187 | let current_line_number = getLineNumber(scratchpad);
188 |
189 | let line = lines[current_line_number];
190 | line = " " + line;
191 | lines[current_line_number] = line;
192 |
193 | scratchpad.value = lines.join('\n');
194 | scratchpad.setSelectionRange(pos + 2, pos + 2);
195 | }
196 |
197 | let unindentCurrentLine = (scratchpad) => {
198 | let pos = scratchpad.selectionStart;
199 | let lines = scratchpad.value.split("\n");
200 | let current_line_number = getLineNumber(scratchpad);
201 |
202 | let line = lines[current_line_number];
203 | let line_length = line.length;
204 |
205 | // remove up to two spaces from the current line
206 | line = line[0] === " " ? line.substring(1) : line;
207 | line = line[0] === " " ? line.substring(1) : line
208 | let length_change = line_length - line.length;
209 | lines[current_line_number] = line;
210 |
211 | scratchpad.value = lines.join('\n');
212 | scratchpad.setSelectionRange(pos - length_change, pos - length_change);
213 | }
214 |
215 | let handleTab = (e, scratchpad) => {
216 | let pos = scratchpad.selectionStart;
217 |
218 | if (!e.shiftKey) {
219 | scratchpad.value = scratchpad.value.slice(0, pos) + " " + scratchpad.value.slice(pos);
220 | scratchpad.setSelectionRange(pos + 2, pos + 2);
221 | } else {
222 | unindentCurrentLine(scratchpad);
223 | }
224 | }
225 |
226 | let handleKeyUp = (e, scratchpad) => {
227 | if (e.key === "Enter") {
228 | indentNewline(scratchpad);
229 | !e.shiftKey && continueListOnNewline(scratchpad);
230 | }
231 | saveToLocalStorage(scratchpad);
232 | }
233 |
234 | let handleKeyDown = (e, scratchpad) => {
235 | if (e.key === "Tab") {
236 | e.preventDefault();
237 | handleTab(e, scratchpad);
238 | }
239 | }
240 |
241 | let updateMarkdown = (scratchpad) => {
242 | let el = document.querySelector('#markdownOutput');
243 | let content = scratchpad.value;
244 | el.innerHTML = marked(content, {
245 | highlight: (code) => {
246 | return hljs.highlightAuto(code).value;
247 | }
248 | });
249 | }
250 |
251 | let copyFormatted = (scratchpad) => {
252 | function listener(e) {
253 | let el = document.createElement('div');
254 | el.classList = 'formatted-md';
255 |
256 | let content = scratchpad.value;
257 | el.innerHTML = marked(content, {
258 | highlight: (code) => {
259 | return hljs.highlightAuto(code).value;
260 | }
261 | });
262 | e.clipboardData.setData("text/html", el.innerHTML);
263 | e.clipboardData.setData("text/plain", el.innerHTML);
264 | e.preventDefault();
265 | }
266 |
267 | document.addEventListener("copy", listener);
268 | document.execCommand("copy");
269 | document.removeEventListener("copy", listener);
270 | }
271 |
272 | let toggleMarkdown = (scratchpad) => {
273 | let el = document.querySelector('#markdownOutput');
274 |
275 | if (!el) {
276 | openDismissablePanel('markdownOutput');
277 | updateMarkdown(scratchpad);
278 | scratchpad.onsave = updateMarkdown;
279 | } else {
280 | dismissDismissablePanels();
281 | scratchpad.onsave = null;
282 | }
283 | }
284 |
285 | let updateWriteGood = (scratchpad) => {
286 | let tempEl = document.createElement('div');
287 | tempEl.innerText = scratchpad.value;
288 |
289 | let html = tempEl.innerHTML;
290 | let results = writeGood(html);
291 |
292 | for (let r of results.reverse()) {
293 | console.log(r);
294 | html = html.substring(0, r.index) +
295 | "" +
296 | html.substring(r.index, r.index + r.offset) +
297 | "" + html.substring(r.index + r.offset);
298 | }
299 |
300 | let el = document.querySelector('#writeGoodOutput');
301 | el.innerHTML = html;
302 | }
303 |
304 | let toggleWriteGood = (scratchpad) => {
305 | let el = document.querySelector('#writeGoodOutput');
306 |
307 | if (!el) {
308 | openDismissablePanel('writeGoodOutput')
309 | updateWriteGood(scratchpad);
310 | scratchpad.onsave = updateWriteGood;
311 | } else {
312 | dismissDismissablePanels();
313 | scratchpad.onsave = null;
314 | }
315 | }
316 |
317 | let toggleSidebar = (scratchpad) => {
318 | let sidebarEl = document.querySelector("#sidebar");
319 | sidebarEl.style.display = sidebarEl.style.display == 'block' ? 'none' : 'block';
320 | }
321 |
322 | let dismissDismissablePanels = () => {
323 | let els = document.getElementsByClassName('dismissable');
324 |
325 | for (let el of els) {
326 | el.parentNode.removeChild(el);
327 | }
328 | };
329 |
330 | let openDismissablePanel = (id) => {
331 | dismissDismissablePanels();
332 |
333 | let el = document.createElement('div');
334 | el.classList = 'dismissable';
335 |
336 | let closeEl = document.createElement('span');
337 | closeEl.innerHTML = 'x';
338 | closeEl.classList = 'close';
339 | closeEl.onclick = dismissDismissablePanels;
340 | el.appendChild(closeEl);
341 |
342 | let contentEl = document.createElement('div');
343 | contentEl.id = id;
344 | el.appendChild(contentEl);
345 |
346 | document.querySelector('main').appendChild(el);
347 | };
348 |
349 | (function() {
350 | let scratchpad = document.querySelector('#scratchpad');
351 | loadFromLocalStorage(scratchpad);
352 |
353 | scratchpad.onkeydown = (e) => handleKeyDown(e, scratchpad);
354 | scratchpad.onkeyup = (e) => handleKeyUp(e, scratchpad);
355 |
356 | // setup actions
357 | // other ideas:
358 | // - kroki.io chart (with preview)
359 | // - regex matches
360 |
361 | const tools = [
362 | {
363 | "name": "base64-decode",
364 | "action": base64decode,
365 | },
366 | {
367 | "name": "base64-encode",
368 | "action": base64encode,
369 | },
370 | {
371 | "name": "copy-formatted",
372 | "action": copyFormatted,
373 | },
374 | {
375 | "name": "dark",
376 | "action": darkMode,
377 | "footer": true,
378 | },
379 | {
380 | "name": "dl",
381 | "action": download,
382 | "footer": true,
383 | },
384 | {
385 | "name": "dt",
386 | "action": dt,
387 | "footer": true,
388 | },
389 | {
390 | "name": "html-format",
391 | "action": htmlFormat,
392 | "footer": true,
393 | },
394 | {
395 | "name": "jq",
396 | "action": jq,
397 | "description": "Format the current scratchpad value as JSON",
398 | "footer": true,
399 | },
400 | {
401 | "name": "jwt",
402 | "action": jwt,
403 | "footer": true,
404 | },
405 | {
406 | "name": "md",
407 | "action": toggleMarkdown,
408 | "footer": true,
409 | },
410 | {
411 | "name": "passphrase",
412 | "action": passphrase,
413 | "description": "Generate a passphrase using the EFF short word list"
414 | },
415 | {
416 | "name": "pw",
417 | "action": pw,
418 | "description": "Generate a random 12 character password",
419 | "footer": true,
420 | },
421 | {
422 | "name": "shuffle",
423 | "action": shuffleLines,
424 | "description": "Sort all lines in the scratchpad alphabetically"
425 | },
426 | {
427 | "name": "sidebar",
428 | "action": toggleSidebar,
429 | "footer": true,
430 | },
431 | {
432 | "name": "sort",
433 | "action": sortLines,
434 | "description": "Sort all lines in the scratchpad alphabetically"
435 | },
436 | {
437 | "name": "uuid",
438 | "action": uuid,
439 | "footer": true,
440 | },
441 | {
442 | "name": "write-good",
443 | "action": toggleWriteGood,
444 | },
445 | ];
446 |
447 | let toolsEl = document.querySelector("#tools");
448 | let sidebarEl = document.querySelector("#sidebar");
449 | tools.forEach(tool => {
450 | if (tool.footer) {
451 | let a = document.createElement('a');
452 | a.innerText = "~" + tool.name + " ";
453 | a.onclick = (e) => {
454 | e.preventDefault();
455 | tool.action(scratchpad);
456 | saveToLocalStorage(scratchpad);
457 | };
458 | a.href = "#";
459 | toolsEl.appendChild(a);
460 | }
461 |
462 | let a = document.createElement('a');
463 | a.innerText = "~" + tool.name;
464 | a.onclick = (e) => {
465 | e.preventDefault();
466 | tool.action(scratchpad);
467 | saveToLocalStorage(scratchpad);
468 | };
469 | a.href = "#";
470 | sidebarEl.appendChild(a);
471 | });
472 |
473 | toolsEl.appendChild(document.createElement("br"));
474 | toolsEl.appendChild(document.createTextNode("(sidebar: cmd+shift+k)"));
475 |
476 | scratchpad.focus();
477 |
478 | Mousetrap.bind('mod+shift+k', function(e) {
479 | toggleSidebar();
480 | });
481 |
482 | Mousetrap.bind('mod+]', function (e) {
483 | indentCurrentLine(scratchpad);
484 | });
485 |
486 | Mousetrap.bind('mod+[', function (e) {
487 | unindentCurrentLine(scratchpad);
488 | });
489 | })()
490 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sesh/scratchpad/1f9ff03c13d674a98172eadc9bf67bee3d9d25f2/favicon.ico
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sesh/scratchpad/1f9ff03c13d674a98172eadc9bf67bee3d9d25f2/icon.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | Scratchpad
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | body,
2 | html {
3 | margin: 0;
4 | padding: 0;
5 | font-family: Consolas, 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace;
6 | font-size: 1em;
7 | line-height: 1.4em;
8 | }
9 |
10 | body.night {
11 | background-color: #002b36;
12 | color: #eee8d5;
13 | }
14 |
15 | body.day {
16 | background-color: #eee8d5;
17 | color: #002b36;
18 | }
19 |
20 | #errors {
21 | position: fixed;
22 | top: 10px;
23 | right: 10px;
24 | width: 40%;
25 | min-width: 33em;
26 | padding: 6px;
27 | background-color: #cb4b16;
28 | color: white;
29 | }
30 |
31 | a,
32 | a:visited {
33 | color: #268bd2;
34 | text-decoration: none;
35 | }
36 |
37 | a:hover {
38 | font-weight: bold;
39 | transition-duration: 0.1s;
40 | }
41 |
42 | main,
43 | footer {
44 | display: flex;
45 | justify-content: center;
46 | width: 96%;
47 | max-width: 74em;
48 | margin: 0 auto;
49 | }
50 |
51 | main>* {
52 | flex: 1 1 0;
53 | height: 90vh;
54 | overflow: auto;
55 | box-sizing: border-box;
56 | }
57 |
58 | footer {
59 | height: 6vh;
60 | justify-content: space-between;
61 | }
62 |
63 | textarea {
64 | font-family: inherit;
65 | font-size: inherit;
66 | line-height: inherit;
67 | border: 0;
68 | padding: 2em;
69 | outline: none;
70 | background-color: inherit;
71 | color: inherit;
72 | }
73 |
74 | textarea.placeholder {
75 | opacity: 0.7;
76 | }
77 |
78 | .dismissable {
79 | position: relative;
80 | padding: 2em;
81 | }
82 |
83 | .dismissable .close {
84 | position: absolute;
85 | top: 5px;
86 | right: 5px;
87 | cursor: pointer;
88 | }
89 |
90 | .highlight {
91 | background-color: #d33682;
92 | padding: 2px;
93 | }
94 |
95 | body.night .highlight {
96 | background-color: #657b83;
97 | }
98 |
99 | p {
100 | margin-top: 0;
101 | margin-bottom: 1.4em;
102 | }
103 |
104 | #tools {
105 | text-align: right;
106 | color: #868e96;
107 | }
108 |
109 | #sidebar {
110 | display: none;
111 | position: absolute;
112 | top: 0;
113 | right: 0;
114 | padding: 2em;
115 | }
116 |
117 | #sidebar a {
118 | display: block;
119 | }
120 |
121 | #markdownOutput {
122 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
123 | }
124 |
125 | #markdownOutput code,
126 | #markdownOutput pre {
127 | font-family: monospace;
128 | }
129 |
130 | .hljs {
131 | display: block;
132 | overflow-x: auto;
133 | padding: 0.5em;
134 | background: #fdf6e3;
135 | color: #657b83;
136 | }
137 |
138 | .hljs-comment,
139 | .hljs-quote {
140 | color: #93a1a1;
141 | }
142 |
143 | .outlook-md {
144 | font-family: 'Calibri', sans-serif;
145 | background-color: white;
146 | color: black;
147 | }
148 |
149 | .outlook-md blockquote {
150 | border-left: 3px solid #ccc;
151 | padding-left: 1em;
152 | margin-left: 1em;
153 | }
154 |
155 | /* Solarized Green */
156 |
157 | .hljs-keyword,
158 | .hljs-selector-tag,
159 | .hljs-addition {
160 | color: #859900;
161 | }
162 |
163 |
164 | /* Solarized Cyan */
165 |
166 | .hljs-number,
167 | .hljs-string,
168 | .hljs-meta .hljs-meta-string,
169 | .hljs-literal,
170 | .hljs-doctag,
171 | .hljs-regexp {
172 | color: #2aa198;
173 | }
174 |
175 |
176 | /* Solarized Blue */
177 |
178 | .hljs-title,
179 | .hljs-section,
180 | .hljs-name,
181 | .hljs-selector-id,
182 | .hljs-selector-class {
183 | color: #268bd2;
184 | }
185 |
186 |
187 | /* Solarized Yellow */
188 |
189 | .hljs-attribute,
190 | .hljs-attr,
191 | .hljs-variable,
192 | .hljs-template-variable,
193 | .hljs-class .hljs-title,
194 | .hljs-type {
195 | color: #b58900;
196 | }
197 |
198 |
199 | /* Solarized Orange */
200 |
201 | .hljs-symbol,
202 | .hljs-bullet,
203 | .hljs-subst,
204 | .hljs-meta,
205 | .hljs-meta .hljs-keyword,
206 | .hljs-selector-attr,
207 | .hljs-selector-pseudo,
208 | .hljs-link {
209 | color: #cb4b16;
210 | }
211 |
212 |
213 | /* Solarized Red */
214 |
215 | .hljs-built_in,
216 | .hljs-deletion {
217 | color: #dc322f;
218 | }
219 |
220 | .hljs-formula {
221 | background: #eee8d5;
222 | }
223 |
224 | .hljs-emphasis {
225 | font-style: italic;
226 | }
227 |
228 | .hljs-strong {
229 | font-weight: bold;
230 | }
231 |
232 |
233 | /* --- Dark --- */
234 |
235 | body.night .hljs {
236 | display: block;
237 | overflow-x: auto;
238 | padding: 0.5em;
239 | background: #002b36;
240 | color: #839496;
241 | }
242 |
243 | body.night .hljs-comment,
244 | body.night .hljs-quote {
245 | color: #586e75;
246 | }
247 |
248 |
249 | /* Solarized Green */
250 |
251 | body.night .hljs-keyword,
252 | body.night .hljs-selector-tag,
253 | body.night .hljs-addition {
254 | color: #859900;
255 | }
256 |
257 |
258 | /* Solarized Cyan */
259 |
260 | body.night .hljs-number,
261 | body.night .hljs-string,
262 | body.night .hljs-meta .hljs-meta-string,
263 | body.night .hljs-literal,
264 | body.night .hljs-doctag,
265 | body.night .hljs-regexp {
266 | color: #2aa198;
267 | }
268 |
269 |
270 | /* Solarized Blue */
271 |
272 | body.night .hljs-title,
273 | body.night .hljs-section,
274 | body.night .hljs-name,
275 | body.night .hljs-selector-id,
276 | body.night .hljs-selector-class {
277 | color: #268bd2;
278 | }
279 |
280 |
281 | /* Solarized Yellow */
282 |
283 | body.night .hljs-attribute,
284 | body.night .hljs-attr,
285 | body.night .hljs-variable,
286 | body.night .hljs-template-variable,
287 | body.night .hljs-class .hljs-title,
288 | body.night .hljs-type {
289 | color: #b58900;
290 | }
291 |
292 |
293 | /* Solarized Orange */
294 |
295 | body.night .hljs-symbol,
296 | body.night .hljs-bullet,
297 | body.night .hljs-subst,
298 | body.night .hljs-meta,
299 | body.night .hljs-meta .hljs-keyword,
300 | body.night .hljs-selector-attr,
301 | body.night .hljs-selector-pseudo,
302 | body.night .hljs-link {
303 | color: #cb4b16;
304 | }
305 |
306 |
307 | /* Solarized Red */
308 |
309 | body.night .hljs-built_in,
310 | body.night .hljs-deletion {
311 | color: #dc322f;
312 | }
313 |
314 | body.night .hljs-formula {
315 | background: #073642;
316 | }
317 |
318 | body.night .hljs-emphasis {
319 | font-style: italic;
320 | }
321 |
322 | body.night .hljs-strong {
323 | font-weight: bold;
324 | }
325 |
326 | @media print {
327 | body.night, body.day {
328 | background-color: transparent;
329 | color: #000000;
330 | }
331 |
332 | textarea, .close, footer {
333 | display: none;
334 | }
335 | }
336 |
--------------------------------------------------------------------------------
/touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sesh/scratchpad/1f9ff03c13d674a98172eadc9bf67bee3d9d25f2/touch-icon.png
--------------------------------------------------------------------------------
/vendor/balloon.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --balloon-color: rgba(16, 16, 16, 0.95);
3 | --balloon-font-size: 12px;
4 | --balloon-move: 4px; }
5 |
6 | button[aria-label][data-balloon-pos] {
7 | overflow: visible; }
8 |
9 | [aria-label][data-balloon-pos] {
10 | position: relative;
11 | cursor: pointer; }
12 | [aria-label][data-balloon-pos]:after {
13 | opacity: 0;
14 | pointer-events: none;
15 | transition: all .18s ease-out .18s;
16 | text-indent: 0;
17 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
18 | font-weight: normal;
19 | font-style: normal;
20 | text-shadow: none;
21 | font-size: var(--balloon-font-size);
22 | background: var(--balloon-color);
23 | border-radius: 2px;
24 | color: #fff;
25 | content: attr(aria-label);
26 | padding: .5em 1em;
27 | position: absolute;
28 | white-space: nowrap;
29 | z-index: 10; }
30 | [aria-label][data-balloon-pos]:before {
31 | width: 0;
32 | height: 0;
33 | border: 5px solid transparent;
34 | border-top-color: var(--balloon-color);
35 | opacity: 0;
36 | pointer-events: none;
37 | transition: all .18s ease-out .18s;
38 | content: "";
39 | position: absolute;
40 | z-index: 10; }
41 | [aria-label][data-balloon-pos]:hover:before, [aria-label][data-balloon-pos]:hover:after, [aria-label][data-balloon-pos][data-balloon-visible]:before, [aria-label][data-balloon-pos][data-balloon-visible]:after, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before, [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {
42 | opacity: 1;
43 | pointer-events: none; }
44 | [aria-label][data-balloon-pos].font-awesome:after {
45 | font-family: FontAwesome, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; }
46 | [aria-label][data-balloon-pos][data-balloon-break]:after {
47 | white-space: pre; }
48 | [aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after {
49 | white-space: pre-line;
50 | word-break: break-word; }
51 | [aria-label][data-balloon-pos][data-balloon-blunt]:before, [aria-label][data-balloon-pos][data-balloon-blunt]:after {
52 | transition: none; }
53 | [aria-label][data-balloon-pos][data-balloon-pos="up"]:after {
54 | bottom: 100%;
55 | left: 50%;
56 | margin-bottom: 10px;
57 | transform: translate(-50%, var(--balloon-move));
58 | transform-origin: top; }
59 | [aria-label][data-balloon-pos][data-balloon-pos="up"]:before {
60 | bottom: 100%;
61 | left: 50%;
62 | transform: translate(-50%, var(--balloon-move));
63 | transform-origin: top; }
64 | [aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after {
65 | transform: translate(-50%, 0); }
66 | [aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before {
67 | transform: translate(-50%, 0); }
68 | [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:after {
69 | bottom: 100%;
70 | left: 0;
71 | margin-bottom: 10px;
72 | transform: translate(0, var(--balloon-move));
73 | transform-origin: top; }
74 | [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:before {
75 | bottom: 100%;
76 | left: 5px;
77 | transform: translate(0, var(--balloon-move));
78 | transform-origin: top; }
79 | [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:after {
80 | transform: translate(0, 0); }
81 | [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:before {
82 | transform: translate(0, 0); }
83 | [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:after {
84 | bottom: 100%;
85 | right: 0;
86 | margin-bottom: 10px;
87 | transform: translate(0, var(--balloon-move));
88 | transform-origin: top; }
89 | [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:before {
90 | bottom: 100%;
91 | right: 5px;
92 | transform: translate(0, var(--balloon-move));
93 | transform-origin: top; }
94 | [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:after {
95 | transform: translate(0, 0); }
96 | [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:before {
97 | transform: translate(0, 0); }
98 | [aria-label][data-balloon-pos][data-balloon-pos="down"]:after {
99 | left: 50%;
100 | margin-top: 10px;
101 | top: 100%;
102 | transform: translate(-50%, calc(var(--balloon-move) * -1)); }
103 | [aria-label][data-balloon-pos][data-balloon-pos="down"]:before {
104 | width: 0;
105 | height: 0;
106 | border: 5px solid transparent;
107 | border-bottom-color: var(--balloon-color);
108 | left: 50%;
109 | top: 100%;
110 | transform: translate(-50%, calc(var(--balloon-move) * -1)); }
111 | [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after {
112 | transform: translate(-50%, 0); }
113 | [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before {
114 | transform: translate(-50%, 0); }
115 | [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:after {
116 | left: 0;
117 | margin-top: 10px;
118 | top: 100%;
119 | transform: translate(0, calc(var(--balloon-move) * -1)); }
120 | [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:before {
121 | width: 0;
122 | height: 0;
123 | border: 5px solid transparent;
124 | border-bottom-color: var(--balloon-color);
125 | left: 5px;
126 | top: 100%;
127 | transform: translate(0, calc(var(--balloon-move) * -1)); }
128 | [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:after {
129 | transform: translate(0, 0); }
130 | [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:before {
131 | transform: translate(0, 0); }
132 | [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:after {
133 | right: 0;
134 | margin-top: 10px;
135 | top: 100%;
136 | transform: translate(0, calc(var(--balloon-move) * -1)); }
137 | [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:before {
138 | width: 0;
139 | height: 0;
140 | border: 5px solid transparent;
141 | border-bottom-color: var(--balloon-color);
142 | right: 5px;
143 | top: 100%;
144 | transform: translate(0, calc(var(--balloon-move) * -1)); }
145 | [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:after {
146 | transform: translate(0, 0); }
147 | [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:before {
148 | transform: translate(0, 0); }
149 | [aria-label][data-balloon-pos][data-balloon-pos="left"]:after {
150 | margin-right: 10px;
151 | right: 100%;
152 | top: 50%;
153 | transform: translate(var(--balloon-move), -50%); }
154 | [aria-label][data-balloon-pos][data-balloon-pos="left"]:before {
155 | width: 0;
156 | height: 0;
157 | border: 5px solid transparent;
158 | border-left-color: var(--balloon-color);
159 | right: 100%;
160 | top: 50%;
161 | transform: translate(var(--balloon-move), -50%); }
162 | [aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after {
163 | transform: translate(0, -50%); }
164 | [aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before {
165 | transform: translate(0, -50%); }
166 | [aria-label][data-balloon-pos][data-balloon-pos="right"]:after {
167 | left: 100%;
168 | margin-left: 10px;
169 | top: 50%;
170 | transform: translate(calc(var(--balloon-move) * -1), -50%); }
171 | [aria-label][data-balloon-pos][data-balloon-pos="right"]:before {
172 | width: 0;
173 | height: 0;
174 | border: 5px solid transparent;
175 | border-right-color: var(--balloon-color);
176 | left: 100%;
177 | top: 50%;
178 | transform: translate(calc(var(--balloon-move) * -1), -50%); }
179 | [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after {
180 | transform: translate(0, -50%); }
181 | [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before, [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before {
182 | transform: translate(0, -50%); }
183 | [aria-label][data-balloon-pos][data-balloon-length="small"]:after {
184 | white-space: normal;
185 | width: 80px; }
186 | [aria-label][data-balloon-pos][data-balloon-length="medium"]:after {
187 | white-space: normal;
188 | width: 150px; }
189 | [aria-label][data-balloon-pos][data-balloon-length="large"]:after {
190 | white-space: normal;
191 | width: 260px; }
192 | [aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
193 | white-space: normal;
194 | width: 380px; }
195 | @media screen and (max-width: 768px) {
196 | [aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {
197 | white-space: normal;
198 | width: 90vw; } }
199 | [aria-label][data-balloon-pos][data-balloon-length="fit"]:after {
200 | white-space: normal;
201 | width: 100%; }
202 |
--------------------------------------------------------------------------------
/vendor/eff-short-passphrase.js:
--------------------------------------------------------------------------------
1 | let wordlist = [
2 | "acid",
3 | "acorn",
4 | "acre",
5 | "acts",
6 | "afar",
7 | "affix",
8 | "aged",
9 | "agent",
10 | "agile",
11 | "aging",
12 | "agony",
13 | "ahead",
14 | "aide",
15 | "aids",
16 | "aim",
17 | "ajar",
18 | "alarm",
19 | "alias",
20 | "alibi",
21 | "alien",
22 | "alike",
23 | "alive",
24 | "aloe",
25 | "aloft",
26 | "aloha",
27 | "alone",
28 | "amend",
29 | "amino",
30 | "ample",
31 | "amuse",
32 | "angel",
33 | "anger",
34 | "angle",
35 | "ankle",
36 | "apple",
37 | "april",
38 | "apron",
39 | "aqua",
40 | "area",
41 | "arena",
42 | "argue",
43 | "arise",
44 | "armed",
45 | "armor",
46 | "army",
47 | "aroma",
48 | "array",
49 | "arson",
50 | "art",
51 | "ashen",
52 | "ashes",
53 | "atlas",
54 | "atom",
55 | "attic",
56 | "audio",
57 | "avert",
58 | "avoid",
59 | "awake",
60 | "award",
61 | "awoke",
62 | "axis",
63 | "bacon",
64 | "badge",
65 | "bagel",
66 | "baggy",
67 | "baked",
68 | "baker",
69 | "balmy",
70 | "banjo",
71 | "barge",
72 | "barn",
73 | "bash",
74 | "basil",
75 | "bask",
76 | "batch",
77 | "bath",
78 | "baton",
79 | "bats",
80 | "blade",
81 | "blank",
82 | "blast",
83 | "blaze",
84 | "bleak",
85 | "blend",
86 | "bless",
87 | "blimp",
88 | "blink",
89 | "bloat",
90 | "blob",
91 | "blog",
92 | "blot",
93 | "blunt",
94 | "blurt",
95 | "blush",
96 | "boast",
97 | "boat",
98 | "body",
99 | "boil",
100 | "bok",
101 | "bolt",
102 | "boned",
103 | "boney",
104 | "bonus",
105 | "bony",
106 | "book",
107 | "booth",
108 | "boots",
109 | "boss",
110 | "botch",
111 | "both",
112 | "boxer",
113 | "breed",
114 | "bribe",
115 | "brick",
116 | "bride",
117 | "brim",
118 | "bring",
119 | "brink",
120 | "brisk",
121 | "broad",
122 | "broil",
123 | "broke",
124 | "brook",
125 | "broom",
126 | "brush",
127 | "buck",
128 | "bud",
129 | "buggy",
130 | "bulge",
131 | "bulk",
132 | "bully",
133 | "bunch",
134 | "bunny",
135 | "bunt",
136 | "bush",
137 | "bust",
138 | "busy",
139 | "buzz",
140 | "cable",
141 | "cache",
142 | "cadet",
143 | "cage",
144 | "cake",
145 | "calm",
146 | "cameo",
147 | "canal",
148 | "candy",
149 | "cane",
150 | "canon",
151 | "cape",
152 | "card",
153 | "cargo",
154 | "carol",
155 | "carry",
156 | "carve",
157 | "case",
158 | "cash",
159 | "cause",
160 | "cedar",
161 | "chain",
162 | "chair",
163 | "chant",
164 | "chaos",
165 | "charm",
166 | "chase",
167 | "cheek",
168 | "cheer",
169 | "chef",
170 | "chess",
171 | "chest",
172 | "chew",
173 | "chief",
174 | "chili",
175 | "chill",
176 | "chip",
177 | "chomp",
178 | "chop",
179 | "chow",
180 | "chuck",
181 | "chump",
182 | "chunk",
183 | "churn",
184 | "chute",
185 | "cider",
186 | "cinch",
187 | "city",
188 | "civic",
189 | "civil",
190 | "clad",
191 | "claim",
192 | "clamp",
193 | "clap",
194 | "clash",
195 | "clasp",
196 | "class",
197 | "claw",
198 | "clay",
199 | "clean",
200 | "clear",
201 | "cleat",
202 | "cleft",
203 | "clerk",
204 | "click",
205 | "cling",
206 | "clink",
207 | "clip",
208 | "cloak",
209 | "clock",
210 | "clone",
211 | "cloth",
212 | "cloud",
213 | "clump",
214 | "coach",
215 | "coast",
216 | "coat",
217 | "cod",
218 | "coil",
219 | "coke",
220 | "cola",
221 | "cold",
222 | "colt",
223 | "coma",
224 | "come",
225 | "comic",
226 | "comma",
227 | "cone",
228 | "cope",
229 | "copy",
230 | "coral",
231 | "cork",
232 | "cost",
233 | "cot",
234 | "couch",
235 | "cough",
236 | "cover",
237 | "cozy",
238 | "craft",
239 | "cramp",
240 | "crane",
241 | "crank",
242 | "crate",
243 | "crave",
244 | "crawl",
245 | "crazy",
246 | "creme",
247 | "crepe",
248 | "crept",
249 | "crib",
250 | "cried",
251 | "crisp",
252 | "crook",
253 | "crop",
254 | "cross",
255 | "crowd",
256 | "crown",
257 | "crumb",
258 | "crush",
259 | "crust",
260 | "cub",
261 | "cult",
262 | "cupid",
263 | "cure",
264 | "curl",
265 | "curry",
266 | "curse",
267 | "curve",
268 | "curvy",
269 | "cushy",
270 | "cut",
271 | "cycle",
272 | "dab",
273 | "dad",
274 | "daily",
275 | "dairy",
276 | "daisy",
277 | "dance",
278 | "dandy",
279 | "darn",
280 | "dart",
281 | "dash",
282 | "data",
283 | "date",
284 | "dawn",
285 | "deaf",
286 | "deal",
287 | "dean",
288 | "debit",
289 | "debt",
290 | "debug",
291 | "decaf",
292 | "decal",
293 | "decay",
294 | "deck",
295 | "decor",
296 | "decoy",
297 | "deed",
298 | "delay",
299 | "denim",
300 | "dense",
301 | "dent",
302 | "depth",
303 | "derby",
304 | "desk",
305 | "dial",
306 | "diary",
307 | "dice",
308 | "dig",
309 | "dill",
310 | "dime",
311 | "dimly",
312 | "diner",
313 | "dingy",
314 | "disco",
315 | "dish",
316 | "disk",
317 | "ditch",
318 | "ditzy",
319 | "dizzy",
320 | "dock",
321 | "dodge",
322 | "doing",
323 | "doll",
324 | "dome",
325 | "donor",
326 | "donut",
327 | "dose",
328 | "dot",
329 | "dove",
330 | "down",
331 | "dowry",
332 | "doze",
333 | "drab",
334 | "drama",
335 | "drank",
336 | "draw",
337 | "dress",
338 | "dried",
339 | "drift",
340 | "drill",
341 | "drive",
342 | "drone",
343 | "droop",
344 | "drove",
345 | "drown",
346 | "drum",
347 | "dry",
348 | "duck",
349 | "duct",
350 | "dude",
351 | "dug",
352 | "duke",
353 | "duo",
354 | "dusk",
355 | "dust",
356 | "duty",
357 | "dwarf",
358 | "dwell",
359 | "eagle",
360 | "early",
361 | "earth",
362 | "easel",
363 | "east",
364 | "eaten",
365 | "eats",
366 | "ebay",
367 | "ebony",
368 | "ebook",
369 | "echo",
370 | "edge",
371 | "eel",
372 | "eject",
373 | "elbow",
374 | "elder",
375 | "elf",
376 | "elk",
377 | "elm",
378 | "elope",
379 | "elude",
380 | "elves",
381 | "email",
382 | "emit",
383 | "empty",
384 | "emu",
385 | "enter",
386 | "entry",
387 | "envoy",
388 | "equal",
389 | "erase",
390 | "error",
391 | "erupt",
392 | "essay",
393 | "etch",
394 | "evade",
395 | "even",
396 | "evict",
397 | "evil",
398 | "evoke",
399 | "exact",
400 | "exit",
401 | "fable",
402 | "faced",
403 | "fact",
404 | "fade",
405 | "fall",
406 | "false",
407 | "fancy",
408 | "fang",
409 | "fax",
410 | "feast",
411 | "feed",
412 | "femur",
413 | "fence",
414 | "fend",
415 | "ferry",
416 | "fetal",
417 | "fetch",
418 | "fever",
419 | "fiber",
420 | "fifth",
421 | "fifty",
422 | "film",
423 | "filth",
424 | "final",
425 | "finch",
426 | "fit",
427 | "five",
428 | "flag",
429 | "flaky",
430 | "flame",
431 | "flap",
432 | "flask",
433 | "fled",
434 | "flick",
435 | "fling",
436 | "flint",
437 | "flip",
438 | "flirt",
439 | "float",
440 | "flock",
441 | "flop",
442 | "floss",
443 | "flyer",
444 | "foam",
445 | "foe",
446 | "fog",
447 | "foil",
448 | "folic",
449 | "folk",
450 | "food",
451 | "fool",
452 | "found",
453 | "fox",
454 | "foyer",
455 | "frail",
456 | "frame",
457 | "fray",
458 | "fresh",
459 | "fried",
460 | "frill",
461 | "frisk",
462 | "from",
463 | "front",
464 | "frost",
465 | "froth",
466 | "frown",
467 | "froze",
468 | "fruit",
469 | "gag",
470 | "gains",
471 | "gala",
472 | "game",
473 | "gap",
474 | "gas",
475 | "gave",
476 | "gear",
477 | "gecko",
478 | "geek",
479 | "gem",
480 | "genre",
481 | "gift",
482 | "gig",
483 | "gills",
484 | "given",
485 | "giver",
486 | "glad",
487 | "glass",
488 | "glide",
489 | "gloss",
490 | "glove",
491 | "glow",
492 | "glue",
493 | "goal",
494 | "going",
495 | "golf",
496 | "gong",
497 | "good",
498 | "gooey",
499 | "goofy",
500 | "gore",
501 | "gown",
502 | "grab",
503 | "grain",
504 | "grant",
505 | "grape",
506 | "graph",
507 | "grasp",
508 | "grass",
509 | "grave",
510 | "gravy",
511 | "gray",
512 | "green",
513 | "greet",
514 | "grew",
515 | "grid",
516 | "grief",
517 | "grill",
518 | "grip",
519 | "grit",
520 | "groom",
521 | "grope",
522 | "growl",
523 | "grub",
524 | "grunt",
525 | "guide",
526 | "gulf",
527 | "gulp",
528 | "gummy",
529 | "guru",
530 | "gush",
531 | "gut",
532 | "guy",
533 | "habit",
534 | "half",
535 | "halo",
536 | "halt",
537 | "happy",
538 | "harm",
539 | "hash",
540 | "hasty",
541 | "hatch",
542 | "hate",
543 | "haven",
544 | "hazel",
545 | "hazy",
546 | "heap",
547 | "heat",
548 | "heave",
549 | "hedge",
550 | "hefty",
551 | "help",
552 | "herbs",
553 | "hers",
554 | "hub",
555 | "hug",
556 | "hula",
557 | "hull",
558 | "human",
559 | "humid",
560 | "hump",
561 | "hung",
562 | "hunk",
563 | "hunt",
564 | "hurry",
565 | "hurt",
566 | "hush",
567 | "hut",
568 | "ice",
569 | "icing",
570 | "icon",
571 | "icy",
572 | "igloo",
573 | "image",
574 | "ion",
575 | "iron",
576 | "islam",
577 | "issue",
578 | "item",
579 | "ivory",
580 | "ivy",
581 | "jab",
582 | "jam",
583 | "jaws",
584 | "jazz",
585 | "jeep",
586 | "jelly",
587 | "jet",
588 | "jiffy",
589 | "job",
590 | "jog",
591 | "jolly",
592 | "jolt",
593 | "jot",
594 | "joy",
595 | "judge",
596 | "juice",
597 | "juicy",
598 | "july",
599 | "jumbo",
600 | "jump",
601 | "junky",
602 | "juror",
603 | "jury",
604 | "keep",
605 | "keg",
606 | "kept",
607 | "kick",
608 | "kilt",
609 | "king",
610 | "kite",
611 | "kitty",
612 | "kiwi",
613 | "knee",
614 | "knelt",
615 | "koala",
616 | "kung",
617 | "ladle",
618 | "lady",
619 | "lair",
620 | "lake",
621 | "lance",
622 | "land",
623 | "lapel",
624 | "large",
625 | "lash",
626 | "lasso",
627 | "last",
628 | "latch",
629 | "late",
630 | "lazy",
631 | "left",
632 | "legal",
633 | "lemon",
634 | "lend",
635 | "lens",
636 | "lent",
637 | "level",
638 | "lever",
639 | "lid",
640 | "life",
641 | "lift",
642 | "lilac",
643 | "lily",
644 | "limb",
645 | "limes",
646 | "line",
647 | "lint",
648 | "lion",
649 | "lip",
650 | "list",
651 | "lived",
652 | "liver",
653 | "lunar",
654 | "lunch",
655 | "lung",
656 | "lurch",
657 | "lure",
658 | "lurk",
659 | "lying",
660 | "lyric",
661 | "mace",
662 | "maker",
663 | "malt",
664 | "mama",
665 | "mango",
666 | "manor",
667 | "many",
668 | "map",
669 | "march",
670 | "mardi",
671 | "marry",
672 | "mash",
673 | "match",
674 | "mate",
675 | "math",
676 | "moan",
677 | "mocha",
678 | "moist",
679 | "mold",
680 | "mom",
681 | "moody",
682 | "mop",
683 | "morse",
684 | "most",
685 | "motor",
686 | "motto",
687 | "mount",
688 | "mouse",
689 | "mousy",
690 | "mouth",
691 | "move",
692 | "movie",
693 | "mower",
694 | "mud",
695 | "mug",
696 | "mulch",
697 | "mule",
698 | "mull",
699 | "mumbo",
700 | "mummy",
701 | "mural",
702 | "muse",
703 | "music",
704 | "musky",
705 | "mute",
706 | "nacho",
707 | "nag",
708 | "nail",
709 | "name",
710 | "nanny",
711 | "nap",
712 | "navy",
713 | "near",
714 | "neat",
715 | "neon",
716 | "nerd",
717 | "nest",
718 | "net",
719 | "next",
720 | "niece",
721 | "ninth",
722 | "nutty",
723 | "oak",
724 | "oasis",
725 | "oat",
726 | "ocean",
727 | "oil",
728 | "old",
729 | "olive",
730 | "omen",
731 | "onion",
732 | "only",
733 | "ooze",
734 | "opal",
735 | "open",
736 | "opera",
737 | "opt",
738 | "otter",
739 | "ouch",
740 | "ounce",
741 | "outer",
742 | "oval",
743 | "oven",
744 | "owl",
745 | "ozone",
746 | "pace",
747 | "pagan",
748 | "pager",
749 | "palm",
750 | "panda",
751 | "panic",
752 | "pants",
753 | "panty",
754 | "paper",
755 | "park",
756 | "party",
757 | "pasta",
758 | "patch",
759 | "path",
760 | "patio",
761 | "payer",
762 | "pecan",
763 | "penny",
764 | "pep",
765 | "perch",
766 | "perky",
767 | "perm",
768 | "pest",
769 | "petal",
770 | "petri",
771 | "petty",
772 | "photo",
773 | "plank",
774 | "plant",
775 | "plaza",
776 | "plead",
777 | "plot",
778 | "plow",
779 | "pluck",
780 | "plug",
781 | "plus",
782 | "poach",
783 | "pod",
784 | "poem",
785 | "poet",
786 | "pogo",
787 | "point",
788 | "poise",
789 | "poker",
790 | "polar",
791 | "polio",
792 | "polka",
793 | "polo",
794 | "pond",
795 | "pony",
796 | "poppy",
797 | "pork",
798 | "poser",
799 | "pouch",
800 | "pound",
801 | "pout",
802 | "power",
803 | "prank",
804 | "press",
805 | "print",
806 | "prior",
807 | "prism",
808 | "prize",
809 | "probe",
810 | "prong",
811 | "proof",
812 | "props",
813 | "prude",
814 | "prune",
815 | "pry",
816 | "pug",
817 | "pull",
818 | "pulp",
819 | "pulse",
820 | "puma",
821 | "punch",
822 | "punk",
823 | "pupil",
824 | "puppy",
825 | "purr",
826 | "purse",
827 | "push",
828 | "putt",
829 | "quack",
830 | "quake",
831 | "query",
832 | "quiet",
833 | "quill",
834 | "quilt",
835 | "quit",
836 | "quota",
837 | "quote",
838 | "rabid",
839 | "race",
840 | "rack",
841 | "radar",
842 | "radio",
843 | "raft",
844 | "rage",
845 | "raid",
846 | "rail",
847 | "rake",
848 | "rally",
849 | "ramp",
850 | "ranch",
851 | "range",
852 | "rank",
853 | "rant",
854 | "rash",
855 | "raven",
856 | "reach",
857 | "react",
858 | "ream",
859 | "rebel",
860 | "recap",
861 | "relax",
862 | "relay",
863 | "relic",
864 | "remix",
865 | "repay",
866 | "repel",
867 | "reply",
868 | "rerun",
869 | "reset",
870 | "rhyme",
871 | "rice",
872 | "rich",
873 | "ride",
874 | "rigid",
875 | "rigor",
876 | "rinse",
877 | "riot",
878 | "ripen",
879 | "rise",
880 | "risk",
881 | "ritzy",
882 | "rival",
883 | "river",
884 | "roast",
885 | "robe",
886 | "robin",
887 | "rock",
888 | "rogue",
889 | "roman",
890 | "romp",
891 | "rope",
892 | "rover",
893 | "royal",
894 | "ruby",
895 | "rug",
896 | "ruin",
897 | "rule",
898 | "runny",
899 | "rush",
900 | "rust",
901 | "rut",
902 | "sadly",
903 | "sage",
904 | "said",
905 | "saint",
906 | "salad",
907 | "salon",
908 | "salsa",
909 | "salt",
910 | "same",
911 | "sandy",
912 | "santa",
913 | "satin",
914 | "sauna",
915 | "saved",
916 | "savor",
917 | "sax",
918 | "say",
919 | "scale",
920 | "scam",
921 | "scan",
922 | "scare",
923 | "scarf",
924 | "scary",
925 | "scoff",
926 | "scold",
927 | "scoop",
928 | "scoot",
929 | "scope",
930 | "score",
931 | "scorn",
932 | "scout",
933 | "scowl",
934 | "scrap",
935 | "scrub",
936 | "scuba",
937 | "scuff",
938 | "sect",
939 | "sedan",
940 | "self",
941 | "send",
942 | "sepia",
943 | "serve",
944 | "set",
945 | "seven",
946 | "shack",
947 | "shade",
948 | "shady",
949 | "shaft",
950 | "shaky",
951 | "sham",
952 | "shape",
953 | "share",
954 | "sharp",
955 | "shed",
956 | "sheep",
957 | "sheet",
958 | "shelf",
959 | "shell",
960 | "shine",
961 | "shiny",
962 | "ship",
963 | "shirt",
964 | "shock",
965 | "shop",
966 | "shore",
967 | "shout",
968 | "shove",
969 | "shown",
970 | "showy",
971 | "shred",
972 | "shrug",
973 | "shun",
974 | "shush",
975 | "shut",
976 | "shy",
977 | "sift",
978 | "silk",
979 | "silly",
980 | "silo",
981 | "sip",
982 | "siren",
983 | "sixth",
984 | "size",
985 | "skate",
986 | "skew",
987 | "skid",
988 | "skier",
989 | "skies",
990 | "skip",
991 | "skirt",
992 | "skit",
993 | "sky",
994 | "slab",
995 | "slack",
996 | "slain",
997 | "slam",
998 | "slang",
999 | "slash",
1000 | "slate",
1001 | "slaw",
1002 | "sled",
1003 | "sleek",
1004 | "sleep",
1005 | "sleet",
1006 | "slept",
1007 | "slice",
1008 | "slick",
1009 | "slimy",
1010 | "sling",
1011 | "slip",
1012 | "slit",
1013 | "slob",
1014 | "slot",
1015 | "slug",
1016 | "slum",
1017 | "slurp",
1018 | "slush",
1019 | "small",
1020 | "smash",
1021 | "smell",
1022 | "smile",
1023 | "smirk",
1024 | "smog",
1025 | "snack",
1026 | "snap",
1027 | "snare",
1028 | "snarl",
1029 | "sneak",
1030 | "sneer",
1031 | "sniff",
1032 | "snore",
1033 | "snort",
1034 | "snout",
1035 | "snowy",
1036 | "snub",
1037 | "snuff",
1038 | "speak",
1039 | "speed",
1040 | "spend",
1041 | "spent",
1042 | "spew",
1043 | "spied",
1044 | "spill",
1045 | "spiny",
1046 | "spoil",
1047 | "spoke",
1048 | "spoof",
1049 | "spool",
1050 | "spoon",
1051 | "sport",
1052 | "spot",
1053 | "spout",
1054 | "spray",
1055 | "spree",
1056 | "spur",
1057 | "squad",
1058 | "squat",
1059 | "squid",
1060 | "stack",
1061 | "staff",
1062 | "stage",
1063 | "stain",
1064 | "stall",
1065 | "stamp",
1066 | "stand",
1067 | "stank",
1068 | "stark",
1069 | "start",
1070 | "stash",
1071 | "state",
1072 | "stays",
1073 | "steam",
1074 | "steep",
1075 | "stem",
1076 | "step",
1077 | "stew",
1078 | "stick",
1079 | "sting",
1080 | "stir",
1081 | "stock",
1082 | "stole",
1083 | "stomp",
1084 | "stony",
1085 | "stood",
1086 | "stool",
1087 | "stoop",
1088 | "stop",
1089 | "storm",
1090 | "stout",
1091 | "stove",
1092 | "straw",
1093 | "stray",
1094 | "strut",
1095 | "stuck",
1096 | "stud",
1097 | "stuff",
1098 | "stump",
1099 | "stung",
1100 | "stunt",
1101 | "suds",
1102 | "sugar",
1103 | "sulk",
1104 | "surf",
1105 | "sushi",
1106 | "swab",
1107 | "swan",
1108 | "swarm",
1109 | "sway",
1110 | "swear",
1111 | "sweat",
1112 | "sweep",
1113 | "swell",
1114 | "swept",
1115 | "swim",
1116 | "swing",
1117 | "swipe",
1118 | "swirl",
1119 | "swoop",
1120 | "swore",
1121 | "syrup",
1122 | "tacky",
1123 | "taco",
1124 | "tag",
1125 | "take",
1126 | "tall",
1127 | "talon",
1128 | "tamer",
1129 | "tank",
1130 | "taper",
1131 | "taps",
1132 | "tarot",
1133 | "tart",
1134 | "task",
1135 | "taste",
1136 | "tasty",
1137 | "taunt",
1138 | "thank",
1139 | "thaw",
1140 | "theft",
1141 | "theme",
1142 | "thigh",
1143 | "thing",
1144 | "think",
1145 | "thong",
1146 | "thorn",
1147 | "those",
1148 | "throb",
1149 | "thud",
1150 | "thumb",
1151 | "thump",
1152 | "thus",
1153 | "tiara",
1154 | "tidal",
1155 | "tidy",
1156 | "tiger",
1157 | "tile",
1158 | "tilt",
1159 | "tint",
1160 | "tiny",
1161 | "trace",
1162 | "track",
1163 | "trade",
1164 | "train",
1165 | "trait",
1166 | "trap",
1167 | "trash",
1168 | "tray",
1169 | "treat",
1170 | "tree",
1171 | "trek",
1172 | "trend",
1173 | "trial",
1174 | "tribe",
1175 | "trick",
1176 | "trio",
1177 | "trout",
1178 | "truce",
1179 | "truck",
1180 | "trump",
1181 | "trunk",
1182 | "try",
1183 | "tug",
1184 | "tulip",
1185 | "tummy",
1186 | "turf",
1187 | "tusk",
1188 | "tutor",
1189 | "tutu",
1190 | "tux",
1191 | "tweak",
1192 | "tweet",
1193 | "twice",
1194 | "twine",
1195 | "twins",
1196 | "twirl",
1197 | "twist",
1198 | "uncle",
1199 | "uncut",
1200 | "undo",
1201 | "unify",
1202 | "union",
1203 | "unit",
1204 | "untie",
1205 | "upon",
1206 | "upper",
1207 | "urban",
1208 | "used",
1209 | "user",
1210 | "usher",
1211 | "utter",
1212 | "value",
1213 | "vapor",
1214 | "vegan",
1215 | "venue",
1216 | "verse",
1217 | "vest",
1218 | "veto",
1219 | "vice",
1220 | "video",
1221 | "view",
1222 | "viral",
1223 | "virus",
1224 | "visa",
1225 | "visor",
1226 | "vixen",
1227 | "vocal",
1228 | "voice",
1229 | "void",
1230 | "volt",
1231 | "voter",
1232 | "vowel",
1233 | "wad",
1234 | "wafer",
1235 | "wager",
1236 | "wages",
1237 | "wagon",
1238 | "wake",
1239 | "walk",
1240 | "wand",
1241 | "wasp",
1242 | "watch",
1243 | "water",
1244 | "wavy",
1245 | "wheat",
1246 | "whiff",
1247 | "whole",
1248 | "whoop",
1249 | "wick",
1250 | "widen",
1251 | "widow",
1252 | "width",
1253 | "wife",
1254 | "wifi",
1255 | "wilt",
1256 | "wimp",
1257 | "wind",
1258 | "wing",
1259 | "wink",
1260 | "wipe",
1261 | "wired",
1262 | "wiry",
1263 | "wise",
1264 | "wish",
1265 | "wispy",
1266 | "wok",
1267 | "wolf",
1268 | "womb",
1269 | "wool",
1270 | "woozy",
1271 | "word",
1272 | "work",
1273 | "worry",
1274 | "wound",
1275 | "woven",
1276 | "wrath",
1277 | "wreck",
1278 | "wrist",
1279 | "xerox",
1280 | "yahoo",
1281 | "yam",
1282 | "yard",
1283 | "year",
1284 | "yeast",
1285 | "yelp",
1286 | "yield",
1287 | "yo-yo",
1288 | "yodel",
1289 | "yoga",
1290 | "yoyo",
1291 | "yummy",
1292 | "zebra",
1293 | "zero",
1294 | "zesty",
1295 | "zippy",
1296 | "zone",
1297 | "zoom"
1298 | ];
1299 |
1300 | function randomChoice(arr) {
1301 | return arr[Math.floor(arr.length * Math.random())];
1302 | }
1303 |
1304 | function generatePassphrase() {
1305 | return [
1306 | randomChoice(wordlist),
1307 | randomChoice(wordlist),
1308 | randomChoice(wordlist),
1309 | randomChoice(wordlist),
1310 | randomChoice(wordlist),
1311 | randomChoice(wordlist),
1312 | ].join(" ")
1313 | }
--------------------------------------------------------------------------------
/vendor/highlight.min.css:
--------------------------------------------------------------------------------
1 | .hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
--------------------------------------------------------------------------------
/vendor/highlight.min.js:
--------------------------------------------------------------------------------
1 | /*! highlight.js v9.16.2 | BSD3 License | git.io/hljslicense */
2 | !function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"==typeof exports||exports.nodeType?t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs})):e(exports)}(function(n){var u=[],i=Object.keys,N={},c={},t=/^(no-?highlight|plain|text)$/i,o=/\blang(?:uage)?-([\w-]+)\b/i,r=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,a={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},w="",x={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},s="of and for in not or if then".split(" ");function k(e){return e.replace(/&/g,"&").replace(//g,">")}function b(e){return e.nodeName.toLowerCase()}function l(e){return t.test(e)}function d(e){var t,r={},a=Array.prototype.slice.call(arguments,1);for(t in e)r[t]=e[t];return a.forEach(function(e){for(t in e)r[t]=e[t]}),r}function p(e){var n=[];return function e(t,r){for(var a=t.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(n.push({event:"start",offset:r,node:a}),r=e(a,r),b(a).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:a}));return r}(e,0),n}function f(e,t,r){var a=0,n="",i=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function o(e){n+=""+b(e)+">"}function l(e){("start"===e.event?c:o)(e.node)}for(;e.length||t.length;){var d=s();if(n+=k(r.substring(a,d[0].offset)),a=d[0].offset,d===e){for(i.reverse().forEach(o);l(d.splice(0,1)[0]),(d=s())===e&&d.length&&d[0].offset===a;);i.reverse().forEach(c)}else"start"===d[0].event?i.push(d[0].node):i.pop(),l(d.splice(0,1)[0])}return n+k(r.substr(a))}function m(t){return t.v&&!t.cached_variants&&(t.cached_variants=t.v.map(function(e){return d(t,{v:null},e)})),t.cached_variants?t.cached_variants:function e(t){return!!t&&(t.eW||e(t.starts))}(t)?[d(t,{starts:t.starts?d(t.starts):null})]:[t]}function g(e){if(a&&!e.langApiRestored){for(var t in e.langApiRestored=!0,a)e[t]&&(e[a[t]]=e[t]);(e.c||[]).concat(e.v||[]).forEach(g)}}function _(t,a){var n={};return"string"==typeof t?r("keyword",t):i(t).forEach(function(e){r(e,t[e])}),n;function r(r,e){a&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var t=e.split("|");n[t[0]]=[r,function(e,t){return t?Number(t):function(e){return-1!=s.indexOf(e.toLowerCase())}(e)?0:1}(t[0],t[1])]})}}function E(a){function d(e){return e&&e.source||e}function u(e,t){return new RegExp(d(e),"m"+(a.cI?"i":"")+(t?"g":""))}function n(n){var i,e,s={},c=[],o={},r=1;function t(e,t){s[r]=e,c.push([e,t]),r+=function(e){return new RegExp(e.toString()+"|").exec("").length-1}(t)+1}for(var a=0;a')+t+(r?"":w)}function o(){m+=null!=p.sL?function(){var e="string"==typeof p.sL;if(e&&!N[p.sL])return k(g);var t=e?M(p.sL,g,!0,f[p.sL]):C(g,p.sL.length?p.sL:void 0);return 0")+'"');if("end"===t.type){var a=function(e){var t=e[0],r=s(p,t);if(r){var a=p;for(a.skip?g+=t:(a.rE||a.eE||(g+=t),o(),a.eE&&(g=t));p.cN&&(m+=w),p.skip||p.sL||(_+=p.relevance),(p=p.parent)!==r.parent;);return r.starts&&(r.endSameAsBegin&&(r.starts.eR=r.eR),l(r.starts)),a.rE?0:t.length}}(t);if(null!=a)return a}return g+=r,r.length}var b=B(e);if(!b)throw new Error('Unknown language: "'+e+'"');E(b);var a,p=t||b,f={},m="";for(a=p;a!==b;a=a.parent)a.cN&&(m=c(a.cN,"",!0)+m);var g="",_=0;try{for(var h,v,y=0;p.t.lastIndex=y,h=p.t.exec(n);)v=r(n.substring(y,h.index),h),y=h.index+v;for(r(n.substr(y)),a=p;a.parent;a=a.parent)a.cN&&(m+=w);return{relevance:_,value:m,i:!1,language:e,top:p}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{i:!0,relevance:0,value:k(n)};throw e}}function C(r,e){e=e||x.languages||i(N);var a={relevance:0,value:k(r)},n=a;return e.filter(B).filter(R).forEach(function(e){var t=M(e,r,!1);t.language=e,t.relevance>n.relevance&&(n=t),t.relevance>a.relevance&&(n=a,a=t)}),n.language&&(a.second_best=n),a}function h(e){return x.tabReplace||x.useBR?e.replace(r,function(e,t){return x.useBR&&"\n"===e?"
":x.tabReplace?t.replace(/\t/g,x.tabReplace):""}):e}function v(e){var t,r,a,n,i,s=function(e){var t,r,a,n,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=o.exec(i))return B(r[1])?r[1]:"no-highlight";for(t=0,a=(i=i.split(/\s+/)).length;t/g,"\n"):t=e,i=t.textContent,a=s?M(s,i,!0):C(i),(r=p(t)).length&&((n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=f(r,p(n),i)),a.value=h(a.value),e.innerHTML=a.value,e.className=function(e,t,r){var a=t?c[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}(e.className,s,a.language),e.result={language:a.language,re:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance}))}function y(){if(!y.called){y.called=!0;var e=document.querySelectorAll("pre code");u.forEach.call(e,v)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function R(e){var t=B(e);return t&&!t.disableAutodetect}return n.highlight=M,n.highlightAuto=C,n.fixMarkup=h,n.highlightBlock=v,n.configure=function(e){x=d(x,e)},n.initHighlighting=y,n.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",y,!1),addEventListener("load",y,!1)},n.registerLanguage=function(t,e){var r=N[t]=e(n);g(r),r.rawDefinition=e.bind(null,n),r.aliases&&r.aliases.forEach(function(e){c[e]=t})},n.listLanguages=function(){return i(N)},n.getLanguage=B,n.autoDetection=R,n.inherit=d,n.IR=n.IDENT_RE="[a-zA-Z]\\w*",n.UIR=n.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",n.NR=n.NUMBER_RE="\\b\\d+(\\.\\d+)?",n.CNR=n.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",n.BNR=n.BINARY_NUMBER_RE="\\b(0b[01]+)",n.RSR=n.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",n.BE=n.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",relevance:0},n.ASM=n.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[n.BE]},n.QSM=n.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[n.BE]},n.PWM=n.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},n.C=n.COMMENT=function(e,t,r){var a=n.inherit({cN:"comment",b:e,e:t,c:[]},r||{});return a.c.push(n.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},n.CLCM=n.C_LINE_COMMENT_MODE=n.C("//","$"),n.CBCM=n.C_BLOCK_COMMENT_MODE=n.C("/\\*","\\*/"),n.HCM=n.HASH_COMMENT_MODE=n.C("#","$"),n.NM=n.NUMBER_MODE={cN:"number",b:n.NR,relevance:0},n.CNM=n.C_NUMBER_MODE={cN:"number",b:n.CNR,relevance:0},n.BNM=n.BINARY_NUMBER_MODE={cN:"number",b:n.BNR,relevance:0},n.CSSNM=n.CSS_NUMBER_MODE={cN:"number",b:n.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},n.RM=n.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[n.BE,{b:/\[/,e:/\]/,relevance:0,c:[n.BE]}]},n.TM=n.TITLE_MODE={cN:"title",b:n.IR,relevance:0},n.UTM=n.UNDERSCORE_TITLE_MODE={cN:"title",b:n.UIR,relevance:0},n.METHOD_GUARD={b:"\\.\\s*"+n.UIR,relevance:0},n.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:"?",e:">"},{cN:"attribute",b:/\w+/,relevance:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,relevance:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),n.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,relevance:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],relevance:0},e.HCM,r,{cN:"",b:/\\"/},{cN:"string",b:/'/,e:/'/},t]}}),n.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",relevance:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",relevance:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,relevance:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,relevance:0}])}}),n.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[e.BE]},{b:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",e:"'",i:"."},{b:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,relevance:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],k:s,i:"",c:c.concat([n,{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),relevance:0}]),relevance:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],relevance:0},{cN:"params",b:/\(/,e:/\)/,k:s,relevance:0,c:[e.CLCM,e.CBCM,r,a,t,{b:/\(/,e:/\)/,k:s,relevance:0,c:["self",e.CLCM,e.CBCM,r,a,t]}]},e.CLCM,e.CBCM,n]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b:/,e:/>/,c:["self"]},e.TM]}]),exports:{preprocessor:n,strings:r,k:s}}}),n.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},r={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},a={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},n=e.inherit(a,{i:/\n/}),i={cN:"subst",b:"{",e:"}",k:t},s=e.inherit(i,{i:/\n/}),c={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,s]},o={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},i]},l=e.inherit(o,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},s]});i.c=[o,c,a,e.ASM,e.QSM,r,e.CBCM],s.c=[l,c,n,e.ASM,e.QSM,r,e.inherit(e.CBCM,{i:/\n/})];var d={v:[o,c,a,e.ASM,e.QSM]},u=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",relevance:0},{b:"\x3c!--|--\x3e"},{b:"?",e:">"}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,r,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",relevance:0},{cN:"function",b:"("+u+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],relevance:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,relevance:0,c:[d,r,e.CBCM]},e.CLCM,e.CBCM]}]}}),n.registerLanguage("css",function(e){var t={b:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,relevance:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}}),n.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",relevance:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/^\*{15}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),n.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:t,i:"",c:[e.CLCM,e.CBCM,{cN:"string",v:[e.QSM,{b:"'",e:"[^\\\\]'"},{b:"`",e:"`"}]},{cN:"number",v:[{b:e.CNR+"[i]",relevance:1},e.CNM]},{b:/:=/},{cN:"function",bK:"func",e:"\\s*(\\{|$)",eE:!0,c:[e.TM,{cN:"params",b:/\(/,e:/\)/,k:t,i:/["']/}]}]}}),n.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",relevance:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),n.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",relevance:10},{b:'"""',e:'"""',relevance:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_\.-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_\.-]+/},{b:/=/,eW:!0,relevance:0,c:[e.C(";","$"),e.HCM,{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),n.registerLanguage("java",function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",r={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],k:t,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{relevance:0,c:[{b:/\w+@/,relevance:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",relevance:0},{cN:"function",b:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,relevance:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,relevance:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"meta",b:"@[A-Za-z]+"}]}}),n.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)n?"},{b:"\\b(0[oO][0-7]+)n?"},{b:e.CNR+"n?"}],relevance:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={b:"html`",e:"",starts:{e:"`",rE:!1,c:[e.BE,n],sL:"xml"}},s={b:"css`",e:"",starts:{e:"`",rE:!1,c:[e.BE,n],sL:"css"}},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,s,c,a,e.RM];var o=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",relevance:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,s,c,e.CLCM,e.CBCM,a,{b:/[{,\n]\s*/,relevance:0,c:[{b:t+"\\s*:",rB:!0,relevance:0,c:[{cN:"attr",b:t,relevance:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:o}]}]},{cN:"",b:/\s/,e:/\s*/,skip:!0},{b:/,e:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,sL:"xml",c:[{b:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{b:/<[A-Za-z0-9\\._:-]+/,e:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,c:[{b:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:o}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}}),n.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.CLCM,e.CBCM],a=[e.QSM,e.CNM],n={e:",",eW:!0,eE:!0,c:a,k:t},i={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(n,{b:/:/})].concat(r),i:"\\S"},s={b:"\\[",e:"\\]",c:[e.inherit(n)],i:"\\S"};return a.push(i,s),r.forEach(function(e){a.push(e)}),{c:a,k:t,i:"\\S"}}),n.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},r={cN:"symbol",b:e.UIR+"@"},a={cN:"subst",b:"\\${",e:"}",c:[e.CNM]},n={cN:"variable",b:"\\$"+e.UIR},i={cN:"string",v:[{b:'"""',e:'"""',c:[n,a]},{b:"'",e:"'",i:/\n/,c:[e.BE]},{b:'"',e:'"',i:/\n/,c:[e.BE,n,a]}]};a.c.push(i);var s={cN:"meta",b:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UIR+")?"},c={cN:"meta",b:"@"+e.UIR,c:[{b:/\(/,e:/\)/,c:[e.inherit(i,{cN:"meta-string"})]}]},o={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},l=e.C("/\\*","\\*/",{c:[e.CBCM]}),d={v:[{cN:"type",b:e.UIR},{b:/\(/,e:/\)/,c:[]}]},u=d;return u.v[1].c=[d],d.v[1].c=[u],{aliases:["kt"],k:t,c:[e.C("/\\*\\*","\\*/",{relevance:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,l,{cN:"keyword",b:/\b(break|continue|return|this)\b/,starts:{c:[{cN:"symbol",b:/@\w+/}]}},r,s,c,{cN:"function",bK:"fun",e:"[(]|$",rB:!0,eE:!0,k:t,i:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,c:[{b:e.UIR+"\\s*\\(",rB:!0,relevance:0,c:[e.UTM]},{cN:"type",b:/,e:/>/,k:"reified",relevance:0},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:t,relevance:0,c:[{b:/:/,e:/[=,\/]/,eW:!0,c:[d,e.CLCM,l],relevance:0},e.CLCM,l,s,c,i,e.CNM]},l]},{cN:"class",bK:"class interface trait",e:/[:\{(]|$/,eE:!0,i:"extends implements",c:[{bK:"public protected internal private constructor"},e.UTM,{cN:"type",b:/,e:/>/,eB:!0,eE:!0,relevance:0},{cN:"type",b:/[,:]\s*/,e:/[<\(,]|$/,eB:!0,rE:!0},s,c]},i,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},o]}}),n.registerLanguage("less",function(e){function t(e){return{cN:"string",b:"~?"+e+".*?"+e}}function r(e,t,r){return{cN:e,b:t,relevance:r}}var a="[\\w-]+",n="("+a+"|@{"+a+"})",i=[],s=[],c={b:"\\(",e:"\\)",c:s,relevance:0};s.push(e.CLCM,e.CBCM,t("'"),t('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},r("number","#[0-9A-Fa-f]+\\b"),c,r("variable","@@?"+a,10),r("variable","@{"+a+"}"),r("built_in","~?`[^`]*?`"),{cN:"attribute",b:a+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var o=s.concat({b:"{",e:"}",c:i}),l={bK:"when",eW:!0,c:[{bK:"and not"}].concat(s)},d={b:n+"\\s*:",rB:!0,e:"[;}]",relevance:0,c:[{cN:"attribute",b:n,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",relevance:0,c:s}}]},u={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:s,relevance:0}},b={cN:"variable",v:[{b:"@"+a+"\\s*:",relevance:15},{b:"@"+a}],starts:{e:"[;}]",rE:!0,c:o}},p={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:n,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",relevance:0,c:[e.CLCM,e.CBCM,l,r("keyword","all\\b"),r("variable","@{"+a+"}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:o},{b:"!important"}]};return i.push(e.CLCM,e.CBCM,u,b,d,p),{cI:!0,i:"[=>'/<($\"]",c:i}}),n.registerLanguage("lua",function(e){var t="\\[=*\\[",r="\\]=*\\]",a={b:t,e:r,c:["self"]},n=[e.C("--(?!"+t+")","$"),e.C("--"+t,r,{c:[a],relevance:10})];return{l:e.UIR,k:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},c:n.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:n}].concat(n)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:r,c:[a],relevance:5}])}}),n.registerLanguage("makefile",function(e){var t={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%\^\+\*]/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t]},a={cN:"variable",b:/\$\([\w-]+\s/,e:/\)/,k:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},c:[t]},n={b:"^"+e.UIR+"\\s*[:+?]?=",i:"\\n",rB:!0,c:[{b:"^"+e.UIR,e:"[:+?]?=",eE:!0}]},i={cN:"section",b:/^[^\s]+:/,e:/$/,c:[t]};return{aliases:["mk","mak"],k:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",l:/[\w-]+/,c:[e.HCM,t,r,a,n,{cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},i]}}),n.registerLanguage("xml",function(e){var t={eW:!0,i:/,relevance:0,c:[{cN:"attr",b:"[A-Za-z0-9\\._:-]+",relevance:0},{b:/=\s*/,relevance:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],cI:!0,c:[{cN:"meta",b:"",relevance:10,c:[{b:"\\[",e:"\\]"}]},e.C("\x3c!--","--\x3e",{relevance:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",relevance:10},{cN:"meta",b:/<\?xml/,e:/\?>/,relevance:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"